try building bcrypt from its own CMake

This commit is contained in:
jadebenn 2024-11-24 14:07:39 -08:00
parent b16785441e
commit fd300027a8
2 changed files with 33 additions and 15 deletions

View File

@ -119,6 +119,13 @@ FetchContent_Declare(
SOURCE_DIR ${DLU_THIRDPARTY_SOURCE_DIR}/backtrace SOURCE_DIR ${DLU_THIRDPARTY_SOURCE_DIR}/backtrace
GIT_REPOSITORY https://github.com/ianlancetaylor/libbacktrace.git GIT_REPOSITORY https://github.com/ianlancetaylor/libbacktrace.git
) )
FetchContent_Declare(
bcrypt
SYSTEM
SOURCE_DIR ${DLU_THIRDPARTY_SOURCE_DIR}/libbcrypt
GIT_REPOSITORY https://github.com/trusch/libbcrypt.git
GIT_TAG d6523c370de6e724ce4ec703e2449b5b028ea3b1
)
FetchContent_Declare( FetchContent_Declare(
magic_enum magic_enum
SYSTEM SYSTEM

View File

@ -2,29 +2,40 @@
add_subdirectory(recastnavigation) add_subdirectory(recastnavigation)
# Source Code for libbcrypt. Uses a file glob instead to get around Windows build issues. # Source Code for libbcrypt. Uses a file glob instead to get around Windows build issues.
file( # file(
GLOB SOURCES_LIBBCRYPT # GLOB SOURCES_LIBBCRYPT
LIST_DIRECTORIES false # LIST_DIRECTORIES false
RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" # RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}"
${CMAKE_CURRENT_SOURCE_DIR}/libbcrypt/src/*.c # ${CMAKE_CURRENT_SOURCE_DIR}/libbcrypt/src/*.c
) # )
add_library(bcrypt ${SOURCES_LIBBCRYPT}) # add_library(bcrypt ${SOURCES_LIBBCRYPT})
FetchContent_MakeAvailable(bcrypt)
# Fix BCrypt header includes
get_target_property(BCRYPT_INCLUDES bcrypt INCLUDE_DIRECTORIES)
message(STATUS "BYCRPT_INCLUDES = ${BCRYPT_INCLUDES}")
target_include_directories(bcrypt INTERFACE ${BCRYPT_INCLUDES})
cmake_print_properties(TARGETS bcrypt PROPERTIES
PUBLIC_HEADER
INCLUDE_DIRECTORIES
INTERFACE_INCLUDE_DIRECTORIES)
# Because we are not using the libbcrypt CMakeLists.txt, we need to include these headers for the library to use. # Because we are not using the libbcrypt CMakeLists.txt, we need to include these headers for the library to use.
# fortunately they are only needed for building the libbcrypt directory and nothing else, so these are marked private. # fortunately they are only needed for building the libbcrypt directory and nothing else, so these are marked private.
if(NOT WIN32) # if(NOT WIN32)
target_include_directories(bcrypt PRIVATE "libbcrypt/include/bcrypt") # target_include_directories(bcrypt PRIVATE "libbcrypt/include/bcrypt")
endif() # endif()
# Need to define this on Clang and GNU for 'strdup' support # Need to define this on Clang and GNU for 'strdup' support
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU") # if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
target_compile_definitions(bcrypt PRIVATE "_POSIX_C_SOURCE=200809L") # target_compile_definitions(bcrypt PRIVATE "_POSIX_C_SOURCE=200809L")
endif() # endif()
target_include_directories(bcrypt INTERFACE "libbcrypt/include") # target_include_directories(bcrypt INTERFACE "libbcrypt/include")
target_include_directories(bcrypt PRIVATE "libbcrypt/src") # target_include_directories(bcrypt PRIVATE "libbcrypt/src")
# Source code for sqlite # Source code for sqlite
add_subdirectory(SQLite) add_subdirectory(SQLite)