Newer
Older
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
#=================================================================================
# $Id: $
#
# AIDA Detector description implementation for LCD
#---------------------------------------------------------------------------------
# Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
# All rights reserved.
#
# For the licensing terms see $DD4hepINSTALL/LICENSE.
# For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
#
#=================================================================================
cmake_minimum_required(VERSION 2.8.3 FATAL_ERROR)
###set(DD4HEP_DEBUG_CMAKE 1)
message ( STATUS "INCLUDING DD4hep...." )
include ( CMakeParseArguments )
#---------------------------------------------------------------------------------------------------
macro(dd4hep_to_parent_scope val)
set ( ${val} ${${val}} PARENT_SCOPE )
endmacro(dd4hep_to_parent_scope)
#---------------------------------------------------------------------------------------------------
# dd4hep_debug
#
# Print messages if debug flag is enabled
#
# \author M.Frank
# \version 1.0
#
#---------------------------------------------------------------------------------------------------
function ( dd4hep_debug msg )
if( NOT "${DD4HEP_DEBUG_CMAKE}" STREQUAL "" )
get_property(pkg DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY PACKAGE_NAME)
#message( STATUS "DEBUG **** ${msg}" )
string ( LENGTH "${msg}" lmsg )
if ( ${lmsg} GREATER 1024 )
string ( SUBSTRING "${msg}" 0 132 pmsg )
message( STATUS "D++> [${pkg}] ${pmsg}" )
else()
message( STATUS "D++> [${pkg}] ${msg}" )
endif()
endif()
endfunction( dd4hep_debug )
#---------------------------------------------------------------------------------------------------
# dd4hep_set_version
#
# Set version structure for building the DD4hep software
#
# \author M.Frank
# \version 1.0
#
#---------------------------------------------------------------------------------------------------
function ( dd4hep_set_version packageName )
cmake_parse_arguments ( ARG "" "MAJOR;MINOR;PATCH" "" ${ARGN} )
if ( NOT "${packageName}" STREQUAL "" )
project ( ${packageName} )
else()
message(FATAL_ERROR " !!! Attempt to define a DD4hep project without a name !!!")
endif()
set ( major ${ARG_MAJOR} )
set ( minor ${ARG_MINOR} )
set ( patch ${ARG_PATCH} )
if ( "${major}" STREQUAL "" )
set ( major ${DD4hep_VERSION_MAJOR} )
endif()
if ( "${minor}" STREQUAL "" )
set ( minor ${DD4hep_VERSION_MINOR} )
endif()
if ( "${patch}" STREQUAL "" )
set ( patch ${DD4hep_VERSION_PATCH} )
endif()
if ( NOT ("${major}" STREQUAL "" OR "${minor}" STREQUAL "" OR "${patch}" STREQUAL "") )
#message ( STATUS "dd4hep_set_version(${packageName} MAJOR ${major} MINOR ${minor} PATCH ${patch})" )
set( ${packageName}_VERSION_MAJOR ${major} PARENT_SCOPE )
set( ${packageName}_VERSION_MINOR ${minor} PARENT_SCOPE )
set( ${packageName}_VERSION_PATCH ${patch} PARENT_SCOPE )
set( ${packageName}_VERSION "${major}.${minor}" PARENT_SCOPE )
set( ${packageName}_SOVERSION "${major}.${minor}" PARENT_SCOPE )
else()
message( FATAL_ERROR "|++> ${packageName}: No Package versions specified.....-> ( ${major}.${minor}.${patch} )" )
endif()
endfunction( dd4hep_set_version )
#---------------------------------------------------------------------------------------------------
# dd4hep_print_options
#
# Print the current option setup for informational purposes
#
# \author M.Frank
# \version 1.0
#---------------------------------------------------------------------------------------------------
function ( dd4hep_print_options )
message ( STATUS "+-------------------------------------------------------------------------------" )
message ( STATUS "| DD4hep build setup: " )
message ( STATUS "| " )
message ( STATUS "| CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH} " )
message ( STATUS "| DD4HEP_USE_BOOST: ${DD4HEP_USE_BOOST} DD4HEP_USE_Boost:${DD4HEP_USE_Boost}" )
message ( STATUS "| DD4HEP_USE_XERCESC: ${DD4HEP_USE_XERCESC} " )
message ( STATUS "| XERCESC_ROOT_DIR: ${XERCESC_ROOT_DIR} " )
message ( STATUS "| DD4HEP_USE_LCIO: ${DD4HEP_USE_LCIO} " )
message ( STATUS "| LCIO_DIR: ${LCIO_DIR} " )
message ( STATUS "| DD4HEP_USE_GEANT4: ${DD4HEP_USE_GEANT4} " )
message ( STATUS "| Geant4_DIR: ${Geant4_DIR} " )
message ( STATUS "| DD4HEP_USE_PYROOT: ${DD4HEP_USE_PYROOT} " )
message ( STATUS "| BUILD_TESTING: ${BUILD_TESTING} " )
message ( STATUS "| " )
message ( STATUS "+-------------------------------------------------------------------------------" )
endfunction ( dd4hep_print_options )
#---------------------------------------------------------------------------------------------------
# dd4hep_print_cmake_options
#
# usage() like function to be called if bad cmake arguments are supplied....
#
# \author M.Frank
# \version 1.0
#---------------------------------------------------------------------------------------------------
function( dd4hep_print_cmake_options )
cmake_parse_arguments ( ARG "" "ERROR" "OPTIONAL" ${ARGN} )
if ( NOT "${ARG_OPTIONAL}" STREQUAL "" )
message ( STATUS "+---------------------------------------------------------------------------+")
foreach ( opt ${ARG_OPTIONAL} )
message ( STATUS "| ${opt}" )
endforeach()
endif()
message ( STATUS "+--Option name ------Description ----------------------------------Default-+")
message ( STATUS "| DD4HEP_USE_XERCESC Enable 'Detector Builders' based on XercesC OFF |")
message ( STATUS "| Requires XERCESC_ROOT_DIR to be set |")
message ( STATUS "| or XercesC in CMAKE_MODULE_PATH |")
message ( STATUS "| DD4HEP_USE_GEANT4 Enable the simulation part based on Geant4 OFF |")
message ( STATUS "| Requires Geant_DIR to be set |")
message ( STATUS "| or Geant4 in CMAKE_MODULE_PATH |")
message ( STATUS "| DD4HEP_USE_LCIO Build lcio extensions OFF |")
message ( STATUS "| Requires LCIO_DIR to be set |")
message ( STATUS "| or LCIO in CMAKE_MODULE_PATH |")
message ( STATUS "| DD4HEP_USE_GEAR Build gear wrapper for backward compatibility OFF |")
message ( STATUS "| DD4HEP_USE_CXX11 Build DD4hep using c++11 OFF |")
message ( STATUS "| BUILD_TESTING Enable and build tests ON |")
message ( STATUS "| DD4HEP_USE_PYROOT Enable 'Detector Builders' based on PyROOT OFF |")
message ( STATUS "+---------------------------------------------------------------------------+")
if ( NOT "${ARG_ERROR}" STREQUAL "" )
message ( FATAL_ERROR "Invalid cmake options supplied!" )
endif()
endfunction( dd4hep_print_cmake_options )
#---------------------------------------------------------------------------------------------------
# dd4hep_configure_output
#
# Setup build and install target directories
#
# \author M.Frank
# \version 1.0
#---------------------------------------------------------------------------------------------------
macro ( dd4hep_configure_output )
cmake_parse_arguments ( ARG "" "OUTPUT;INSTALL" "" ${ARGN} )
if ( NOT "${ARG_OUTPUT}" STREQUAL "" )
set ( LIBRARY_OUTPUT_PATH ${ARG_OUTPUT}/lib )
set ( EXECUTABLE_OUTPUT_PATH ${ARG_OUTPUT}/bin )
else()
set ( LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib )
set ( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin )
endif()
#------------- set the default installation directory to be the source directory
if ( NOT "${ARG_INSTALL}" STREQUAL "" )
set ( CMAKE_INSTALL_PREFIX ${ARG_INSTALL} CACHE PATH "Set install prefix path." FORCE )
elseif ( CMAKE_INSTALL_PREFIX )
set ( CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} )
elseif ( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set( CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR} CACHE PATH
"install prefix path - overwrite with -D CMAKE_INSTALL_PREFIX = ..." FORCE )
message(STATUS "CMAKE_INSTALL_PREFIX is ${CMAKE_INSTALL_PREFIX} - overwrite with -D CMAKE_INSTALL_PREFIX" )
endif()
dd4hep_debug("|++> Installation goes to: ${CMAKE_INSTALL_PREFIX} <${ARG_INSTALL}>" )
endmacro ( dd4hep_configure_output )
#---------------------------------------------------------------------------------------------------
# dd4hep_make_unique_list
#
# Create clean list without duplicate entries.
#
# \author M.Frank
# \version 1.0
#---------------------------------------------------------------------------------------------------
function ( dd4hep_make_unique_list name )
cmake_parse_arguments ( ARG "" "" "VALUES" ${ARGN} )
set ( vals )
foreach( v ${ARG_VALUES} )
set ( vals "${vals} ${v}" )
endforeach()
string( REGEX REPLACE " " ";" vals "${vals}" )
if( NOT "${vals}" STREQUAL "" )
list ( REMOVE_DUPLICATES vals )
endif()
set( ${name} ${vals} PARENT_SCOPE )
endfunction( dd4hep_make_unique_list )
Loading
Loading full blame...