SRCS:=aliroot.cxx
CSRCS:=fpu.c
-ELIBSDIR:= $(ALICE)/geant3/lib/tgt_$(ALICE_TARGET)
+ELIBSDIR:=
ELIBS:= MUON TPC ITS PMD TRD FMD TOF PHOS CRT RICH ZDC VZERO EMCAL STRUCT \
START EVGEN STEER CONTAINERS pythia6 pdf THijing hijing TMEVSIM \
mevsim THbtp HBTP THerwig herwig TEPEMGEN EPEMGEN FASTSIM microcern
+# The two variables below are used for the creation of profile target.
+# ARLIBS stands for ARchive LIBrarieS and for each module one wants to profile
+# consists of dictionary object file and static library itself.
+# The shared libraries for modules without profiling are listed in the second
+# variable SHLIBS (SHared LIBrarieS).
+# Please note that the order of static libraries is important, the ones
+# which provide code for the others have to be placed after their "clients".
+# For example ITS uses TPC code, TPC uses CONTAINERS code, so the order has
+# to be ITS TPC CONTAINERS
+
+ARLIBS:= \
+ FMD/tgt_$(ALICE_TARGET)/G__FMD.o $(LIBPATH)/libFMD.a \
+ CRT/tgt_$(ALICE_TARGET)/G__CRT.o $(LIBPATH)/libCRT.a \
+ RICH/tgt_$(ALICE_TARGET)/G__RICH.o $(LIBPATH)/libRICH.a \
+ ZDC/tgt_$(ALICE_TARGET)/G__ZDC.o $(LIBPATH)/libZDC.a \
+ VZERO/tgt_$(ALICE_TARGET)/G__VZERO.o $(LIBPATH)/libVZERO.a \
+ EMCAL/tgt_$(ALICE_TARGET)/G__EMCAL.o $(LIBPATH)/libEMCAL.a \
+ START/tgt_$(ALICE_TARGET)/G__START.o $(LIBPATH)/libSTART.a \
+ TOF/tgt_$(ALICE_TARGET)/G__TOF.o $(LIBPATH)/libTOF.a \
+ TRD/tgt_$(ALICE_TARGET)/G__TRD.o $(LIBPATH)/libTRD.a \
+ PMD/tgt_$(ALICE_TARGET)/G__PMD.o $(LIBPATH)/libPMD.a \
+ MUON/tgt_$(ALICE_TARGET)/G__MUON.o $(LIBPATH)/libMUON.a \
+ PHOS/tgt_$(ALICE_TARGET)/G__PHOS.o $(LIBPATH)/libPHOS.a \
+ ITS/tgt_$(ALICE_TARGET)/G__ITS.o $(LIBPATH)/libITS.a \
+ STRUCT/tgt_$(ALICE_TARGET)/G__STRUCT.o $(LIBPATH)/libSTRUCT.a \
+ TPC/tgt_$(ALICE_TARGET)/G__TPC.o $(LIBPATH)/libTPC.a \
+ STEER/tgt_$(ALICE_TARGET)/G__STEER.o $(LIBPATH)/libSTEER.a \
+ CONTAINERS/tgt_$(ALICE_TARGET)/G__CONTAINERS.o $(LIBPATH)/libCONTAINERS.a
+
+SHLIBS:= $(BINLIBDIRS) -lEVGEN -lpythia6 -lpdf -lTHijing -lhijing -lTMEVSIM -lmevsim -lTHbtp -lHBTP -lTHerwig -lherwig -lTEPEMGEN -lEPEMGEN -lFASTSIM -lmicrocern
\ No newline at end of file
endif
##################################################################
+##################################################################
+#
+# Check if called with profile
+
+ifeq ($(ALIPROFILE),YES)
+override ALICE_TARGET:=$(ALICE_TARGET)PROF
+FFLAGS += -pg
+CXXFLAGS += -pg
+CFLAGS += -pg
+SOFLAGS += -pg
+LDFLAGS += -pg
+endif
+##################################################################
+
##################################################################
#
# Modules to build
# targets
-.PHONY: alilibs aliroot makedistr clean htmldoc
+.PHONY: alilibs aliroot makedistr clean htmldoc profile
modules: $(patsubst %,%/module.mk,$(MODULES))
aliroot: $(BINPATH) $(ALLEXECS) alilibs bin
+ifeq ($(ALIPROFILE),YES)
+alilibs: $(LIBPATH) $(ALLLIBS) $(ALLALIBS) lib modules
+else
alilibs: $(LIBPATH) $(ALLLIBS) lib modules
+endif
# Single Makefile "distribution": Makefile + modules + mkdepend scripts
makedistr: $(MODULES)
@echo "***** Entering DEBUG mode. *****"
endif
@(export ALIDEBUG=YES && $(MAKE))
+profile:
+ifndef ALIQUIET
+ @echo "***** Entering PROFILE mode. *****"
+endif
+ @(export ALIPROFILE=YES && $(MAKE))
lib:
@mkdir lib
@mkdir lib/tgt_$(ALICE_TARGET)
SHLIB = -lg2c
SOEXT = so
+ALLD = ar
+ALFLAGS = cr
+ALLIB =
+AEXT = a
+
# additional ROOT libraries
ROOTLIBS += -lcrypt
SHLIB =
SOEXT = so
+ALLD = ar
+ALFLAGS = cr
+ALLIB =
+AEXT = a
+
# additional ROOT libraries
ROOTLIBS += -lcrypt
DEPENDFFLAGS = $(FFLAGS)
LIBNOVER = `find /lib -name 'libNoVersion*.so' | xargs --replace basename {} .so | sed -e 's/lib/ -l/'`
-GLIBS = -L/usr/X11R6/lib -lX11 $(LIBNOVER)
+GLIBS = $(LIBNOVER)
#System libraries
SYSLIBS =
PACKCFLAGS:=
EXPORT:=
EHDRS:=
-CINTHDRS:=
\ No newline at end of file
+CINTHDRS:=
+ARLIBS:=
+SHLIBS:=
\ No newline at end of file
#The actual library file
@PACKAGE@LIB:=$(LIBPATH)/lib@PACKAGE@.$(SOEXT)
+@PACKAGE@ALIB:=$(LIBPATH)/lib@PACKAGE@.$(AEXT)
#Add this to the modules libs
@MODULE@LIBS += $(@PACKAGE@LIB)
+@MODULE@ALIBS += $(@PACKAGE@ALIB)
#The actual binary file
ifeq ($(TYPE),lib)
ALLLIBS += $(@PACKAGE@LIB)
+ALLALIBS += $(@PACKAGE@ALIB)
BINLIBS += -l@PACKAGE@
else
ALLEXECS += $(@PACKAGE@BIN)
cd $(CURDIR) ; rm -rf $$TMPDIR
$(MUTE)chmod a-w $@
+$(@PACKAGE@ALIB):$(@PACKAGE@O) $(@PACKAGE@DO) @MODULE@/module.mk
+ifndef ALIQUIET
+ @echo "***** Linking static library $@ *****"
+endif
+ $(MUTE)TMPDIR=/tmp/@MODULE@$$$$.`date +%M%S` ; \
+ export TMPDIR; mkdir $$TMPDIR ; cd $$TMPDIR ; \
+ find $(CURDIR)/@MODULE@/tgt_$(ALICE_TARGET) -name '*.o' -exec ln -s {} . \; ;\
+ rm -f $(CURDIR)/$@ ;\
+ $(ALLD) $(ALFLAGS) $(CURDIR)/$@ $(notdir $(@PACKAGE@O) $(@PACKAGE@DO)) $(@PACKAGE@ELIBSDIR) $(@PACKAGE@ELIBS) $(ALLIB);\
+ cd $(CURDIR) ; rm -rf $$TMPDIR
+ $(MUTE)chmod a-w $@
+
+
$(@PACKAGE@BIN):$(@PACKAGE@O) $(@PACKAGE@DO) @MODULE@/module.mk
ifndef ALIQUIET
@echo "***** Making executable $@ *****"
endif
- $(MUTE)$(LD) $(LDFLAGS) $(@PACKAGE@O) $(@PACKAGE@DO) $(BINLIBDIRS) $(@PACKAGE@ELIBSDIR) $(@PACKAGE@ELIBS) $(LIBS) $(EXEFLAGS) -o $@
+ifeq ($(ALIPROFILE),YES)
+ @echo "Not implemented yet"
+ $(MUTE)$(LD) $(LDFLAGS) $(@PACKAGE@O) $(ARLIBS) $(SHLIBS) $(LIBS) $(EXEFLAGS) -o $@
+#$(MUTE)$(LD) $(LDFLAGS) $(@PACKAGE@O) $(@PACKAGE@DO) $(BINLIBDIRS) $(@PACKAGE@ELIBSDIR) $(@PACKAGE@ELIBS) $(LIBS) $(EXEFLAGS) -o $@
+else
+ $(MUTE)$(LD) $(LDFLAGS) $(@PACKAGE@O) $(@PACKAGE@DO) $(BINLIBDIRS) $(@PACKAGE@ELIBSDIR) $(@PACKAGE@ELIBS) $(LIBS) $(EXEFLAGS) -o $@
+endif
$(@PACKAGE@DS): $(@PACKAGE@CINTHDRS) $(@PACKAGE@DH) @MODULE@/module.mk
ifndef ALIQUIET
#Different targets for the module
ifeq ($(TYPE),lib)
-all-@PACKAGE@: $(@PACKAGE@LIB)
+all-@PACKAGE@: $(@PACKAGE@LIB $(@PACKAGE@ALIB)
else
all-@PACKAGE@: $(@PACKAGE@BIN)
endif