aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorfuzzard <fuzzard@kodi.tv>2022-03-12 10:08:29 +1000
committerfuzzard <fuzzard@kodi.tv>2022-03-12 19:59:15 +1000
commite0cb6709900f352a5bb37352b05f7ed4d16e5be5 (patch)
tree786ce82524b1d37534801f1e0168d9a06f7e9fa4 /cmake
parent5fc1d86dcc25a58c390244a8bfc82eb42b35c5a9 (diff)
[cmake] FindSpdlog enable windows ENABLE_INTERNAL_SPDLOG build
Diffstat (limited to 'cmake')
-rw-r--r--cmake/modules/FindSpdlog.cmake10
-rw-r--r--cmake/scripts/common/ModuleHelpers.cmake45
-rw-r--r--cmake/scripts/windows/ArchSetup.cmake2
-rw-r--r--cmake/scripts/windowsstore/ArchSetup.cmake2
4 files changed, 57 insertions, 2 deletions
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\"")