aboutsummaryrefslogtreecommitdiff
path: root/cmake/scripts/common
diff options
context:
space:
mode:
authorfuzzard <fuzzard@kodi.tv>2022-12-23 16:57:01 +1000
committerfuzzard <fuzzard@kodi.tv>2022-12-24 17:40:07 +1000
commit19e924544acb3984274e7d97600cfb5588d79197 (patch)
tree12ce2267d833ef0f1aea3a2cba944a3120a06883 /cmake/scripts/common
parent400b22491e8b5ca6d3c2aacf2c738cd70bb6586e (diff)
[cmake][win] BUILD_DEP_TARGET macro pass project compiler flags through
We dont use a toolchain for windows (unlike most other unix platforms), so manually pass project compiler flags through to externalproject_add calls for windows cmake projects
Diffstat (limited to 'cmake/scripts/common')
-rw-r--r--cmake/scripts/common/ModuleHelpers.cmake20
1 files changed, 20 insertions, 0 deletions
diff --git a/cmake/scripts/common/ModuleHelpers.cmake b/cmake/scripts/common/ModuleHelpers.cmake
index c512e9558f..97a3901e0c 100644
--- a/cmake/scripts/common/ModuleHelpers.cmake
+++ b/cmake/scripts/common/ModuleHelpers.cmake
@@ -174,6 +174,7 @@ macro(CLEAR_BUILD_VARS)
unset(INSTALL_COMMAND)
unset(BUILD_IN_SOURCE)
unset(BUILD_BYPRODUCTS)
+ unset(WIN_DISABLE_PROJECT_FLAGS)
# unset all module specific variables to insure clean state between macro calls
# potentially an issue when a native and a target of the same module exists
@@ -196,6 +197,13 @@ endmacro()
# BUILD_IN_SOURCE: ALL(optional)
# BUILD_BYPRODUCTS: ALL(optional)
#
+# Windows Specific
+# WIN_DISABLE_PROJECT_FLAGS - Set to not use core compiler flags for externalproject_add target
+# This removes CMAKE_C_FLAGS CMAKE_CXX_FLAGS CMAKE_EXE_LINKER_FLAGS
+# from the externalproject_add target. Primarily used for HOST build
+# tools that may have different arch/build requirements to the core app
+# target (eg flatc)
+#
macro(BUILD_DEP_TARGET)
include(ExternalProject)
@@ -216,6 +224,18 @@ macro(BUILD_DEP_TARGET)
-DPROJECTSOURCE=${PROJECTSOURCE}
"-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}")
+ # We dont have a toolchain for windows, so manually add all the cmake
+ # build arguments we may want
+ # We can disable adding them with WIN_DISABLE_PROJECT_FLAGS. This is potentially required
+ # for host build tools (eg flatc) that may be a different arch to the core app
+ if(WIN32 OR WINDOWS_STORE)
+ if(NOT DEFINED WIN_DISABLE_PROJECT_FLAGS)
+ list(APPEND CMAKE_ARGS "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} $<$<CONFIG:Debug>:${CMAKE_C_FLAGS_DEBUG}> $<$<CONFIG:Release>:${CMAKE_C_FLAGS_RELEASE}> ${${MODULE}_C_FLAGS}"
+ "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} $<$<CONFIG:Debug>:${CMAKE_CXX_FLAGS_DEBUG}> $<$<CONFIG:Release>:${CMAKE_CXX_FLAGS_RELEASE}> ${${MODULE}_CXX_FLAGS}"
+ "-DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS} $<$<CONFIG:Debug>:${CMAKE_EXE_LINKER_FLAGS_DEBUG}> $<$<CONFIG:Release>:${CMAKE_EXE_LINKER_FLAGS_RELEASE}> ${${MODULE}_EXE_LINKER_FLAGS}")
+ endif()
+ endif()
+
if(${MODULE}_INSTALL_PREFIX)
list(APPEND CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${${MODULE}_INSTALL_PREFIX})
else()