diff --git a/CMakeLists.txt b/CMakeLists.txt index dc2794f45..1032b6ef9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -360,8 +360,8 @@ if(TARGET boost) endif() set(BOOST_LINK_LIBS - Boost::chrono - Boost::filesystem + Boost::chrono + Boost::filesystem Boost::serialization Boost::system ) @@ -372,16 +372,20 @@ endif() set(BOOST_TEST_LINK_LIBS ${BOOST_LINK_LIBS} Boost::test_exec_monitor - Boost::unit_test_framework + Boost::unit_test_framework ) IF (Boost_FOUND) - message("Boost_FOUND") - message("Boost_DIR: ${Boost_DIR}") - message("Boost_INCLUDE_DIR: ${Boost_INCLUDE_DIR}") - message("EXTERNAL_FETCHED_BOOST: ${EXTERNAL_FETCHED_BOOST}") - message("Boost_LIBRARY_DIR: ${Boost_LIBRARY_DIR}") - message("Boost_LIBRARY_DIRS: ${Boost_LIBRARY_DIRS}") + message(STATUS "Boost found:") + message(STATUS " Boost_DIR: ${Boost_DIR}") + message(STATUS " Boost_INCLUDE_DIR: ${Boost_INCLUDE_DIR}") + message(STATUS " EXTERNAL_FETCHED_BOOST: ${EXTERNAL_FETCHED_BOOST}") + message(STATUS " Boost_LIBRARY_DIR: ${Boost_LIBRARY_DIR}") + message(STATUS " Boost_LIBRARY_DIRS: ${Boost_LIBRARY_DIRS}") + message(STATUS " Boost_VERSION: ${Boost_VERSION}") + message(STATUS " Boost_LIBRARIES: ${Boost_LIBRARIES}") +ELSE() + message(WARNING "Boost not found. Build 'prerequisites' target first.") ENDIF() diff --git a/cmake/vcpkg.cmake b/cmake/vcpkg.cmake index d150bf7da..86649d3d9 100644 --- a/cmake/vcpkg.cmake +++ b/cmake/vcpkg.cmake @@ -1,66 +1,88 @@ - macro(find_vcpkg) if(NOT EXISTS ${CMAKE_TOOLCHAIN_FILE}) if(NOT EXISTS ${VCPKG_EXECUTABLE}) - find_program(VCPKG_EXECUTABLE vcpkg PATHS - "$ENV{ProgramFiles}/Microsoft Visual Studio/*/*/VC/vcpkg/" - "$ENV{USERPROFILE}$ENV{HOME}/vcpkg/" - ) + find_program(VCPKG_EXECUTABLE vcpkg PATHS + "$ENV{VCPKG_ROOT}" + "${VCPKG_ROOT}" + "$ENV{ProgramFiles}/Microsoft Visual Studio/*/*/VC/vcpkg/" + "$ENV{USERPROFILE}$ENV{HOME}/vcpkg/" + "$ENV{USERPROFILE}$ENV{HOME}/.vcpkg-clion/" + ) endif() - if (EXISTS ${VCPKG_EXECUTABLE}) - get_filename_component(dir ${VCPKG_EXECUTABLE} DIRECTORY) - set(CMAKE_TOOLCHAIN_FILE "${dir}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file") - endif () - if(EXISTS ${CMAKE_TOOLCHAIN_FILE}) - set(VCPKG_FOUND TRUE CACHE BOOL "VCPKG toolchain file found ${CMAKE_TOOLCHAIN_FILE}") - list(APPEND CMAKE_PROJECT_TOP_LEVEL_INCLUDES "${CMAKE_TOOLCHAIN_FILE}") - list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_PROJECT_TOP_LEVEL_INCLUDES) + if (EXISTS ${VCPKG_EXECUTABLE}) + get_filename_component(VCPKG_ROOT ${VCPKG_EXECUTABLE} DIRECTORY) + set(VCPKG_ROOT "${VCPKG_ROOT}" CACHE PATH "Path to vcpkg installation" FORCE) + set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file" FORCE) endif() endif() + + if(EXISTS ${CMAKE_TOOLCHAIN_FILE}) + set(VCPKG_FOUND TRUE CACHE BOOL "VCPKG toolchain file found ${CMAKE_TOOLCHAIN_FILE}" FORCE) + list(APPEND CMAKE_PROJECT_TOP_LEVEL_INCLUDES "${CMAKE_TOOLCHAIN_FILE}") + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_PROJECT_TOP_LEVEL_INCLUDES) + else() + set(VCPKG_FOUND FALSE CACHE BOOL "VCPKG not found" FORCE) + endif() endmacro() macro(fetch_vcpkg) - include(gitect) - include(FetchContent) - FetchContent_Populate( VCPKG - GIT_REPOSITORY https://github.com/microsoft/vcpkg.git - GIT_TAG 703a8113f42e794534df5dfc5cece5dabcb949d0 - SOURCE_DIR "$ENV{USERPROFILE}$ENV{HOME}/vcpkg" - ) + include(gitect) + include(FetchContent) + FetchContent_Populate( VCPKG + GIT_REPOSITORY https://github.com/microsoft/vcpkg.git + GIT_TAG 2024.08.23 + SOURCE_DIR "$ENV{USERPROFILE}$ENV{HOME}/vcpkg" + ) - # if(GIT_EXECUTABLE) - # execute_process( - # COMMAND ${GIT_EXECUTABLE} clone https://github.com/microsoft/vcpkg - # WORKING_DIRECTORY $ENV{USERPROFILE}$ENV{HOME} - # ) - # execute_process( - # COMMAND ${CMAKE_COMMAND} --build . - # WORKING_DIRECTORY ${vcpkg_SOURCE_DIR} - # ) - # endif() + if(GIT_EXECUTABLE) + set(VCPKG_ROOT "$ENV{HOME}/vcpkg" CACHE PATH "Path to vcpkg installation") + execute_process( + COMMAND ${GIT_EXECUTABLE} clone https://github.com/microsoft/vcpkg ${VCPKG_ROOT} + RESULT_VARIABLE GIT_RESULT + ) + if(NOT GIT_RESULT EQUAL 0) + message(FATAL_ERROR "Failed to clone vcpkg repository") + endif() + execute_process( + COMMAND ${CMAKE_COMMAND} -E chdir ${VCPKG_ROOT} ${VCPKG_ROOT}/bootstrap-vcpkg.sh + RESULT_VARIABLE BOOTSTRAP_RESULT + ) + if(NOT BOOTSTRAP_RESULT EQUAL 0) + message(FATAL_ERROR "Failed to bootstrap vcpkg") + endif() + set(VCPKG_EXECUTABLE "${VCPKG_ROOT}/vcpkg" CACHE FILEPATH "Path to vcpkg executable" FORCE) + set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file" FORCE) + set(VCPKG_FOUND TRUE CACHE BOOL "VCPKG found" FORCE) + endif() endmacro() if(NOT VCPKG_FOUND) - find_vcpkg() + find_vcpkg() endif() option(OPENMIND_USE_VCPKG "Use vcpkg" ${VCPKG_FOUND}) if(OPENMIND_USE_VCPKG) - if(NOT ${VCPKG_FOUND}) - find_vcpkg() - endif() - if(NOT ${VCPKG_FOUND}) - fetch_vcpkg() - find_vcpkg() - endif() - if(NOT ${VCPKG_FOUND}) - message(FATAL_ERROR "VCPKG is required but not found") - endif() - if(VCPKG_EXECUTABLE) - execute_process( - COMMAND ${VCPKG_EXECUTABLE} install - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - ) - endif() -endif (OPENMIND_USE_VCPKG) + if(NOT VCPKG_FOUND) + find_vcpkg() + if(NOT VCPKG_FOUND) + fetch_vcpkg() + if(NOT VCPKG_FOUND) + find_vcpkg() + endif() + endif() + endif() + if(NOT VCPKG_FOUND) + message(FATAL_ERROR "VCPKG is required but 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() diff --git a/vcpkg.json b/vcpkg.json index 9d6d05422..d2064786c 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", - "builtin-baseline": "1de2026f28ead93ff1773e6e680387643e914ea1", + "builtin-baseline": "3508985146f1b1d248c67ead13f8f54be5b4f5da", "name": "openmind", "version": "1.0.0", "description": "OpenMind",