Print

Print


Commit in lcio on MAIN
FindCLHEP.cmake+137-91.1 -> 1.2
updated

lcio
FindCLHEP.cmake 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- FindCLHEP.cmake	11 Jul 2007 15:37:46 -0000	1.1
+++ FindCLHEP.cmake	5 Nov 2007 17:10:35 -0000	1.2
@@ -1,12 +1,19 @@
-#####################################
+###########################################
 # cmake module for finding CLHEP
+#
+# to use CLHEP versions > 2.0.3.0/1.9.3.0
+# you also have to define HepPDT_HOME
+#
 # @author Jan Engels, DESY
-#####################################
+###########################################
 
 SET( CLHEP_FOUND FALSE )
 MARK_AS_ADVANCED( CLHEP_FOUND )
+# is HepPDT a part of CLHEP? (CLHEP versions < 2.0.3.0/1.9.3.0)
+SET( CLHEP_includes_HepPDT TRUE )
+MARK_AS_ADVANCED( CLHEP_includes_HepPDT )
 
-# include dirs
+# CLHEP include dir
 SET( CLHEP_INCLUDE_DIR CLHEP_INCLUDE_DIR-NOTFOUND )
 MARK_AS_ADVANCED( CLHEP_INCLUDE_DIR )
 
@@ -21,8 +28,121 @@
             " -- failed to find CLHEP include directory!!" )
 ENDIF()
 
+# HepPDT - include dir
+SET( HepPDT_INCLUDE_DIR HepPDT_INCLUDE_DIR-NOTFOUND )
+MARK_AS_ADVANCED( HepPDT_INCLUDE_DIR )
+
+# first look if it is available under CLHEP_HOME
+FIND_PATH( HepPDT_INCLUDE_DIR
+    NAMES CLHEP/HepPDT/ParticleID.hh
+    PATHS ${CLHEP_HOME}
+    PATH_SUFFIXES include
+    NO_DEFAULT_PATH )
+
+# if not, look in HepPDT_HOME
+IF( NOT HepPDT_INCLUDE_DIR )
+    # HepPDT was not found in CLHEP
+    SET( CLHEP_includes_HepPDT FALSE )
+
+    IF( DEFINED HepPDT_HOME OR DEFINED ENV{HEPPDT} )
+
+        # write HepPDT_HOME to cache
+        IF( NOT DEFINED HepPDT_HOME )
+            SET( HepPDT_HOME "$ENV{HEPPDT}" )
+        ENDIF()
+        SET( HepPDT_HOME "${HepPDT_HOME}" CACHE PATH "Path to HepPDT" FORCE )
+
+        # find include dir
+        FIND_PATH( HepPDT_INCLUDE_DIR
+            NAMES HepPDT/ParticleID.hh
+            PATHS ${HepPDT_HOME}
+            PATH_SUFFIXES include
+            NO_DEFAULT_PATH )
+
+        # create symlink in CLHEP for HepPDT include dir
+        #IF( HepPDT_INCLUDE_DIR )
+        #    IF( NOT CLHEP_FIND_QUIETLY )
+        #        MESSAGE( STATUS "Creating symlink for HepPDT include directory in ${CLHEP_HOME}/include/CLHEP..." )
+        #    ENDIF()
+        #    EXEC_PROGRAM( "${CMAKE_COMMAND}" "${CLHEP_HOME}/include/CLHEP"
+        #        ARGS -E create_symlink "${HepPDT_HOME}/include/HepPDT" "HepPDT"
+        #        OUTPUT_VARIABLE out_tmp
+        #        RETURN_VALUE out_ret )
+        #    # check if everything went ok
+        #    IF( NOT out_ret )
+        #        IF( NOT CLHEP_FIND_QUIETLY )
+        #            MESSAGE( STATUS "Link created successfully..." )
+        #        ENDIF()
+        #    ELSE()
+        #        IF( NOT CLHEP_FIND_QUIETLY )
+        #            MESSAGE( STATUS "Error creating HepPDT symlink in ${CLHEP_HOME}/include/CLHEP!!" )
+        #            MESSAGE( STATUS "${out_tmp}" )
+        #        ENDIF()
+        #        # ensure that detection fails
+        #        SET( HepPDT_INCLUDE_DIR HepPDT_INCLUDE_DIR-NOTFOUND )
+        #    ENDIF()
+        #ELSE()
+        #    IF( NOT CLHEP_FIND_QUIETLY )
+        #        MESSAGE( STATUS "Check for HepPDT: failed to find include dir!!" )
+        #    ENDIF()
+        #    # ensure that detection fails
+        #    SET( HepPDT_INCLUDE_DIR HepPDT_INCLUDE_DIR-NOTFOUND )
+        #ENDIF()
+    ELSE()
+        IF( NOT CLHEP_FIND_QUIETLY )
+            MESSAGE( STATUS "Check for HepPDT: HepPDT_HOME not set!!" )
+            MESSAGE( STATUS "Please define it with cmake -DHepPDT_HOME=<Path_to_HepPDT>" )
+        ENDIF()
+    ENDIF()
+ENDIF()
 
