Skip to content

Commit

Permalink
Integrate vcpkg for dependency management
Browse files Browse the repository at this point in the history
  • Loading branch information
devin-ai-integration[bot] authored and ohhmm committed Sep 21, 2024
1 parent be4e793 commit 99640a6
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 57 deletions.
22 changes: 13 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -360,8 +360,8 @@ if(TARGET boost)
endif()

set(BOOST_LINK_LIBS
Boost::chrono
Boost::filesystem
Boost::chrono
Boost::filesystem
Boost::serialization
Boost::system
)
Expand All @@ -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(FATAL_ERROR "Boost not found. Please install Boost or check your configuration.")
ENDIF()


Expand Down
118 changes: 70 additions & 48 deletions cmake/vcpkg.cmake
Original file line number Diff line number Diff line change
@@ -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 703a8113f42e794534df5dfc5cece5dabcb949d0
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()

0 comments on commit 99640a6

Please sign in to comment.