aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorfuzzard <fuzzard@kodi.tv>2022-03-23 18:40:26 +1000
committerfuzzard <fuzzard@kodi.tv>2022-05-25 19:26:03 +1000
commita00836e5feb4848d852484d79161317f0b3247b2 (patch)
treeb146b83007120467dc05d5e32c1eee8854d58702 /cmake
parent5f2a5e33e79116ea9a95bca346281fdbdccabf63 (diff)
[cmake] ENABLE_INTERNAL_TAGLIB to build taglib internally
Diffstat (limited to 'cmake')
-rw-r--r--cmake/modules/FindTagLib.cmake55
-rw-r--r--cmake/scripts/common/ModuleHelpers.cmake9
-rw-r--r--cmake/scripts/freebsd/ArchSetup.cmake9
-rw-r--r--cmake/scripts/linux/ArchSetup.cmake9
4 files changed, 68 insertions, 14 deletions
diff --git a/cmake/modules/FindTagLib.cmake b/cmake/modules/FindTagLib.cmake
index ac7b7ec807..9ee5e92a3d 100644
--- a/cmake/modules/FindTagLib.cmake
+++ b/cmake/modules/FindTagLib.cmake
@@ -13,17 +13,54 @@
#
# TagLib::TagLib - The TagLib library
-if(PKG_CONFIG_FOUND)
- pkg_check_modules(PC_TAGLIB taglib>=1.9.0 QUIET)
-endif()
+if(ENABLE_INTERNAL_TAGLIB)
+ include(cmake/scripts/common/ModuleHelpers.cmake)
+
+ set(MODULE_LC taglib)
+
+ # Debug postfix only used for windows
+ if(WIN32 OR WINDOWS_STORE)
+ set(TAGLIB_DEBUG_POSTFIX "d")
+ else()
+ set(TAGLIB_DEBUG_POSTFIX "")
+ endif()
+
+ SETUP_BUILD_VARS()
-find_path(TAGLIB_INCLUDE_DIR taglib/tag.h
- PATHS ${PC_TAGLIB_INCLUDEDIR})
-find_library(TAGLIB_LIBRARY_RELEASE NAMES tag
+ set(TAGLIB_VERSION ${${MODULE}_VER})
+
+ if(WIN32 OR WINDOWS_STORE)
+ # find the path to the patch executable
+ find_package(Patch MODULE REQUIRED)
+
+ set(patch ${CMAKE_SOURCE_DIR}/tools/depends/target/${MODULE_LC}/001-cmake-pdb-debug.patch)
+ PATCH_LF_CHECK(${patch})
+
+ set(PATCH_COMMAND ${PATCH_EXECUTABLE} -p1 -i ${patch})
+ endif()
+
+ set(CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF
+ -DBUILD_BINDINGS=OFF)
+
+ BUILD_DEP_TARGET()
+
+ # Add target to libkodi to build
+ set_property(GLOBAL APPEND PROPERTY INTERNAL_DEPS_PROP taglib)
+else()
+
+ if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_TAGLIB taglib>=1.9.0 QUIET)
+ endif()
+
+ find_path(TAGLIB_INCLUDE_DIR taglib/tag.h
+ PATHS ${PC_TAGLIB_INCLUDEDIR})
+ find_library(TAGLIB_LIBRARY_RELEASE NAMES tag
+ PATHS ${PC_TAGLIB_LIBDIR})
+ find_library(TAGLIB_LIBRARY_DEBUG NAMES tagd
PATHS ${PC_TAGLIB_LIBDIR})
-find_library(TAGLIB_LIBRARY_DEBUG NAMES tagd
- PATHS ${PC_TAGLIB_LIBDIR})
-set(TAGLIB_VERSION ${PC_TAGLIB_VERSION})
+ set(TAGLIB_VERSION ${PC_TAGLIB_VERSION})
+
+endif()
include(SelectLibraryConfigurations)
select_library_configurations(TAGLIB)
diff --git a/cmake/scripts/common/ModuleHelpers.cmake b/cmake/scripts/common/ModuleHelpers.cmake
index fcdf292d61..99afc4965d 100644
--- a/cmake/scripts/common/ModuleHelpers.cmake
+++ b/cmake/scripts/common/ModuleHelpers.cmake
@@ -49,25 +49,24 @@ function(get_versionfile_data module_name)
if(${UPPER_MODULE_NAME}_BYPRODUCT)
# strip the extension, if debug, add DEBUG_POSTFIX and then add the extension back
- if(${UPPER_MODULE_NAME}_DEBUG_POSTFIX)
+ 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(NOT _POSTFIX STREQUAL "")
+ 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 and Release library names
+ # Set Debug library names
set(${UPPER_MODULE_NAME}_LIBRARY_DEBUG ${DEPENDS_PATH}/lib/${${UPPER_MODULE_NAME}_BYPRODUCT_DEBUG} PARENT_SCOPE)
- set(${UPPER_MODULE_NAME}_LIBRARY_RELEASE ${DEPENDS_PATH}/lib/${${UPPER_MODULE_NAME}_BYPRODUCT} 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()
diff --git a/cmake/scripts/freebsd/ArchSetup.cmake b/cmake/scripts/freebsd/ArchSetup.cmake
index 1a8c471113..87f4f0c9cc 100644
--- a/cmake/scripts/freebsd/ArchSetup.cmake
+++ b/cmake/scripts/freebsd/ArchSetup.cmake
@@ -35,3 +35,12 @@ endif()
# Additional SYSTEM_DEFINES
list(APPEND SYSTEM_DEFINES -DHAS_POSIX_NETWORK -DHAS_FREEBSD_NETWORK)
+
+# Build internal libs
+if(NOT USE_INTERNAL_LIBS)
+ if(KODI_DEPENDSBUILD)
+ set(USE_INTERNAL_LIBS ON)
+ else()
+ set(USE_INTERNAL_LIBS OFF)
+ endif()
+endif()
diff --git a/cmake/scripts/linux/ArchSetup.cmake b/cmake/scripts/linux/ArchSetup.cmake
index b59d145fb2..35ab1402f5 100644
--- a/cmake/scripts/linux/ArchSetup.cmake
+++ b/cmake/scripts/linux/ArchSetup.cmake
@@ -190,3 +190,12 @@ if(ARCH_IS_BIGENDIAN)
else()
message(STATUS "Host architecture is little-endian")
endif()
+
+# Build internal libs
+if(NOT USE_INTERNAL_LIBS)
+ if(KODI_DEPENDSBUILD)
+ set(USE_INTERNAL_LIBS ON)
+ else()
+ set(USE_INTERNAL_LIBS OFF)
+ endif()
+endif()