diff --git a/CMakeLists.txt b/CMakeLists.txt index 3bb196a1cc5d9574c8cd8b0a0f1e18eb21f5bf5f..829cc10811d7dec60286ce3c3c42ae2dd5ed2619 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,7 +54,6 @@ include(CbmGenerateConfig) include(CbmMacros) include(CbmTargets) include(CbmCompilerSettings) -include(ROOTMacros) include(FairMacros) include(WriteConfigFile) diff --git a/cmake/modules/CbmMacros.cmake b/cmake/modules/CbmMacros.cmake index 86b13b93d9087d94606a373e9731bdead9327b07..da1ae38832db9022ecf258ce0ebe18976f81ff53 100644 --- a/cmake/modules/CbmMacros.cmake +++ b/cmake/modules/CbmMacros.cmake @@ -331,3 +331,39 @@ message(STATUS " ${Cyan} CbmRoot Version::${BGreen}${CBMROOT_VERSION}${CR}") message(STATUS " ") endmacro(print_info) + +MACRO (GENERATE_ROOT_TEST_SCRIPT SCRIPT_FULL_NAME) + + get_filename_component(path_name ${SCRIPT_FULL_NAME} PATH) + get_filename_component(file_extension ${SCRIPT_FULL_NAME} EXT) + get_filename_component(file_name ${SCRIPT_FULL_NAME} NAME_WE) + set(shell_script_name "${file_name}.sh") + + #MESSAGE("PATH: ${path_name}") + #MESSAGE("Ext: ${file_extension}") + #MESSAGE("Name: ${file_name}") + #MESSAGE("Shell Name: ${shell_script_name}") + + string(REPLACE ${PROJECT_SOURCE_DIR} + ${PROJECT_BINARY_DIR} new_path ${path_name} + ) + + #MESSAGE("New PATH: ${new_path}") + + file(MAKE_DIRECTORY ${new_path}/data) + + CONVERT_LIST_TO_STRING(${LD_LIBRARY_PATH}) + set(MY_LD_LIBRARY_PATH ${output}) + + CONVERT_LIST_TO_STRING(${ROOT_INCLUDE_PATH}) + set(MY_ROOT_INCLUDE_PATH ${output}) + + set(my_script_name ${SCRIPT_FULL_NAME}) + + Write_Geant4Data_Variables_sh() + configure_file(${PROJECT_SOURCE_DIR}/cmake/scripts/root_macro.sh.in + ${new_path}/${shell_script_name} + ) + execute_process(COMMAND /bin/chmod u+x ${new_path}/${shell_script_name} OUTPUT_QUIET) + +ENDMACRO (GENERATE_ROOT_TEST_SCRIPT) diff --git a/cmake/modules/ROOTMacros.cmake b/cmake/modules/ROOTMacros.cmake deleted file mode 100644 index f6d66beef63390c92d7e9405eca51bb905ad48e1..0000000000000000000000000000000000000000 --- a/cmake/modules/ROOTMacros.cmake +++ /dev/null @@ -1,270 +0,0 @@ - ################################################################################ - # Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH # - # # - # This software is distributed under the terms of the # - # GNU Lesser General Public Licence (LGPL) version 3, # - # copied verbatim in the file "LICENSE" # - ################################################################################ -Function(Format _output input prefix suffix) - -# DevNotes - input should be put in quotes or the complete list does not get passed to the function - set(format) - foreach(arg ${input}) - set(item ${arg}) - if(prefix) - string(REGEX MATCH "^${prefix}" pre ${arg}) - endif(prefix) - if(suffix) - string(REGEX MATCH "${suffix}$" suf ${arg}) - endif(suffix) - if(NOT pre) - set(item "${prefix}${item}") - endif(NOT pre) - if(NOT suf) - set(item "${item}${suffix}") - endif(NOT suf) - list(APPEND format ${item}) - endforeach(arg) - set(${_output} ${format} PARENT_SCOPE) - -endfunction(Format) - - - ########################################### - # - # Macros for building ROOT dictionary - # - ########################################### -Macro(ROOT_GENERATE_DICTIONARY) - - # Macro to switch between the old implementation with parameters - # and the new implementation without parameters. - # For the new implementation some CMake variables has to be defined - # before calling the macro. - - # Old Implementation was removed since unused - ROOT_GENERATE_DICTIONARY_NEW() - -EndMacro(ROOT_GENERATE_DICTIONARY) - -Macro(ROOT_GENERATE_DICTIONARY_NEW) - - # All Arguments needed for this new version of the macro are defined - # in the parent scope, namely in the CMakeLists.txt of the submodule - set(Int_LINKDEF ${LINKDEF}) - set(Int_DICTIONARY ${DICTIONARY}) - set(Int_LIB ${LIBRARY_NAME}) - - set(Int_INC ${INCLUDE_DIRECTORIES} ${SYSTEM_INCLUDE_DIRECTORIES}) - -# set(Int_HDRS ${HDRS}) - # Loop over all source files - # Remove path from filename which introduces problems - # when installing CbmRoot using FairSoft nov20 and FairRoot v18.4 - foreach(_file IN LISTS HDRS) - get_filename_component(_header ${_file} NAME) - list(APPEND _headers ${_header}) - endforeach() - - set(Int_HDRS ${_headers}) - - set(Int_DEF ${DEFINITIONS}) - - # Convert the values of the variable to a semi-colon separated list - separate_arguments(Int_INC) - separate_arguments(Int_HDRS) - separate_arguments(Int_DEF) - - # Format neccesary arguments - # Add -I and -D to include directories and definitions - Format(Int_INC "${Int_INC}" "-I" "") - Format(Int_DEF "${Int_DEF}" "-D" "") - - #---call rootcint / cling -------------------------------- - set(OUTPUT_FILES ${Int_DICTIONARY}) - - If (CMAKE_SYSTEM_NAME MATCHES Linux) - Set(MY_LD_LIBRARY_PATH ${ROOT_LIBRARY_DIR}:${_intel_lib_dirs}:$ENV{LD_LIBRARY_PATH}) - ElseIf(CMAKE_SYSTEM_NAME MATCHES Darwin) - Set(MY_LD_LIBRARY_PATH ${ROOT_LIBRARY_DIR}:$ENV{DYLD_LIBRARY_PATH}) - EndIf() - - get_filename_component(script_name ${Int_DICTIONARY} NAME_WE) - String(REPLACE ";" " " Int_DEF_STR "${Int_DEF}") - String(REPLACE ";" " " Int_INC_STR "${Int_INC}") - String(REPLACE ";" " " Int_HDRS_STR "${Int_HDRS}") - - Set(EXTRA_DICT_PARAMETERS "") - - Set(Int_ROOTMAPFILE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${Int_LIB}.rootmap) - Set(Int_PCMFILE G__${Int_LIB}Dict_rdict.pcm) - Set(OUTPUT_FILES ${OUTPUT_FILES} ${Int_PCMFILE} ${Int_ROOTMAPFILE}) - Set(EXTRA_DICT_PARAMETERS ${EXTRA_DICT_PARAMETERS} - -rmf ${Int_ROOTMAPFILE} - -rml ${Int_LIB}${CMAKE_SHARED_LIBRARY_SUFFIX}) - Set_Source_Files_Properties(${OUTPUT_FILES} PROPERTIES GENERATED TRUE) - String(REPLACE ";" " " EXTRA_DICT_PARAMETERS_STR "${EXTRA_DICT_PARAMETERS}") - - # We need some environment variables which are present when running cmake at the - # time we run make. To pass the variables a script is created containing the - # correct values for the needed variables - - Configure_File(${PROJECT_SOURCE_DIR}/cmake/scripts/generate_dictionary_root.sh.in - ${CMAKE_CURRENT_BINARY_DIR}/generate_dictionary_${script_name}.sh - ) - execute_process(COMMAND /bin/chmod u+x ${CMAKE_CURRENT_BINARY_DIR}/generate_dictionary_${script_name}.sh OUTPUT_QUIET) - - Add_Custom_Command(OUTPUT ${OUTPUT_FILES} - COMMAND ${CMAKE_CURRENT_BINARY_DIR}/generate_dictionary_${script_name}.sh - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/${Int_PCMFILE} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${Int_PCMFILE} - DEPENDS ${HDRS} ${Int_LINKDEF} - ) - Install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${Int_PCMFILE} ${Int_ROOTMAPFILE} DESTINATION lib) - -endmacro(ROOT_GENERATE_DICTIONARY_NEW) - - -MACRO (GENERATE_ROOT_TEST_SCRIPT SCRIPT_FULL_NAME) - - get_filename_component(path_name ${SCRIPT_FULL_NAME} PATH) - get_filename_component(file_extension ${SCRIPT_FULL_NAME} EXT) - get_filename_component(file_name ${SCRIPT_FULL_NAME} NAME_WE) - set(shell_script_name "${file_name}.sh") - - #MESSAGE("PATH: ${path_name}") - #MESSAGE("Ext: ${file_extension}") - #MESSAGE("Name: ${file_name}") - #MESSAGE("Shell Name: ${shell_script_name}") - - string(REPLACE ${PROJECT_SOURCE_DIR} - ${PROJECT_BINARY_DIR} new_path ${path_name} - ) - - #MESSAGE("New PATH: ${new_path}") - - file(MAKE_DIRECTORY ${new_path}/data) - - CONVERT_LIST_TO_STRING(${LD_LIBRARY_PATH}) - set(MY_LD_LIBRARY_PATH ${output}) - - CONVERT_LIST_TO_STRING(${ROOT_INCLUDE_PATH}) - set(MY_ROOT_INCLUDE_PATH ${output}) - - set(my_script_name ${SCRIPT_FULL_NAME}) - - Write_Geant4Data_Variables_sh() - configure_file(${PROJECT_SOURCE_DIR}/cmake/scripts/root_macro.sh.in - ${new_path}/${shell_script_name} - ) - execute_process(COMMAND /bin/chmod u+x ${new_path}/${shell_script_name} OUTPUT_QUIET) - -ENDMACRO (GENERATE_ROOT_TEST_SCRIPT) - -Macro(GENERATE_LIBRARY) - - # TODO: remove this backwards-compatibility check when no longer needed - if(DEFINED FAIRROOT_LIBRARY_PROPERTIES AND NOT DEFINED PROJECT_LIBRARY_PROPERTIES) - set(PROJECT_LIBRARY_PROPERTIES ${FAIRROOT_LIBRARY_PROPERTIES}) - endif() - - set(Int_LIB ${LIBRARY_NAME}) - - Set(HeaderRuleName "${Int_LIB}_HEADER_RULES") - Set(DictName "G__${Int_LIB}Dict.cxx") - - If(NOT DICTIONARY) - Set(DICTIONARY ${CMAKE_CURRENT_BINARY_DIR}/${DictName}) - EndIf(NOT DICTIONARY) - - If( IS_ABSOLUTE ${DICTIONARY}) - Set(DICTIONARY ${DICTIONARY}) - Else( IS_ABSOLUTE ${DICTIONARY}) - Set(Int_DICTIONARY ${CMAKE_CURRENT_SOURCE_DIR}/${DICTIONARY}) - EndIf( IS_ABSOLUTE ${DICTIONARY}) - - Set(Int_SRCS ${SRCS}) - - If(HEADERS) - Set(HDRS ${HEADERS}) - Else(HEADERS) - CHANGE_FILE_EXTENSION(*.cxx *.h HDRS "${SRCS}") - EndIf(HEADERS) - - If(IWYU_FOUND) - Set(_INCLUDE_DIRS ${INCLUDE_DIRECTORIES} ${SYSTEM_INCLUDE_DIRECTORIES}) - CHECK_HEADERS("${Int_SRCS}" "${_INCLUDE_DIRS}" ${HeaderRuleName}) - EndIf(IWYU_FOUND) - - install(FILES ${HDRS} DESTINATION include) - - If(LINKDEF) - If( IS_ABSOLUTE ${LINKDEF}) - Set(Int_LINKDEF ${LINKDEF}) - Else( IS_ABSOLUTE ${LINKDEF}) - Set(Int_LINKDEF ${CMAKE_CURRENT_SOURCE_DIR}/${LINKDEF}) - EndIf( IS_ABSOLUTE ${LINKDEF}) - ROOT_GENERATE_DICTIONARY_NEW() - SET(Int_SRCS ${Int_SRCS} ${DICTIONARY}) - SET_SOURCE_FILES_PROPERTIES(${DICTIONARY} - PROPERTIES COMPILE_FLAGS "-Wno-old-style-cast" - ) - EndIf(LINKDEF) - - set(Int_DEPENDENCIES) - foreach(d ${DEPENDENCIES}) - get_filename_component(_ext ${d} EXT) - If(NOT _ext MATCHES a$) - set(Int_DEPENDENCIES ${Int_DEPENDENCIES} ${d}) - Else() - Message("Found Static library with extension ${_ext}") - get_filename_component(_lib ${d} NAME_WE) - set(Int_DEPENDENCIES ${Int_DEPENDENCIES} ${_lib}) - EndIf() - endforeach() - - ############### build the library ##################### - If(${CMAKE_GENERATOR} MATCHES Xcode) - Add_Library(${Int_LIB} SHARED ${Int_SRCS} ${NO_DICT_SRCS} ${HDRS} ${LINKDEF}) - Else() - Add_Library(${Int_LIB} SHARED ${Int_SRCS} ${NO_DICT_SRCS} ${LINKDEF}) - EndIf() - target_link_libraries(${Int_LIB} ${Int_DEPENDENCIES}) - set_target_properties(${Int_LIB} PROPERTIES ${PROJECT_LIBRARY_PROPERTIES}) - - ############### install the library ################### - install(TARGETS ${Int_LIB} DESTINATION lib) - - Set(LIBRARY_NAME) - Set(DICTIONARY) - Set(LINKDEF) - Set(SRCS) - Set(HEADERS) - Set(NO_DICT_SRCS) - Set(DEPENDENCIES) - -EndMacro(GENERATE_LIBRARY) - - -Macro(GENERATE_EXECUTABLE) - -# If(IWYU_FOUND) -# Set(HeaderRuleName "${EXE_NAME}_HEADER_RULES") -# CHECK_HEADERS("${SRCS}" "${INCLUDE_DIRECTORIES}" ${HeaderRuleName}) -# EndIf(IWYU_FOUND) - - ############### build the library ##################### - Add_Executable(${EXE_NAME} ${SRCS}) - target_link_libraries(${EXE_NAME} ${DEPENDENCIES}) - - ############### install the library ################### - if(DEFINED BIN_DESTINATION) - install(TARGETS ${EXE_NAME} DESTINATION ${BIN_DESTINATION}) - else(DEFINED BIN_DESTINATION) - install(TARGETS ${EXE_NAME} DESTINATION bin) - endif(DEFINED BIN_DESTINATION) - - Set(EXE_NAME) - Set(SRCS) - Set(DEPENDENCIES) - -EndMacro(GENERATE_EXECUTABLE)