ROOT map generation + RAW module
[u/mrichter/AliRoot.git] / cmake / FindROOT.cmake
1 # **************************************************************************
2 # * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
3 # *                                                                        *
4 # * Author: The ALICE Off-line Project.                                    *
5 # * Contributors are mentioned in the code where appropriate.              *
6 # *                                                                        *
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 # **************************************************************************
15
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_INCLUDE_DIRS - full path to ROOT include folder
30 # - ROOT_GLIBS - regular + GUI ROOT libraries + path to be used during linking
31 # - ROOT_HASALIEN - ROOT was built with AliEn support
32 # - ROOT_HASXML - ROOT was built with XML support
33
34
35 if(ROOTSYS)
36     message(STATUS "Checking for a proper ROOT installation in ${ROOTSYS}.")
37
38     # Setting the LD_LiBRARY_PATH to point to ROOT lib folder
39     set(ROOT_LIBDIR ${ROOTSYS}/lib)
40     set(ROOT_INCLUDE_DIRS ${ROOTSYS}/include)
41
42     # Check for root-config scripts
43     find_program(ROOT_CONFIG NAMES root-config PATHS ${ROOTSYS}/bin NO_DEFAULT_PATH)
44
45     if(ROOT_CONFIG)
46         message(STATUS "Found root-config: ${ROOT_CONFIG}")
47     else()
48         message(FATAL_ERROR "Could not find root-config script.")
49     endif(ROOT_CONFIG)
50
51     # Check for rlibmap
52     find_program(ROOT_LIBMAP NAMES rlibmap PATHS ${ROOTSYS}/bin NO_DEFAULT_PATH)
53     if(ROOT_LIBMAP)
54         message(STATUS "Found ${ROOT_LIBMAP}")
55     else()
56         message(FATAL_ERROR "Could not find rlibmap executable.")
57     endif(ROOT_LIBMAP)
58
59     # Check for rootcint
60     find_program(ROOT_CINT NAMES rootcint PATHS ${ROOTSYS}/bin NO_DEFAULT_PATH)
61     if(ROOT_CINT)
62         message(STATUS "Found ${ROOT_CINT}")
63     else()
64         message(FATAL_ERROR "Could not find rootcint executable.")
65     endif(ROOT_CINT)
66
67     # Checking ROOT version
68     execute_process(COMMAND ${ROOT_CONFIG} --version OUTPUT_VARIABLE ROOT_VERSION ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
69     if(error)
70         message(FATAL_ERROR "Error retrieving ROOT version : ${error}")
71     endif(error)
72
73     # Extract major, minor, and patch versions from
74     string(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+.*" "\\1" ROOT_VERSION_MAJOR "${ROOT_VERSION}")
75     string(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" ROOT_VERSION_MINOR "${ROOT_VERSION}")
76     string(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+).*" "\\1" ROOT_VERSION_PATCH "${ROOT_VERSION}")
77     message(STATUS "Found ROOT version ${ROOT_VERSION_MAJOR}.${ROOT_VERSION_MINOR}.${ROOT_VERSION_PATCH}")
78
79     # Print ROOT features
80     execute_process(COMMAND ${ROOT_CONFIG} --features OUTPUT_VARIABLE ROOT_FEATURES ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
81     if(error)
82         message(FATAL_ERROR "Error retrieving ROOT features : ${error}")
83     else()
84         message(STATUS "ROOT was build with the following features: ${ROOT_FEATURES}")
85     endif(error)
86
87     # Checking for ROOT libdir
88     execute_process(COMMAND ${ROOT_CONFIG} --libdir OUTPUT_VARIABLE ROOT_LIBDIR ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
89     if(error)
90         message(FATAL_ERROR "Error retrieving ROOT libdir: ${error}")
91     endif(error)
92
93     # Checking for ROOT libs
94     execute_process(COMMAND ${ROOT_CONFIG} --libs OUTPUT_VARIABLE ROOT_LIBRARIES ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
95     if(error)
96         message(FATAL_ERROR "Error retrieving ROOT libdir: ${error}")
97     endif(error)
98
99     # Checking for ROOT incdir
100     execute_process(COMMAND ${ROOT_CONFIG} --incdir OUTPUT_VARIABLE ROOT_INCDIR ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
101     if(error)
102         message(FATAL_ERROR "Error retrieving ROOT incdir: ${error}")
103     endif(error)
104
105     # Checking for glibs
106     execute_process(COMMAND ${ROOT_CONFIG} --glibs OUTPUT_VARIABLE ROOT_GLIBS ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
107     if(error)
108         message(FATAL_ERROR "Error retrieving ROOT glibs: ${error}")
109     endif(error)
110
111     # Checking for glibs
112     execute_process(COMMAND ${ROOT_CONFIG} --has-alien OUTPUT_VARIABLE ROOT_HASALIEN ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
113     if(error)
114         message(FATAL_ERROR "Error checking if ROOT was build with AliEn support: ${error}")
115     endif(error)
116
117     execute_process(COMMAND ${ROOT_CONFIG} --has-xml OUTPUT_VARIABLE ROOT_HASXML ERROR_VARIABLE error OUTPUT_STRIP_TRAILING_WHITESPACE )
118     if(error)
119         message(FATAL_ERROR "Error checking if ROOT was build with xml support: ${error}")
120     endif(error)
121
122     set(ROOT_FOUND TRUE)
123 else()
124     message(FATAL_ERROR "ROOT installation not found! Please point to the ROOT installation using -DROOTSYS=ROOT_INSTALL_DIR.")
125 endif(ROOTSYS)