forked from root-project/root
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ROOTConfig.cmake.in
179 lines (160 loc) · 7.09 KB
/
ROOTConfig.cmake.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# ROOT CMake Configuration File for External Projects
# This file is configured by ROOT for use by an external project
# As this file is configured by ROOT's CMake system it SHOULD NOT BE EDITED
# It defines the following variables
# ROOT_INCLUDE_DIRS - include directories for ROOT
# ROOT_DEFINITIONS - compile definitions needed to use ROOT
# ROOT_LIBRARIES - libraries to link against
# ROOT_USE_FILE - path to a CMake module which may be included to help
# setup CMake variables and useful Macros
#
# You may supply a version number through find_package which will be checked
# against the version of this build. Standard CMake logic is used so that
# the EXACT flag may be passed, and otherwise this build will report itself
# as compatible with the requested version if:
#
# VERSION_OF_THIS_BUILD >= VERSION_REQUESTED
#
#
# If you specify components and use the REQUIRED option to find_package, then
# the module will issue a FATAL_ERROR if this build of ROOT does not have
# the requested component(s). Components are any optional ROOT library, which
# will be added into the ROOT_LIBRARIES variable.
#
# The list of options available generally corresponds to the optional extras
# that ROOT can be built are also made available to the dependent project as
# ROOT_{option}_FOUND
#
#
# ===========================================================================
# Set any policies required by this module. Note that there is no check for
# whether a given policy exists or not. If it is required, it is required...
cmake_policy(PUSH)
cmake_policy(SET CMP0074 NEW)
#----------------------------------------------------------------------------
# DEBUG : print out the variables passed via find_package arguments
#
if(ROOT_CONFIG_DEBUG)
message(STATUS "ROOTCFG_DEBUG : ROOT_VERSION = ${ROOT_VERSION}")
message(STATUS "ROOTCFG_DEBUG : ROOT_FIND_VERSION = ${ROOT_FIND_VERSION}")
message(STATUS "ROOTCFG_DEBUG : ROOT_FIND_REQUIRED = ${ROOT_FIND_REQUIRED}")
message(STATUS "ROOTCFG_DEBUG : ROOT_FIND_COMPONENTS = ${ROOT_FIND_COMPONENTS}")
foreach(_cpt ${ROOT_FIND_COMPONENTS})
message(STATUS "ROOTCFG_DEBUG : ROOT_FIND_REQUIRED_${_cpt} = ${ROOT_FIND_REQUIRED_${_cpt}}")
endforeach()
endif()
#----------------------------------------------------------------------------
# Locate ourselves, since all other config files should have been installed
# alongside us...
#
get_filename_component(_thisdir "${CMAKE_CURRENT_LIST_FILE}" PATH)
#-----------------------------------------------------------------------
# Provide *recommended* compiler flags used by this build of ROOT
# Don't mess with the actual CMAKE_CXX_FLAGS!!!
# It's up to the user what to do with these
@ROOT_COMPILER_FLAG_HINTS@
#-----------------------------------------------------------------------
# Provide the C++ standard used by this build of ROOT
#
set(ROOT_CXX_STANDARD @CMAKE_CXX_STANDARD@)
#----------------------------------------------------------------------------
# Configure the path to the ROOT headers, using a relative path if possible.
# This is only known at CMake time, so we expand a CMake supplied variable.
#
@ROOT_INCLUDE_DIR_SETUP@
@ROOT_LIBRARY_DIR_SETUP@
@ROOT_BINDIR_SETUP@
@ROOT_BINARY_DIR_SETUP@
@ROOT_CMAKE_DIR_SETUP@
# Python version used to build ROOT
set(ROOT_PYTHON_VERSION @PYTHON_VERSION_STRING_Development_Main@)
#----------------------------------------------------------------------------
# Include RootMacros.cmake to get ROOT's CMake macros
include("${_thisdir}/RootMacros.cmake")
#----------------------------------------------------------------------------
# Include the file listing all the imported targets and options
if(NOT CMAKE_PROJECT_NAME STREQUAL ROOT)
include("${_thisdir}/ROOTConfig-targets.cmake")
endif()
#----------------------------------------------------------------------------
# Setup components and options
set(_root_enabled_options @ROOT_ENABLED_OPTIONS@)
set(_root_all_options @ROOT_ALL_OPTIONS@)
foreach(_opt ${_root_enabled_options})
set(ROOT_${_opt}_FOUND TRUE)
endforeach()
#----------------------------------------------------------------------------
# Make any modules bundled with ROOT visible to CMake
list(APPEND CMAKE_MODULE_PATH "${ROOT_CMAKE_DIR}/modules")
#----------------------------------------------------------------------------
# Find external packages which were used in ROOT
include(CMakeFindDependencyMacro)
if (NOT ROOT_builtin_nlohmannjson_FOUND)
find_dependency(nlohmann_json @nlohmann_json_VERSION@)
endif()
if(ROOT_minuit2_mpi_FOUND)
find_dependency(MPI)
endif()
if(ROOT_minuit2_omp_FOUND)
find_dependency(OpenMP)
find_dependency(Threads)
endif()
if(ROOT_vdt_FOUND AND NOT TARGET VDT::VDT)
if(ROOT_builtin_vdt_FOUND)
set(Vdt_ROOT "${_thisdir}/.." CACHE PATH "Location of (the builtin) VDT")
endif()
find_dependency(Vdt)
endif()
#----------------------------------------------------------------------------
# Now set them to ROOT_LIBRARIES
set(ROOT_LIBRARIES)
if(MSVC)
set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
endif()
foreach(_cpt Core Imt RIO Net Hist Graf Graf3d Gpad ROOTDataFrame Tree TreePlayer Rint Postscript Matrix Physics MathCore Thread MultiProc ROOTVecOps ${ROOT_FIND_COMPONENTS})
find_library(ROOT_${_cpt}_LIBRARY ${_cpt} HINTS ${ROOT_LIBRARY_DIR})
if(ROOT_${_cpt}_LIBRARY)
mark_as_advanced(ROOT_${_cpt}_LIBRARY)
list(APPEND ROOT_LIBRARIES ${ROOT_${_cpt}_LIBRARY})
list(REMOVE_ITEM ROOT_FIND_COMPONENTS ${_cpt})
endif()
endforeach()
if(ROOT_LIBRARIES)
list(REMOVE_DUPLICATES ROOT_LIBRARIES)
endif()
#----------------------------------------------------------------------------
# Locate the tools
set(ROOT_ALL_TOOLS genreflex genmap root rootcint rootcling hadd rootls rootrm rootmv rootmkdir rootcp rootdraw rootbrowse)
foreach(_cpt ${ROOT_ALL_TOOLS})
if(NOT ROOT_${_cpt}_CMD)
find_program(ROOT_${_cpt}_CMD ${_cpt} HINTS ${ROOT_BINDIR})
if(ROOT_${_cpt}_CMD)
mark_as_advanced(ROOT_${_cpt}_CMD)
endif()
endif()
endforeach()
#----------------------------------------------------------------------------
set(ROOT_EXECUTABLE ${ROOT_root_CMD})
#----------------------------------------------------------------------------
# Point the user to the ROOTUseFile.cmake file which they may wish to include
# to help them with setting up ROOT
#
set(ROOT_USE_FILE ${_thisdir}/ROOTUseFile.cmake)
#----------------------------------------------------------------------------
# Finally, handle any remaining components.
# We should have dealt with all available components above, and removed them
# from the list of FIND_COMPONENTS so any left we either didn't find or don't
# know about. Emit a warning if REQUIRED isn't set, or FATAL_ERROR otherwise
#
list(REMOVE_DUPLICATES ROOT_FIND_COMPONENTS)
foreach(_remaining ${ROOT_FIND_COMPONENTS})
if(ROOT_FIND_REQUIRED_${_remaining})
message(FATAL_ERROR "ROOT component ${_remaining} not found")
elseif(NOT ROOT_FIND_QUIETLY)
message(WARNING " ROOT component ${_remaining} not found")
endif()
unset(ROOT_FIND_REQUIRED_${_remaining})
endforeach()
# Clear out any policy settings made for this module.
cmake_policy(POP)