From 170557ace918585e7fcd0505894d90bd4c08d862 Mon Sep 17 00:00:00 2001 From: Dennis Klein Date: Fri, 16 Jul 2021 10:31:30 +0200 Subject: [PATCH] build: Revert removal of asio find module Explicitely prefer config mode search over find module for asio. --- CMakeLists.txt | 5 ++++ cmake/FairMQDependencies.cmake | 4 +++ cmake/Findasio.cmake | 46 ++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 cmake/Findasio.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index d151af28..b949c568 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,6 +116,11 @@ if(BUILD_FAIRMQ) DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR} ) endif() +if(BUILD_SDK OR BUILD_DDS_PLUGIN) + install(FILES cmake/Findasio.cmake + DESTINATION ${PROJECT_INSTALL_CMAKEMODDIR} + ) +endif() if(BUILD_DOCS) install(DIRECTORY ${CMAKE_BINARY_DIR}/doxygen/html DESTINATION ${PROJECT_INSTALL_DATADIR}/docs diff --git a/cmake/FairMQDependencies.cmake b/cmake/FairMQDependencies.cmake index 56cb07f9..b32f84d3 100644 --- a/cmake/FairMQDependencies.cmake +++ b/cmake/FairMQDependencies.cmake @@ -45,7 +45,11 @@ if(BUILD_FAIRMQ OR BUILD_SDK) endif() if(BUILD_OFI_TRANSPORT OR BUILD_SDK OR BUILD_DDS_PLUGIN) + set(__old ${CMAKE_FIND_PACKAGE_PREFER_CONFIG}) + set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON) find_package2(PUBLIC asio REQUIRED VERSION 1.18) + set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ${__old}) + unset(__old) endif() if(BUILD_FAIRMQ) diff --git a/cmake/Findasio.cmake b/cmake/Findasio.cmake new file mode 100644 index 00000000..e5c1f9f4 --- /dev/null +++ b/cmake/Findasio.cmake @@ -0,0 +1,46 @@ +################################################################################ +# Copyright (C) 2019-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" # +################################################################################ + +find_path(asio_INCLUDE_DIR + NAMES asio.hpp + PATH_SUFFIXES include +) + +if(asio_INCLUDE_DIR) + find_file(asio_VERSION_HEADER "asio/version.hpp" + ${asio_INCLUDE_DIR} + NO_DEFAULT_PATH + ) +endif() + +if(asio_VERSION_HEADER) + file(READ "${asio_VERSION_HEADER}" _asio_VERSION_HEADER_CONTENT) + string(REGEX MATCH "#define ASIO_VERSION ([0-9]+)" _MATCH "${_asio_VERSION_HEADER_CONTENT}") + set(asio_VERSION_MACRO ${CMAKE_MATCH_1}) + math(EXPR asio_VERSION_MAJOR "${asio_VERSION_MACRO} / 100000") + math(EXPR asio_VERSION_MINOR "${asio_VERSION_MACRO} / 100 % 1000") + math(EXPR asio_VERSION_PATCH "${asio_VERSION_MACRO} % 100") + set(asio_VERSION "${asio_VERSION_MAJOR}.${asio_VERSION_MINOR}.${asio_VERSION_PATCH}") +endif() + + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(asio + REQUIRED_VARS asio_INCLUDE_DIR + VERSION_VAR asio_VERSION + HANDLE_COMPONENTS +) + +if(asio_FOUND AND NOT TARGET asio::asio) + add_library(asio::asio INTERFACE IMPORTED) + set_target_properties(asio::asio PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "ASIO_STANDALONE" + INTERFACE_INCLUDE_DIRECTORIES "${asio_INCLUDE_DIR}" + ) +endif() +