diff options
author | fuzzard <fuzzard@kodi.tv> | 2022-05-26 18:24:21 +1000 |
---|---|---|
committer | fuzzard <fuzzard@kodi.tv> | 2022-06-02 10:06:39 +1000 |
commit | da368b250070df86252ef284e187fd50903cf8bf (patch) | |
tree | e322c297b116a792b2a4f28c7d2ae22239474212 /cmake/scripts | |
parent | 32fdeb8e5c68376826601f22f43ac779b8a7523a (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.cmake | 53 |
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() |