#102886: Various fixes to the the code in EVE, STEER, PWGPP, cmake
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 21 Oct 2013 11:15:36 +0000 (11:15 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 21 Oct 2013 11:15:36 +0000 (11:15 +0000)
ALIROOT/CMakebinaliroot.pkg:
=====================================
Add EOD marker

EVE/CMakebinalihlteve.pkg:
=====================================
Add -lVc to linker libraries

STEER/AODLinkDef.h: =====================================
Fix up schema evolution code for newer ROOT where we do not have
privileged access to data members.

STEER/STEER/AliReconstruction.cxx:
=====================================
Add preprocessor switches for ROOT git transition

STEER/STEER/AliRun.cxx:
=====================================
Remove unused TCint.h header inclussion

PWGPP/TPC/AliComparisonDraw.cxx:
=====================================
Remove unused TCint.h header inclussion

cmake/ALICE_CMake.cmake:
=====================================
Many fixes:

- Print flags passed by default by CMake
- Save the unexpanded EINCLUDE value in saveEINCLUDE for PAR generation
- Replace dots `.' in filenames with underscore `_' when generating dictionary
files, since rootcint may end up writing uncompilable code.
- Add progress reports
- If the used ROOT version is larger than ROOT6_ALPHA (5.99.1), then give
full paths to rootcint.
- Set CMAKE_EXE_LINKER_FLAGS to the value of PLDFLAGS for executables.
- Fix up sed commands when replacing `include $ROOTSYS/etc/Makefile.arch'
with `include Makefile.arch' in PAR make files.
- Use root-config to locate Makefile.arch
- Replace `EINCLUDE :=.*' with `EINCLUDE := ${saveEINCLUDE}' in PAR Makefiles

cmake/FindROOT.cmake:
=====================================
Do not require ROOTSYS to be set. We do make sure that rootcint and
root-config can be found in the PATH however.

cmake/GenerateLinkDef.sh:
=====================================
Put in guard for both _CINT_ and _CLING_

Christian H.

ALIROOT/CMakebinaliroot.pkg
EVE/CMakebinalihlteve.pkg
PWGPP/TPC/AliComparisonDraw.cxx
STEER/AODLinkDef.h
STEER/STEER/AliReconstruction.cxx
STEER/STEER/AliRun.cxx
cmake/ALICE_CMake.cmake
cmake/FindROOT.cmake
cmake/GenerateLinkDef.sh

index cfe4891..2e8c038 100644 (file)
@@ -1,5 +1,5 @@
 # -*- mode: CMake -*- 
-#--------------------------------------------------------------------------------#
+#-----------------------------------------------------------------------#
 # Package File for aliroot                                                       #
 # Author : Johny Jose (johny.jose@cern.ch)                                       #
 # Variables Defined :                                                            #
@@ -24,7 +24,7 @@
 # CINTAUTOLINK - Set automatic dictionary generation                             #
 # ARLIBS - Archive Libraries and objects for linking (Executables only)          #
 # SHLIBS - Shared Libraries and objects for linking (Executables only)           #
-#--------------------------------------------------------------------------------#
+#-----------------------------------------------------------------------#
 
 set ( SRCS aliroot.cxx)
 set ( CSRCS fpu.c)
@@ -78,3 +78,6 @@ list(APPEND SRCS ${GFILES})
 set ( SHLIBS  ${BINLIBDIRS} EVGEN -lEGPythia6 Pythia6 -lpythia6 AliPythia6 lhapdf THijing hijing THerwig herwig TPHIC FASTSIM microcern)
 
 set ( EINCLUDE STEER/STEER )
+#
+# EOF
+#
index 1766f6f..0066138 100644 (file)
@@ -33,7 +33,7 @@ set ( ELIBSDIR )
 
 set ( ELIBS  EveBase EveHLT EveDet HLTbase HLTrec AliHLTUtil AliHLTEve AliHLTTPC TPCcalib AliHLTRCU AliHLTMUON TPCsim TPCrec TPCbase ITSbase ITSsim ITSrec ITSUpgradeBase ITSUpgradeSim TRDbase TRDrec AliHLTTRD PHOSbase PHOSUtils EMCALbase EMCALraw EMCALUtils EMCALrec EMCALsim TRIGGERbase VZERObase VZEROrec VZEROsim TRIGGERbase MUONmapping MUONevaluation MUONsim MUONrec MUONgeometry MUONcalib MUONbase MUONraw MUONtrigger MUONcore STEER CDB AOD ESD STEERBase ANALYSISalice ANALYSIS FASTSIM microcern RAWDatasim RAWDatarec RAWDatabase XMLParser STAT TOFbase TOFsim FMDbase FMDsim FMDrec PMDbase T0base OADB)
 
-set ( PACKBLIBS  ${ROOTCLIBS} ${ROOTPLIBS} -lTreePlayer -lGeomPainter -lGed -lRGL -lEve ${SYSLIBS})
+set ( PACKBLIBS  ${ROOTCLIBS} ${ROOTPLIBS} -lTreePlayer -lGeomPainter -lGed -lRGL -lEve ${SYSLIBS} -lVc)
 
 if( ALICE_TARGET STREQUAL "macosx")
                        
@@ -54,3 +54,7 @@ endif( MACOSX_MINOR STREQUAL "5")
        set ( ELIBSDIR ${ELIBSDIR} ${FINK_ROOT}/lib)
 
 endif( ALICE_TARGET STREQUAL "macosx")
+#
+# Local Variables:
+#  mode: CMake
+# End:
index 43399a4..c0b11ee 100644 (file)
@@ -21,7 +21,6 @@
 
 
 #include "TFile.h"
-#include "TCint.h"
 #include "TH3F.h"
 #include "TH2F.h"
 #include "TF1.h"
index 10c46c3..c1241bf 100644 (file)
@@ -25,7 +25,7 @@
     source="UShort_t fTPCsignalN; Double_t fTPCmomentum; Float_t fTRDmomentum[6]"  \
     version="[-10]"                                       \
     target="fTPCsignalN, fTPCmomentum, fTRDnSlices, fTRDmomentum"                                          \
-    code="{fTPCsignalN=(UChar_t)onfile.fTPCsignalN; fTPCmomentum=onfile.fTPCmomentum; for (Int_t i=0;i<6;++i) fTRDmomentum[i]=onfile.fTRDmomentum[i];}" 
+    code="{newObj->SetTPCsignalN((UChar_t)onfile.fTPCsignalN); newObj->SetTPCmomentum(onfile.fTPCmomentum); for (Int_t i=0;i<6;++i) newObj->SetTRDmomentum(i,onfile.fTRDmomentum[i]);}" 
 
 #pragma link C++ class AliAODPid+;
 #pragma link C++ class AliAODVertex+;
index 2242ebc..2e4bfe1 100644 (file)
@@ -2509,11 +2509,19 @@ void AliReconstruction::SlaveTerminate()
    sVersion += "; root ";
 #ifdef ROOT_SVN_BRANCH
    sVersion += ROOT_SVN_BRANCH;
-#else
+#elif defined(ROOT_GIT_BRANCH)
    sVersion += ROOT_GIT_BRANCH;
+#else
+   sVersion += "?";
 #endif
    sVersion += ":";
+#ifdef ROOT_SVN_REVSION
    sVersion += ROOT_SVN_REVISION;
+#elif defined(ROOT_GIT_COMMIT)
+   sVersion += ROOT_GIT_COMMIT;
+#else 
+   sVersion += "?";
+#endif
    sVersion += "; metadata ";
    sVersion += getenv("PRODUCTION_METADATA");
                    
index 316c47f..93a3850 100644 (file)
@@ -40,7 +40,6 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include <TCint.h> 
 #include <TROOT.h>
 #include <TRandom3.h>
 #include <TSystem.h>
index 7918bb1..3ca2be6 100644 (file)
@@ -18,6 +18,12 @@ macro(ALICE_DevFlagsOutput)
     message(STATUS "SHLIB     : ${SHLIB}")
     message(STATUS "SYSLIBS   : ${SYSLIBS}")
     message(STATUS "CINTFLAGS : ${CINTFLAGS}")
+    message(STATUS "CMAKE_Fortran_FLAGS              : ${CMAKE_Fortran_FLAGS}")
+    message(STATUS "CMAKE_CXX_FLAGS          : ${CMAKE_CXX_FLAGS}")
+    message(STATUS "CMAKE_C_FLAGS            : ${CMAKE_C_FLAGS}")
+    message(STATUS "CMAKE_SHARED_LINKER_FLAGS : ${CMAKE_SHARED_LINKER_FLAGS}")
+    message(STATUS "CMAKE_MODULE_LINKER_FLAGS : ${CMAKE_MODULE_LINKER_FLAGS}")
+    message(STATUS "CMAKE_EXE_LINKER_FLAGS    : ${CMAKE_EXE_LINKER_FLAGS}")
   endif(ALICEDEV STREQUAL "YES")
 
 endmacro(ALICE_DevFlagsOutput)
@@ -233,6 +239,8 @@ macro(ALICE_ResetPackage)
   set(PSHLIBS)
   set(PDS)
 
+  set(saveEINCLUDE)
+
 endmacro(ALICE_ResetPackage)
 
 function(ALICE_SetPackageVariable _var ext setvalue unsetvalue )
@@ -249,8 +257,15 @@ function(ALICE_SetPackageVariable _var ext setvalue unsetvalue )
 endfunction(ALICE_SetPackageVariable)
 
 macro(ALICE_BuildPackage)
+  # message(STATUS " ${PACKAGE}")
  
   list(APPEND EINCLUDE STEER) 
+  # Needed for PAR files - we need to do this before path 
+  # expansion so that the PAR files do not contain references to 
+  # specific directories but depend solely on ALICE_ROOT
+  string(REPLACE ";" " " saveEINCLUDE "${EINCLUDE}")
+  # set(saveEINCLUDE "${EINCLUDE}")
+  # message(STATUS "saveEINCLUDE=${saveEINCLUDE} EINCLUDE=${EINCLUDE}")
 
   ALICE_SetPackageVariable(PFFLAGS "FFLAGS" "${PACKFFLAGS}" "${FFLAGS}")
   ALICE_SetPackageVariable(PCFLAGS "CFLAGS" "${PACKCFLAGS}" "${CFLAGS}")
@@ -299,6 +314,8 @@ macro(ALICE_BuildPackage)
     list(APPEND PMALIBS ${PACKAGE}-static)
     list(APPEND ALLALIBS ${PACKAGE}-static)
     list(APPEND BINLIBS ${PACKAGE})
+    # Do not link against other libraries when creating a library 
+    # set(PELIBS)
   else()
     list(APPEND ALLEXECS ${PACKAGE})
   endif(lib)
@@ -307,7 +324,10 @@ macro(ALICE_BuildPackage)
   set(${MODULE}INC "${EINCLUDE}" PARENT_SCOPE)
   list(APPEND INCLUDEFILES ${PEXPORTDEST})
   if(WITHDICT)  
-    ALICE_SetPackageVariable(PDS "DS" "G__${PACKAGE}.cxx" "G__${PACKAGE}.cxx")
+    # Replace dots in file name with underscores, or rootcint will 
+    # write invalid code (namespace names with dots in them)
+    string(REPLACE "." "_" ESC_PACKAGE ${PACKAGE})
+    ALICE_SetPackageVariable(PDS "DS" "G__${ESC_PACKAGE}.cxx" "G__${ESC_PACKAGE}.cxx")
     ALICE_GenerateDictionary()
   else()
     if(lib)
@@ -328,7 +348,8 @@ endmacro(ALICE_BuildPackage)
 
 
 macro(ALICE_BuildModule)
-
+  # message(STATUS "${MODULE}")
+  execute_process(COMMAND ${CMAKE_COMMAND} -E echo_append "-- ${MODULE}:")
   add_definitions(-D_MODULE_="${MODULE}")
   foreach(PACKAGEFILE ${PACKAGES})
       set(lib)
@@ -337,6 +358,7 @@ macro(ALICE_BuildModule)
       string(REGEX MATCH "CMakebin" bin "${PACKAGEFILE}")
       get_filename_component(PACKAGE ${PACKAGEFILE} NAME)
       string(REGEX REPLACE "^CMake(lib|bin)(.*)\\.pkg" "\\2" PACKAGE "${PACKAGE}")
+      execute_process(COMMAND ${CMAKE_COMMAND} -E echo_append " ${PACKAGE}")
       if(ALICEDEV)
         message("Adding package ${PACKAGE} in ${MODULE}")
       endif(ALICEDEV)
@@ -353,6 +375,7 @@ macro(ALICE_BuildModule)
       endif(NOT EXCLUDEPACKAGE)
   endforeach(PACKAGEFILE)
   ALICE_CheckModule()
+  execute_process(COMMAND ${CMAKE_COMMAND} -E echo " done")
 endmacro(ALICE_BuildModule)
 
 macro(ALICE_GenerateDictionary)
@@ -375,7 +398,20 @@ macro(ALICE_GenerateDictionary)
   separate_arguments(DCINTHDRS)
   separate_arguments(DDH)
   # Format neccesary arguments
+  set(ROOT6_ALPHA "5.99.1")
+  string(REGEX REPLACE "/0*" "." ROOT_DOTVERSION ${ROOT_VERSION})
+  if(ROOT_DOTVERSION VERSION_GREATER ROOT6_ALPHA)
+    # For current ROOT6-alpha - without proper PCM support - we need to 
+    # give the _full_ path for all include paths, so that libCling can
+    # later attach those to the internal include path of the interpreter 
+    # and so that the interpreter can parse the header files. 
+    #
+    # THIS SHOULD BE A TEMPORARY HACK!
+    ALICE_Format(DINC "-I{PROJECT_SOURCE_DIR}/" "" 
+      "${DINC};${CMAKE_INCLUDE_EXPORT_DIRECTORY}")
+  else()
   ALICE_Format(DINC "-I" "" "${DINC};${CMAKE_INCLUDE_EXPORT_DIRECTORY}")
+  endif(ROOT_DOTVERSION VERSION_GREATER ROOT6_ALPHA)
   set_source_files_properties(${PDS} PROPERTIES GENERATED TRUE)
   set_source_files_properties(${PDS} PROPERTIES COMPILE_FLAGS "-w")
   add_custom_command(OUTPUT  ${PDS}
@@ -390,12 +426,12 @@ endmacro(ALICE_GenerateDictionary)
 
 macro(ALICE_BuildLibrary)
 
-  ALICE_DevFlagsOutput()
   set(CMAKE_CXX_FLAGS "${PEDEFINE} ${PCXXFLAGS}")
   set(CMAKE_C_FLAGS "${PEDEFINE} ${PCFLAGS}")
   set(CMAKE_Fortran_FLAGS "${PEDEFINE} ${PFFLAGS}")
   set(CMAKE_SHARED_LINKER_FLAGS ${PSOFLAGS}) 
   set(CMAKE_MODULE_LINKER_FLAGS ${PLDFLAGS})
+  ALICE_DevFlagsOutput()
   
   
   separate_arguments(PINC)
@@ -449,12 +485,13 @@ endmacro(ALICE_BuildLibrary)
 
 macro(ALICE_BuildExecutable)
 
-  ALICE_DevFlagsOutput()
   set(CMAKE_CXX_FLAGS "${PEDEFINE} ${PCXXFLAGS} ${EXEFLAGS}")
   set(CMAKE_C_FLAGS "${PEDEFINE} ${PCFLAGS} ${EXEFLAGS}")
   set(CMAKE_Fortran_FLAGS "${PEDEFINE} ${PFFLAGS} ${EXEFLAGS}")
   set(CMAKE_SHARED_LINKER_FLAGS ${PSOFLAGS}) 
   set(CMAKE_MODULE_LINKER_FLAGS ${PLDFLAGS})
+  set(CMAKE_EXE_LINKER_FLAGS ${PLDFLAGS})
+  ALICE_DevFlagsOutput()
   
   separate_arguments(PINC)
   separate_arguments(EINCLUDE)
@@ -580,9 +617,10 @@ macro(ALICE_BuildPAR)
       list(APPEND PARSRCS ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/${file}-par)
     endforeach(file ${SRCS} ${HDRS} ${FSRCS} ${DHDR})
     
+    # message(STATUS "saveEINCLUDE=${saveEINCLUDE}")
     add_custom_target(${PACKAGE}.par
-                      COMMAND sed -e 's/include .\(ROOTSYS\)\\/\\(etc\\|test\\)\\/Makefile.arch/include Makefile.arch/\; s/PACKAGE = .*/PACKAGE = ${PACKAGE}/\; s,SRCS *=.*,SRCS = ${SRCS},\;' < Makefile | sed -e 's,HDRS *=.*,HDRS = ${HDRS},\; s,FSRCS *=.*,FSRCS = ${FSRCS},\; s,DHDR *=.*,DHDR = ${DHDR},' > ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile
-                      COMMAND cp -pR ${ROOTSYS}/etc/Makefile.arch ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile.arch
+                      COMMAND sed -e 's,include ..ROOTSYS./\\\(etc\\|test\\\)/Makefile.arch,include Makefile.arch,\; s/PACKAGE = .*/PACKAGE = ${PACKAGE}/\; s,SRCS *=.*,SRCS = ${SRCS},\;' < Makefile | sed -e 's,HDRS *=.*,HDRS = ${HDRS},\; s,FSRCS *=.*,FSRCS = ${FSRCS},\; s,DHDR *=.*,DHDR = ${DHDR},\; s,EINCLUDE *:=.*,EINCLUDE := ${saveEINCLUDE},' > ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile
+                      COMMAND cp -pR `root-config --etcdir`/Makefile.arch ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/Makefile.arch
                       COMMAND cp -pR PROOF-INF.${PACKAGE} ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}/PROOF-INF
 #                      COMMAND cp -pR lib${PACKAGE}.pkg ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE}
                       COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_CURRENT_BINARY_DIR} tar --exclude=.svn -czhf ${CMAKE_BINARY_DIR}/${PACKAGE}.par ${PACKAGE}
index 4945e41..29e3d2f 100644 (file)
@@ -5,12 +5,14 @@
 
 cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
 
-set(ROOTSYS $ENV{ROOTSYS} CACHE STRING "" FORCE)
-if(NOT ROOTSYS)
-  message(FATAL_ERROR "Environment variable $ROOTSYS is not set !")
-else()
-  get_filename_component(ROOTSYS "${ROOTSYS}" REALPATH)
-endif(NOT ROOTSYS)
+# We don't care if ROOTSYS environment variable is set or not - 
+# all we care about is that we can find root-config in our path
+# set(ROOTSYS $ENV{ROOTSYS} CACHE STRING "" FORCE)
+# if(NOT ROOTSYS)
+#   message(FATAL_ERROR "Environment variable $ROOTSYS is not set !")
+# else()
+#   get_filename_component(ROOTSYS "${ROOTSYS}" REALPATH)
+# endif(NOT ROOTSYS)
 find_program(ROOT_CONFIG NAMES root-config)
 find_program(ROOTCINT NAMES rootcint)
 if(NOT ROOT_CONFIG)
@@ -29,11 +31,28 @@ if(ROOT_CONFIG AND ROOTCINT)
   ALICE_RootConfig(ROOTCLIBS --glibs)
   ALICE_RootConfig(ROOTHASALIEN --has-alien)
   ALICE_RootConfig(ROOTHASXML --has-xml)
+  # ALICE_RootConfig(ROOTHASVC  --has-vc)
   set(ROOTCLIBS "${ROOTCLIBS} -lThread -lMinuit -lVMC -lEG -lGeom -lTreePlayer -lXMLIO -lXMLParser -lProof -lProofPlayer -lMLP -lSpectrum -L${ROOTPLUGDIR}" )
+  # if(${ROOTHASVC} STREQUAL "yes")    
+  #   set(ROOTCLIBS "${ROOTCLIBS} -lVc")
+  # endif(${ROOTHASVC} STREQUAL "yes") 
   set(ROOTPLIBS $ENV{ROOTPLIBS})
+  if(NOT $ENV{ROOTSYS})
   message(STATUS "ROOTSYS directory : ${ROOTSYS}") 
+  else()
+    message(STATUS "ROOTSYS directory : not set - assume prefix build")
+  endif(NOT $ENV{ROOTSYS})
   message(STATUS "ROOT include directory: ${ROOTINCDIR}")
   message(STATUS "ROOT library directory: ${ROOTLIBDIR}")
+  # message(STATUS "ROOT libraries: ${ROOTCLIBS}")
+  # message(STATUS "ROOT has Vc: ${ROOTHASVC}")
+  # message(STATUS "ROOT has XML: ${ROOTHASXML}")
+  set(ROOT6_ALPHA "5.99.1")
+  string(REGEX REPLACE "/0*" "." ROOT_DOTVERSION ${ROOT_VERSION})
+  if(ROOT_DOTVERSION VERSION_GREATER ROOT6_ALPHA)
+    message(WARNING 
+      "Compling and linking against ROOT6 alpha is highly experimental")
+  endif(ROOT_DOTVERSION VERSION_GREATER ROOT6_ALPHA)
 else()
   message(FATAL_ERROR "rootcint not found ! Please check your ROOT installation.")
 endif(ROOT_CONFIG AND ROOTCINT)
index 160c3f3..a809022 100755 (executable)
@@ -39,7 +39,7 @@ done
 # --- Header ---------------------------------------------------------
 cat <<EOF
 // Auto generated file - do not edit
-#ifndef __CINT__
+#if !defined(__CINT__) && !defined(__CLING__)
 # error Not for compilation
 #else 
 #pragma link off all globals;