Newer
Older
#=================================================================================
# $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 DD4hepBuild.... c++11:${DD4HEP_USE_CXX11} c++14:${DD4HEP_USE_CXX14}" )
include ( CMakeParseArguments )
####set ( DD4HEP_DEBUG_CMAKE ON )
#---------------------------------------------------------------------------------------------------
macro(dd4hep_to_parent_scope val)
set ( ${val} ${${val}} PARENT_SCOPE )
endmacro(dd4hep_to_parent_scope)
macro(dd4hep_set_compiler_flags)
if ( DD4HEP_USE_CXX14 )
set ( CMAKE_CXX_FLAGS "-std=c++14 -ftls-model=global-dynamic -Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated")
Markus Frank
committed
##set ( CMAKE_CXX_FLAGS "-std=c++14 -Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated")
set ( DD4HEP_USE_CXX11 OFF )
set ( DD4HEP_USE_STDCXX 14 )
add_definitions(-DDD4HEP_USE_STDCXX=14)
elseif ( DD4HEP_USE_CXX11 )
set ( CMAKE_CXX_FLAGS "-std=c++11 -ftls-model=global-dynamic -Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated")
Markus Frank
committed
##set ( CMAKE_CXX_FLAGS "-std=c++11 -Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated")
set ( DD4HEP_USE_STDCXX 11 )
add_definitions(-DDD4HEP_USE_STDCXX=11)
else()
set( CMAKE_CXX_FLAGS "-Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated")
endif()
endmacro(dd4hep_set_compiler_flags)
#---------------------------------------------------------------------------------------------------
# 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)
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_print
#
#
# \author M.Frank
# \version 1.0
#
#---------------------------------------------------------------------------------------------------
function ( dd4hep_print msg )
message ( STATUS ${msg} )
endfunction ( dd4hep_print )
function ( dd4hep_skipmsg msg )
message ( STATUS "SKIPPED !!!!!!!!!!!!!! ${msg}" )
endfunction ( dd4hep_skipmsg )
#---------------------------------------------------------------------------------------------------
# dd4hep_fatal
#
#
# \author M.Frank
# \version 1.0
#
#---------------------------------------------------------------------------------------------------
function ( dd4hep_fatal msg )
get_property(pkg DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY PACKAGE_NAME)
if ( "${pkg}" STREQUAL "" )
message ( FATAL_ERROR "++> ${msg}" )
else()
message ( FATAL_ERROR "++> [${pkg}] ${msg}" )
endif()
endfunction ( dd4hep_fatal )
#---------------------------------------------------------------------------------------------------
# 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()
dd4hep_fatal ( "${packageName}: !!! 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 "") )
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()
dd4hep_fatal ( "${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 )
dd4hep_print ( "+-------------------------------------------------------------------------------" )
dd4hep_print ( "| DD4hep build setup: " )
dd4hep_print ( "| " )
dd4hep_print ( "| CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH} " )
dd4hep_print ( "| DD4HEP_USE_BOOST: ${DD4HEP_USE_BOOST} DD4HEP_USE_Boost:${DD4HEP_USE_Boost}" )
dd4hep_print ( "| DD4HEP_USE_XERCESC: ${DD4HEP_USE_XERCESC} " )
dd4hep_print ( "| XERCESC_ROOT_DIR: ${XERCESC_ROOT_DIR} " )
dd4hep_print ( "| DD4HEP_USE_LCIO: ${DD4HEP_USE_LCIO} " )
dd4hep_print ( "| LCIO_DIR: ${LCIO_DIR} " )
dd4hep_print ( "| DD4HEP_USE_GEANT4: ${DD4HEP_USE_GEANT4} " )
dd4hep_print ( "| Geant4_DIR: ${Geant4_DIR} " )
dd4hep_print ( "| DD4HEP_USE_PYROOT: ${DD4HEP_USE_PYROOT} " )
dd4hep_print ( "| BUILD_TESTING: ${BUILD_TESTING} " )
dd4hep_print ( "| " )
dd4hep_print ( "+-------------------------------------------------------------------------------" )
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 "" )
dd4hep_print ( "+---------------------------------------------------------------------------+")
foreach ( opt ${ARG_OPTIONAL} )
dd4hep_print ( "+--Option name ------Description ----------------------------------Default-+")
dd4hep_print ( "| DD4HEP_USE_XERCESC Enable 'Detector Builders' based on XercesC OFF |")
dd4hep_print ( "| Requires XERCESC_ROOT_DIR to be set |")
dd4hep_print ( "| or XercesC in CMAKE_MODULE_PATH |")
dd4hep_print ( "| DD4HEP_USE_GEANT4 Enable the simulation part based on Geant4 OFF |")
dd4hep_print ( "| Requires Geant_DIR to be set |")
dd4hep_print ( "| or Geant4 in CMAKE_MODULE_PATH |")
dd4hep_print ( "| DD4HEP_USE_LCIO Build lcio extensions OFF |")
dd4hep_print ( "| Requires LCIO_DIR to be set |")
dd4hep_print ( "| or LCIO in CMAKE_MODULE_PATH |")
dd4hep_print ( "| DD4HEP_USE_GEAR Build gear wrapper for backward compatibility OFF |")
dd4hep_print ( "| DD4HEP_USE_CXX11 Build DD4hep using c++11 OFF |")
dd4hep_print ( "| DD4HEP_USE_CXX14 Build DD4hep using c++14 OFF |")
dd4hep_print ( "| BUILD_TESTING Enable and build tests ON |")
dd4hep_print ( "| DD4HEP_USE_PYROOT Enable 'Detector Builders' based on PyROOT OFF |")
dd4hep_print ( "+---------------------------------------------------------------------------+")
if ( NOT "${ARG_ERROR}" STREQUAL "" )
dd4hep_fatal ( "Invalid cmake options supplied!" )
endif()
endfunction( dd4hep_print_cmake_options )
Loading
Loading full blame...