aboutsummaryrefslogtreecommitdiff
path: root/cmake/scripts
diff options
context:
space:
mode:
authorfuzzard <fuzzard@kodi.tv>2022-05-26 18:24:21 +1000
committerfuzzard <fuzzard@kodi.tv>2022-06-02 10:06:39 +1000
commitda368b250070df86252ef284e187fd50903cf8bf (patch)
treee322c297b116a792b2a4f28c7d2ae22239474212 /cmake/scripts
parent32fdeb8e5c68376826601f22f43ac779b8a7523a (diff)
[cmake] BUILD_DEP_TARGET set BYPRODUCT for cmake based builds
Required to make ninja play nice when using ENABLE_INTERNAL_<LIB>
Diffstat (limited to 'cmake/scripts')
-rw-r--r--cmake/scripts/common/ModuleHelpers.cmake53
1 files changed, 28 insertions, 25 deletions
diff --git a/cmake/scripts/common/ModuleHelpers.cmake b/cmake/scripts/common/ModuleHelpers.cmake
index 99afc4965d..60545254bf 100644
--- a/cmake/scripts/common/ModuleHelpers.cmake
+++ b/cmake/scripts/common/ModuleHelpers.cmake
@@ -47,29 +47,6 @@ function(get_versionfile_data 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 extension back
- if(DEFINED ${UPPER_MODULE_NAME}_DEBUG_POSTFIX)
- set(_POSTFIX ${${UPPER_MODULE_NAME}_DEBUG_POSTFIX})
- else()
- set(_POSTFIX ${DEBUG_POSTFIX})
- endif()
-
- # Only add debug postfix if platform or module supply a DEBUG_POSTFIX
- if(DEFINED _POSTFIX AND NOT _POSTFIX STREQUAL "")
- string(REGEX REPLACE "\\.[^.]*$" "" ${UPPER_MODULE_NAME}_BYPRODUCT_DEBUG ${${UPPER_MODULE_NAME}_BYPRODUCT})
- if(WIN32 OR WINDOWS_STORE)
- set(${UPPER_MODULE_NAME}_BYPRODUCT_DEBUG "${${UPPER_MODULE_NAME}_BYPRODUCT_DEBUG}${_POSTFIX}.lib")
- else()
- set(${UPPER_MODULE_NAME}_BYPRODUCT_DEBUG "${${UPPER_MODULE_NAME}_BYPRODUCT_DEBUG}${_POSTFIX}.a")
- endif()
- # Set Debug library names
- set(${UPPER_MODULE_NAME}_LIBRARY_DEBUG ${DEPENDS_PATH}/lib/${${UPPER_MODULE_NAME}_BYPRODUCT_DEBUG} PARENT_SCOPE)
- endif()
- set(${UPPER_MODULE_NAME}_LIBRARY_RELEASE ${DEPENDS_PATH}/lib/${${UPPER_MODULE_NAME}_BYPRODUCT} PARENT_SCOPE)
- set(${UPPER_MODULE_NAME}_LIBRARY ${DEPENDS_PATH}/lib/${${UPPER_MODULE_NAME}_BYPRODUCT} PARENT_SCOPE)
- endif()
-
set(${UPPER_MODULE_NAME}_INCLUDE_DIR ${DEPENDS_PATH}/include PARENT_SCOPE)
set(${UPPER_MODULE_NAME}_VER ${${UPPER_MODULE_NAME}_VER} PARENT_SCOPE)
@@ -194,11 +171,37 @@ macro(BUILD_DEP_TARGET)
set(BUILD_IN_SOURCE BUILD_IN_SOURCE ${BUILD_IN_SOURCE})
endif()
+ # Set Library names.
+ if(DEFINED ${MODULE}_DEBUG_POSTFIX)
+ set(_POSTFIX ${${MODULE}_DEBUG_POSTFIX})
+ string(REGEX REPLACE "\\.[^.]*$" "" _LIBNAME ${${MODULE}_BYPRODUCT})
+ string(REGEX REPLACE "^.*\\." "" _LIBEXT ${${MODULE}_BYPRODUCT})
+ set(${MODULE}_LIBRARY_DEBUG ${DEPENDS_PATH}/lib/${_LIBNAME}${${MODULE}_DEBUG_POSTFIX}.${_LIBEXT})
+ endif()
+ # set <MODULE>_LIBRARY_RELEASE for use of select_library_configurations
+ # any modules that dont use select_library_configurations, we set <MODULE>_LIBRARY
+ # No harm in having either set for both potential paths
+ set(${MODULE}_LIBRARY_RELEASE ${DEPENDS_PATH}/lib/${${MODULE}_BYPRODUCT})
+ set(${MODULE}_LIBRARY ${${MODULE}_LIBRARY_RELEASE})
+
if(BUILD_BYPRODUCTS)
set(BUILD_BYPRODUCTS BUILD_BYPRODUCTS ${BUILD_BYPRODUCTS})
else()
- if(${MODULE}_BYPRODUCT)
- set(BUILD_BYPRODUCTS BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/${${MODULE}_BYPRODUCT})
+ # Single config generator (Unix Makefiles, Ninja)
+ if(DEFINED CMAKE_BUILD_TYPE)
+ if(NOT CMAKE_BUILD_TYPE STREQUAL "Release" AND DEFINED ${MODULE}_LIBRARY_DEBUG)
+ set(BUILD_BYPRODUCTS BUILD_BYPRODUCTS "${${MODULE}_LIBRARY_DEBUG}")
+ else()
+ set(BUILD_BYPRODUCTS BUILD_BYPRODUCTS "${${MODULE}_LIBRARY}")
+ endif()
+ else()
+ # Multi Config generator (VS, Xcode, Ninja Multi-Config)
+ # If no debug library (ie lib has no difference with naming for build type), just set <MODULE>_LIBRARY
+ if(DEFINED ${MODULE}_LIBRARY_DEBUG)
+ set(BUILD_BYPRODUCTS BUILD_BYPRODUCTS $<$<CONFIG:Debug,RelWithDebInfo>:${MODULE}_LIBRARY_DEBUG>$<$<CONFIG:Release>:${MODULE}_LIBRARY_RELEASE>)
+ else()
+ set(BUILD_BYPRODUCTS BUILD_BYPRODUCTS ${MODULE}_LIBRARY)
+ endif()
endif()
endif()