1 # **************************************************************************
2 # * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
4 # * Author: The ALICE Off-line Project. *
5 # * Contributors are mentioned in the code where appropriate. *
7 # * Permission to use, copy, modify and distribute this software and its *
8 # * documentation strictly for non-commercial purposes is hereby granted *
9 # * without fee, provided that the above copyright notice appears in all *
10 # * copies and that both the copyright notice and this permission notice *
11 # * appear in the supporting documentation. The authors make no claims *
12 # * about the suitability of this software for any purpose. It is *
13 # * provided "as is" without express or implied warranty. *
14 # **************************************************************************
16 # Checking for a proper ROOT installation based on the ROOTSYS variable
17 # received during configuration
18 # If proper root installation it is setting the following variables
19 # - ROOT_VERSION - ROOT version as reported by root-config
20 # - ROOT_VERSION_MAJOR
21 # - ROOT_VERSIOM_MINOR
22 # - ROOT_VERSION_PATCH
23 # - ROOT_CONFIG - path to root-config script
24 # - ROOT_CINT - path to rootcint executable
25 # - ROOT_LIBMAP - path to rlibmap executable
26 # - ROOT_FEATURES - list of build features for ROOT
27 # - ROOT_LIBDIR - full path to ROOT library folder
28 # - ROOT_LIBRARIES - libraries needed for the package to be used
29 # - ROOT_GLIBRARIES - regular + GUI ROOT libraries + path to be used during linking
30 # - ROOT_INCLUDE_DIR - full path to ROOT include folder
31 # - ROOT_HASALIEN - ROOT was built with AliEn support
32 # - ROOT_HASOPENGL - ROOT was built with OpenGL support
33 # - ROOT_HASXML - ROOT was built with XML support
34 # - ROOT_FORTRAN - fortran compiler
39 message(STATUS "Checking for a proper ROOT installation in ${ROOTSYS}.")
42 set(ROOT_LIBDIR ${ROOTSYS}/lib)
43 set(ROOT_INCLUDE_DIR ${ROOTSYS}/include)
45 # Check for root-config scripts
46 find_program(ROOT_CONFIG NAMES root-config PATHS ${ROOTSYS}/bin NO_DEFAULT_PATH)
49 message(FATAL_ERROR "Could not find root-config script.")
50 endif(NOT ROOT_CONFIG)
53 find_program(ROOT_LIBMAP NAMES rlibmap PATHS ${ROOTSYS}/bin NO_DEFAULT_PATH)
55 message(STATUS "Found ${ROOT_LIBMAP}")
57 message(FATAL_ERROR "Could not find rlibmap executable.")
61 find_program(ROOT_CINT NAMES rootcint PATHS ${ROOTSYS}/bin NO_DEFAULT_PATH)
63 message(STATUS "Found ${ROOT_CINT}")
65 message(FATAL_ERROR "Could not find rootcint executable.")
68 # Checking ROOT version
69 execute_process(COMMAND ${ROOT_CONFIG} --version OUTPUT_VARIABLE ROOT_VERSION ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
71 message(FATAL_ERROR "Error retrieving ROOT version : ${error}")
73 string(STRIP ${ROOT_VERSION} ROOT_VERSION)
75 # Extract major, minor, and patch versions from
76 string(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+.*" "\\1" ROOT_VERSION_MAJOR "${ROOT_VERSION}")
77 string(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" ROOT_VERSION_MINOR "${ROOT_VERSION}")
78 string(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+).*" "\\1" ROOT_VERSION_PATCH "${ROOT_VERSION}")
79 message(STATUS "Found ROOT version ${ROOT_VERSION_MAJOR}.${ROOT_VERSION_MINOR}.${ROOT_VERSION_PATCH}")
82 execute_process(COMMAND ${ROOT_CONFIG} --features OUTPUT_VARIABLE ROOT_FEATURES ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
84 message(FATAL_ERROR "Error retrieving ROOT features : ${error}")
86 message(STATUS "ROOT was build with the following features: ${ROOT_FEATURES}")
88 string(STRIP ${ROOT_FEATURES} ROOT_FEATURES)
90 # Checking for ROOT libdir
91 execute_process(COMMAND ${ROOT_CONFIG} --libdir OUTPUT_VARIABLE ROOT_LIBDIR ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
93 message(FATAL_ERROR "Error retrieving ROOT libdir: ${error}")
95 string(STRIP ${ROOT_LIBDIR} ROOT_LIBDIR)
97 # Checking for ROOT libs
98 execute_process(COMMAND ${ROOT_CONFIG} --noldflags --libs OUTPUT_VARIABLE ROOT_LIBS ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
100 message(FATAL_ERROR "Error retrieving ROOT libdir: ${error}")
102 string(STRIP ${ROOT_LIBS} ROOT_LIBS)
104 foreach(lib ${ROOT_LIBS})
105 string(REPLACE "-rdynamic" "" new_lib ${lib})
106 string(REPLACE "-l" "" lib ${new_lib})
107 set(ROOT_LIBRARIES ${ROOT_LIBRARIES} ${lib})
109 string(STRIP ${ROOT_LIBRARIES} ROOT_LIBRARIES)
110 separate_arguments(ROOT_LIBRARIES)
112 # Checking for ROOT incdir
113 execute_process(COMMAND ${ROOT_CONFIG} --incdir OUTPUT_VARIABLE ROOT_INCDIR ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
115 message(FATAL_ERROR "Error retrieving ROOT incdir: ${error}")
117 string(STRIP ${ROOT_INCDIR} ROOT_INCDIR)
118 set(ROOT_INCLUDE_DIR ${ROOT_INCDIR})
121 execute_process(COMMAND ${ROOT_CONFIG} --noldflags --glibs OUTPUT_VARIABLE ROOT_GLIBS ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
123 message(FATAL_ERROR "Error retrieving ROOT glibs: ${error}")
127 string(STRIP ${ROOT_GLIBS} ROOT_GLIBS)
129 foreach(lib ${ROOT_GLIBS})
130 string(REPLACE "-rdynamic" "" new_lib "${lib}")
131 string(REPLACE "-l" "" lib "${new_lib}")
132 set(ROOT_GLIBRARIES ${ROOT_GLIBRARIES} ${lib})
134 string(STRIP ${ROOT_GLIBRARIES} ROOT_GLIBRARIES)
135 separate_arguments(ROOT_GLIBRARIES)
137 # Checking for AliEn support
138 execute_process(COMMAND ${ROOT_CONFIG} --has-alien OUTPUT_VARIABLE ROOT_HASALIEN ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
140 message(FATAL_ERROR "Error checking if ROOT was build with AliEn support: ${error}")
145 string(STRIP ${ROOT_HASALIEN} ROOT_HASALIEN)
146 if(ROOT_HASALIEN STREQUAL "yes")
147 add_definitions(-DWITHALIEN)
151 # Checking for xml support
152 execute_process(COMMAND ${ROOT_CONFIG} --has-xml OUTPUT_VARIABLE ROOT_HASXML ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
154 message(FATAL_ERROR "Error checking if ROOT was build with xml support: ${error}")
159 string(STRIP ${ROOT_HASXML} ROOT_HASXML)
160 if(ROOT_HASXML STREQUAL "yes")
161 add_definitions(-DWITHXML)
165 # Checking for OpenGL support
166 execute_process(COMMAND ${ROOT_CONFIG} --has-opengl OUTPUT_VARIABLE ROOT_HASOPENGL ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
168 message(FATAL_ERROR "Error checking if ROOT was build with OpenGL support: ${error}")
170 string(STRIP ${ROOT_HASOPENGL} ROOT_HASOPENGL)
172 # Checking for fortran compiler
173 execute_process(COMMAND ${ROOT_CONFIG} --f77 OUTPUT_VARIABLE ROOT_FORTRAN ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
175 message(FATAL_ERROR "Error checking ROOT fortran compiler: ${error}")
177 string(STRIP ${ROOT_FORTRAN} ROOT_FORTRAN)
179 # adding the libraries and the inc dir
180 link_directories(${ROOT_LIBDIR})
181 include_directories(${ROOT_INCLUDE_DIR})
184 message(FATAL_ERROR "ROOT installation not found! Please point to the ROOT installation using -DROOTSYS=ROOT_INSTALL_DIR.")