Print

Print


Commit in lcio on rio_v00-00
FindROOT.cmake+147added 1.1.2.1
initial version

lcio
FindROOT.cmake added at 1.1.2.1
diff -N FindROOT.cmake
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ FindROOT.cmake	7 Jul 2009 14:30:09 -0000	1.1.2.1
@@ -0,0 +1,147 @@
+#####################################
+# cmake module for finding ROOT
+#
+# returns:
+#   ROOT_FOUND
+#   ROOT_INCLUDE_DIRS
+#   ROOT_LIBRARIES
+#   ROOT_DEFINITIONS
+#
+# @author Jan Engels, DESY
+#####################################
+
+SET( ROOT_FOUND FALSE )
+MARK_AS_ADVANCED( ROOT_FOUND )
+
+# Threads library is needed for root
+#FIND_PACKAGE( Threads REQUIRED)
+
+# include dirs
+SET( ROOT_INCLUDE_DIR ROOT_INCLUDE_DIR-NOTFOUND )
+MARK_AS_ADVANCED( ROOT_INCLUDE_DIR )
+
+# set env ROOTSYS for running root-config
+SET( ENV{ROOTSYS} "${ROOT_HOME}" )
+
+# also try to get include dir from root-config
+EXEC_PROGRAM( "${ROOT_HOME}/bin/root-config" "${ROOT_HOME}/bin"
+    ARGS --incdir
+    OUTPUT_VARIABLE ROOT_INC_DIR
+    RETURN_VALUE incdir_ret )
+# if command fails clean up variable
+IF( incdir_ret )
+    SET( ROOT_INC_DIR )
+ENDIF()
+
+FIND_PATH( ROOT_INCLUDE_DIR
+    NAMES TH1.h
+    PATHS ${ROOT_HOME}/include ${ROOT_INC_DIR}
+    NO_DEFAULT_PATH )
+
+IF( NOT ROOT_INCLUDE_DIR AND NOT ROOT_FIND_QUIETLY )
+    MESSAGE( STATUS "Check for ROOT: ${ROOT_HOME}"
+            " -- failed to find ROOT include directory!!" )
+ENDIF()
+
+# libraries
+SET( ROOT_LIB_NAMES )
+SET( ROOT_FINDLIB_FAILED FALSE )
+MARK_AS_ADVANCED( ROOT_LIB_NAMES ROOT_FINDLIB_FAILED )
+
+# get lib names from 'root-config' output
+EXEC_PROGRAM( "${ROOT_HOME}/bin/root-config" "${ROOT_HOME}/bin"
+    ARGS --noauxlibs --glibs
+    OUTPUT_VARIABLE out_tmp
+    RETURN_VALUE out_ret )
+# check if everything went ok
+IF( NOT out_ret )
+    # create a list out of the output
+    SEPARATE_ARGUMENTS( out_tmp )
+    # remove first item -L compiler flag
+    LIST( REMOVE_AT out_tmp 0 )
+    # extract libnames from -l compiler flags
+    FOREACH( lib ${out_tmp} )
+        STRING( REGEX REPLACE "^-.(.*)$" "\\1" libname "${lib}")
+        LIST( APPEND ROOT_LIB_NAMES ${libname} )
+    ENDFOREACH()
+
+    # check for ROOT Minuit2
+    EXEC_PROGRAM( "${ROOT_HOME}/bin/root-config" "${ROOT_HOME}/bin"
+        ARGS --has-minuit2
+        OUTPUT_VARIABLE has_minuit
+        RETURN_VALUE has_minuit_ret )
+    IF( NOT has_minuit_ret )
+        # determine if Minuit2 is included with ROOT
+        IF( has_minuit STREQUAL "yes" )
+            LIST( APPEND ROOT_LIB_NAMES "Minuit2" )
+        ENDIF()
+    ENDIF()
+
+    IF( NOT ROOT_FIND_QUIETLY )
+        MESSAGE( STATUS "Check for ROOT: detected libraries: ${ROOT_LIB_NAMES}" )
+    ENDIF()
+ELSE()
+    #IF( NOT ROOT_FIND_QUIETLY )
+    #    MESSAGE( STATUS "Error trying to execute root-config --noauxlibs --glibs!!" )
+    #    MESSAGE( STATUS "${out_tmp}" )
+    #ENDIF()
+    # ensure that detection fails
+    SET( ROOT_FINDLIB_FAILED TRUE )
+ENDIF()
+
+# also try to get library dir from root-config
+EXEC_PROGRAM( "${ROOT_HOME}/bin/root-config" "${ROOT_HOME}/bin"
+    ARGS --libdir
+    OUTPUT_VARIABLE ROOT_LIB_DIR
+    RETURN_VALUE libdir_ret )
+# if command fails clean up variable
+IF( libdir_ret )
+    SET( ROOT_LIB_DIR )
+ENDIF()
+
+# find libraries
+FOREACH( libname ${ROOT_LIB_NAMES} )
+
+    SET( ROOT_LIB_${libname} ROOT_LIB_${libname}-NOTFOUND )
+    MARK_AS_ADVANCED( ROOT_LIB_${libname} )
+
+    FIND_LIBRARY( ROOT_LIB_${libname}
+        NAMES ${libname}
+        PATHS ${ROOT_HOME}/lib ${ROOT_LIB_DIR}
+        NO_DEFAULT_PATH )
+
+    IF( NOT ROOT_LIB_${libname} )
+        SET( ROOT_FINDLIB_FAILED TRUE )
+        IF( NOT ROOT_FIND_QUIETLY )
+            MESSAGE( STATUS "Check for ROOT: ${ROOT_HOME}"
+                    " -- failed to find ROOT ${libname} library!!" )
+        ENDIF()
+    ELSE()
+        LIST( APPEND ROOT_LIBS ${ROOT_LIB_${libname}} )
+    ENDIF()
+ENDFOREACH()
+
+FIND_LIBRARY( DL_LIB NAMES ${CMAKE_DL_LIBS} dl )
+IF( NOT DL_LIB AND NOT ROOT_FIND_QUIETLY )
+    MESSAGE( STATUS "Check for ROOT: failed to find libdl.so" )
+ELSE()
+    MESSAGE( STATUS "Check for ROOT: using dl library: ${DL_LIB}" )
+ENDIF()
+
+# set variables and display results
+IF( ROOT_INCLUDE_DIR AND NOT ROOT_FINDLIB_FAILED AND DL_LIB )
+    SET( ROOT_FOUND TRUE )
+    SET( ROOT_INCLUDE_DIRS ${ROOT_INCLUDE_DIR} )
+    #SET( ROOT_LIBRARIES ${ROOT_LIBS} ${DL_LIB} ${CMAKE_THREAD_LIBS_INIT} )
+    SET( ROOT_LIBRARIES ${ROOT_LIBS} ${DL_LIB} )
+    SET( ROOT_DEFINITIONS "-DUSEROOT -DUSE_ROOT -DMARLIN_USE_ROOT" )
+    MARK_AS_ADVANCED( ROOT_LIBRARIES ROOT_DEFINITIONS )
+    MESSAGE( STATUS "Check for ROOT: ${ROOT_HOME} -- works" )
+ELSE()
+    IF( ROOT_FIND_REQUIRED )
+        MESSAGE( FATAL_ERROR "did you set ROOT_HOME with -DROOT_HOME=<path_to_ROOT>?" )
+    ENDIF()
+    IF( NOT ROOT_FIND_QUIETLY )
+        MESSAGE( STATUS "Check for ROOT -- failed!! skip this package..." )
+    ENDIF()
+ENDIF()
CVSspam 0.2.8