-
The compilation of some analysis files did crash due to missing header files when not setting the environment variables SIMPATH and FAIRROOTPATH. The problem was that the external package Hal internally uses this environment variables and changed compilation targets if they are found. Add a patch which fixes this but the change should go upstream.
The compilation of some analysis files did crash due to missing header files when not setting the environment variables SIMPATH and FAIRROOTPATH. The problem was that the external package Hal internally uses this environment variables and changed compilation targets if they are found. Add a patch which fixes this but the change should go upstream.
InstallHal.cmake 4.06 KiB
set(HAL_VERSION 9da3fa0b6511765b83409a1804753e4b46ab81a7)
set(HAL_SRC_URL "https://github.com/DanielWielanek/HAL.git")
set(HAL_DESTDIR "${CMAKE_BINARY_DIR}/external/HAL-prefix")
list(APPEND HAL_LIB_LIST "HalAna" "HalCut" "HalData" "HalFeatures" "HalFemto")
list(APPEND HAL_LIB_LIST "HalFlow" "HalFluct" "HalSpectra" "HalFair" "HalQA")
download_project_if_needed(PROJECT Hal_source
GIT_REPOSITORY ${HAL_SRC_URL}
GIT_TAG ${HAL_VERSION}
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Hal
PATCH_COMMAND "patch -p1 < ${CMAKE_CURRENT_SOURCE_DIR}/Hal.patch"
)
If(ProjectUpdated)
File(REMOVE_RECURSE ${HAL_DESTDIR})
Message("Hal source directory was changed so build directory was deleted")
EndIf()
If(USE_DIFFERENT_COMPILER)
Set(EXTRA_ARGS "-DUSE_DIFFERENT_COMPILER=TRUE")
Else()
Set(EXTRA_ARGS "")
EndIf()
execute_process(COMMAND gsl-config --prefix OUTPUT_VARIABLE GSLPATH OUTPUT_STRIP_TRAILING_WHITESPACE)
message(WARNING "GSL PATH ${GSLPATH}")
ExternalProject_Add(HAL
BUILD_IN_SOURCE 0
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Hal
BUILD_BYPRODUCTS ${HAL_LIBRARY}
LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1
CMAKE_ARGS -G ${CMAKE_GENERATOR}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
-DROOTSYS=${SIMPATH}
-DSIMPATH=${SIMPATH}
-DFAIRROOTPATH=${FAIRROOTPATH}
-DGSL_DIR=${GSLPATH}
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
"${EXTRA_ARGS}"
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install
)
foreach(HAL_LIB_LOCAL ${HAL_LIB_LIST})
add_library(${HAL_LIB_LOCAL} SHARED IMPORTED GLOBAL)
set_target_properties(${HAL_LIB_LOCAL} PROPERTIES
IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${HAL_LIB_LOCAL}${CMAKE_SHARED_LIBRARY_SUFFIX}
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/include)
add_dependencies(${HAL_LIB_LOCAL} HAL)
endforeach()
#set(Hal_LIBRARIES HalFeatures PARENT_SCOPE)
#set(Hal_LIB_DIR ${CMAKE_BINARY_DIR}/lib PARENT_SCOPE)
set(Hal_INCLUDE_DIR "${CMAKE_BINARY_DIR}/include" PARENT_SCOPE)
set(Hal_FOUND TRUE PARENT_SCOPE)
foreach(LIB_NAME ${HAL_LIB_LIST})
if(APPLE)
Install( FILES
"${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
"${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}.0${CMAKE_SHARED_LIBRARY_SUFFIX}"
"${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}.1${CMAKE_SHARED_LIBRARY_SUFFIX}"
"${CMAKE_BINARY_DIR}/lib/G__${LIB_NAME}Dict_rdict.pcm"
"${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}.rootmap"
DESTINATION lib)
else()
Install( FILES
"${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
"${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.0"
"${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.1"
"${CMAKE_BINARY_DIR}/lib/G__${LIB_NAME}Dict_rdict.pcm"
"${CMAKE_BINARY_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}${LIB_NAME}.rootmap"
DESTINATION lib)
endif()
endforeach(LIB_NAME)
## addditional stuff
Install(FILES ${CMAKE_BINARY_DIR}/bin/hal-report
${CMAKE_BINARY_DIR}/bin/hal-merger
${CMAKE_BINARY_DIR}/bin/hal-jobs
${CMAKE_BINARY_DIR}/bin/hal-corrfit
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
DESTINATION bin
)
Install(DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}/Hal/features/hal_plus
DESTINATION share
)
Install(DIRECTORY
${CMAKE_BINARY_DIR}/include/Hal
DESTINATION include
)