From f97d52eee44f1d25d644c7058ffbf38ef345960c Mon Sep 17 00:00:00 2001 From: Sergii Kryvonos Date: Thu, 26 Sep 2024 15:25:43 +0200 Subject: [PATCH] Vcpkg: MinGW buildfix --- CMakeLists.txt | 56 +++++++++++++++++++++++++---------------------- cmake/vcpkg.cmake | 25 +++++++++++---------- 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ae205833e..80c78f712 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -188,7 +188,6 @@ set(_BOOST_USED_COMPONENTS CACHE STRING "Components" FORCE) if(OPENMIND_USE_VCPKG) set(_BOOST_USED_COMPONENTS ${_BOOST_USED_COMPONENTS} - boost compute multiprecision CACHE STRING "Components" FORCE) @@ -197,7 +196,7 @@ if(BUILD_TESTS OR OPENMIND_BUILD_TESTS OR _IS_DEBUG OR NOT CMAKE_BUILD_TYPE) enable_testing() if(OPENMIND_USE_VCPKG) set(_BOOST_USED_COMPONENTS ${_BOOST_USED_COMPONENTS} - unit_test_framework + test CACHE STRING "Components" FORCE) else(OPENMIND_USE_VCPKG) set(_BOOST_USED_COMPONENTS ${_BOOST_USED_COMPONENTS} @@ -236,18 +235,28 @@ elseif(OPENMIND_USE_CONAN) endif() endif() -find_package(Boost ${OPENMIND_PREFERRED_BOOST_VERSION} - CONFIG - HINTS C:/Boost - COMPONENTS ${BOOST_USED_COMPONENTS} - ) -if(NOT Boost_FOUND) - find_package(Boost ${OPENMIND_REQUIRED_BOOST_VERSION} - CONFIG - HINTS C:/Boost - COMPONENTS ${BOOST_USED_COMPONENTS} +if (NOT Boost_FOUND) + if (OPENMIND_USE_VCPKG) + include(vcpkg) + unset(Boost_DIR CACHE) + unset(Boost_INCLUDE_DIR CACHE) + message("BOOST_USED_COMPONENTS=${BOOST_USED_COMPONENTS}") + find_package(Boost CONFIG REQUIRED COMPONENTS ${BOOST_USED_COMPONENTS}) + else() + find_package(Boost ${OPENMIND_PREFERRED_BOOST_VERSION} + CONFIG + HINTS C:/Boost + COMPONENTS ${BOOST_USED_COMPONENTS} ) -endif() + if(NOT Boost_FOUND) + find_package(Boost ${OPENMIND_REQUIRED_BOOST_VERSION} + CONFIG + HINTS C:/Boost + COMPONENTS ${BOOST_USED_COMPONENTS} + ) + endif() + endif () +endif () add_custom_target(prerequisites) set_target_properties(prerequisites PROPERTIES FOLDER "util") @@ -289,7 +298,7 @@ find_package(OpenMP) # set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") #endif() -if (Boost_FOUND OR OPENMIND_USE_CONAN) +if (Boost_FOUND OR OPENMIND_USE_CONAN OR OPENMIND_USE_VCPKG) if(NOT TARGET boost) add_custom_target(boost) endif() @@ -384,18 +393,13 @@ if(NOT MSVC OR Boost_VERSION VERSION_LESS 1.80.0) set(BOOST_LINK_LIBS ${BOOST_LINK_LIBS} Boost::thread) endif() -if(OPENMIND_USE_VCPKG) - set(BOOST_LINK_LIBS ${BOOST_LINK_LIBS} - Boost::headers - ) - set(BOOST_TEST_LINK_LIBS ${BOOST_LINK_LIBS} - Boost::test - ) -else() - set(BOOST_TEST_LINK_LIBS ${BOOST_LINK_LIBS} - Boost::test_exec_monitor - Boost::unit_test_framework - ) + +set(BOOST_TEST_LINK_LIBS + ${BOOST_LINK_LIBS} + Boost::unit_test_framework +) +if(NOT MSVC AND NOT OPENMIND_USE_VCPKG AND NOT OPENMIND_USE_CONAN) + list(APPEND BOOST_TEST_LINK_LIBS Boost::test_exec_monitor) endif() IF (Boost_FOUND) diff --git a/cmake/vcpkg.cmake b/cmake/vcpkg.cmake index 0bd75ca62..0e78856a3 100644 --- a/cmake/vcpkg.cmake +++ b/cmake/vcpkg.cmake @@ -1,3 +1,13 @@ + +function(prepend_toolchain_file) + if(EXISTS ${CMAKE_TOOLCHAIN_FILE}) + list(PREPEND CMAKE_PROJECT_TOP_LEVEL_INCLUDES "${CMAKE_TOOLCHAIN_FILE}") + set(${CMAKE_PROJECT_TOP_LEVEL_INCLUDES} "${${CMAKE_PROJECT_TOP_LEVEL_INCLUDES}}" PARENT_SCOPE) + list(PREPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_PROJECT_TOP_LEVEL_INCLUDES) + set(${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES} "${${CMAKE_TRY_COMPILE_PLATFORM_VARIABLES}}" PARENT_SCOPE) + endif() +endfunction() + macro(find_vcpkg) if(NOT EXISTS ${CMAKE_TOOLCHAIN_FILE}) if(NOT EXISTS ${VCPKG_EXECUTABLE}) @@ -19,8 +29,7 @@ macro(find_vcpkg) if(EXISTS ${CMAKE_TOOLCHAIN_FILE}) set(VCPKG_FOUND TRUE CACHE BOOL "VCPKG toolchain file found ${CMAKE_TOOLCHAIN_FILE}" FORCE) - list(PREPEND CMAKE_PROJECT_TOP_LEVEL_INCLUDES "${CMAKE_TOOLCHAIN_FILE}") - list(PREPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_PROJECT_TOP_LEVEL_INCLUDES) + #prepend_toolchain_file() else() set(VCPKG_FOUND FALSE CACHE BOOL "VCPKG not found" FORCE) endif() @@ -59,6 +68,8 @@ endmacro() if(NOT VCPKG_FOUND) find_vcpkg() +else() +# prepend_toolchain_file() endif() option(OPENMIND_USE_VCPKG "Use vcpkg" ${VCPKG_FOUND}) @@ -76,14 +87,4 @@ if(OPENMIND_USE_VCPKG) if(NOT VCPKG_FOUND) message(WARNING "Vcpkg not found") endif() - if(VCPKG_EXECUTABLE) - execute_process( - COMMAND ${VCPKG_EXECUTABLE} install - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - RESULT_VARIABLE VCPKG_RESULT - ) - if(NOT VCPKG_RESULT EQUAL 0) - message(FATAL_ERROR "Failed to install dependencies using vcpkg") - endif() - endif() endif()