| 1 | # PamelaDigitizer | # PamelaDigitizer | 
| 2 | # SOFTWARE VERSION | # SOFTWARE VERSION | 
| 3 | VER= v2r01 | VER= v3r06 | 
| 4 | # An almost general purpouse Makefile for PAMELA repository | # An almost general purpouse Makefile for PAMELA repository | 
| 5 | # Let's start with some useful definition to make the echo colored | # Let's start with some useful definition to make the echo colored | 
| 6 | RED='\E[1;31;40m' | RED='\E[1;31;40m' | 
| 7 | GREEN='\E[1;32;40m' | GREEN='\E[1;32;40m' | 
| 8 | YELLOW='\E[1;33;40m' | YELLOW='\E[1;33;40m' | 
| 9 | BLUE='\E[1;34;40m' | BLUE='\E[1;34;40m' | 
| 10 | WHITE='\E[1;37;40m' | WHITE='\E[1;37;40m' | 
| 11 | VIOLET='\E[1;35;40m' | VIOLET='\E[1;35;40m' | 
| 12 | CYAN='\E[1;36;40m' | CYAN='\E[1;36;40m' | 
| 13 | # Here the echo definition to use them | # Here the echo definition to use them | 
| 14 | EVIOLET=echo -e ${VIOLET} | EVIOLET=echo -e ${VIOLET} | 
| 15 | ECYAN=echo -e ${CYAN} | ECYAN=echo -e ${CYAN} | 
| 16 | ERED=echo -e ${RED} | ERED=echo -e ${RED} | 
| 17 | EGREEN=echo -e ${GREEN} | EGREEN=echo -e ${GREEN} | 
| 18 | EYELLOW=echo -e ${YELLOW} | EYELLOW=echo -e ${YELLOW} | 
| 19 | EBLUE=echo -e ${BLUE} | EBLUE=echo -e ${BLUE} | 
| 20 | EWHITE=echo -e ${WHITE} | EWHITE=echo -e ${WHITE} | 
| 21 | # Reset the terminal | # Reset the terminal | 
| 22 | RESET=tput sgr0 | RESET=tput sgr0 | 
| 23 | # Here the variables used to override the standard make flags | # Here the variables used to override the standard make flags | 
| 24 | #MAKE | #MAKE | 
| 25 | MAKE=make | MAKE=make | 
| 26 | # C | # C | 
| 27 | CC=gcc | CC=gcc | 
| 28 | #CFLAGS=-Wall -O -fPIC -pthread -g | #CFLAGS=-Wall -O -fPIC -pthread -g ${PAM_BIT} | 
| 29 | CFLAGS=-Wall -O -fPIC -pthread | CFLAGS=-Wall -O -fPIC -pthread ${PAM_BIT} | 
| 30 | # Enviroment: | # Enviroment: | 
| 31 | GCCVER=`gcc --version | head -1` | GCCVER=`gcc --version | head -1` | 
| 32 | UNAMEA=`uname -a` | UNAMEA=`uname -a` | 
| 33 | TODAY=`date` | TODAY=`date` | 
| 34 | # F77 | # F77 | 
| 35 | F77=g77 | F77=g77 | 
| 36 | #F77FLAGS=  -Wall -Wno-globals -fvxt -fno-automatic -fbounds-check -g -extend_source  -static -fno-backslash | #F77FLAGS=  -Wall -Wno-globals -fvxt -fno-automatic -fbounds-check -g -extend_source  -static -fno-backslash ${PAM_BIT} | 
| 37 | F77FLAGS=  -Wall -Wno-globals -fvxt -fno-automatic -fbounds-check -extend_source -static -fno-backslash | F77FLAGS=  -Wall -Wno-globals -fvxt -fno-automatic -fbounds-check -extend_source -static -fno-backslash ${PAM_BIT} | 
| 38 | # C++ | # C++ | 
| 39 | CXX=g++ | CXX=g++ | 
| 40 | CXXFLAGS=-Wall -O -fPIC -pthread | # ROOTCINT | 
| 41 | # ROOTCINT | ROOTCINT=rootcint | 
| 42 | ROOTCINT=rootcint |  | 
| 43 | # Here the variables defining the local directories | # Compilers settings | 
| 44 | # ... not used ... | ROOTCFLAGS  =`root-config --cflags` | 
| 45 | # Here the  PAMELA environmental variables to be checked | ROOTLDFLAGS =`root-config --ldflags` | 
| 46 | # ... not used ... | ROOTLIBS    =`root-config --libs` -lHbook -lminicern | 
| 47 |  | #CERNLIBS    =`cernlib_noshift kernlib,packlib,genlib` | 
| 48 | # Here the local variables used to build the targets | CERNLIBS    = | 
| 49 |  | #F77LIBS     =-lg2c -lnsl | 
| 50 |  | F77LIBS     =-lnsl | 
| 51 | # Compilers settings | SYSLIBS     =-lm -ldl -rdynamic | 
| 52 | ROOTCFLAGS  =`root-config --cflags` | LD          =g++ | 
| 53 | ROOTLDFLAGS =`root-config --ldflags` | CXXFLAGS= -O3 -Wall -fPIC ${ROOTCFLAGS} ${PAM_BIT} | 
| 54 | ROOTLIBS    =`root-config --libs` -lHbook | #CXXFLAGS= -g -Wall -O ${ROOTCFLAGS} ${PAM_BIT} | 
| 55 | CERNLIBS    =`cernlib_noshift kernlib,packlib,genlib` | # flags needed on the pamelatov's: | 
| 56 | F77LIBS     =-lg2c -lnsl |  | 
| 57 | SYSLIBS     =-lm -ldl -rdynamic | #LDFLAGS = $(PAM_BIT) -g -lmathlib -lpacklib -lkernlib -llapack -lg2c -lm -lnsl -lcrypt -L/cern/2005/lib | 
| 58 | LD          =g++ | #LDFLAGS = -g -llapack -lg2c -lm -lnsl -lcrypt -L/cern/2005/lib | 
| 59 | CXXFLAGS=-g -O -Wall -fPIC ${ROOTCFLAGS} | LDFLAGS = $(PAM_BIT) $(CERNLIBS) | 
| 60 | #CXXFLAGS= -g -Wall -O ${ROOTCFLAGS} | #LDFLAGS = -lmathlib -lpacklib -lkernlib -llapack -lg2c -lm -lnsl -lcrypt -L/cern/2005/lib $(PAM_BIT) | 
| 61 | # flags needed on the pamelatov's: |  | 
| 62 | LDFLAGS = -g -lmathlib -lpacklib -lkernlib -llapack -lg2c -lm -lnsl -lcrypt -L/cern/2005/lib | #LDFLAGS = -g -llapack -lg2c -lm -lnsl -lcrypt -L/cern/2005/lib $(PAM_BIT) | 
| 63 | #LDFLAGS = -g -llapack -lg2c -lm -lnsl -lcrypt -L/cern/2005/lib |  | 
| 64 |  | CXXSRCS= Digitizer.cxx DigitizePSCU.cxx DigitizeCalo.cxx DigitizeTOF.cxx DigitizeAC.cxx DigitizeS4.cxx DigitizeND.cxx  Write.cxx DigitizeTRK.cxx Pamelagp2Digits.cxx DigitVersion.cxx | 
| 65 | HEAS =$(SRCS:.cpp=.h) | OBJS=$(CXXSRCS:%.cxx=%.o) | 
| 66 | OBJS =$(SRCS:.cpp=.o) |  | 
| 67 | DEPS =$(SRCS:.cpp=.d) | CPPSRCS= CRC.cpp calcrc.cpp | 
| 68 | CLAS =$(DICS:.cpp= ) | CPOBJS=$(CPPSRCS:%.cpp=%.o) | 
| 69 | CLASH=$(DICS:.cpp=.h) |  | 
| 70 | JUNK =$(addsuffix ~,${SRCS}) $(addsuffix ~,${HEAS}) | HEAS =$(SRCS:.cpp=.h) | 
| 71 | DICO =$(addsuffix Dict.o, ${CLAS}) | #OBJS =$(SRCS:.cpp=.o) | 
| 72 | DICH =$(addsuffix Dict.h, ${CLAS}) | DEPS =$(SRCS:.cpp=.d) | 
| 73 |  | CLAS =$(DICS:.cpp= ) | 
| 74 | all: mkverpath Pamelagp2Digits | CLASH=$(DICS:.cpp=.h) | 
| 75 | @echo -e ${GREEN} "" | JUNK =$(addsuffix ~,${SRCS}) $(addsuffix ~,${HEAS}) | 
| 76 | @(${EGREEN} " Finished, now you can install the package \n  (use: make install) "; ${RESET}) | DICO =$(addsuffix Dict.o, ${CLAS}) | 
| 77 | @echo -e ${GREEN} "" | DICH =$(addsuffix Dict.h, ${CLAS}) | 
| 78 | @${RESET} |  | 
| 79 |  | all: prepare libs Pamelagp2Digits | 
| 80 |  | @echo -e ${GREEN} "" | 
| 81 | Pamelagp2Digits:  DigitVersion.o CRC.o calcrc.o Pamelagp2Digits.o Digitizer.o DigitizeRunHeader.o DigitizeCalo.o DigitizeTOF.o DigitizeAC.o DigitizeS4.o DigitizeND.o  Write.o DigitizeTRK.o ${OBJS} ${DICO} | @(${EGREEN} " Finished, now you can install the package \n  (use: make install) "; ${RESET}) | 
| 82 | #       @(${EWHITE} " Compiling Pamelagp2Digits... \n ") | @echo -e ${GREEN} "" | 
| 83 | $(LD) $(LDFLAGS) -o $@ $^ ${ROOTLIBS} ${CERNLIBS} ${F77LIBS} ${SYSLIBS} ${PAM_LIB}/libGLTables.so ${PAM_LIB}/libsgp4.so ${PAM_YODA}/lib/libyoda.so | @${RESET} | 
| 84 | @rm -f *.o |  | 
| 85 |  | prepare: mkverpath | 
| 86 | Digitizer: Digitizer.o ${OBJS} ${DICO} |  | 
| 87 | $(LD) $(LDFLAGS) -o $@ $^ ${ROOTLIBS} ${CERNLIBS} ${F77LIBS} ${SYSLIBS} | libs: $(CPOBJS) ${OBJS} ${DICO} | 
| 88 |  |  | 
| 89 | depend: ${DEPS} |  | 
| 90 |  | #Pamelagp2Digits: DigitVersion.o CRC.o calcrc.o Pamelagp2Digits.o Digitizer.o DigitizeRunHeader.o DigitizeCalo.o DigitizeTOF.o DigitizeAC.o DigitizeS4.o DigitizeND.o  Write.o DigitizeTRK.o ${OBJS} ${DICO} | 
| 91 | %.d: %.cpp | Pamelagp2Digits: | 
| 92 | @echo Creating dependencies for $< | @(${EWHITE} " Compiling Pamelagp2Digits... \n ") | 
| 93 | @$(CXX) -MM $(CXXFLAGS) $< -o $@ | @ $(LD) $(LDFLAGS) -o $@ $^ ${ROOTLIBS} ${CERNLIBS} ${F77LIBS} ${SYSLIBS} ${PAM_LIB}/libGLTables.so ${PAM_LIB}/libsgp4.so ${PAM_YODA}/lib/libyoda.so ${OBJS} $(CPOBJS) | 
| 94 |  | @rm -f *.o | 
| 95 |  |  | 
| 96 |  | Digitizer: Digitizer.o ${OBJS} ${DICO} | 
| 97 | .SUFFIXES: .cxx | $(LD) $(LDFLAGS) -o $@ $^ ${ROOTLIBS} ${CERNLIBS} ${F77LIBS} ${SYSLIBS} | 
| 98 | .cxx.o: |  | 
| 99 | $(CXX) $(CXXFLAGS) -c $< `root-config --cflags` -I${PAM_YODA}/include/yoda/ -I${PAM_INC}/ | depend: ${DEPS} | 
| 100 |  |  | 
| 101 |  |  | 
| 102 | .PHONY: clean | %.d: %.cxx | 
| 103 |  | @echo Creating dependencies for $< | 
| 104 | mkverpath: | @$(CXX) -MM $(CXXFLAGS) $< -o $@ | 
| 105 | @(${EGREEN} creating file DigitVersion.cpp; ${RESET}) |  | 
| 106 | @echo '#include <TSystem.h>' >  DigitVersion.cpp; echo ' char *DigitizerInfo(bool print){ if ( print ) printf("\nPAMELA PamelaDigitizer version: ${VER}\n\nCompiled on '${TODAY}' with: '${GCCVER}'\n\nOn: '${UNAMEA}'\n\n"); return("${VER}"); }' >>  DigitVersion.cpp | .SUFFIXES: .cxx | 
| 107 | @sleep 0.8 | %.o: %.cxx | 
| 108 |  | @(${EGREEN} "Creating CXX object file: "${WHITE} "`basename $@`"; ${RESET}) | 
| 109 | clean: | @$(CXX) $(CXXFLAGS) -c $< `root-config --cflags` -I${PAM_YODA}/include/yoda/ -I${PAM_INC}/ | 
| 110 |  |  | 
| 111 |  | .SUFFIXES: .cpp | 
| 112 | @(${EGREEN} Removing object files .....) | %.o: %.cpp | 
| 113 | @rm -f *~ | @(${EGREEN} "Creating CPP object file: "${WHITE} "`basename $@`"; ${RESET}) | 
| 114 | @rm -f ${OBJS} ${DICO} *.o | @$(CXX) $(CXXFLAGS) -c $< `root-config --cflags` -I${PAM_YODA}/include/yoda/ -I${PAM_INC}/ | 
| 115 | @echo Removing dependencies files ..... |  | 
| 116 | @rm -f ${DEPS} | .PHONY: clean | 
| 117 | @echo Removing dictionary files ..... |  | 
| 118 | @rm -f ${JUNK} ${DICH} | mkverpath: | 
| 119 | @echo Removing temporary files ..... | @(${EGREEN} creating file DigitVersion.cxx; ${RESET}) | 
| 120 | @rm -f ${JUNK} | @echo '#include <TSystem.h>' >  DigitVersion.cxx; echo ' const char *DigitizerInfo(bool print){ if ( print ) printf("\nPAMELA PamelaDigitizer version: ${VER}\n\nCompiled on '${TODAY}' with: '${GCCVER}'\n\nOn: '${UNAMEA}'\n\n"); return("${VER}"); }' >>  DigitVersion.cxx | 
| 121 | @rm -f DigitVersion.cpp; ${RESET} | @sleep 1.2 | 
| 122 |  |  | 
| 123 | install: | clean: | 
| 124 | #       @echo "TEST: copying the executable in the PAM_BIN directory"; |  | 
| 125 | @(${EGREEN} "copying the executable in the PAM_BIN directory"; ${RESET}) |  | 
| 126 | cp Pamelagp2Digits ${PAM_BIN}/. | @(${EGREEN} Removing object files .....) | 
| 127 |  | @rm -f *~ | 
| 128 |  | @rm -f ${OBJS} ${CPOBJS} ${DICO} *.o | 
| 129 |  | @echo " Removing dependencies files ....." | 
| 130 |  | @rm -f ${DEPS} | 
| 131 |  | @echo " Removing dictionary files ....." | 
| 132 |  | @rm -f ${JUNK} ${DICH} | 
| 133 |  | @echo " Removing temporary files ....." | 
| 134 |  | @rm -f ${JUNK} | 
| 135 |  | @rm -f DigitVersion.cxx; | 
| 136 |  | @echo " Removing Pamelagp2Digits ....." | 
| 137 |  | @rm -f ${JUNK} | 
| 138 |  | @rm -f Pamelagp2Digits; ${RESET} | 
| 139 |  | @touch DigitVersion.cxx | 
| 140 |  |  | 
| 141 |  | install: | 
| 142 |  | #       @echo "TEST: copying the executable in the PAM_BIN directory"; | 
| 143 |  | @(${EGREEN} "copying the executable in the PAM_BIN directory"; ${RESET}) | 
| 144 |  | cp Pamelagp2Digits ${PAM_BIN}/. |