diff --git a/CMakeLists.txt b/CMakeLists.txt index 58419ecd47c8b370ea929fae9bd75a0637640534..1b8cd87fd47eec52657ec077fb78ceab7877a938 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,12 +76,45 @@ if(DD4HEP_WITH_GEANT4) find_package( Geant4 ) get_filename_component(Geant4_ROOT "${Geant4_INCLUDE_DIR}/../../" ABSOLUTE) + #----- if geant4 is build with external CLHEP we also need to export this fact + + string(FIND "${Geant4_THIRD_PARTY_INCLUDE_DIRS}" "CLHEP" CLHEP_POS ) + + if( NOT "${CLHEP_POS}" STREQUAL "-1" ) + + set( GEANT4_WITH_CLHEP 1 ) + + #---- use FindCLHEP shipped with geant4 ----------- + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${Geant4_ROOT}/cmake/Modules ) + + if( CLHEP_DIR ) #---- use 'canonical' name ----- + set( CLHEP_ROOT_DIR ${CLHEP_DIR} ) + endif() + + find_package( CLHEP REQUIRED) + + get_filename_component(CLHEP_LIBRARY_PATH "${CLHEP_LIBRARIES}" PATH) + + message( STATUS " *** geant4 was build with external CLHEP *** CLHEP_LIBRARY_PATH = ${CLHEP_LIBRARY_PATH}" ) + else() + set( GEANT4_WITH_CLHEP 0 ) + endif() + endif() add_subdirectory(UtilityApps) + + #---Configuration------------------------------------------------------------------- +# ----for APPLE scripts have to set the DYLD_LIBRARY_PATH ? +if( APPLE ) + set( USE_DYLD 1) +else() + set( USE_DYLD 0) +endif() + configure_file(cmake/thisdd4hep.csh thisdd4hep.csh @ONLY) configure_file(cmake/thisdd4hep.sh thisdd4hep.sh @ONLY) configure_file(cmake/run_test.sh run_test.sh @ONLY) diff --git a/cmake/DD4hepConfig.cmake.in b/cmake/DD4hepConfig.cmake.in index 7860e1793706c26d16c468f15a006a508d806117..8a4a7556056c665d872f2d685c4916717b8fc468 100644 --- a/cmake/DD4hepConfig.cmake.in +++ b/cmake/DD4hepConfig.cmake.in @@ -47,6 +47,12 @@ INCLUDE( ${DD4hep_ROOT}/cmake/DD4hepMacros.cmake ) # first argument should be the package name if(@DD4HEP_WITH_GEANT4@) CHECK_PACKAGE_LIBS( DD4hep DD4hepCore DDSegmentation DD4hepPlugins DD4hepG4 ) + + #--- if geant 4 was built with CLHEP we need to export this to client packages + if( @GEANT4_WITH_CLHEP@) + set(GEANT4_WITH_CLHEP 1 ) + endif() + else() CHECK_PACKAGE_LIBS( DD4hep DD4hepCore DDSegmentation DD4hepPlugins ) endif() @@ -58,6 +64,12 @@ if(@DD4HEP_USE_BOOST@) add_definitions(-DDD4HEP_USE_BOOST) endif() + +#----- APPLE ? ------- + +set( USE_DYLD @USE_DYLD@ ) +MARK_AS_ADVANCED( USE_DYLD ) + # ---------- final checking --------------------------------------------------- INCLUDE( FindPackageHandleStandardArgs ) # set DD4HEP_FOUND to TRUE if all listed variables are TRUE and not empty diff --git a/cmake/thisdd4hep.sh b/cmake/thisdd4hep.sh index f9cda1946812c2b696b3974bb30fb9c1fd5e5583..d2fdbbd0a294429e0767a515463212d8ff9b7513 100644 --- a/cmake/thisdd4hep.sh +++ b/cmake/thisdd4hep.sh @@ -20,15 +20,21 @@ fi #----------- source the ROOT environment first source @ROOT_ROOT@/bin/thisroot.sh -if [ @DD4hep_WITH_GEANT4@ ] +if [ @DD4HEP_WITH_GEANT4@ ] then - export G4INSTALL=@Geant4_ROOT@/../../ - export G4ENV_INIT=@Geant4_ROOT@/../../bin/geant4.sh -# export G4SYSTEM="Darwin-g++" + export G4INSTALL=@Geant4_ROOT@ + export G4ENV_INIT=@Geant4_ROOT@/bin/geant4.sh + +# ---------- initialze geant4 environment test -r ${G4ENV_INIT} && { cd $(dirname ${G4ENV_INIT}) ; . ./$(basename ${G4ENV_INIT}) ; cd $OLDPWD ; } + + if [ @GEANT4_WITH_CLHEP@ ] ; then + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:@CLHEP_LIBRARY_PATH@ + fi fi + #----PATH----------------------------------------------------------------- if [ -z "${PATH}" ]; then PATH=@CMAKE_INSTALL_PREFIX@/bin; export PATH # Linux, ELF HP-UX @@ -36,18 +42,21 @@ else PATH=@CMAKE_INSTALL_PREFIX@/bin:$PATH; export PATH fi -#----LD_LIBRARY_PATH----------------------------------------------------------------- -if [ -z "${LD_LIBRARY_PATH}" ]; then - LD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:@XERCESC_ROOT_DIR@/lib:@Geant4_DIR@/..; export LD_LIBRARY_PATH # Linux, ELF HP-UX -else - LD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:@XERCESC_ROOT_DIR@/lib:@Geant4_DIR@/..:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH -fi -#----DYLD_LIBRARY_PATH--------------------------------------------------------------- -if [ -z "${DYLD_LIBRARY_PATH}" ]; then - DYLD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:@XERCESC_ROOT_DIR@/lib; export DYLD_LIBRARY_PATH # Mac OS X +#----(DY)LD_LIBRARY_PATH--------------------------------------------------------------- +if [ @USE_DYLD@ ] +then + if [ -z "${DYLD_LIBRARY_PATH}" ]; then + DYLD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:@XERCESC_ROOT_DIR@/lib; export DYLD_LIBRARY_PATH # Mac OS X + else + DYLD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:@XERCESC_ROOT_DIR@/lib:$DYLD_LIBRARY_PATH; export DYLD_LIBRARY_PATH + fi else - DYLD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:@XERCESC_ROOT_DIR@/lib:$DYLD_LIBRARY_PATH; export DYLD_LIBRARY_PATH + if [ -z "${LD_LIBRARY_PATH}" ]; then + LD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:@XERCESC_ROOT_DIR@/lib:@Geant4_DIR@/..; export LD_LIBRARY_PATH # Linux, ELF HP-UX + else + LD_LIBRARY_PATH=@CMAKE_INSTALL_PREFIX@/lib:@XERCESC_ROOT_DIR@/lib:@Geant4_DIR@/..:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH + fi fi #----PYTHONPATH--------------------------------------------------------------- diff --git a/cmake/thisdd4hep_package.sh.in b/cmake/thisdd4hep_package.sh.in index 61d1995e4b522ae9c3322f9c387ca9a9dcee9110..b100116a40e5f8a8542dc70300c38e7eb96b0c90 100644 --- a/cmake/thisdd4hep_package.sh.in +++ b/cmake/thisdd4hep_package.sh.in @@ -11,7 +11,7 @@ source @DD4hep_ROOT@/bin/thisdd4hep.sh export PATH=$PATH:@CMAKE_INSTALL_PREFIX@/bin -if [ @APPLE@ ] +if [ @USE_DYLD@ ] then export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:@CMAKE_INSTALL_PREFIX@/lib else