#--------------------------------------------------- # Makefile.libGapIntegrals # # Author: Bastian M. Wojek # e-mail: bastian.wojek@psi.ch # # $Id$ # #--------------------------------------------------- #--------------------------------------------------- # get compilation and library flags from root-config ROOTCFLAGS = $(shell $(ROOTSYS)/bin/root-config --cflags) ROOTLIBS = $(shell $(ROOTSYS)/bin/root-config --libs) ROOTGLIBS = $(shell $(ROOTSYS)/bin/root-config --glibs) #--------------------------------------------------- # depending on the architecture, choose the compiler, # linker, and the flags to use # ARCH = $(shell $(ROOTSYS)/bin/root-config --arch) ifeq ($(ARCH),linux) OS = LINUX endif ifeq ($(ARCH),linuxx8664gcc) OS = LINUX endif ifeq ($(ARCH),win32gcc) OS = WIN32GCC endif ifeq ($(ARCH),macosx) OS = DARWIN endif # -- Linux ifeq ($(OS),LINUX) CXX = g++ CXXFLAGS = -O3 -Wall -Wno-trigraphs -fPIC PMUSRPATH = ../../include MNPATH = $(ROOTSYS)/include GSLPATH = /usr/include/gsl CUBAPATH = /usr/local/include INCLUDES = -I$(PMUSRPATH) -I$(MNPATH) -I$(GSLPATH) -I$(CUBAPATH) LD = g++ LDFLAGS = -O SOFLAGS = -shared SHLIB = libLFRelaxation.so endif # -- Windows/Cygwin ifeq ($(OS),WIN32GCC) CXX = g++ CXXFLAGS = -O3 -Wall -Wno-trigraphs -D_DLL PMUSRPATH = ../../include MNPATH = $(ROOTSYS)/include GSLPATH = /usr/include/gsl CUBAPATH = /usr/local/include INCLUDES = -I$(PMUSRPATH) -I$(MNPATH) -I$(GSLPATH) -I$(CUBAPATH) LD = g++ LDFLAGS = -O -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc SOFLAGS = -shared -Wl,--export-all-symbols SHLIB = libLFRelaxation.dll endif # -- MacOSX/Darwin ifeq ($(OS),DARWIN) CXX = g++ CXXFLAGS = -O3 -Wall -Wno-trigraphs -fPIC PMUSRPATH = ../../include MNPATH = $(ROOTSYS)/include FINKPATH = /sw/include GSLPATH = $(FINKPATH)/gsl CUBAPATH = $(FINKPATH) INCLUDES = -I$(PMUSRPATH) -I$(MNPATH) -I$(GSLPATH) -I$(CUBAPATH) LD = g++ LDFLAGS = -O -Xlinker -bind_at_load SOFLAGS = -dynamiclib -flat_namespace -undefined suppress -Wl,-x SHLIB = libLFRelaxation.dylib endif # the output from the root-config script: CXXFLAGS += $(ROOTCFLAGS) LDFLAGS += # the ROOT libraries (G = graphic) LIBS = $(ROOTLIBS) GLIBS = $(ROOTGLIBS) # GSL lib GSLLIB = -lgslcblas -lgsl # Cuba lib CUBALIB = -L/usr/local/lib -lcuba -lm # PMusr lib PMUSRLIB = -L$(ROOTSYS)/lib -lPMusr ifeq ($(OS),WIN32GCC) # GSL lib GSLLIB = -L/usr/lib -lgslcblas -lgsl # Cuba lib CUBALIB = -L/usr/local/lib -lcuba -lm # PMusr lib PMUSRLIB = -L$(ROOTSYS)/lib -lPMusr -lMathMore endif ifeq ($(OS),DARWIN) # GSL lib GSLLIB = -L/sw/lib -lgslcblas -lgsl # Cuba lib CUBALIB = -L/sw/lib -lcuba -lm # PMusr lib PMUSRLIB = -L$(ROOTSYS)/lib -lPMusr -lMathMore endif # some definitions: headers (used to generate *Dict* stuff), sources, objects,... OBJS = OBJS += TLFRelaxation.o TLFRelaxationDict.o EXTOBJS = BMWIntegrator.o # make the shared libs: all: $(SHLIB) $(SHLIB): $(EXTOBJS) $(OBJS) @echo "---> Building shared library $(SHLIB) ..." /bin/rm -f $(SHLIB) $(LD) $(SOFLAGS) $(LDFLAGS) -o $(SHLIB) $(EXTOBJS) $(OBJS) $(LIBS) $(PMUSRLIB) $(GSLLIB) $(CUBALIB) @echo "done" # clean up: remove all object file (and core files) # semicolon needed to tell make there is no source # for this target! # clean:; @rm -f $(OBJS) $(EXTOBJS) $(SHLIB) *Dict* core* *~ @echo "---> removing $(OBJS) $(EXTOBJS) $(SHLIB)" # BMWIntegrator.o: ../BMWIntegrator/BMWIntegrator.cpp $(CXX) $(INCLUDES) $(CXXFLAGS) -c $< $(OBJS): %.o: %.cpp $(CXX) $(INCLUDES) $(CXXFLAGS) -c $< # Generate the ROOT CINT dictionary TLFRelaxationDict.cpp: ../BMWIntegrator/BMWIntegrator.h ./TLFRelaxation.h ./TLFRelaxationLinkDef.h @echo "Generating dictionary $@..." rootcint -f $@ -c -p $^ install: all @echo "Installing shared lib: $(SHLIB)" ifeq ($(OS),LINUX) cp -pv $(SHLIB) $(ROOTSYS)/lib cp -pv ../BMWIntegrator/BMWIntegrator.h TLFRelaxation.h $(ROOTSYS)/include endif ifeq ($(OS),WIN32GCC) cp -pv $(SHLIB) $(ROOTSYS)/bin ln -sf $(ROOTSYS)/bin/$(SHLIB) $(ROOTSYS)/lib/$(SHLIB) cp -pv ../BMWIntegrator/BMWIntegrator.h TLFRelaxation.h $(ROOTSYS)/include endif ifeq ($(OS),DARWIN) cp -pv $(SHLIB) $(ROOTSYS)/lib cp -pv ../BMWIntegrator/BMWIntegrator.h TLFRelaxation.h $(ROOTSYS)/include endif cleaninstall: clean install