-# libraries
+# HepPDT - libraries
+SET( HepPDT_FINDLIB_FAILED FALSE )
+MARK_AS_ADVANCED( HepPDT_FINDLIB_FAILED )
+
+IF( NOT CLHEP_includes_HepPDT )
+    SET( HepPDT_LIB_NAMES HepPDT HepPID )
+    MARK_AS_ADVANCED( HepPDT_LIB_NAMES )
+
+    FOREACH( libname ${HepPDT_LIB_NAMES} )
+
+        SET( HepPDT_LIB_${libname} HepPDT_LIB_${libname}-NOTFOUND )
+        MARK_AS_ADVANCED( HepPDT_LIB_${libname} )
+        
+        #SET( CLHEP_libname )
+        #SET( CLHEP_libfile )
+        #FILE( GLOB CLHEP_liblist "${CLHEP_HOME}/lib/libCLHEP-${libname}*" )
+        #LIST( LENGTH CLHEP_liblist CLHEP_liblist_len )
+        #IF( NOT CLHEP_liblist_len EQUAL 0 )
+        #    LIST( GET CLHEP_liblist 0 CLHEP_libfile )
+        #    # extract libname from path+libfile
+        #    STRING( REGEX REPLACE ".*\\/lib(CLHEP-.*)\\..*$" "\\1" CLHEP_libname "${CLHEP_libfile}")
+        #ENDIF()
+        #
+        #FIND_LIBRARY( HepPDT_LIB_${libname}
+        #    NAMES ${CLHEP_libname} ${libname}
+        #    PATHS ${CLHEP_HOME} ${HepPDT_HOME}
+        #    PATH_SUFFIXES lib
+        #    NO_DEFAULT_PATH )
+
+        FIND_LIBRARY( HepPDT_LIB_${libname}
+            NAMES ${libname}
+            PATHS ${HepPDT_HOME}
+            PATH_SUFFIXES lib
+            NO_DEFAULT_PATH )
+
+        IF( NOT HepPDT_LIB_${libname} )
+            SET( HepPDT_FINDLIB_FAILED TRUE )
+            IF( NOT CLHEP_FIND_QUIETLY )
+                MESSAGE( STATUS "Check for HepPDT -- failed to find ${libname} library!!" )
+            ENDIF()
+        ELSE()
+            LIST( APPEND HepPDT_LIBS ${HepPDT_LIB_${libname}} )
+        ENDIF()
+    ENDFOREACH()
+ENDIF()
+
+# CLHEP library
 SET( CLHEP_LIB CLHEP_LIB-NOTFOUND )
 MARK_AS_ADVANCED( CLHEP_LIB )
 
@@ -37,13 +157,21 @@
             " -- failed to find CLHEP library!!" )
 ENDIF()
 
-
 # set variables and display results
-IF( CLHEP_INCLUDE_DIR AND CLHEP_LIB )
+IF( CLHEP_INCLUDE_DIR AND CLHEP_LIB AND HepPDT_INCLUDE_DIR AND NOT
+        HepPDT_FINDLIB_FAILED )
+
     SET( CLHEP_FOUND TRUE )
-    SET( CLHEP_LIBRARIES ${CLHEP_LIB} )
-    SET( CLHEP_DEFINITIONS "-DUSE_CLHEP" )
-    MARK_AS_ADVANCED( CLHEP_LIBRARIES CLHEP_DEFINITIONS )
+    IF( CLHEP_includes_HepPDT )
+        SET( CLHEP_LIBRARIES ${CLHEP_LIB} )
+        SET( CLHEP_INCLUDE_DIRS ${CLHEP_INCLUDE_DIR} )
+        SET( CLHEP_DEFINITIONS "-DUSE_CLHEP" )
+    ELSE()
+        SET( CLHEP_LIBRARIES ${CLHEP_LIB} ${HepPDT_LIBS} )
+        SET( CLHEP_INCLUDE_DIRS ${CLHEP_INCLUDE_DIR} ${HepPDT_INCLUDE_DIR} )
+        SET( CLHEP_DEFINITIONS "-DUSE_CLHEP -DUSE_SEPARATE_HEPPDT" )
+    ENDIF()
+    MARK_AS_ADVANCED( CLHEP_INCLUDE_DIRS CLHEP_LIBRARIES CLHEP_DEFINITIONS )
     MESSAGE( STATUS "Check for CLHEP: ${CLHEP_HOME} -- works" )
 ELSE()
     IF( CLHEP_FIND_REQUIRED )
CVSspam 0.2.8