################################################### # # Makefile for Geometry Definition in GEANT # # * Creates library "libhgeo.a" with automatic update of # object files (sensitive to C++-files and included header-files) # # * Produces the executable "hadgeo" with following options: # - Oracle-Flag: Geometry data are read from data base else from file # - GEANT-Flag: Geometry is implemented in GEANT, else the # required transformations are executed without calling # GEANT-routines (GSVOLU, GSPOS, etc.) # # # 97/02/11 Heike Schoen #################################################### #----------------------------------------- # Precompiler Flags: HADESDEFS # used up to now: # # -DWITHORACLE # -DWITHGEANT # -DWITHFORTRAN (included in DWITHGEANT) # # ATTENTION: every time a precompiler Flag is changed, all code # """"""""" has to be recompiled. Remove the dependency Makefiles # *.d on your directory #---------------------------------------------------------------------- HADESDEFS=-DWITHGEANT #HADESDEFS=-DWITHORACLE -DILSESHOW LOCLIB=libhgeo.a LIB=/cern/96a/lib # directories for includes and libraries GEANT =/u/halo/geant #UTIL =/u/halo/util UTIL =/u/halo/packages/util ORA=/u/halo/ora CPPFLAGS += -g -I/usr/oracle/sqllib/public -I$(LIB)/../include/cfortran -I$(UTIL) -I$(ORA) LDFLAGS= -L/usr/oracle/lib -lsql /usr/oracle/lib/osntab.o -lsqlnet -lora -lsqlnet -lora -lpls -lnlsrtl3 -lc3v6 -lcore3 -lnlsrtl3 -lcore3 -lm -lrt -lc #--------------------------------- ## Libraries for X11 and cfortran #--------------------------------- LOADLIBS= -lX11 -lm -lXm -lXt -lX11 -lgrafX11 -ldnet_stub -lmathlib -lUfor -lfor -lFutil -lots -lm \ #------------------ ## Cern Libraries #------------------- LCERN=-lgeant321 -lpawlib -lgraflib -lgrafX11 -lpacklib -lmathlib -lkernlib LIBDIR=-L. -L$(GEANT) -L$(UTIL) -L$(ORA) -L$(LIB) -L/usr/lib -L/usr/lib/X11 LHADLIBS= -lutil -lggeo LHADORA= -lhadesora GEANTOBJ=gxint.o uglast.o uginit.o ugeom.o CC :=g++ #ORACLE suffixes PROC=/usr/oracle/bin/proc PROCFLAGS= oraca=yes code=cpp parse=partial ireclen=130 oreclen=130 include=/usr/include/cxx include=/usr/include include=/usr/oracle/sqllib/public -I../include .SUFFIXES : .pc .cc .pc.cc: $(PROC) $(PROCFLAGS) iname=$< oname=$*.cpp #end Oracle suffixes source := $(wildcard *.cc) object := $(source:.cc=.o) mkfiles := $(source:.cc=.d) # Include a dependency Makefile *.d for each cc-file, containing the # the included header files. # This makefile is updated, whenever one of the included header files # is changed by the pattern rule (%d: %.cc) below. # If it doesn't exist, it will be created. include $(source:.cc=.d) objects =$(filter-out main.o, $(object)) # pattern rules #----------------------- ## Dependency Makefiles #----------------------- %.d: %.cc @$(SHELL) -ec '$(CC) -M $(CPPFLAGS) \ $< |sed '\''s/$*.o/& $@/g'\'' > $@ @echo creating Makefile $*.d #-------------------- ## Library Members #--------------------- (%.o): %.cc %.d $(CC) $(HADESDEFS) $(CPPFLAGS) -c $< -o $% @$(AR) rv $@ $% @$(RM) $% @ranlib $(LOCLIB) #------------------------ ## Normal object files #------------------------ %.o: %.cc %.d $(CC) $(HADESDEFS) $(CPPFLAGS) -c $< -o $@ #------------------------ ## create library only #------------------------ $(LOCLIB): $(LOCLIB)($(objects)) $(mkfiles) @echo " " #----------- # linking #----------- #----------------------------------- # Ask for Precompiler flag WITHGEANT #----------------------------------- ifeq (DWITHGEANT,$(findstring DWITHGEANT, $(HADESDEFS))) hadgeo: $(LOCLIB)($(objects)) $(mkfiles) @echo "" @echo extract GEANT objects from library ar x $(GEANT)/libggeo.a $(GEANTOBJ) # Ask for Precompiler flag WITHORACLE ifeq (,$(findstring DWITHORACLE, $(HADESDEFS))) @echo @echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxx @echo ' ' Linking with GEANT @echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxx @echo $(CC) $(GEANTOBJ) /usr/lib/cmplrs/fort/for_main.o \ $(LIBDIR) $(LOCLIB) $(LHADLIBS) $(LOADLIBS) $(LCERN) -o hadgeo else @echo @echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx @echo ' ' Linking with GEANT and ORACLE @echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx @echo $(CC) $(GEANTOBJ) /usr/lib/cmplrs/fort/for_main.o \ $(LIBDIR) $(LOCLIB) $(LHADLIBS) $(LOADLIBS)\ $(LCERN) $(LHADORA) $(LDFLAGS) \ -o hadgeo endif else hadgeo: main.o $(LOCLIB)($(objects)) $(mkfiles) ifeq (,$(findstring DWITHORACLE, $(HADESDEFS))) @echo @echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx @echo ' ' Linking without SPECIALS @echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx @echo $(CC) main.o $(objects) \ $(LIBDIR) $(LOCLIB) $(LHADLIBS) $(LOADLIBS) -o hadgeo else @echo @echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxx @echo ' ' Linking with ORACLE @echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxx @echo $(CC) main.o $(objects) \ $(LIBDIR) $(LOCLIB) $(LHADLIBS) $(LOADLIBS) $(LHADORA) $(LDFLAGS) \ -o hadgeo endif endif