From 1bf03aa7f7ccdd962e5aa2d71692465c6f5a0590 Mon Sep 17 00:00:00 2001 From: "Bastian M. Wojek" Date: Sat, 6 Jun 2009 15:22:28 +0000 Subject: [PATCH] Changed Makefiles for musrfit/cygwin --- src/Makefile | 65 ++++++++++++++++++++++++-------------- src/classes/Makefile.PMusr | 55 +++++++++++++++++++++++++------- 2 files changed, 84 insertions(+), 36 deletions(-) diff --git a/src/Makefile b/src/Makefile index 582f156c..24f70391 100644 --- a/src/Makefile +++ b/src/Makefile @@ -19,27 +19,45 @@ ROOTGLIBS = $(shell $(ROOTSYS)/bin/root-config --glibs) # linker, and the flags to use # -OSTYPE = linux +ARCH = $(shell $(ROOTSYS)/bin/root-config --arch) -ifeq ($(OSTYPE),linux) +ifeq ($(ARCH),linux) OS = LINUX endif -ifeq ($(OSTYPE),linux-gnu) -OS = LINUX +ifeq ($(ARCH),win32gcc) +OS = WIN32GCC endif -ifeq ($(OSTYPE),darwin) +ifeq ($(ARCH),darwin) OS = DARWIN endif # -- Linux ifeq ($(OS),LINUX) CXX = g++ -CXXFLAGS = -Wall -fPIC +CXXFLAGS = -O3 -Wall -fPIC PMUSRPATH = ./include MNPATH = $(ROOTSYS)/include INCLUDES = -I $(PMUSRPATH) -I $(MNPATH) LD = g++ -LDFLAGS = -g +LDFLAGS = -O +INSTALLPATH = $(HOME)/analysis/bin +EXEC = musrfit musrview musrparam musrt0 msr2msr +SUFFIX = +endif + +# -- Windows/Cygwin +ifeq ($(OS),WIN32GCC) +CXX = g++ +CXXFLAGS = -O3 -Wall +PMUSRPATH = ./include +MNPATH = $(ROOTSYS)/include +BOOSTPATH = /usr/include/boost +INCLUDES = -I $(PMUSRPATH) -I $(MNPATH) -I $(BOOSTPATH) +LD = g++ +LDFLAGS = -O -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc +INSTALLPATH = $(ROOTSYS)/bin +EXEC = musrfit.exe musrview.exe musrparam.exe musrt0.exe msr2msr.exe +SUFFIX = .exe endif # -- Darwin @@ -49,6 +67,9 @@ CXXFLAGS = -g -Wall -fPIC INCLUDES = -I../include LD = g++ LDFLAGS = -g +INSTALLPATH = $(HOME)/analysis/bin +EXEC = musrfit musrview musrparam musrt0 msr2msr +SUFFIX = endif # the output from the root-config script: @@ -60,16 +81,12 @@ LIBS = $(ROOTLIBS) -lXMLParser GLIBS = $(ROOTGLIBS) -lXMLParser # PSI libs -PSILIBS = -lTLemRunHeader -lPMusr +PSILIBS = -L$(ROOTSYS)/lib -lTLemRunHeader -lPMusr # Minuit2 lib MNLIB = -L$(ROOTSYS)/lib -lMinuit2 # MathMore lib MMLIB = -L$(ROOTSYS)/lib -lMathMore -INSTALLPATH = $(HOME)/analysis/bin - -EXEC = musrfit musrview musrparam musrt0 msr2msr - # some definitions: headers, sources, objects,... OBJS = OBJS += musrfit.o musrview.o musrparam.o musrt0.o msr2msr.o @@ -78,34 +95,34 @@ OBJS += musrfit.o musrview.o musrparam.o musrt0.o msr2msr.o # all: $(EXEC) -musrfit: musrfit.o +musrfit$(SUFFIX): musrfit.o @echo "---> Building $@ ..." /bin/rm -f $(SHLIB) - $(LD) $< -o $@ $(GLIBS) $(PSILIBS) $(MNLIB) $(MMLIB) + $(LD) $< -o $@ $(LDFLAGS) $(GLIBS) $(PSILIBS) $(MNLIB) $(MMLIB) @echo "done" -musrview: musrview.o +musrview$(SUFFIX): musrview.o @echo "---> Building $@ ..." /bin/rm -f $(SHLIB) - $(LD) $< -o $@ $(GLIBS) $(PSILIBS) $(MNLIB) $(MMLIB) + $(LD) $< -o $@ $(LDFLAGS) $(GLIBS) $(PSILIBS) $(MNLIB) $(MMLIB) @echo "done" -musrt0: musrt0.o +musrt0$(SUFFIX): musrt0.o @echo "---> Building $@ ..." /bin/rm -f $(SHLIB) - $(LD) $< -o $@ $(GLIBS) $(PSILIBS) $(MNLIB) $(MMLIB) + $(LD) $< -o $@ $(LDFLAGS) $(GLIBS) $(PSILIBS) $(MNLIB) $(MMLIB) @echo "done" -musrparam: musrparam.o +musrparam$(SUFFIX): musrparam.o @echo "---> Building $@ ..." /bin/rm -f $(SHLIB) - $(LD) $< -o $@ $(GLIBS) $(PSILIBS) $(MNLIB) $(MMLIB) + $(LD) $< -o $@ $(LDFLAGS) $(GLIBS) $(PSILIBS) $(MNLIB) $(MMLIB) @echo "done" -msr2msr: msr2msr.o +msr2msr$(SUFFIX): msr2msr.o @echo "---> Building $@ ..." /bin/rm -f $(SHLIB) - $(LD) $< -o $@ $(GLIBS) $(PSILIBS) $(MNLIB) $(MMLIB) + $(LD) $< -o $@ $(LDFLAGS) $(GLIBS) $(PSILIBS) $(MNLIB) $(MMLIB) @echo "done" # clean up: remove all object file (and core files) @@ -120,5 +137,5 @@ $(OBJS): %.o: %.cpp $(CXX) $(INCLUDES) $(CXXFLAGS) -c $< install: all - cp -fp $(EXEC) $(INSTALLPATH) - cp -fp musrfit_startup.xml $(INSTALLPATH) + cp -fvp $(EXEC) $(INSTALLPATH) + cp -fvp musrfit_startup.xml $(INSTALLPATH) diff --git a/src/classes/Makefile.PMusr b/src/classes/Makefile.PMusr index b1e576a0..eafb70d1 100644 --- a/src/classes/Makefile.PMusr +++ b/src/classes/Makefile.PMusr @@ -27,15 +27,15 @@ ROOTGLIBS = $(shell $(ROOTSYS)/bin/root-config --glibs) # linker, and the flags to use # -OSTYPE = $(shell uname) +ARCH = $(shell $(ROOTSYS)/bin/root-config --arch) -ifeq ($(OSTYPE),Linux) +ifeq ($(ARCH),linux) OS = LINUX endif -ifeq ($(OSTYPE),Linux-gnu) -OS = LINUX +ifeq ($(ARCH),win32gcc) +OS = WIN32GCC endif -ifeq ($(OSTYPE),darwin) +ifeq ($(ARCH),darwin) OS = DARWIN endif @@ -50,8 +50,26 @@ PSIBINPATH = ../external/MuSR_software/Class_MuSR_PSI FFTW3PATH = /usr/local/include INCLUDES = -I$(PMUSRPATH) -I$(MNPATH) -I$(GSLPATH) -I$(PSIBINPATH) -I$(FFTW3PATH) LD = g++ -LDFLAGS = -g -SOFLAGS = -O -shared +LDFLAGS = -O +SOFLAGS = -shared +SHLIB = libPMusr.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 +BOOSTPATH = /usr/include/boost +PSIBINPATH = ../external/MuSR_software/Class_MuSR_PSI +FFTW3PATH = /usr/include +INCLUDES = -I$(PMUSRPATH) -I$(MNPATH) -I$(GSLPATH) -I$(BOOSTPATH) -I$(PSIBINPATH) -I$(FFTW3PATH) +LD = g++ +LDFLAGS = -O -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc +SOFLAGS = -shared -Wl,--export-all-symbols +SHLIB = libPMusr.dll endif # -- Darwin @@ -62,6 +80,7 @@ INCLUDES = -I../include LD = g++ LDFLAGS = -g SOFLAGS = -dynamic +SHLIB = libPMusr.so endif # the output from the root-config script: @@ -73,7 +92,7 @@ LIBS = $(ROOTLIBS) -lXMLParser GLIBS = $(ROOTGLIBS) -lXMLParser # PSI libs -PSILIBS = -lTLemRunHeader +PSILIBS = -L$(ROOTSYS)/lib -lTLemRunHeader # Minuit2 lib MNLIB = -L$(ROOTSYS)/lib -lMinuit2 # GSL lib @@ -81,6 +100,15 @@ GSLLIB = -lgslcblas -lgsl # FFTW lib FFTW3LIB = -lfftw3 +ifeq ($(OS),WIN32GCC) +# Minuit2 lib +MNLIB = -L$(ROOTSYS)/lib -lMinuit2 -lMathMore +# GSL lib +GSLLIB = -L/usr/lib -lgslcblas -lgsl +# FFTW lib +FFTW3LIB = -L/usr/lib -lfftw3 +endif + # some definitions: headers (used to generate *Dict* stuff), sources, objects,... OBJS = @@ -106,8 +134,6 @@ OBJS += PMusrT0.o PMusrT0Dict.o EXTOBJS = EXTOBJS += MuSR_td_PSI_bin.o -SHLIB = libPMusr.so - # make the shared lib: # all: $(SHLIB) @@ -115,7 +141,7 @@ all: $(SHLIB) $(SHLIB): $(OBJS) $(EXTOBJS) @echo "---> Building shared library $(SHLIB) ..." /bin/rm -f $(SHLIB) - $(LD) $(OBJS) $(EXTOBJS) $(SOFLAGS) -o $(SHLIB) $(FFTW3LIB) $(GLIBS) $(PSILIBS) $(MNLIB) $(GSLLIB) + $(LD) $(SOFLAGS) $(LDFLAGS) $(OBJS) $(EXTOBJS) -o $(SHLIB) $(FFTW3LIB) $(GLIBS) $(PSILIBS) $(MNLIB) $(GSLLIB) @echo "done" # clean up: remove all object file (and core files) @@ -149,10 +175,15 @@ PUserFcnBaseDict.cpp: ../include/PUserFcnBase.h ../include/PUserFcnBaseLinkDef.h rootcint -v -f $@ -c -p $^ install: all - @echo "Installing shared lib: libPMusr.so ( you must be root ;-) )" + @echo "Installing shared lib: $(SHLIB) ( you must be root ;-) )" ifeq ($(OS),LINUX) cp -pv $(SHLIB) $(ROOTSYS)/lib cp -pv $(PMUSRPATH)/*.h $(ROOTSYS)/include endif +ifeq ($(OS),WIN32GCC) + cp -pv $(SHLIB) $(ROOTSYS)/bin + ln -sf $(ROOTSYS)/bin/$(SHLIB) $(ROOTSYS)/lib/$(SHLIB) + cp -pv $(PMUSRPATH)/*.h $(ROOTSYS)/include +endif cleaninstall: clean install