2 # - Finds ROOT instalation
3 # This module sets up ROOT information
4 # We suppose root-config to be in the PATH. Otherwise we stop.
6 Find_program(ROOT_CONFIG root-config)
8 If (${ROOT_CONFIG} MATCHES "ROOT_CONFIG-NOTFOUND")
10 Message(STATUS "Install Root and make sure it is in the PATH")
12 Else (${ROOT_CONFIG} MATCHES "ROOT_CONFIG-NOTFOUND")
17 COMMAND root-config --prefix
18 OUTPUT_VARIABLE ROOTSYS
19 OUTPUT_STRIP_TRAILING_WHITESPACE)
22 COMMAND root-config --arch
23 OUTPUT_VARIABLE ALICE_TARGET
24 OUTPUT_STRIP_TRAILING_WHITESPACE)
27 COMMAND root-config --f77
29 OUTPUT_STRIP_TRAILING_WHITESPACE)
33 COMMAND root-config --cc
35 OUTPUT_STRIP_TRAILING_WHITESPACE)
39 COMMAND root-config --cxx
41 OUTPUT_STRIP_TRAILING_WHITESPACE)
45 COMMAND root-config --version
46 OUTPUT_VARIABLE ROOT_VERSION
47 OUTPUT_STRIP_TRAILING_WHITESPACE)
50 COMMAND root-config --incdir
51 OUTPUT_VARIABLE ROOT_INCLUDE_DIR
52 OUTPUT_STRIP_TRAILING_WHITESPACE)
55 COMMAND root-config --glibs
56 OUTPUT_VARIABLE ROOT_LIBRARIES
57 OUTPUT_STRIP_TRAILING_WHITESPACE)
59 Find_program(ROOTCINT rootcint)
61 Message(FATAL_ERROR "Found ROOT but not rootcint, your ROOT installation is corrupted")
64 Set(ROOT_LIBRARIES ${ROOT_LIBRARIES} -lThread -lMinuit -lHtml -lVMC -lEG -lGeom -lTreePlayer -lXMLIO -lProof)
65 Set(ROOT_LIBRARIES ${ROOT_LIBRARIES} -lProofPlayer -lMLP -lSpectrum -lEve -lRGL -lGed -lXMLParser -lPhysics)
66 Set(ROOT_LIBRARY_DIR ${ROOTSYS}/lib)
68 # Make variables changeble to the advanced user
69 Mark_as_advanced(ROOT_LIBRARY_DIR ROOT_INCLUDE_DIR ROOT_DEFINITIONS)
71 Set(LD_LIBRARY_PATH ${LD_LIBRARY_PATH} ${ROOT_LIBRARY_DIR})
73 Message(STATUS "Found Root ${ROOT_VERSION} in ${ROOTSYS}/bin/root")
75 # we need at least version 5.00/00
76 If (NOT ROOT_MIN_VERSION)
77 Set(ROOT_MIN_VERSION "5.00/00")
78 Endif (NOT ROOT_MIN_VERSION)
80 # now parse the parts of the user given version string into variables
81 String(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+" "\\1" req_root_major_vers "${ROOT_MIN_VERSION}")
82 String(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" req_root_minor_vers "${ROOT_MIN_VERSION}")
83 String(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+)" "\\1" req_root_patch_vers "${ROOT_MIN_VERSION}")
85 # and now the version string given by qmake
86 String(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+.*" "\\1" found_root_major_vers "${ROOT_VERSION}")
87 String(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" found_root_minor_vers "${ROOT_VERSION}")
88 String(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+).*" "\\1" found_root_patch_vers "${ROOT_VERSION}")
90 If (found_root_major_vers LESS 5)
91 Message(FATAL_ERROR "Invalid ROOT version \"${ROOT_VERSION}\", at least major version 4 is required, e.g. \"5.00/00\"")
92 Endif(found_root_major_vers LESS 5)
94 # compute an overall version number which can be compared at once
95 Math(EXPR req_vers "${req_root_major_vers}*10000 + ${req_root_minor_vers}*100 + ${req_root_patch_vers}")
96 Math(EXPR found_vers "${found_root_major_vers}*10000 + ${found_root_minor_vers}*100 + ${found_root_patch_vers}")
98 If (found_vers LESS req_vers)
100 Set(ROOT_INSTALLED_VERSION_TOO_OLD TRUE)
101 Else (found_vers LESS req_vers)
103 Endif (found_vers LESS req_vers)
105 Endif (${ROOT_CONFIG} MATCHES "ROOT_CONFIG-NOTFOUND")
108 #####################################################################################
111 Macro(ROOT_GENERATE_DICTIONARY INFILES LINKDEF_FILE OUTFILE INCLUDE_DIRS_IN)
113 Set(_special_settings "${ARGV4}")
117 Foreach (_current_FILE ${INCLUDE_DIRS_IN})
118 Set(INCLUDE_DIRS ${INCLUDE_DIRS} -I${_current_FILE})
119 Endforeach (_current_FILE ${INCLUDE_DIRS_IN})
121 String(REGEX REPLACE "^(.*)\\.(.*)$" "\\1.h" bla "${OUTFILE}")
122 Set(OUTFILES ${OUTFILE} ${bla})
124 Foreach (_current_FILE ${INFILES})
125 Get_filename_component(name_wo_path ${_current_FILE} NAME)
126 Set(infiles_nopath ${infiles_nopath} ${name_wo_path})
127 Endforeach (_current_FILE ${INFILES})
129 Get_property(_defs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY COMPILE_DEFINITIONS)
131 Foreach (_def ${_defs})
132 Set(_ddefs "${_ddefs} -D${_def}")
133 Endforeach (_def ${_defs})
134 Separate_arguments(_ddefs)
136 Add_custom_command(OUTPUT ${OUTFILES}
137 COMMAND DYLD_LIBRARY_PATH=$ENV{DYLD_LIBRARY_PATH}:${ROOT_LIBRARY_DIR} ${ROOTCINT}
138 ARGS -f ${OUTFILE} -c -DHAVE_CONFIG_H ${_ddefs} ${_special_settings} ${INCLUDE_DIRS} ${infiles_nopath} ${LINKDEF_FILE}
139 DEPENDS ${INFILES} ${LINKDEF_FILE})
141 Endmacro(ROOT_GENERATE_DICTIONARY)