From ceeddb3421870f10e8f45c546938041cd6649b7d Mon Sep 17 00:00:00 2001 From: Chengdong Fu <fucd@ihep.ac.cn> Date: Fri, 11 Sep 2020 13:54:08 +0800 Subject: [PATCH] fix re-generate issue for root dict --- Utilities/KalDet/CMakeLists.txt | 79 +++-- .../KalDet/cmake/MacroCheckPackageLibs.cmake | 164 --------- .../cmake/MacroCheckPackageVersion.cmake | 108 ------ Utilities/KalDet/cmake/MacroRootDict.cmake | 145 -------- Utilities/KalDet/cmake/MyFindROOT.cmake | 316 ------------------ Utilities/KalDet/src/gen/EXEventGen.cxx | 4 +- .../lctpc/gearTPC/GearTPCCylinderMeasLayer.h | 2 +- Utilities/KalTest/CMakeLists.txt | 74 ++-- .../KalTest/cmake/MacroCheckPackageLibs.cmake | 164 --------- .../cmake/MacroCheckPackageVersion.cmake | 108 ------ Utilities/KalTest/cmake/MacroRootDict.cmake | 145 -------- Utilities/KalTest/cmake/MyFindROOT.cmake | 316 ------------------ 12 files changed, 91 insertions(+), 1534 deletions(-) delete mode 100644 Utilities/KalDet/cmake/MacroCheckPackageLibs.cmake delete mode 100644 Utilities/KalDet/cmake/MacroCheckPackageVersion.cmake delete mode 100644 Utilities/KalDet/cmake/MacroRootDict.cmake delete mode 100644 Utilities/KalDet/cmake/MyFindROOT.cmake delete mode 100644 Utilities/KalTest/cmake/MacroCheckPackageLibs.cmake delete mode 100644 Utilities/KalTest/cmake/MacroCheckPackageVersion.cmake delete mode 100644 Utilities/KalTest/cmake/MacroRootDict.cmake delete mode 100644 Utilities/KalTest/cmake/MyFindROOT.cmake diff --git a/Utilities/KalDet/CMakeLists.txt b/Utilities/KalDet/CMakeLists.txt index a5bac19d..5b4c1a94 100644 --- a/Utilities/KalDet/CMakeLists.txt +++ b/Utilities/KalDet/CMakeLists.txt @@ -12,52 +12,67 @@ find_package(ROOT COMPONENTS MathCore) find_package(EDM4HEP REQUIRED) gaudi_depends_on_subdirs( - Detector/DetInterface - Utilities/KalTest + Detector/DetInterface + Utilities/KalTest ) -list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake) +get_target_property(to_incl KalTestLib SOURCE_DIR) +if (to_incl) + LIST( APPEND DICT_INCLUDE_DIRS ${to_incl}) +else() + message(FATAL_ERROR "Failed to get the source dir for package KalTestLib") +endif() -INCLUDE( MyFindROOT ) -INCLUDE( MacroRootDict ) +set( DICT_CINT_DEFINITIONS "HANDLE_DICT_EXCEPTIONS=IGNORED_FOR_CINT" ) +set( DICT_INPUT_DIRS gen kern lctpc/gearTPC ) +set( DICT_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rootdict ) -SET( ROOT_DICT_CINT_DEFINITIONS "-DHANDLE_DICT_EXCEPTIONS=IGNORED_FOR_CINT" ) +foreach( DICT_DIR ${DICT_INPUT_DIRS} ) + list( APPEND DICT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src/${DICT_DIR} ) + aux_source_directory( src/${DICT_DIR} LIB_SOURCES ) +endforeach() -INCLUDE( ${ROOT_DICT_MACROS_FILE} ) +foreach( DICT_DIR ${DICT_INPUT_DIRS} ) + file( GLOB DICT_HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/${DICT_DIR}/*.h" ) + file( GLOB LINKDEFS "${CMAKE_CURRENT_SOURCE_DIR}/src/${DICT_DIR}/LinkDef.h" ) -SET( lib_input_dirs src/gen src/kern src/lctpc/gearTPC ) + if( LINKDEFS ) + list( REMOVE_ITEM DICT_HEADER_FILES "${LINKDEFS}" ) + endif() -FOREACH( lib_input_dir ${lib_input_dirs} ) - LIST( APPEND ROOT_DICT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/${lib_input_dir} ) -ENDFOREACH() + string(REGEX REPLACE "/" "_" DICT ${DICT_DIR}) -# LIST( APPEND ROOT_DICT_INCLUDE_DIRS /workfs/bes/fucd/Key4hep/CEPCSW/Utilities/KalTest ) -# get the include directory of KalTest -get_target_property(to_incl KalTestLib SOURCE_DIR) -if (to_incl) - LIST( APPEND ROOT_DICT_INCLUDE_DIRS ${to_incl}) -else() - message(FATAL_ERROR "Failed to get the source dir for package KalTestLib") -endif() + add_custom_command(OUTPUT ${DICT_OUTPUT_DIR}/${DICT}.cxx ${DICT_OUTPUT_DIR}/${DICT}_rdict.pcm + COMMAND mkdir -p ${DICT_OUTPUT_DIR} + COMMAND ${ROOT_rootcling_CMD} + ARGS -f ${DICT_OUTPUT_DIR}/${DICT}.cxx -s ${DICT_OUTPUT_DIR}/${DICT} -inlineInputHeader + "$<$<BOOL:$<JOIN:${DICT_CINT_DEFINITIONS},>>:-D$<JOIN:${DICT_CINT_DEFINITIONS},;-D>>" + "$<$<BOOL:$<JOIN:${DICT_INCLUDE_DIRS},>>:-I$<JOIN:${DICT_INCLUDE_DIRS},;-I>>" + "$<JOIN:${DICT_HEADER_FILES},;>" "$<JOIN:${LINKDEFS},;>" + DEPENDS ${DICT_HEADER_FILES} ${LINKDEFS} + COMMAND_EXPAND_LISTS + ) + + add_custom_target( ${DICT} DEPENDS ${DICT_OUTPUT_DIR}/${DICT}.cxx ${DICT_OUTPUT_DIR}/${DICT}_rdict.pcm ) + + set_source_files_properties(${DICT_OUTPUT_DIR}/${DICT}.cxx ${DICT_OUTPUT_DIR}/${DICT}_rdict.pcm + PROPERTIES + GENERATED TRUE + COMPILE_FLAGS "-Wno-unused-function -Wno-overlength-strings" + ) -#MESSAGE( STATUS "ROOT_DICT_INCLUDE_DIRS: ${ROOT_DICT_INCLUDE_DIRS}" ) + install(FILES ${DICT_OUTPUT_DIR}/${DICT}_rdict.pcm DESTINATION lib) -FOREACH( lib_input_dir ${lib_input_dirs} ) - AUX_SOURCE_DIRECTORY( ${lib_input_dir} lib_sources ) - PREPARE_ROOT_DICT_HEADERS( ${lib_input_dir} ) - INSTALL(DIRECTORY ${lib_input_dir}/ DESTINATION "include/kaldet" - FILES_MATCHING PATTERN "*.h" PATTERN "LinkDef.h" EXCLUDE - ) - GEN_ROOT_DICT_SOURCES( ${lib_input_dir}Dict.cxx ) - LIST( APPEND lib_sources ${ROOT_DICT_OUTPUT_SOURCES} ) -ENDFOREACH() + list( APPEND LIB_SOURCES ${DICT_OUTPUT_DIR}/${DICT}.cxx ) +endforeach() -FILE( GLOB_RECURSE ild_sources "src/ild/*.cc" ) +FILE( GLOB_RECURSE COMMON_SOURCES "src/ild/*.cc" ) FILE( GLOB_RECURSE lib_headers "src/ild/*.h" ) -include_directories(src/ild/common) +include_directories( src/ild/common ) +include_directories( ${DICT_INCLUDE_DIRS} ) -set(KalDetLib_srcs ${lib_sources} src/ild/*/*.cc ) +set( KalDetLib_srcs ${LIB_SOURCES} ${COMMON_SOURCES} ) gaudi_add_library(KalDetLib ${KalDetLib_srcs} PUBLIC_HEADERS kaldet diff --git a/Utilities/KalDet/cmake/MacroCheckPackageLibs.cmake b/Utilities/KalDet/cmake/MacroCheckPackageLibs.cmake deleted file mode 100644 index c4451b3e..00000000 --- a/Utilities/KalDet/cmake/MacroCheckPackageLibs.cmake +++ /dev/null @@ -1,164 +0,0 @@ -############################################################################## -# macro for checkin package libraries in ${PKG_ROOT}/lib -# -# -# macro usage: -# CHECK_PACKAGE_LIBS( PACKAGE_NAME stdlib1 stdlib2 ... stdlibn ) -# only standard libraries should be passed as arguments to the macro -# component libraries are set by cmake in PKG_FIND_COMPONENTS (when -# calling FIND_PACKAGE with COMPONENTS argument) or through the -# variable PKG_USE_COMPONENTS -# -# -# required variables: -# PKG_ROOT : path to PKG root directory -# -# -# returns following variables: -# PKG_LIBRARY_DIRS : list of paths to be used with LINK_DIRECTORIES -# PGK_LIBRARIES : list of STANDARD libraries (NOT including COMPONENTS) -# PKG_COMPONENT_LIBRARIES : list of COMPONENT libraries -# PKG_${COMPONENT}_FOUND : set to TRUE or FALSE for each library -# PKG_${COMPONENT}_LIBRARY : path to each individual library -# -# -# PKG_LIBRARIES and PKG_LIBRARY_DIRS will be empty if any of the standard -# libraries is missing -# -# @author Jan Engels, Desy -############################################################################## - - -SET( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE ) - -MACRO( CHECK_PACKAGE_LIBS _pkgname ) - - SET( _std_lib_missing FALSE ) - SET( _ext_lib_missing FALSE ) - - SET( _std_libnames ${ARGN} ) - SET( _ext_libnames ${${_pkgname}_FIND_COMPONENTS} ${${_pkgname}_USE_COMPONENTS} ) - - IF( _ext_libnames ) - SEPARATE_ARGUMENTS( _ext_libnames ) - LIST( REMOVE_DUPLICATES _ext_libnames ) - ENDIF() - - IF( NOT ${_pkgname}_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ${_pkgname}_LIBRARIES: ${_std_libnames}" ) - IF( _ext_libnames ) - MESSAGE( STATUS "Check for ${_pkgname}_COMPONENT_LIBRARIES: ${_ext_libnames}" ) - ENDIF() - ENDIF() - - SET( ${_pkgname}_LIBRARY_DIRS ) - MARK_AS_ADVANCED( ${_pkgname}_LIBRARY_DIRS ) - - SET( ${_pkgname}_LIBRARIES ) - MARK_AS_ADVANCED( ${_pkgname}_LIBRARIES ) - - SET( ${_pkgname}_COMPONENT_LIBRARIES ) - MARK_AS_ADVANCED( ${_pkgname}_COMPONENT_LIBRARIES ) - - SET( ${_pkgname}_COMPONENT_VARIABLES ) - MARK_AS_ADVANCED( ${_pkgname}_COMPONENT_VARIABLES ) - - FOREACH( _libname ${_std_libnames} ${_ext_libnames} ) - - # flag to check if it is a standard or a component library - LIST( FIND _std_libnames "${_libname}" _aux ) - IF( ${_aux} LESS 0 ) - SET( _is_std_lib FALSE ) - ELSE() - SET( _is_std_lib TRUE ) - ENDIF() - - # libname in upper case - STRING( TOUPPER ${_libname} _ulibname ) - - SET( ${_pkgname}_${_ulibname}_LIBRARY ${_pkgname}_${_ulibname}_LIBRARY-NOTFOUND ) - MARK_AS_ADVANCED( ${_pkgname}_${_ulibname}_LIBRARY ) - - # WARNING: using PATH_SUFFIXES may cause problems when using variable CMAKE_FIND_ROOT_PATH - # this problem does not occur if expanding PATHS - # look in FindMySQL.cmake for more info - #FIND_LIBRARY( ${_pkgname}_${_ulibname}_LIBRARY NAMES ${_libname} PATHS - # ${${_pkgname}_ROOT} ${${_pkgname}_DIR} ${${_pkgname}_LIB_SEARCH_PATH} - # PATH_SUFFIXES lib64 lib - # NO_DEFAULT_PATH - #) - - FIND_LIBRARY( ${_pkgname}_${_ulibname}_LIBRARY NAMES ${_libname} PATHS - ${${_pkgname}_ROOT}/lib64 ${${_pkgname}_ROOT}/lib - ${${_pkgname}_DIR}/lib64 ${${_pkgname}_DIR}/lib - ${${_pkgname}_LIB_SEARCH_PATH} ${${_pkgname}_LIB_SEARCH_PATH}/lib64 ${${_pkgname}_LIB_SEARCH_PATH}/lib - NO_DEFAULT_PATH - ) - - IF( NOT ${_pkgname}_DIR ) - FIND_LIBRARY( ${_pkgname}_${_ulibname}_LIBRARY NAMES ${_libname} ) - ENDIF() - - IF( ${_pkgname}_FIND_REQUIRED ) - LIST( APPEND ${_pkgname}_COMPONENT_VARIABLES ${_pkgname}_${_ulibname}_LIBRARY ) - ENDIF() - - IF( ${_pkgname}_${_ulibname}_LIBRARY ) # if library found - - SET( ${_pkgname}_${_ulibname}_FOUND TRUE ) - - # split libraries in PKG_LIBRARIES and PKG_COMPONENT_LIBRARIES - IF( _is_std_lib ) - LIST( APPEND ${_pkgname}_LIBRARIES ${${_pkgname}_${_ulibname}_LIBRARY} ) - ELSE() - LIST( APPEND ${_pkgname}_COMPONENT_LIBRARIES ${${_pkgname}_${_ulibname}_LIBRARY} ) - ENDIF() - - GET_FILENAME_COMPONENT( _aux ${${_pkgname}_${_ulibname}_LIBRARY} PATH ) - LIST( APPEND ${_pkgname}_LIBRARY_DIRS ${_aux} ) - - IF( NOT ${_pkgname}_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ${_pkgname}_${_ulibname}_LIBRARY: ${${_pkgname}_${_ulibname}_LIBRARY} -- ok" ) - ENDIF() - - ELSE() # library not found - - SET( ${_pkgname}_${_ulibname}_FOUND FALSE ) - - IF( _is_std_lib ) - SET( _std_lib_missing TRUE ) - ELSE() - SET( _ext_lib_missing TRUE ) - ENDIF() - - IF( NOT ${_pkgname}_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ${_pkgname}_${_ulibname}_LIBRARY: ${_libname} -- failed" ) - ENDIF() - - ENDIF() - - ENDFOREACH() - - # clear PKG_LIBRARIES if standard library is missing - IF( _std_lib_missing ) - SET( ${_pkgname}_LIBRARIES ) - ENDIF() - - # clear PKG_COMPONENT_LIBRARIES if a component library is missing and - # FIND_PACKAGE called with REQUIRED argument - IF( _ext_lib_missing AND ${_pkgname}_FIND_REQUIRED ) - SET( ${_pkgname}_COMPONENT_LIBRARIES ) - ENDIF() - - # remove duplicate paths in PKG_LIBRARY_DIRS - IF( ${_pkgname}_LIBRARY_DIRS ) - LIST( REMOVE_DUPLICATES ${_pkgname}_LIBRARY_DIRS ) - ENDIF() - - # debug - #MESSAGE( STATUS "${_pkgname}_LIBRARIES: ${${_pkgname}_LIBRARIES}" ) - #MESSAGE( STATUS "${_pkgname}_COMPONENT_LIBRARIES: ${${_pkgname}_COMPONENT_LIBRARIES}" ) - #MESSAGE( STATUS "${_pkgname}_LIBRARY_DIRS: ${${_pkgname}_LIBRARY_DIRS}" ) - -ENDMACRO( CHECK_PACKAGE_LIBS _pkgname ) - diff --git a/Utilities/KalDet/cmake/MacroCheckPackageVersion.cmake b/Utilities/KalDet/cmake/MacroCheckPackageVersion.cmake deleted file mode 100644 index e3ec75d9..00000000 --- a/Utilities/KalDet/cmake/MacroCheckPackageVersion.cmake +++ /dev/null @@ -1,108 +0,0 @@ -############################################################################## -# macro for checking a package version -# -# this macro should be called from your PKGVersion.cmake or from a -# FindPKG.cmake module with the following arguments: -# _pkgname : The package name -# _iversion : The installed version of the package -# -# -# the following conventions are used: -# -# if FIND_PACKAGE is called with EXACT argument than the version has to -# match EXACTLY, i.e.: -# 1.5 == 1.5 -# 1.5 == 1.5.0 -# 1.5 == 1.5.0.0 -# 1.5.2 == 1.5.2.0 -# 1.5.2.1 == 1.5.2.1 -# 1.5.2 != 1.5.2.1 -# 1.5 != 1.5.0.1 -# -# -# otherwise a MINIMUM_REQUIRED version is checked for, i.e. the same -# behavior as with the cmake variable CMAKE_MINIMUM_REQUIRED, e.g.: -# searching: 1.2 --> installed: 1.5.2.2 --> compatible -# searching: 1.5 --> installed: 1.5.2.2 --> compatible -# searching: 1.5.2.1 --> installed: 1.5.2.2 --> compatible -# searching: 1.5.2.3 --> installed: 1.5.2.2 --> unsuitable -# searching: 1.7 --> installed: 1.5.2.2 --> unsuitable -# -# -# following variables are returned (internally to cmake): -# PACKAGE_VERSION_EXACT : set to TRUE if exact version was found -# PACKAGE_VERSION_COMPATIBLE : set to TRUE if version is compatible -# PACKAGE_VERSION_UNSUITABLE : set to TRUE if version found is unsuitable -# -# -# @author Jan Engels, Desy IT -############################################################################## - -# these variables are evaluated internally by the cmake command FIND_PACKAGE to mark this -# package as suitable or not depending on the required version -SET( PACKAGE_VERSION_EXACT FALSE ) -SET( PACKAGE_VERSION_COMPATIBLE TRUE ) -SET( PACKAGE_VERSION_UNSUITABLE FALSE ) - - -# cmake internal variable PACKAGE_FIND_NAME is not defined on FindPKG.cmake -# modules, therefore it is passed as an argument to the macro -# _iversion is the installed version of the package -# _sversion is the version searched by the user with FIND_PACKAGE -#MACRO( CHECK_PACKAGE_VERSION _pkgname _iversion ) -MACRO( CHECK_PACKAGE_VERSION _pkgname ) # left with one argument only for backwards compatibility - - IF( NOT "${ARGV1}" STREQUAL "" ) - SET( _iversion ${ARGV1} ) - ELSE() - SET( _iversion ${${_pkgname}_VERSION_MAJOR}.${${_pkgname}_VERSION_MINOR}.${${_pkgname}_VERSION_PATCH}.${${_pkgname}_VERSION_TWEAK} ) - ENDIF() - - #SET( _sversion_major ${${_pkgname}_FIND_VERSION_MAJOR} ) - #SET( _sversion_minor ${${_pkgname}_FIND_VERSION_MINOR} ) - - SET( _sversion ${${_pkgname}_FIND_VERSION} ) - - IF( NOT ${_pkgname}_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ${_pkgname} (${_iversion})" ) - ENDIF() - - # only do work if FIND_PACKAGE called with a version argument - IF( _sversion ) - - #IF( NOT ${_pkgname}_FIND_QUIETLY ) - # MESSAGE( STATUS "Check for ${_pkgname}: looking for version ${_sversion}" ) - #ENDIF() - - IF( ${_iversion} VERSION_EQUAL ${_sversion} ) # if version matches EXACTLY - #IF( NOT ${_pkgname}_FIND_QUIETLY ) - # MESSAGE( STATUS "Check for ${_pkgname}: exact version found: ${_iversion}" ) - #ENDIF() - SET( PACKAGE_VERSION_EXACT TRUE ) - ELSE() # if version does not match EXACTLY, check if it is compatible/suitable - - # installed version must be greater or equal than version searched by the user, i.e. - # like with the CMAKE_MINIMUM_REQUIRED commando - # if user asks for version 1.2.5 then any version >= 1.2.5 is suitable/compatible - IF( NOT ${_sversion} VERSION_LESS ${_iversion} ) - SET( PACKAGE_VERSION_UNSUITABLE TRUE ) - ENDIF() - # ------------------------------------------------------------------------------------- - - IF( ${_pkgname}_FIND_VERSION_EXACT ) # if exact version was required search must fail!! - #IF( NOT ${_pkgname}_FIND_QUIETLY ) - # MESSAGE( "Check for ${_pkgname}: could not find exact version" ) - #ENDIF() - SET( PACKAGE_VERSION_UNSUITABLE TRUE ) - ENDIF() - - ENDIF() - - IF( PACKAGE_VERSION_UNSUITABLE ) - SET( PACKAGE_VERSION_COMPATIBLE FALSE ) - ENDIF() - - ENDIF( _sversion ) - -ENDMACRO( CHECK_PACKAGE_VERSION ) - diff --git a/Utilities/KalDet/cmake/MacroRootDict.cmake b/Utilities/KalDet/cmake/MacroRootDict.cmake deleted file mode 100644 index eb1059ed..00000000 --- a/Utilities/KalDet/cmake/MacroRootDict.cmake +++ /dev/null @@ -1,145 +0,0 @@ -IF(APPLE) - SET( LD_LIBRARY_PATH_VAR DYLD_LIBRARY_PATH ) -ELSE() - SET( LD_LIBRARY_PATH_VAR LD_LIBRARY_PATH ) -ENDIF() -SET( LD_LIBRARY_PATH_CONTENTS $ENV{${LD_LIBRARY_PATH_VAR}} ) -#MESSAGE( STATUS "LD_LIBRARY_PATH_CONTENTS: ${LD_LIBRARY_PATH_CONTENTS}" ) -#MESSAGE( STATUS "ROOT_CINT_EXECUTABLE: ${ROOT_CINT_EXECUTABLE}" ) - -SET( ROOT_CINT_WRAPPER ${LD_LIBRARY_PATH_VAR}=${ROOT_LIBRARY_DIR}:${LD_LIBRARY_PATH_CONTENTS} ${ROOT_CINT_EXECUTABLE} ) - -IF( NOT DEFINED ROOT_DICT_OUTPUT_DIR ) - SET( ROOT_DICT_OUTPUT_DIR "${PROJECT_BINARY_DIR}/rootdict" ) -ENDIF() - -# clean generated header files with 'make clean' -SET_DIRECTORY_PROPERTIES( PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ROOT_DICT_OUTPUT_DIR}" ) - -IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ROOT_DICT_OUTPUT_DIR: ${PROJECT_BINARY_DIR}/rootdict" ) - MESSAGE( STATUS "Check for ROOT_DICT_CINT_DEFINITIONS: ${ROOT_DICT_CINT_DEFINITIONS}" ) -ENDIF() - - -# ============================================================================ -# helper macro to prepare input headers for GEN_ROOT_DICT_SOURCES -# sorts LinkDef.h to be the last header (required by rootcint) -# -# arguments: -# input_dir - directory to search for headers matching *.h -# -# returns: -# ROOT_DICT_INPUT_HEADERS - all header files found in input_dir with -# LinkDef.h as the last header (if found) -# -# ---------------------------------------------------------------------------- -MACRO( PREPARE_ROOT_DICT_HEADERS _input_dir ) - - FILE( GLOB ROOT_DICT_INPUT_HEADERS "${_input_dir}/*.h" ) - FILE( GLOB _linkdef_hdr "${_input_dir}/LinkDef.h" ) - - #LIST( FIND ROOT_DICT_INPUT_HEADERS ${_linkdef_hdr} _aux ) - #IF( ${_aux} EQUAL 0 OR ${_aux} GREATER 0 ) - # LIST( REMOVE_ITEM ROOT_DICT_INPUT_HEADERS "${_linkdef_hdr}" ) - # LIST( APPEND ROOT_DICT_INPUT_HEADERS "${_linkdef_hdr}" ) - #ENDIF() - - IF( _linkdef_hdr ) - LIST( REMOVE_ITEM ROOT_DICT_INPUT_HEADERS "${_linkdef_hdr}" ) - LIST( APPEND ROOT_DICT_INPUT_HEADERS "${_linkdef_hdr}") - ENDIF() - - #MESSAGE( STATUS "ROOT_DICT_INPUT_HEADERS: ${ROOT_DICT_INPUT_HEADERS}" ) - -ENDMACRO( PREPARE_ROOT_DICT_HEADERS ) - - - -# ============================================================================ -# helper macro to generate Linkdef.h files for rootcint -# -# arguments: -# namespace - prefix used for creating header <namespace>_Linkdef.h -# ARGN - list of sources to be used for generating Linkdef.h -# -# returns: -# ROOT_DICT_INPUT_HEADERS - all header files + <namespace>_LinkDef.h in the -# correct order to be used by macro GEN_ROOT_DICT_SOURCES -# -# ---------------------------------------------------------------------------- -MACRO( GEN_ROOT_DICT_LINKDEF_HEADER _namespace ) - - SET( _input_headers ${ARGN} ) - SET( _linkdef_header "${ROOT_DICT_OUTPUT_DIR}/${_namespace}_Linkdef.h" ) - - FOREACH( _header ${_input_headers} ) - SET( ${_namespace}_file_contents "${${_namespace}_file_contents}\\#pragma link C++ defined_in \\\"${_header}\\\"\\;\\\\n" ) - ENDFOREACH() - - ADD_CUSTOM_COMMAND( - OUTPUT ${_linkdef_header} - COMMAND mkdir -p ${ROOT_DICT_OUTPUT_DIR} - COMMAND printf "${${_namespace}_file_contents}" > ${_linkdef_header} - DEPENDS ${_input_headers} - COMMENT "generating: ${_linkdef_header}" - ) - - SET( ROOT_DICT_INPUT_HEADERS ${_input_headers} ${_linkdef_header} ) - -ENDMACRO() - - -# ============================================================================ -# macro for generating root dict sources with rootcint -# -# arguments: -# dict_src_filename - filename of the dictionary source (to be generated) -# -# requires following variables: -# ROOT_DICT_INPUT_HEADERS - list of headers needed to generate dict source -# * if LinkDef.h is in the list it must be at the end !! -# ROOT_DICT_INCLUDE_DIRS - list of include dirs to pass to rootcint -I.. -# ROOT_DICT_CINT_DEFINITIONS - extra definitions to pass to rootcint -# ROOT_DICT_OUTPUT_DIR - where dictionary source should be generated -# -# returns: -# ROOT_DICT_OUTPUT_SOURCES - list containing generated source and other -# previously generated sources - -# ---------------------------------------------------------------------------- -MACRO( GEN_ROOT_DICT_SOURCE _dict_src_filename ) - - # TODO check for ROOT_CINT_EXECUTABLE - - # need to prefix all include dirs with -I - set( _dict_includes ) - FOREACH( _inc ${ROOT_DICT_INCLUDE_DIRS} ) - SET( _dict_includes "${_dict_includes}\t-I${_inc}") #fg: the \t fixes a wired string expansion - #SET( _dict_includes ${_dict_includes} -I${_inc} ) - ENDFOREACH() - - STRING( REPLACE "/" "_" _dict_src_filename_nosc ${_dict_src_filename} ) - SET( _dict_src_file ${ROOT_DICT_OUTPUT_DIR}/${_dict_src_filename_nosc} ) - STRING( REGEX REPLACE "^(.*)\\.(.*)$" "\\1.h" _dict_hdr_file "${_dict_src_file}" ) - #message("fucd debug: ${_dict_src_file} ${ROOT_DICT_CINT_DEFINITIONS} ${_dict_includes} ${ROOT_DICT_INPUT_HEADERS}") - ADD_CUSTOM_COMMAND( - OUTPUT ${_dict_src_file} ${_dict_hdr_file} - COMMAND mkdir -p ${ROOT_DICT_OUTPUT_DIR} - COMMAND ${ROOT_CINT_WRAPPER} -f "${_dict_src_file}" -c ${ROOT_DICT_CINT_DEFINITIONS} ${_dict_includes} ${ROOT_DICT_INPUT_HEADERS} - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - DEPENDS ${ROOT_DICT_INPUT_HEADERS} - COMMENT "generating: ${_dict_src_file} ${_dict_hdr_file}" - ) - LIST( APPEND ROOT_DICT_OUTPUT_SOURCES ${_dict_src_file} ) - -ENDMACRO() - -# for backwards compatibility -MACRO( GEN_ROOT_DICT_SOURCES _dict_src_filename ) - #MESSAGE( "USING DEPRECATED GEN_ROOT_DICT_SOURCES. PLEASE USE GEN_ROOT_DICT_SOURCE instead." ) - SET( ROOT_DICT_OUTPUT_SOURCES ) - GEN_ROOT_DICT_SOURCE( ${_dict_src_filename} ) -ENDMACRO() -# ============================================================================ - diff --git a/Utilities/KalDet/cmake/MyFindROOT.cmake b/Utilities/KalDet/cmake/MyFindROOT.cmake deleted file mode 100644 index 567ce159..00000000 --- a/Utilities/KalDet/cmake/MyFindROOT.cmake +++ /dev/null @@ -1,316 +0,0 @@ -############################################################################### -# cmake module for finding ROOT -# -# requires: -# MacroCheckPackageLibs.cmake for checking package libraries -# -# Following cmake variables are returned by this module: -# -# ROOT_FOUND : set to TRUE if ROOT found -# If FIND_PACKAGE is called with REQUIRED and COMPONENTS arguments -# ROOT_FOUND is only set to TRUE if ALL components are found. -# If REQUIRED is NOT set components may or may not be available -# -# ROOT_LIBRARIES : list of ROOT libraries (NOT including COMPONENTS) -# ROOT_INCLUDE_DIRS : list of paths to be used with INCLUDE_DIRECTORIES -# ROOT_LIBRARY_DIRS : list of paths to be used with LINK_DIRECTORIES -# ROOT_COMPONENT_LIBRARIES : list of ROOT component libraries -# ROOT_${COMPONENT}_FOUND : set to TRUE or FALSE for each library -# ROOT_${COMPONENT}_LIBRARY : path to individual libraries -# -# -# Please note that by convention components should be entered exactly as -# the library names, i.e. the component name equivalent to the library -# $ROOTSYS/lib/libMathMore.so should be called MathMore and NOT: -# mathmore or Mathmore or MATHMORE -# -# However to follow the usual cmake convention it is agreed that the -# ROOT_${COMPONENT}_FOUND and ROOT_${COMPONENT}_LIBRARY variables are ALL -# uppercase, i.e. the MathMore component returns: ROOT_MATHMORE_FOUND and -# ROOT_MATHMORE_LIBRARY NOT ROOT_MathMore_FOUND or ROOT_MathMore_LIBRARY -# -# -# The additional ROOT components should be defined as follows: -# FIND_PACKAGE( ROOT COMPONENTS MathMore Gdml Geom ...) -# -# If components are required use: -# FIND_PACKAGE( ROOT REQUIRED COMPONENTS MathMore Gdml Geom ...) -# -# If only root is required and components are NOT required use: -# FIND_PACKAGE( ROOT REQUIRED ) -# FIND_PACKAGE( ROOT COMPONENTS MathMore Gdml Geom ... QUIET ) -# then you need to check for ROOT_MATHMORE_FOUND, ROOT_GDML_FOUND, etc. -# -# The variable ROOT_USE_COMPONENTS can also be used before calling -# FIND_PACKAGE, i.e.: -# SET( ROOT_USE_COMPONENTS MathMore Gdml Geom ) -# FIND_PACKAGE( ROOT REQUIRED ) # all ROOT_USE_COMPONENTS must also be found -# FIND_PACKAGE( ROOT ) # check for ROOT_FOUND, ROOT_MATHMORE_FOUND, etc. -# -# @author Jan Engels, DESY -############################################################################### - -# ============================================== -# === ROOT_CONFIG_EXECUTABLE === -# ============================================== - -SET( ROOT_CONFIG_EXECUTABLE ROOT_CONFIG_EXECUTABLE-NOTFOUND ) -MARK_AS_ADVANCED( ROOT_CONFIG_EXECUTABLE ) -# FIND_PROGRAM: Once one of the calls succeeds the result variable will be set and stored in the cache so that no call will search again. -FIND_PROGRAM( ROOT_CONFIG_EXECUTABLE root-config PATHS ${ROOT_DIR}/bin NO_DEFAULT_PATH ) -FIND_PROGRAM( ROOT_CONFIG_EXECUTABLE root-config PATHS $ENV{ROOTSYS}/bin NO_DEFAULT_PATH) -FIND_PROGRAM( ROOT_CONFIG_EXECUTABLE root-config PATHS ENV PATH ) -FIND_PROGRAM( ROOT_CONFIG_EXECUTABLE root-config ) - -IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ROOT_CONFIG_EXECUTABLE: ${ROOT_CONFIG_EXECUTABLE}" ) -ENDIF() - -IF( ROOT_CONFIG_EXECUTABLE ) - - - # ============================================== - # === ROOT_VERSION === - # ============================================== - - INCLUDE( MacroCheckPackageVersion ) - - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --version - OUTPUT_VARIABLE _version - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( _exit_code EQUAL 0 ) - - # set required variables for MacroCheckPackageVersion - STRING(REGEX REPLACE "^([0-9]+).*" "\\1" ROOT_VERSION_MAJOR "${_version}") - STRING(REGEX REPLACE "^[0-9]+.([0-9]+).*" "\\1" ROOT_VERSION_MINOR "${_version}") - STRING(REGEX REPLACE "^[0-9]+.[0-9]+.([0-9]+).*" "\\1" ROOT_VERSION_PATCH "${_version}") - - SET( ROOT_VERSION "${ROOT_VERSION_MAJOR}.${ROOT_VERSION_MINOR}.${ROOT_VERSION_PATCH}" ) - ENDIF() - - CHECK_PACKAGE_VERSION( ROOT ${ROOT_VERSION} ) - - - - # ============================================== - # === ROOT_PREFIX === - # ============================================== - - # get root prefix from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --prefix - OUTPUT_VARIABLE ROOT_PREFIX - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( ROOT_PREFIX ) - ENDIF() - - # PKG_ROOT variables are a cmake standard - # since this package is also called ROOT the variable name - # becomes ROOT_ROOT ... - SET( ROOT_ROOT ${ROOT_PREFIX} ) - - - - # ============================================== - # === ROOT_BIN_DIR === - # ============================================== - - # get bindir from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --bindir - OUTPUT_VARIABLE ROOT_BIN_DIR - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( ROOT_BIN_DIR ) - ENDIF() - - - - # ============================================== - # === ROOT_EXECUTABLE === - # ============================================== - - - SET( ROOT_EXECUTABLE ROOT_EXECUTABLE-NOTFOUND ) - MARK_AS_ADVANCED( ROOT_EXECUTABLE ) - FIND_PROGRAM( ROOT_EXECUTABLE root PATHS ${ROOT_BIN_DIR} NO_DEFAULT_PATH ) - - IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ROOT_EXECUTABLE: ${ROOT_EXECUTABLE}" ) - ENDIF() - - - - - # ============================================== - # === ROOT_CINT_EXECUTABLE === - # ============================================== - - - # find rootcint - SET( ROOT_CINT_EXECUTABLE ROOT_CINT_EXECUTABLE-NOTFOUND ) - MARK_AS_ADVANCED( ROOT_CINT_EXECUTABLE ) - FIND_PROGRAM( ROOT_CINT_EXECUTABLE rootcint PATHS ${ROOT_BIN_DIR} NO_DEFAULT_PATH ) - - IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ROOT_CINT_EXECUTABLE: ${ROOT_CINT_EXECUTABLE}" ) - ENDIF() - - - - # ============================================== - # === ROOT_INCLUDE_DIR === - # ============================================== - - # get include dir from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --incdir - OUTPUT_VARIABLE _inc_dir - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( _inc_dir ) - ENDIF() - - - SET( ROOT_INCLUDE_DIRS ROOT_INCLUDE_DIRS-NOTFOUND ) - MARK_AS_ADVANCED( ROOT_INCLUDE_DIRS ) - - FIND_PATH( ROOT_INCLUDE_DIRS - NAMES TH1.h - PATHS ${ROOT_DIR}/include ${_inc_dir} - NO_DEFAULT_PATH - ) - - - - # ============================================== - # === ROOT_LIBRARIES === - # ============================================== - - # get library dir from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --libdir - OUTPUT_VARIABLE ROOT_LIBRARY_DIR - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( ROOT_LIBRARY_DIR ) - ENDIF() - - - - # ========== standard root libraries ================= - - # standard root libraries (without components) - SET( _root_libnames ) - - # get standard root libraries from 'root-config --libs' output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --noauxlibs --libs - OUTPUT_VARIABLE _aux - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( _exit_code EQUAL 0 ) - - # create a list out of the output - SEPARATE_ARGUMENTS( _aux ) - - # remove first item -L compiler flag - LIST( REMOVE_AT _aux 0 ) - - FOREACH( _lib ${_aux} ) - - # extract libnames from -l compiler flags - STRING( REGEX REPLACE "^-.(.*)$" "\\1" _libname "${_lib}") - - # fix for some root-config versions which export -lz even if using --noauxlibs - IF( NOT _libname STREQUAL "z" ) - - # append all library names into a list - LIST( APPEND _root_libnames ${_libname} ) - - ENDIF() - - ENDFOREACH() - - ENDIF() - - - - # ========== additional root components ================= - - #LIST( APPEND ROOT_FIND_COMPONENTS Minuit2 ) # DEPRECATED !!! - - - # ---------- libraries -------------------------------------------------------- - INCLUDE( MacroCheckPackageLibs ) - - SET( ROOT_LIB_SEARCH_PATH ${ROOT_LIBRARY_DIR} ) - - # only standard libraries should be passed as arguments to CHECK_PACKAGE_LIBS - # additional components are set by cmake in variable PKG_FIND_COMPONENTS - # first argument should be the package name - CHECK_PACKAGE_LIBS( ROOT ${_root_libnames} ) - - - - - # ====== DL LIBRARY ================================================== - # workaround for cmake bug in 64 bit: - # see: http://public.kitware.com/mantis/view.php?id=10813 - IF( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - FIND_LIBRARY( DL_LIB NAMES ${CMAKE_DL_LIBS} dl PATHS /usr/lib64 /lib64 NO_DEFAULT_PATH ) - ENDIF( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - - FIND_LIBRARY( DL_LIB NAMES ${CMAKE_DL_LIBS} dl ) - MARK_AS_ADVANCED( DL_LIB ) - - IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for libdl.so: ${DL_LIB}" ) - ENDIF() - -ENDIF( ROOT_CONFIG_EXECUTABLE ) - -# Threads library -#FIND_PACKAGE( Threads REQUIRED) - - -# ---------- final checking --------------------------------------------------- -INCLUDE( FindPackageHandleStandardArgs ) -# set ROOT_FOUND to TRUE if all listed variables are TRUE and not empty -# ROOT_COMPONENT_VARIABLES will be set if FIND_PACKAGE is called with REQUIRED argument -FIND_PACKAGE_HANDLE_STANDARD_ARGS( ROOT DEFAULT_MSG ROOT_INCLUDE_DIRS ROOT_LIBRARIES ${ROOT_COMPONENT_VARIABLES} PACKAGE_VERSION_COMPATIBLE DL_LIB ) - -IF( ROOT_FOUND ) - LIST( APPEND ROOT_LIBRARIES ${DL_LIB} ) - # FIXME DEPRECATED - SET( ROOT_DEFINITIONS "-DUSEROOT -DUSE_ROOT -DMARLIN_USE_ROOT" ) - MARK_AS_ADVANCED( ROOT_DEFINITIONS ) - - # file including MACROS for generating root dictionary sources - GET_FILENAME_COMPONENT( _aux ${CMAKE_CURRENT_LIST_FILE} PATH ) - SET( ROOT_DICT_MACROS_FILE ${_aux}/MacroRootDict.cmake ) - -ENDIF( ROOT_FOUND ) - -# ---------- cmake bug -------------------------------------------------------- -# ROOT_FIND_REQUIRED is not reset between FIND_PACKAGE calls, i.e. the following -# code fails when geartgeo component not available: (fixed in cmake 2.8) -# FIND_PACKAGE( ROOT REQUIRED ) -# FIND_PACKAGE( ROOT COMPONENTS geartgeo QUIET ) -SET( ROOT_FIND_REQUIRED ) - diff --git a/Utilities/KalDet/src/gen/EXEventGen.cxx b/Utilities/KalDet/src/gen/EXEventGen.cxx index fa509413..c10325c4 100644 --- a/Utilities/KalDet/src/gen/EXEventGen.cxx +++ b/Utilities/KalDet/src/gen/EXEventGen.cxx @@ -1,8 +1,8 @@ #include "EXEventGen.h" //#include "EXVKalDetector.h" //#include <EXVMeasLayer.h> -#include "kaldet/EXTPCKalDetector.h" -#include <kaldet/EXTPCMeasLayer.h> +#include "EXTPCKalDetector.h" +#include <EXTPCMeasLayer.h> #include <kaltest/TPlane.h> #include <TRandom.h> #include <TMath.h> diff --git a/Utilities/KalDet/src/lctpc/gearTPC/GearTPCCylinderMeasLayer.h b/Utilities/KalDet/src/lctpc/gearTPC/GearTPCCylinderMeasLayer.h index e20af5be..14e60fdf 100644 --- a/Utilities/KalDet/src/lctpc/gearTPC/GearTPCCylinderMeasLayer.h +++ b/Utilities/KalDet/src/lctpc/gearTPC/GearTPCCylinderMeasLayer.h @@ -3,7 +3,7 @@ #include <TVector3.h> #include <kaltest/TKalMatrix.h> #include <kaltest/TCylinder.h> -#include <kaldet/EXTPCMeasLayer.h> +#include <EXTPCMeasLayer.h> //#include <KalTrackDim.h> #include <TMath.h> diff --git a/Utilities/KalTest/CMakeLists.txt b/Utilities/KalTest/CMakeLists.txt index 65fba19a..296cf824 100644 --- a/Utilities/KalTest/CMakeLists.txt +++ b/Utilities/KalTest/CMakeLists.txt @@ -9,41 +9,49 @@ find_package(ROOT REQUIRED COMPONENTS MathCore) gaudi_depends_on_subdirs() -list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake) - -SET( ROOT_DICT_CINT_DEFINITIONS "-DHANDLE_DICT_EXCEPTIONS=IGNORED_FOR_CINT" ) - -INCLUDE( MyFindROOT ) -INCLUDE( MacroRootDict ) - -SET( lib_input_dirs src/geomlib src/kallib src/kaltracklib src/utils ) - -FOREACH( lib_input_dir ${lib_input_dirs} ) - LIST( APPEND ROOT_DICT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/${lib_input_dir} ) -ENDFOREACH() - -#MESSAGE( STATUS "ROOT_DICT_INCLUDE_DIRS: ${ROOT_DICT_INCLUDE_DIRS}" ) - -FOREACH( lib_input_dir ${lib_input_dirs} ) - - AUX_SOURCE_DIRECTORY( ${lib_input_dir} lib_sources ) - - PREPARE_ROOT_DICT_HEADERS( ${lib_input_dir} ) - - INSTALL(DIRECTORY ${lib_input_dir}/ DESTINATION "include/kaltest" - FILES_MATCHING PATTERN "*.h" PATTERN "LinkDef.h" EXCLUDE - ) - - GEN_ROOT_DICT_SOURCES( ${lib_input_dir}Dict.cxx ) - - LIST( APPEND lib_sources ${ROOT_DICT_OUTPUT_SOURCES} ) - -ENDFOREACH() - -include_directories( ${ROOT_DICT_INCLUDE_DIRS} ) +set( DICT_CINT_DEFINITIONS "HANDLE_DICT_EXCEPTIONS=IGNORED_FOR_CINT" ) +set( DICT_INPUT_DIRS geomlib kallib kaltracklib utils ) +set( DICT_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/rootdict ) + +foreach( DICT ${DICT_INPUT_DIRS} ) + list( APPEND DICT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src/${DICT} ) + aux_source_directory( src/${DICT} LIB_SOURCES ) +endforeach() + +foreach( DICT ${DICT_INPUT_DIRS} ) + file( GLOB DICT_HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/${DICT}/*.h" ) + file( GLOB LINKDEFS "${CMAKE_CURRENT_SOURCE_DIR}/src/${DICT}/LinkDef.h" ) + + if( LINKDEFS ) + list( REMOVE_ITEM DICT_HEADER_FILES "${LINKDEFS}" ) + endif() + + add_custom_command(OUTPUT ${DICT_OUTPUT_DIR}/${DICT}.cxx ${DICT_OUTPUT_DIR}/${DICT}_rdict.pcm + COMMAND ${ROOT_rootcling_CMD} + ARGS -f ${DICT_OUTPUT_DIR}/${DICT}.cxx -s ${DICT_OUTPUT_DIR}/${DICT} -inlineInputHeader + "$<$<BOOL:$<JOIN:${DICT_CINT_DEFINITIONS},>>:-D$<JOIN:${DICT_CINT_DEFINITIONS},;-D>>" + "$<$<BOOL:$<JOIN:${DICT_INCLUDE_DIRS},>>:-I$<JOIN:${DICT_INCLUDE_DIRS},;-I>>" + "$<JOIN:${DICT_HEADER_FILES},;>" "$<JOIN:${LINKDEFS},;>" + DEPENDS ${DICT_HEADER_FILES} ${LINKDEFS} + COMMAND_EXPAND_LISTS + ) + add_custom_target( ${DICT} DEPENDS ${DICT_OUTPUT_DIR}/${DICT}.cxx ${DICT_OUTPUT_DIR}/${DICT}_rdict.pcm ) + + set_source_files_properties(${DICT_OUTPUT_DIR}/${DICT}.cxx ${DICT_OUTPUT_DIR}/${DICT}_rdict.pcm + PROPERTIES + GENERATED TRUE + COMPILE_FLAGS "-Wno-unused-function -Wno-overlength-strings" + ) + + install(FILES ${DICT_OUTPUT_DIR}/${DICT}_rdict.pcm DESTINATION lib) + + list( APPEND LIB_SOURCES ${DICT_OUTPUT_DIR}/${DICT}.cxx ) +endforeach() + +include_directories( ${DICT_INCLUDE_DIRS} ) include_directories( ${ROOT_INCLUDE_DIRS} ) -set(KalTestLib_srcs ${lib_sources}) +set(KalTestLib_srcs ${LIB_SOURCES}) gaudi_add_library(KalTestLib ${KalTestLib_srcs} PUBLIC_HEADERS kaltest diff --git a/Utilities/KalTest/cmake/MacroCheckPackageLibs.cmake b/Utilities/KalTest/cmake/MacroCheckPackageLibs.cmake deleted file mode 100644 index c4451b3e..00000000 --- a/Utilities/KalTest/cmake/MacroCheckPackageLibs.cmake +++ /dev/null @@ -1,164 +0,0 @@ -############################################################################## -# macro for checkin package libraries in ${PKG_ROOT}/lib -# -# -# macro usage: -# CHECK_PACKAGE_LIBS( PACKAGE_NAME stdlib1 stdlib2 ... stdlibn ) -# only standard libraries should be passed as arguments to the macro -# component libraries are set by cmake in PKG_FIND_COMPONENTS (when -# calling FIND_PACKAGE with COMPONENTS argument) or through the -# variable PKG_USE_COMPONENTS -# -# -# required variables: -# PKG_ROOT : path to PKG root directory -# -# -# returns following variables: -# PKG_LIBRARY_DIRS : list of paths to be used with LINK_DIRECTORIES -# PGK_LIBRARIES : list of STANDARD libraries (NOT including COMPONENTS) -# PKG_COMPONENT_LIBRARIES : list of COMPONENT libraries -# PKG_${COMPONENT}_FOUND : set to TRUE or FALSE for each library -# PKG_${COMPONENT}_LIBRARY : path to each individual library -# -# -# PKG_LIBRARIES and PKG_LIBRARY_DIRS will be empty if any of the standard -# libraries is missing -# -# @author Jan Engels, Desy -############################################################################## - - -SET( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE ) - -MACRO( CHECK_PACKAGE_LIBS _pkgname ) - - SET( _std_lib_missing FALSE ) - SET( _ext_lib_missing FALSE ) - - SET( _std_libnames ${ARGN} ) - SET( _ext_libnames ${${_pkgname}_FIND_COMPONENTS} ${${_pkgname}_USE_COMPONENTS} ) - - IF( _ext_libnames ) - SEPARATE_ARGUMENTS( _ext_libnames ) - LIST( REMOVE_DUPLICATES _ext_libnames ) - ENDIF() - - IF( NOT ${_pkgname}_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ${_pkgname}_LIBRARIES: ${_std_libnames}" ) - IF( _ext_libnames ) - MESSAGE( STATUS "Check for ${_pkgname}_COMPONENT_LIBRARIES: ${_ext_libnames}" ) - ENDIF() - ENDIF() - - SET( ${_pkgname}_LIBRARY_DIRS ) - MARK_AS_ADVANCED( ${_pkgname}_LIBRARY_DIRS ) - - SET( ${_pkgname}_LIBRARIES ) - MARK_AS_ADVANCED( ${_pkgname}_LIBRARIES ) - - SET( ${_pkgname}_COMPONENT_LIBRARIES ) - MARK_AS_ADVANCED( ${_pkgname}_COMPONENT_LIBRARIES ) - - SET( ${_pkgname}_COMPONENT_VARIABLES ) - MARK_AS_ADVANCED( ${_pkgname}_COMPONENT_VARIABLES ) - - FOREACH( _libname ${_std_libnames} ${_ext_libnames} ) - - # flag to check if it is a standard or a component library - LIST( FIND _std_libnames "${_libname}" _aux ) - IF( ${_aux} LESS 0 ) - SET( _is_std_lib FALSE ) - ELSE() - SET( _is_std_lib TRUE ) - ENDIF() - - # libname in upper case - STRING( TOUPPER ${_libname} _ulibname ) - - SET( ${_pkgname}_${_ulibname}_LIBRARY ${_pkgname}_${_ulibname}_LIBRARY-NOTFOUND ) - MARK_AS_ADVANCED( ${_pkgname}_${_ulibname}_LIBRARY ) - - # WARNING: using PATH_SUFFIXES may cause problems when using variable CMAKE_FIND_ROOT_PATH - # this problem does not occur if expanding PATHS - # look in FindMySQL.cmake for more info - #FIND_LIBRARY( ${_pkgname}_${_ulibname}_LIBRARY NAMES ${_libname} PATHS - # ${${_pkgname}_ROOT} ${${_pkgname}_DIR} ${${_pkgname}_LIB_SEARCH_PATH} - # PATH_SUFFIXES lib64 lib - # NO_DEFAULT_PATH - #) - - FIND_LIBRARY( ${_pkgname}_${_ulibname}_LIBRARY NAMES ${_libname} PATHS - ${${_pkgname}_ROOT}/lib64 ${${_pkgname}_ROOT}/lib - ${${_pkgname}_DIR}/lib64 ${${_pkgname}_DIR}/lib - ${${_pkgname}_LIB_SEARCH_PATH} ${${_pkgname}_LIB_SEARCH_PATH}/lib64 ${${_pkgname}_LIB_SEARCH_PATH}/lib - NO_DEFAULT_PATH - ) - - IF( NOT ${_pkgname}_DIR ) - FIND_LIBRARY( ${_pkgname}_${_ulibname}_LIBRARY NAMES ${_libname} ) - ENDIF() - - IF( ${_pkgname}_FIND_REQUIRED ) - LIST( APPEND ${_pkgname}_COMPONENT_VARIABLES ${_pkgname}_${_ulibname}_LIBRARY ) - ENDIF() - - IF( ${_pkgname}_${_ulibname}_LIBRARY ) # if library found - - SET( ${_pkgname}_${_ulibname}_FOUND TRUE ) - - # split libraries in PKG_LIBRARIES and PKG_COMPONENT_LIBRARIES - IF( _is_std_lib ) - LIST( APPEND ${_pkgname}_LIBRARIES ${${_pkgname}_${_ulibname}_LIBRARY} ) - ELSE() - LIST( APPEND ${_pkgname}_COMPONENT_LIBRARIES ${${_pkgname}_${_ulibname}_LIBRARY} ) - ENDIF() - - GET_FILENAME_COMPONENT( _aux ${${_pkgname}_${_ulibname}_LIBRARY} PATH ) - LIST( APPEND ${_pkgname}_LIBRARY_DIRS ${_aux} ) - - IF( NOT ${_pkgname}_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ${_pkgname}_${_ulibname}_LIBRARY: ${${_pkgname}_${_ulibname}_LIBRARY} -- ok" ) - ENDIF() - - ELSE() # library not found - - SET( ${_pkgname}_${_ulibname}_FOUND FALSE ) - - IF( _is_std_lib ) - SET( _std_lib_missing TRUE ) - ELSE() - SET( _ext_lib_missing TRUE ) - ENDIF() - - IF( NOT ${_pkgname}_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ${_pkgname}_${_ulibname}_LIBRARY: ${_libname} -- failed" ) - ENDIF() - - ENDIF() - - ENDFOREACH() - - # clear PKG_LIBRARIES if standard library is missing - IF( _std_lib_missing ) - SET( ${_pkgname}_LIBRARIES ) - ENDIF() - - # clear PKG_COMPONENT_LIBRARIES if a component library is missing and - # FIND_PACKAGE called with REQUIRED argument - IF( _ext_lib_missing AND ${_pkgname}_FIND_REQUIRED ) - SET( ${_pkgname}_COMPONENT_LIBRARIES ) - ENDIF() - - # remove duplicate paths in PKG_LIBRARY_DIRS - IF( ${_pkgname}_LIBRARY_DIRS ) - LIST( REMOVE_DUPLICATES ${_pkgname}_LIBRARY_DIRS ) - ENDIF() - - # debug - #MESSAGE( STATUS "${_pkgname}_LIBRARIES: ${${_pkgname}_LIBRARIES}" ) - #MESSAGE( STATUS "${_pkgname}_COMPONENT_LIBRARIES: ${${_pkgname}_COMPONENT_LIBRARIES}" ) - #MESSAGE( STATUS "${_pkgname}_LIBRARY_DIRS: ${${_pkgname}_LIBRARY_DIRS}" ) - -ENDMACRO( CHECK_PACKAGE_LIBS _pkgname ) - diff --git a/Utilities/KalTest/cmake/MacroCheckPackageVersion.cmake b/Utilities/KalTest/cmake/MacroCheckPackageVersion.cmake deleted file mode 100644 index e3ec75d9..00000000 --- a/Utilities/KalTest/cmake/MacroCheckPackageVersion.cmake +++ /dev/null @@ -1,108 +0,0 @@ -############################################################################## -# macro for checking a package version -# -# this macro should be called from your PKGVersion.cmake or from a -# FindPKG.cmake module with the following arguments: -# _pkgname : The package name -# _iversion : The installed version of the package -# -# -# the following conventions are used: -# -# if FIND_PACKAGE is called with EXACT argument than the version has to -# match EXACTLY, i.e.: -# 1.5 == 1.5 -# 1.5 == 1.5.0 -# 1.5 == 1.5.0.0 -# 1.5.2 == 1.5.2.0 -# 1.5.2.1 == 1.5.2.1 -# 1.5.2 != 1.5.2.1 -# 1.5 != 1.5.0.1 -# -# -# otherwise a MINIMUM_REQUIRED version is checked for, i.e. the same -# behavior as with the cmake variable CMAKE_MINIMUM_REQUIRED, e.g.: -# searching: 1.2 --> installed: 1.5.2.2 --> compatible -# searching: 1.5 --> installed: 1.5.2.2 --> compatible -# searching: 1.5.2.1 --> installed: 1.5.2.2 --> compatible -# searching: 1.5.2.3 --> installed: 1.5.2.2 --> unsuitable -# searching: 1.7 --> installed: 1.5.2.2 --> unsuitable -# -# -# following variables are returned (internally to cmake): -# PACKAGE_VERSION_EXACT : set to TRUE if exact version was found -# PACKAGE_VERSION_COMPATIBLE : set to TRUE if version is compatible -# PACKAGE_VERSION_UNSUITABLE : set to TRUE if version found is unsuitable -# -# -# @author Jan Engels, Desy IT -############################################################################## - -# these variables are evaluated internally by the cmake command FIND_PACKAGE to mark this -# package as suitable or not depending on the required version -SET( PACKAGE_VERSION_EXACT FALSE ) -SET( PACKAGE_VERSION_COMPATIBLE TRUE ) -SET( PACKAGE_VERSION_UNSUITABLE FALSE ) - - -# cmake internal variable PACKAGE_FIND_NAME is not defined on FindPKG.cmake -# modules, therefore it is passed as an argument to the macro -# _iversion is the installed version of the package -# _sversion is the version searched by the user with FIND_PACKAGE -#MACRO( CHECK_PACKAGE_VERSION _pkgname _iversion ) -MACRO( CHECK_PACKAGE_VERSION _pkgname ) # left with one argument only for backwards compatibility - - IF( NOT "${ARGV1}" STREQUAL "" ) - SET( _iversion ${ARGV1} ) - ELSE() - SET( _iversion ${${_pkgname}_VERSION_MAJOR}.${${_pkgname}_VERSION_MINOR}.${${_pkgname}_VERSION_PATCH}.${${_pkgname}_VERSION_TWEAK} ) - ENDIF() - - #SET( _sversion_major ${${_pkgname}_FIND_VERSION_MAJOR} ) - #SET( _sversion_minor ${${_pkgname}_FIND_VERSION_MINOR} ) - - SET( _sversion ${${_pkgname}_FIND_VERSION} ) - - IF( NOT ${_pkgname}_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ${_pkgname} (${_iversion})" ) - ENDIF() - - # only do work if FIND_PACKAGE called with a version argument - IF( _sversion ) - - #IF( NOT ${_pkgname}_FIND_QUIETLY ) - # MESSAGE( STATUS "Check for ${_pkgname}: looking for version ${_sversion}" ) - #ENDIF() - - IF( ${_iversion} VERSION_EQUAL ${_sversion} ) # if version matches EXACTLY - #IF( NOT ${_pkgname}_FIND_QUIETLY ) - # MESSAGE( STATUS "Check for ${_pkgname}: exact version found: ${_iversion}" ) - #ENDIF() - SET( PACKAGE_VERSION_EXACT TRUE ) - ELSE() # if version does not match EXACTLY, check if it is compatible/suitable - - # installed version must be greater or equal than version searched by the user, i.e. - # like with the CMAKE_MINIMUM_REQUIRED commando - # if user asks for version 1.2.5 then any version >= 1.2.5 is suitable/compatible - IF( NOT ${_sversion} VERSION_LESS ${_iversion} ) - SET( PACKAGE_VERSION_UNSUITABLE TRUE ) - ENDIF() - # ------------------------------------------------------------------------------------- - - IF( ${_pkgname}_FIND_VERSION_EXACT ) # if exact version was required search must fail!! - #IF( NOT ${_pkgname}_FIND_QUIETLY ) - # MESSAGE( "Check for ${_pkgname}: could not find exact version" ) - #ENDIF() - SET( PACKAGE_VERSION_UNSUITABLE TRUE ) - ENDIF() - - ENDIF() - - IF( PACKAGE_VERSION_UNSUITABLE ) - SET( PACKAGE_VERSION_COMPATIBLE FALSE ) - ENDIF() - - ENDIF( _sversion ) - -ENDMACRO( CHECK_PACKAGE_VERSION ) - diff --git a/Utilities/KalTest/cmake/MacroRootDict.cmake b/Utilities/KalTest/cmake/MacroRootDict.cmake deleted file mode 100644 index ed7747fd..00000000 --- a/Utilities/KalTest/cmake/MacroRootDict.cmake +++ /dev/null @@ -1,145 +0,0 @@ -IF(APPLE) - SET( LD_LIBRARY_PATH_VAR DYLD_LIBRARY_PATH ) -ELSE() - SET( LD_LIBRARY_PATH_VAR LD_LIBRARY_PATH ) -ENDIF() -SET( LD_LIBRARY_PATH_CONTENTS $ENV{${LD_LIBRARY_PATH_VAR}} ) -#MESSAGE( STATUS "LD_LIBRARY_PATH_CONTENTS: ${LD_LIBRARY_PATH_CONTENTS}" ) -#MESSAGE( STATUS "ROOT_CINT_EXECUTABLE: ${ROOT_CINT_EXECUTABLE}" ) - -SET( ROOT_CINT_WRAPPER ${LD_LIBRARY_PATH_VAR}=${ROOT_LIBRARY_DIR}:${LD_LIBRARY_PATH_CONTENTS} ${ROOT_CINT_EXECUTABLE} ) - -IF( NOT DEFINED ROOT_DICT_OUTPUT_DIR ) - SET( ROOT_DICT_OUTPUT_DIR "${PROJECT_BINARY_DIR}/rootdict" ) -ENDIF() - -# clean generated header files with 'make clean' -SET_DIRECTORY_PROPERTIES( PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ROOT_DICT_OUTPUT_DIR}" ) - -IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ROOT_DICT_OUTPUT_DIR: ${PROJECT_BINARY_DIR}/rootdict" ) - MESSAGE( STATUS "Check for ROOT_DICT_CINT_DEFINITIONS: ${ROOT_DICT_CINT_DEFINITIONS}" ) -ENDIF() - - -# ============================================================================ -# helper macro to prepare input headers for GEN_ROOT_DICT_SOURCES -# sorts LinkDef.h to be the last header (required by rootcint) -# -# arguments: -# input_dir - directory to search for headers matching *.h -# -# returns: -# ROOT_DICT_INPUT_HEADERS - all header files found in input_dir with -# LinkDef.h as the last header (if found) -# -# ---------------------------------------------------------------------------- -MACRO( PREPARE_ROOT_DICT_HEADERS _input_dir ) - - FILE( GLOB ROOT_DICT_INPUT_HEADERS "${_input_dir}/*.h" ) - FILE( GLOB _linkdef_hdr "${_input_dir}/LinkDef.h" ) - - #LIST( FIND ROOT_DICT_INPUT_HEADERS ${_linkdef_hdr} _aux ) - #IF( ${_aux} EQUAL 0 OR ${_aux} GREATER 0 ) - # LIST( REMOVE_ITEM ROOT_DICT_INPUT_HEADERS "${_linkdef_hdr}" ) - # LIST( APPEND ROOT_DICT_INPUT_HEADERS "${_linkdef_hdr}" ) - #ENDIF() - - IF( _linkdef_hdr ) - LIST( REMOVE_ITEM ROOT_DICT_INPUT_HEADERS "${_linkdef_hdr}" ) - LIST( APPEND ROOT_DICT_INPUT_HEADERS "${_linkdef_hdr}") - ENDIF() - - #MESSAGE( STATUS "ROOT_DICT_INPUT_HEADERS: ${ROOT_DICT_INPUT_HEADERS}" ) - -ENDMACRO( PREPARE_ROOT_DICT_HEADERS ) - - - -# ============================================================================ -# helper macro to generate Linkdef.h files for rootcint -# -# arguments: -# namespace - prefix used for creating header <namespace>_Linkdef.h -# ARGN - list of sources to be used for generating Linkdef.h -# -# returns: -# ROOT_DICT_INPUT_HEADERS - all header files + <namespace>_LinkDef.h in the -# correct order to be used by macro GEN_ROOT_DICT_SOURCES -# -# ---------------------------------------------------------------------------- -MACRO( GEN_ROOT_DICT_LINKDEF_HEADER _namespace ) - - SET( _input_headers ${ARGN} ) - SET( _linkdef_header "${ROOT_DICT_OUTPUT_DIR}/${_namespace}_Linkdef.h" ) - - FOREACH( _header ${_input_headers} ) - SET( ${_namespace}_file_contents "${${_namespace}_file_contents}\\#pragma link C++ defined_in \\\"${_header}\\\"\\;\\\\n" ) - ENDFOREACH() - - ADD_CUSTOM_COMMAND( - OUTPUT ${_linkdef_header} - COMMAND mkdir -p ${ROOT_DICT_OUTPUT_DIR} - COMMAND printf "${${_namespace}_file_contents}" > ${_linkdef_header} - DEPENDS ${_input_headers} - COMMENT "generating: ${_linkdef_header}" - ) - - SET( ROOT_DICT_INPUT_HEADERS ${_input_headers} ${_linkdef_header} ) - -ENDMACRO() - - -# ============================================================================ -# macro for generating root dict sources with rootcint -# -# arguments: -# dict_src_filename - filename of the dictionary source (to be generated) -# -# requires following variables: -# ROOT_DICT_INPUT_HEADERS - list of headers needed to generate dict source -# * if LinkDef.h is in the list it must be at the end !! -# ROOT_DICT_INCLUDE_DIRS - list of include dirs to pass to rootcint -I.. -# ROOT_DICT_CINT_DEFINITIONS - extra definitions to pass to rootcint -# ROOT_DICT_OUTPUT_DIR - where dictionary source should be generated -# -# returns: -# ROOT_DICT_OUTPUT_SOURCES - list containing generated source and other -# previously generated sources - -# ---------------------------------------------------------------------------- -MACRO( GEN_ROOT_DICT_SOURCE _dict_src_filename ) - - # TODO check for ROOT_CINT_EXECUTABLE - - # need to prefix all include dirs with -I - set( _dict_includes ) - FOREACH( _inc ${ROOT_DICT_INCLUDE_DIRS} ) - SET( _dict_includes "${_dict_includes}\t-I${_inc}") #fg: the \t fixes a wired string expansion - #SET( _dict_includes ${_dict_includes} -I${_inc} ) - ENDFOREACH() - - STRING( REPLACE "/" "_" _dict_src_filename_nosc ${_dict_src_filename} ) - SET( _dict_src_file ${ROOT_DICT_OUTPUT_DIR}/${_dict_src_filename_nosc} ) - STRING( REGEX REPLACE "^(.*)\\.(.*)$" "\\1.h" _dict_hdr_file "${_dict_src_file}" ) - #message("${ROOT_DICT_INPUT_HEADERS}") - ADD_CUSTOM_COMMAND( - OUTPUT ${_dict_src_file} ${_dict_hdr_file} - COMMAND mkdir -p ${ROOT_DICT_OUTPUT_DIR} - COMMAND ${ROOT_CINT_WRAPPER} -f "${_dict_src_file}" -c ${ROOT_DICT_CINT_DEFINITIONS} ${_dict_includes} ${ROOT_DICT_INPUT_HEADERS} - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - DEPENDS ${ROOT_DICT_INPUT_HEADERS} - COMMENT "generating: ${_dict_src_file} ${_dict_hdr_file}" - ) - LIST( APPEND ROOT_DICT_OUTPUT_SOURCES ${_dict_src_file} ) - -ENDMACRO() - -# for backwards compatibility -MACRO( GEN_ROOT_DICT_SOURCES _dict_src_filename ) - #MESSAGE( "USING DEPRECATED GEN_ROOT_DICT_SOURCES. PLEASE USE GEN_ROOT_DICT_SOURCE instead." ) - SET( ROOT_DICT_OUTPUT_SOURCES ) - GEN_ROOT_DICT_SOURCE( ${_dict_src_filename} ) -ENDMACRO() -# ============================================================================ - diff --git a/Utilities/KalTest/cmake/MyFindROOT.cmake b/Utilities/KalTest/cmake/MyFindROOT.cmake deleted file mode 100644 index 567ce159..00000000 --- a/Utilities/KalTest/cmake/MyFindROOT.cmake +++ /dev/null @@ -1,316 +0,0 @@ -############################################################################### -# cmake module for finding ROOT -# -# requires: -# MacroCheckPackageLibs.cmake for checking package libraries -# -# Following cmake variables are returned by this module: -# -# ROOT_FOUND : set to TRUE if ROOT found -# If FIND_PACKAGE is called with REQUIRED and COMPONENTS arguments -# ROOT_FOUND is only set to TRUE if ALL components are found. -# If REQUIRED is NOT set components may or may not be available -# -# ROOT_LIBRARIES : list of ROOT libraries (NOT including COMPONENTS) -# ROOT_INCLUDE_DIRS : list of paths to be used with INCLUDE_DIRECTORIES -# ROOT_LIBRARY_DIRS : list of paths to be used with LINK_DIRECTORIES -# ROOT_COMPONENT_LIBRARIES : list of ROOT component libraries -# ROOT_${COMPONENT}_FOUND : set to TRUE or FALSE for each library -# ROOT_${COMPONENT}_LIBRARY : path to individual libraries -# -# -# Please note that by convention components should be entered exactly as -# the library names, i.e. the component name equivalent to the library -# $ROOTSYS/lib/libMathMore.so should be called MathMore and NOT: -# mathmore or Mathmore or MATHMORE -# -# However to follow the usual cmake convention it is agreed that the -# ROOT_${COMPONENT}_FOUND and ROOT_${COMPONENT}_LIBRARY variables are ALL -# uppercase, i.e. the MathMore component returns: ROOT_MATHMORE_FOUND and -# ROOT_MATHMORE_LIBRARY NOT ROOT_MathMore_FOUND or ROOT_MathMore_LIBRARY -# -# -# The additional ROOT components should be defined as follows: -# FIND_PACKAGE( ROOT COMPONENTS MathMore Gdml Geom ...) -# -# If components are required use: -# FIND_PACKAGE( ROOT REQUIRED COMPONENTS MathMore Gdml Geom ...) -# -# If only root is required and components are NOT required use: -# FIND_PACKAGE( ROOT REQUIRED ) -# FIND_PACKAGE( ROOT COMPONENTS MathMore Gdml Geom ... QUIET ) -# then you need to check for ROOT_MATHMORE_FOUND, ROOT_GDML_FOUND, etc. -# -# The variable ROOT_USE_COMPONENTS can also be used before calling -# FIND_PACKAGE, i.e.: -# SET( ROOT_USE_COMPONENTS MathMore Gdml Geom ) -# FIND_PACKAGE( ROOT REQUIRED ) # all ROOT_USE_COMPONENTS must also be found -# FIND_PACKAGE( ROOT ) # check for ROOT_FOUND, ROOT_MATHMORE_FOUND, etc. -# -# @author Jan Engels, DESY -############################################################################### - -# ============================================== -# === ROOT_CONFIG_EXECUTABLE === -# ============================================== - -SET( ROOT_CONFIG_EXECUTABLE ROOT_CONFIG_EXECUTABLE-NOTFOUND ) -MARK_AS_ADVANCED( ROOT_CONFIG_EXECUTABLE ) -# FIND_PROGRAM: Once one of the calls succeeds the result variable will be set and stored in the cache so that no call will search again. -FIND_PROGRAM( ROOT_CONFIG_EXECUTABLE root-config PATHS ${ROOT_DIR}/bin NO_DEFAULT_PATH ) -FIND_PROGRAM( ROOT_CONFIG_EXECUTABLE root-config PATHS $ENV{ROOTSYS}/bin NO_DEFAULT_PATH) -FIND_PROGRAM( ROOT_CONFIG_EXECUTABLE root-config PATHS ENV PATH ) -FIND_PROGRAM( ROOT_CONFIG_EXECUTABLE root-config ) - -IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ROOT_CONFIG_EXECUTABLE: ${ROOT_CONFIG_EXECUTABLE}" ) -ENDIF() - -IF( ROOT_CONFIG_EXECUTABLE ) - - - # ============================================== - # === ROOT_VERSION === - # ============================================== - - INCLUDE( MacroCheckPackageVersion ) - - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --version - OUTPUT_VARIABLE _version - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( _exit_code EQUAL 0 ) - - # set required variables for MacroCheckPackageVersion - STRING(REGEX REPLACE "^([0-9]+).*" "\\1" ROOT_VERSION_MAJOR "${_version}") - STRING(REGEX REPLACE "^[0-9]+.([0-9]+).*" "\\1" ROOT_VERSION_MINOR "${_version}") - STRING(REGEX REPLACE "^[0-9]+.[0-9]+.([0-9]+).*" "\\1" ROOT_VERSION_PATCH "${_version}") - - SET( ROOT_VERSION "${ROOT_VERSION_MAJOR}.${ROOT_VERSION_MINOR}.${ROOT_VERSION_PATCH}" ) - ENDIF() - - CHECK_PACKAGE_VERSION( ROOT ${ROOT_VERSION} ) - - - - # ============================================== - # === ROOT_PREFIX === - # ============================================== - - # get root prefix from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --prefix - OUTPUT_VARIABLE ROOT_PREFIX - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( ROOT_PREFIX ) - ENDIF() - - # PKG_ROOT variables are a cmake standard - # since this package is also called ROOT the variable name - # becomes ROOT_ROOT ... - SET( ROOT_ROOT ${ROOT_PREFIX} ) - - - - # ============================================== - # === ROOT_BIN_DIR === - # ============================================== - - # get bindir from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --bindir - OUTPUT_VARIABLE ROOT_BIN_DIR - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( ROOT_BIN_DIR ) - ENDIF() - - - - # ============================================== - # === ROOT_EXECUTABLE === - # ============================================== - - - SET( ROOT_EXECUTABLE ROOT_EXECUTABLE-NOTFOUND ) - MARK_AS_ADVANCED( ROOT_EXECUTABLE ) - FIND_PROGRAM( ROOT_EXECUTABLE root PATHS ${ROOT_BIN_DIR} NO_DEFAULT_PATH ) - - IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ROOT_EXECUTABLE: ${ROOT_EXECUTABLE}" ) - ENDIF() - - - - - # ============================================== - # === ROOT_CINT_EXECUTABLE === - # ============================================== - - - # find rootcint - SET( ROOT_CINT_EXECUTABLE ROOT_CINT_EXECUTABLE-NOTFOUND ) - MARK_AS_ADVANCED( ROOT_CINT_EXECUTABLE ) - FIND_PROGRAM( ROOT_CINT_EXECUTABLE rootcint PATHS ${ROOT_BIN_DIR} NO_DEFAULT_PATH ) - - IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for ROOT_CINT_EXECUTABLE: ${ROOT_CINT_EXECUTABLE}" ) - ENDIF() - - - - # ============================================== - # === ROOT_INCLUDE_DIR === - # ============================================== - - # get include dir from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --incdir - OUTPUT_VARIABLE _inc_dir - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( _inc_dir ) - ENDIF() - - - SET( ROOT_INCLUDE_DIRS ROOT_INCLUDE_DIRS-NOTFOUND ) - MARK_AS_ADVANCED( ROOT_INCLUDE_DIRS ) - - FIND_PATH( ROOT_INCLUDE_DIRS - NAMES TH1.h - PATHS ${ROOT_DIR}/include ${_inc_dir} - NO_DEFAULT_PATH - ) - - - - # ============================================== - # === ROOT_LIBRARIES === - # ============================================== - - # get library dir from root-config output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --libdir - OUTPUT_VARIABLE ROOT_LIBRARY_DIR - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( NOT _exit_code EQUAL 0 ) - # clear variable if root-config exits with error - # it might contain garbage - SET( ROOT_LIBRARY_DIR ) - ENDIF() - - - - # ========== standard root libraries ================= - - # standard root libraries (without components) - SET( _root_libnames ) - - # get standard root libraries from 'root-config --libs' output - EXECUTE_PROCESS( COMMAND "${ROOT_CONFIG_EXECUTABLE}" --noauxlibs --libs - OUTPUT_VARIABLE _aux - RESULT_VARIABLE _exit_code - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - IF( _exit_code EQUAL 0 ) - - # create a list out of the output - SEPARATE_ARGUMENTS( _aux ) - - # remove first item -L compiler flag - LIST( REMOVE_AT _aux 0 ) - - FOREACH( _lib ${_aux} ) - - # extract libnames from -l compiler flags - STRING( REGEX REPLACE "^-.(.*)$" "\\1" _libname "${_lib}") - - # fix for some root-config versions which export -lz even if using --noauxlibs - IF( NOT _libname STREQUAL "z" ) - - # append all library names into a list - LIST( APPEND _root_libnames ${_libname} ) - - ENDIF() - - ENDFOREACH() - - ENDIF() - - - - # ========== additional root components ================= - - #LIST( APPEND ROOT_FIND_COMPONENTS Minuit2 ) # DEPRECATED !!! - - - # ---------- libraries -------------------------------------------------------- - INCLUDE( MacroCheckPackageLibs ) - - SET( ROOT_LIB_SEARCH_PATH ${ROOT_LIBRARY_DIR} ) - - # only standard libraries should be passed as arguments to CHECK_PACKAGE_LIBS - # additional components are set by cmake in variable PKG_FIND_COMPONENTS - # first argument should be the package name - CHECK_PACKAGE_LIBS( ROOT ${_root_libnames} ) - - - - - # ====== DL LIBRARY ================================================== - # workaround for cmake bug in 64 bit: - # see: http://public.kitware.com/mantis/view.php?id=10813 - IF( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - FIND_LIBRARY( DL_LIB NAMES ${CMAKE_DL_LIBS} dl PATHS /usr/lib64 /lib64 NO_DEFAULT_PATH ) - ENDIF( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - - FIND_LIBRARY( DL_LIB NAMES ${CMAKE_DL_LIBS} dl ) - MARK_AS_ADVANCED( DL_LIB ) - - IF( NOT ROOT_FIND_QUIETLY ) - MESSAGE( STATUS "Check for libdl.so: ${DL_LIB}" ) - ENDIF() - -ENDIF( ROOT_CONFIG_EXECUTABLE ) - -# Threads library -#FIND_PACKAGE( Threads REQUIRED) - - -# ---------- final checking --------------------------------------------------- -INCLUDE( FindPackageHandleStandardArgs ) -# set ROOT_FOUND to TRUE if all listed variables are TRUE and not empty -# ROOT_COMPONENT_VARIABLES will be set if FIND_PACKAGE is called with REQUIRED argument -FIND_PACKAGE_HANDLE_STANDARD_ARGS( ROOT DEFAULT_MSG ROOT_INCLUDE_DIRS ROOT_LIBRARIES ${ROOT_COMPONENT_VARIABLES} PACKAGE_VERSION_COMPATIBLE DL_LIB ) - -IF( ROOT_FOUND ) - LIST( APPEND ROOT_LIBRARIES ${DL_LIB} ) - # FIXME DEPRECATED - SET( ROOT_DEFINITIONS "-DUSEROOT -DUSE_ROOT -DMARLIN_USE_ROOT" ) - MARK_AS_ADVANCED( ROOT_DEFINITIONS ) - - # file including MACROS for generating root dictionary sources - GET_FILENAME_COMPONENT( _aux ${CMAKE_CURRENT_LIST_FILE} PATH ) - SET( ROOT_DICT_MACROS_FILE ${_aux}/MacroRootDict.cmake ) - -ENDIF( ROOT_FOUND ) - -# ---------- cmake bug -------------------------------------------------------- -# ROOT_FIND_REQUIRED is not reset between FIND_PACKAGE calls, i.e. the following -# code fails when geartgeo component not available: (fixed in cmake 2.8) -# FIND_PACKAGE( ROOT REQUIRED ) -# FIND_PACKAGE( ROOT COMPONENTS geartgeo QUIET ) -SET( ROOT_FIND_REQUIRED ) - -- GitLab