Adding profile target (Linux with gcc and icc)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 26 Nov 2002 10:14:22 +0000 (10:14 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 26 Nov 2002 10:14:22 +0000 (10:14 +0000)
ALIROOT/binaliroot.pkg
Makefile
build/Makefile.Linux
build/Makefile.icc
build/header.tpl
build/module.tpl

index 22a114c..eddcf7f 100644 (file)
@@ -1,9 +1,39 @@
 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
index fddfdd8..9555672 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -52,6 +52,20 @@ LDFLAGS := -g $(filter-out -O%,$(LDFLAGS))
 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 
@@ -187,14 +201,18 @@ include build/dummy.d
 
 # 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)   
@@ -211,6 +229,11 @@ ifndef ALIQUIET
        @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)
index fb3b47a..c2e3ddc 100644 (file)
@@ -35,6 +35,11 @@ SOFLAGS       = -O2 -shared -Wl
 SHLIB         = -lg2c
 SOEXT        = so
 
+ALLD         = ar
+ALFLAGS       = cr
+ALLIB         = 
+AEXT         = a
+
 # additional ROOT libraries
 ROOTLIBS  += -lcrypt 
 
index 0663a56..6881b42 100644 (file)
@@ -35,6 +35,11 @@ SOFLAGS       = -Wl,-soname,$(notdir $@) -shared -O
 SHLIB         =
 SOEXT        = so
 
+ALLD         = ar
+ALFLAGS       = cr
+ALLIB         = 
+AEXT         = a
+
 # additional ROOT libraries
 ROOTLIBS  += -lcrypt 
 
@@ -42,7 +47,7 @@ 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 =
index 33ce078..cf644fa 100644 (file)
@@ -27,4 +27,6 @@ PACKCXXFLAGS:=
 PACKCFLAGS:=
 EXPORT:=
 EHDRS:=
-CINTHDRS:=
\ No newline at end of file
+CINTHDRS:=
+ARLIBS:=
+SHLIBS:=
\ No newline at end of file
index 15e76a0..c8bb6b7 100644 (file)
@@ -102,9 +102,11 @@ endif
 #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
 
@@ -117,6 +119,7 @@ endif
 
 ifeq ($(TYPE),lib)
 ALLLIBS += $(@PACKAGE@LIB)
+ALLALIBS += $(@PACKAGE@ALIB)
 BINLIBS += -l@PACKAGE@
 else
 ALLEXECS += $(@PACKAGE@BIN)
@@ -154,11 +157,30 @@ endif
       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
@@ -176,7 +198,7 @@ endif
 #Different targets for the module
 
 ifeq ($(TYPE),lib)
-all-@PACKAGE@: $(@PACKAGE@LIB)
+all-@PACKAGE@: $(@PACKAGE@LIB $(@PACKAGE@ALIB)
 else
 all-@PACKAGE@: $(@PACKAGE@BIN)
 endif