33LD=g++
44OutPutOpt = -o
55
6-
7- CXXFLAGS = -O3 -arch=sm_20 #--ptxas-options=-v
8- #CXXFLAGS = -g -G -arch=sm_20
6+ CXXFLAGS = -O3 -arch=sm_20
97DEFINEFLAGS=-DDUMMY=dummy
108
119ifneq ($(CUDAPRINT),)
@@ -19,10 +17,14 @@ endif
1917CUDALOCATION = /usr/local/cuda/5.0.35/
2018CUDAHEADERS = $(CUDALOCATION)/include/
2119
22- SRCDIR = $(PWD)/FPOINTER
20+ ifeq ($(GOODIR),)
21+ GOODIR = $(CURDIR)
22+ endif
23+
24+ SRCDIR = $(GOODIR)/FPOINTER
2325
24- INCLUDES += -I$(CUDAHEADERS) -I$(SRCDIR) -I$(PWD ) -I$(PWD )/rootstuff
25- LIBS += -L$(CUDALOCATION)/lib64 -lcudart -L$(PWD )/rootstuff -lRootUtils
26+ INCLUDES += -I$(CUDAHEADERS) -I$(SRCDIR) -I$(GOODIR ) -I$(GOODIR )/rootstuff
27+ LIBS += -L$(CUDALOCATION)/lib64 -lcudart -L$(GOODIR )/rootstuff -lRootUtils
2628
2729# These are for user-level programs that want access to the ROOT plotting stuff,
2830# not just the fitting stuff included in the GooFit-local ripped library.
@@ -33,21 +35,21 @@ FUNCTORLIST = $(SRCDIR)/ThrustPdfFunctor.cu
3335FUNCTORLIST += $(wildcard $(SRCDIR)/*ThrustFunctor.cu)
3436FUNCTORLIST += $(wildcard $(SRCDIR)/*Aux.cu)
3537HEADERLIST = $(patsubst %.cu,%.hh,$(FUNCTORLIST))
36- WRKFUNCTORLIST = $(patsubst $(SRCDIR)/%.cu,wrkdir/%.cu,$(FUNCTORLIST))
38+ WRKDIR = $(GOODIR)/wrkdir
39+ WRKFUNCTORLIST = $(patsubst $(SRCDIR)/%.cu,$(WRKDIR)/%.cu,$(FUNCTORLIST))
3740
38- THRUSTO = wrkdir /Variable.o wrkdir /PdfBuilder.o wrkdir /ThrustPdfFunctorCUDA.o wrkdir /Faddeeva.o wrkdir /FitControl.o wrkdir /FunctorBase.o wrkdir /DataSet.o wrkdir /BinnedDataSet.o wrkdir /UnbinnedDataSet.o wrkdir /FunctorWriter.o
39- ROOTRIPDIR = $(PWD )/rootstuff
41+ THRUSTO = $(WRKDIR) /Variable.o $(WRKDIR) /PdfBuilder.o $(WRKDIR) /ThrustPdfFunctorCUDA.o $(WRKDIR) /Faddeeva.o $(WRKDIR) /FitControl.o $(WRKDIR) /FunctorBase.o $(WRKDIR) /DataSet.o $(WRKDIR) /BinnedDataSet.o $(WRKDIR) /UnbinnedDataSet.o $(WRKDIR) /FunctorWriter.o
42+ ROOTRIPDIR = $(GOODIR )/rootstuff
4043ROOTRIPOBJS = $(ROOTRIPDIR)/TMinuit.o $(ROOTRIPDIR)/TRandom.o $(ROOTRIPDIR)/TRandom3.o
4144ROOTUTILLIB = $(ROOTRIPDIR)/libRootUtils.so
42- PROGRAMS =
4345
4446.SUFFIXES:
4547
4648all: goofit
4749
4850# One rule for GooFit objects.
49- wrkdir /%.o: %.cc %.hh
50- @mkdir -p wrkdir
51+ $(WRKDIR) /%.o: $(GOODIR)/ %.cc $(GOODIR)/ %.hh
52+ @mkdir -p $(WRKDIR)
5153 $(CXX) $(INCLUDES) $(CXXFLAGS) $(DEFINEFLAGS) -c -o $@ $<
5254
5355# A different rule for user-level objects. Notice ROOT_INCLUDES.
@@ -57,23 +59,22 @@ wrkdir/%.o: %.cc %.hh
5759# Still a third rule for the ROOT objects - these have their own Makefile.
5860$(ROOTRIPDIR)/%.o: $(ROOTRIPDIR)/%.cc
5961 rm -f $@
60- @echo "Postponing $@ for separate Makefile"
62+ @cd $(ROOTRIPDIR); $(MAKE)
6163
6264$(ROOTUTILLIB): $(ROOTRIPOBJS)
63- @cd rootstuff ; $(MAKE)
65+ @cd $(ROOTRIPDIR) ; $(MAKE)
6466
6567include $(SRCDIR)/Makefile
6668
67- PdfBuilder.o: PdfBuilder.cc PdfBuilder.hh wrkdir /ThrustPdfFunctorCUDA.o Variable.o
69+ PdfBuilder.o: PdfBuilder.cc PdfBuilder.hh $(WRKDIR) /ThrustPdfFunctorCUDA.o Variable.o
6870 $(CXX) $(DEFINEFLAGS) $(CXXFLAGS) $(INCLUDES) -c -o $@ $<
6971
70- wrkdir /ThrustPdfFunctorCUDA.o: wrkdir /CUDAglob.cu FunctorBase.cu
71- nvcc $(CXXFLAGS) $(INCLUDES) -I. $(DEFINEFLAGS) -c $< -o $@
72- @echo "$@ done"
72+ $(WRKDIR) /ThrustPdfFunctorCUDA.o: $(WRKDIR) /CUDAglob.cu $(GOODIR)/ FunctorBase.cu
73+ nvcc $(CXXFLAGS) $(INCLUDES) -I. $(DEFINEFLAGS) -c $< -o $@
74+ @echo "$@ done"
7375
7476goofit: $(THRUSTO)
7577 @echo "Compiled GooFit objects"
7678
7779clean:
78- @rm -f *.o core $(PROGRAMS) wrkdir/*
79- cd rootstuff; $(MAKE) clean
80+ @rm -f *.o core $(PROGRAMS) $(WRKDIR)/* $(ROOTRIPOBJS) $(ROOTUTILLIB)
0 commit comments