mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-12 16:21:13 +00:00
93 lines
3.4 KiB
CMake
93 lines
3.4 KiB
CMake
################################################################################
|
|
# Copyright (C) 2018-2021 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" #
|
|
################################################################################
|
|
|
|
include_guard(GLOBAL)
|
|
|
|
if(NOT DEFINED ${GIT_EXECUTABLE})
|
|
find_program(GIT_EXECUTABLE NAMES git)
|
|
endif()
|
|
|
|
# TODO Deduplicate code
|
|
|
|
macro(exec cmd)
|
|
list(JOIN ARGN " " args)
|
|
file(APPEND ${${package}_BUILD_LOGFILE} ">>> ${cmd} ${args}\n")
|
|
|
|
execute_process(COMMAND ${cmd} ${ARGN}
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
OUTPUT_VARIABLE log
|
|
ERROR_VARIABLE log
|
|
RESULT_VARIABLE res
|
|
)
|
|
file(APPEND ${${package}_BUILD_LOGFILE} ${log})
|
|
|
|
if(res)
|
|
message(FATAL_ERROR "${res} \nSee also \"${${package}_BUILD_LOGFILE}\"")
|
|
endif()
|
|
endmacro()
|
|
|
|
macro(exec_source cmd)
|
|
list(JOIN ARGN " " args)
|
|
file(APPEND ${${package}_BUILD_LOGFILE} ">>> ${cmd} ${args}\n")
|
|
|
|
execute_process(COMMAND ${cmd} ${ARGN}
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE log
|
|
ERROR_VARIABLE log
|
|
RESULT_VARIABLE res
|
|
)
|
|
file(APPEND ${${package}_BUILD_LOGFILE} ${log})
|
|
|
|
if(res)
|
|
message(FATAL_ERROR "${res} \nSee also \"${${package}_BUILD_LOGFILE}\"")
|
|
endif()
|
|
endmacro()
|
|
|
|
function(build_bundled package bundle)
|
|
message(STATUS "Building bundled ${package}")
|
|
|
|
set(${package}_SOURCE_DIR ${CMAKE_SOURCE_DIR}/${bundle})
|
|
set(${package}_BINARY_DIR ${CMAKE_BINARY_DIR}/${bundle})
|
|
file(MAKE_DIRECTORY ${${package}_BINARY_DIR})
|
|
set(${package}_BUILD_LOGFILE ${${package}_BINARY_DIR}/build.log)
|
|
file(REMOVE ${${package}_BUILD_LOGFILE})
|
|
|
|
if(GIT_EXECUTABLE)
|
|
exec_source(${GIT_EXECUTABLE} submodule update --init -- ${${package}_SOURCE_DIR})
|
|
endif()
|
|
|
|
if(${package} STREQUAL GTest)
|
|
set(${package}_INSTALL_DIR ${CMAKE_BINARY_DIR}/${bundle}_install)
|
|
file(MAKE_DIRECTORY ${${package}_INSTALL_DIR})
|
|
set(${package}_PREFIX ${${package}_INSTALL_DIR})
|
|
|
|
exec(${CMAKE_COMMAND} -S ${${package}_SOURCE_DIR} -B ${${package}_BINARY_DIR} -G ${CMAKE_GENERATOR}
|
|
-DCMAKE_INSTALL_PREFIX=${${package}_INSTALL_DIR} -DBUILD_GMOCK=OFF
|
|
)
|
|
exec(${CMAKE_COMMAND} --build ${${package}_BINARY_DIR})
|
|
exec(${CMAKE_COMMAND} --build ${${package}_BINARY_DIR} --target install)
|
|
elseif(${package} STREQUAL FairCMakeModules)
|
|
set(${package}_INSTALL_DIR ${CMAKE_BINARY_DIR}/${bundle}_install)
|
|
file(MAKE_DIRECTORY ${${package}_INSTALL_DIR})
|
|
set(${package}_PREFIX ${${package}_INSTALL_DIR})
|
|
|
|
exec(${CMAKE_COMMAND} -S ${${package}_SOURCE_DIR} -B ${${package}_BINARY_DIR} -G ${CMAKE_GENERATOR}
|
|
-DCMAKE_INSTALL_PREFIX=${${package}_INSTALL_DIR}
|
|
)
|
|
exec(${CMAKE_COMMAND} --build ${${package}_BINARY_DIR})
|
|
exec(${CMAKE_COMMAND} --build ${${package}_BINARY_DIR} --target install)
|
|
elseif(${package} STREQUAL PicoSHA2)
|
|
set(${package}_PREFIX ${${package}_SOURCE_DIR})
|
|
endif()
|
|
|
|
set(${package}_ROOT ${${package}_PREFIX} CACHE PATH "Location of bundle package ${package}")
|
|
set(${package}_BUNDLED ON CACHE BOOL "Whether bundled ${package} was used")
|
|
|
|
message(STATUS "Building bundled ${package} - done")
|
|
endfunction()
|