diff options
author | fuzzard <fuzzard@users.noreply.github.com> | 2022-03-16 19:24:00 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-16 19:24:00 +1000 |
commit | d0eeee1ce36434df7fba240a37b16782720b2f6d (patch) | |
tree | 8531153805627ddde59611d55fd423b183015049 /cmake | |
parent | c22c0c69281246f5a735bc10bf2bfdcfb1aa2faf (diff) | |
parent | a22af94995f300288826fe991619ed66f1ff4b67 (diff) |
Merge pull request #21108 from fuzzard/cmake_winspdlog
[Cmake] FindSpdlog/FMT ENABLE_INTERNAL_* for windows
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/modules/FindFmt.cmake | 11 | ||||
-rw-r--r-- | cmake/modules/FindSpdlog.cmake | 10 | ||||
-rw-r--r-- | cmake/scripts/common/ModuleHelpers.cmake | 45 | ||||
-rw-r--r-- | cmake/scripts/windows/ArchSetup.cmake | 2 | ||||
-rw-r--r-- | cmake/scripts/windowsstore/ArchSetup.cmake | 2 |
5 files changed, 68 insertions, 2 deletions
diff --git a/cmake/modules/FindFmt.cmake b/cmake/modules/FindFmt.cmake index aaf855ecbe..66c217a3ba 100644 --- a/cmake/modules/FindFmt.cmake +++ b/cmake/modules/FindFmt.cmake @@ -25,12 +25,23 @@ if(ENABLE_INTERNAL_FMT) set(FMT_VERSION ${${MODULE}_VER}) + if(WIN32 OR WINDOWS_STORE) + # find the path to the patch executable + find_program(PATCH_EXECUTABLE NAMES patch patch.exe REQUIRED) + + set(patch ${CMAKE_SOURCE_DIR}/tools/depends/target/${MODULE_LC}/001-windows-pdb-symbol-gen.patch) + PATCH_LF_CHECK(${patch}) + + set(PATCH_COMMAND ${PATCH_EXECUTABLE} -p1 -i ${patch}) + endif() + set(CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} -DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS} -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} -DCMAKE_INSTALL_LIBDIR=lib -DFMT_DOC=OFF -DFMT_TEST=OFF + -DFMT_INSTALL=ON "${EXTRA_ARGS}") BUILD_DEP_TARGET() diff --git a/cmake/modules/FindSpdlog.cmake b/cmake/modules/FindSpdlog.cmake index a78949cbdd..ee08d51d96 100644 --- a/cmake/modules/FindSpdlog.cmake +++ b/cmake/modules/FindSpdlog.cmake @@ -24,6 +24,16 @@ if(ENABLE_INTERNAL_SPDLOG) set(EXTRA_ARGS "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}") endif() + if(WIN32 OR WINDOWS_STORE) + # find the path to the patch executable + find_program(PATCH_EXECUTABLE NAMES patch patch.exe REQUIRED) + + set(patch ${CMAKE_SOURCE_DIR}/tools/depends/target/${MODULE_LC}/001-windows-pdb-symbol-gen.patch) + PATCH_LF_CHECK(${patch}) + + set(PATCH_COMMAND ${PATCH_EXECUTABLE} -p1 -i ${patch}) + endif() + set(SPDLOG_VERSION ${${MODULE}_VER}) set(CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} diff --git a/cmake/scripts/common/ModuleHelpers.cmake b/cmake/scripts/common/ModuleHelpers.cmake index 8a62f73ebd..cf819a9ad4 100644 --- a/cmake/scripts/common/ModuleHelpers.cmake +++ b/cmake/scripts/common/ModuleHelpers.cmake @@ -22,7 +22,11 @@ function(get_archive_name module_name) file(STRINGS ${${UPPER_MODULE_NAME}_FILE} ${UPPER_MODULE_NAME}_VER REGEX "^[ \t]*VERSION=") file(STRINGS ${${UPPER_MODULE_NAME}_FILE} ${UPPER_MODULE_NAME}_ARCHIVE REGEX "^[ \t]*ARCHIVE=") file(STRINGS ${${UPPER_MODULE_NAME}_FILE} ${UPPER_MODULE_NAME}_BASE_URL REGEX "^[ \t]*BASE_URL=") - file(STRINGS ${${UPPER_MODULE_NAME}_FILE} ${UPPER_MODULE_NAME}_BYPRODUCT REGEX "^[ \t]*BYPRODUCT=") + if(WIN32 OR WINDOWS_STORE) + file(STRINGS ${${UPPER_MODULE_NAME}_FILE} ${UPPER_MODULE_NAME}_BYPRODUCT REGEX "^[ \t]*BYPRODUCT_WIN=") + else() + file(STRINGS ${${UPPER_MODULE_NAME}_FILE} ${UPPER_MODULE_NAME}_BYPRODUCT REGEX "^[ \t]*BYPRODUCT=") + endif() # Tarball Hash file(STRINGS ${${UPPER_MODULE_NAME}_FILE} ${UPPER_MODULE_NAME}_HASH_SHA256 REGEX "^[ \t]*SHA256=") @@ -32,7 +36,11 @@ function(get_archive_name module_name) string(REGEX REPLACE ".*VERSION=([^ \t]*).*" "\\1" ${UPPER_MODULE_NAME}_VER "${${UPPER_MODULE_NAME}_VER}") string(REGEX REPLACE ".*ARCHIVE=([^ \t]*).*" "\\1" ${UPPER_MODULE_NAME}_ARCHIVE "${${UPPER_MODULE_NAME}_ARCHIVE}") string(REGEX REPLACE ".*BASE_URL=([^ \t]*).*" "\\1" ${UPPER_MODULE_NAME}_BASE_URL "${${UPPER_MODULE_NAME}_BASE_URL}") - string(REGEX REPLACE ".*BYPRODUCT=([^ \t]*).*" "\\1" ${UPPER_MODULE_NAME}_BYPRODUCT "${${UPPER_MODULE_NAME}_BYPRODUCT}") + if(WIN32 OR WINDOWS_STORE) + string(REGEX REPLACE ".*BYPRODUCT_WIN=([^ \t]*).*" "\\1" ${UPPER_MODULE_NAME}_BYPRODUCT "${${UPPER_MODULE_NAME}_BYPRODUCT}") + else() + string(REGEX REPLACE ".*BYPRODUCT=([^ \t]*).*" "\\1" ${UPPER_MODULE_NAME}_BYPRODUCT "${${UPPER_MODULE_NAME}_BYPRODUCT}") + endif() string(REGEX REPLACE "\\$\\(LIBNAME\\)" "${${UPPER_MODULE_NAME}_LNAME}" ${UPPER_MODULE_NAME}_ARCHIVE "${${UPPER_MODULE_NAME}_ARCHIVE}") string(REGEX REPLACE "\\$\\(VERSION\\)" "${${UPPER_MODULE_NAME}_VER}" ${UPPER_MODULE_NAME}_ARCHIVE "${${UPPER_MODULE_NAME}_ARCHIVE}") @@ -40,6 +48,14 @@ function(get_archive_name module_name) set(${UPPER_MODULE_NAME}_ARCHIVE ${${UPPER_MODULE_NAME}_ARCHIVE} PARENT_SCOPE) if(${UPPER_MODULE_NAME}_BYPRODUCT) + # strip the extension, if debug, add DEBUG_POSTFIX and then add the .lib extension back + if(WIN32 OR WINDOWS_STORE) + string(REGEX REPLACE "\\.[^.]*$" "" ${UPPER_MODULE_NAME}_BYPRODUCT ${${UPPER_MODULE_NAME}_BYPRODUCT}) + if($<CONFIG:Debug>) + set(${UPPER_MODULE_NAME}_BYPRODUCT "${${UPPER_MODULE_NAME}_BYPRODUCT}${DEBUG_POSTFIX}") + endif() + set(${UPPER_MODULE_NAME}_BYPRODUCT "${${UPPER_MODULE_NAME}_BYPRODUCT}.lib") + endif() set(${UPPER_MODULE_NAME}_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/${${UPPER_MODULE_NAME}_BYPRODUCT} PARENT_SCOPE) endif() set(${UPPER_MODULE_NAME}_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include PARENT_SCOPE) @@ -151,3 +167,28 @@ macro(BUILD_DEP_TARGET) set_target_properties(${MODULE_LC} PROPERTIES FOLDER "External Projects") endmacro() + +# Macro to test format of line endings of a patch +# Windows Specific +macro(PATCH_LF_CHECK patch) + if(WIN32 OR WINDOWS_STORE) + # On Windows "patch.exe" can only handle CR-LF line-endings. + # Our patches have LF-only line endings - except when they + # have been checked out as part of a dependency hosted on Git + # and core.autocrlf=true. + file(READ ${ARGV0} patch_content_hex HEX) + # Force handle LF-only line endings + if(NOT patch_content_hex MATCHES "0d0a") + if (NOT "--binary" IN_LIST PATCH_EXECUTABLE) + list(APPEND PATCH_EXECUTABLE --binary) + endif() + else() + if ("--binary" IN_LIST PATCH_EXECUTABLE) + list(REMOVE_ITEM PATCH_EXECUTABLE --binary) + endif() + endif() + endif() + unset(patch_content_hex) +endmacro() + + diff --git a/cmake/scripts/windows/ArchSetup.cmake b/cmake/scripts/windows/ArchSetup.cmake index dfe53bf76a..7d3feeb5b1 100644 --- a/cmake/scripts/windows/ArchSetup.cmake +++ b/cmake/scripts/windows/ArchSetup.cmake @@ -44,6 +44,8 @@ endif() # -------- Compiler options --------- +set(DEBUG_POSTFIX d CACHE STRING "Debug library postfix.") + add_options(CXX ALL_BUILDS "/wd\"4996\"") set(ARCH_DEFINES -D_WINDOWS -DTARGET_WINDOWS -DTARGET_WINDOWS_DESKTOP -D__SSE__ -D__SSE2__) set(SYSTEM_DEFINES -DWIN32_LEAN_AND_MEAN -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS diff --git a/cmake/scripts/windowsstore/ArchSetup.cmake b/cmake/scripts/windowsstore/ArchSetup.cmake index b31a30a346..2469b3b040 100644 --- a/cmake/scripts/windowsstore/ArchSetup.cmake +++ b/cmake/scripts/windowsstore/ArchSetup.cmake @@ -60,6 +60,8 @@ endif() # -------- Compiler options --------- +set(DEBUG_POSTFIX d CACHE STRING "Debug library postfix.") + add_options(CXX ALL_BUILDS "/wd\"4996\"") add_options(CXX ALL_BUILDS "/wd\"4146\"") add_options(CXX ALL_BUILDS "/wd\"4251\"") |