mirror of https://github.com/xbmc/xbmc
[cmake] FindDav1d use new default structure for building/searching packages
This commit is contained in:
parent
12c372da21
commit
67efed9f3f
|
|
@ -116,6 +116,7 @@ option(ENABLE_INTERNAL_FFMPEG "Enable internal ffmpeg?" OFF)
|
|||
dependent_option(ENABLE_INTERNAL_ASS "Enable internal libass?")
|
||||
dependent_option(ENABLE_INTERNAL_CEC "Enable internal libcec?")
|
||||
dependent_option(ENABLE_INTERNAL_CURL "Enable internal libcurl?")
|
||||
dependent_option(ENABLE_INTERNAL_DAV1D "Enable internal dav1d?")
|
||||
dependent_option(ENABLE_INTERNAL_EXIV2 "Enable internal exiv2?")
|
||||
dependent_option(ENABLE_INTERNAL_FLATBUFFERS "Enable internal flatbuffers?")
|
||||
dependent_option(ENABLE_INTERNAL_FMT "Enable internal fmt?")
|
||||
|
|
@ -143,9 +144,6 @@ endif()
|
|||
if(UNIX)
|
||||
option(FFMPEG_PATH "Path to external ffmpeg?" "")
|
||||
option(ENABLE_INTERNAL_FSTRCMP "Enable internal fstrcmp?" OFF)
|
||||
if(ENABLE_INTERNAL_FFMPEG)
|
||||
option(ENABLE_INTERNAL_DAV1D "Enable internal dav1d?" OFF)
|
||||
endif()
|
||||
option(ENABLE_INTERNAL_GTEST "Enable internal gtest?" OFF)
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -8,8 +8,85 @@
|
|||
# LIBRARY::Dav1d - The dav1d library
|
||||
|
||||
if(NOT TARGET LIBRARY::${CMAKE_FIND_PACKAGE_NAME})
|
||||
|
||||
include(cmake/scripts/common/ModuleHelpers.cmake)
|
||||
|
||||
macro(buildmacroDav1d)
|
||||
|
||||
set(enable_asm false)
|
||||
|
||||
if(CPU STREQUAL "x86_64" OR CPU MATCHES "i.86")
|
||||
find_package(NASM)
|
||||
if(NASM_EXECUTABLE)
|
||||
set(enable_asm true)
|
||||
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}_BINARIES "nasm" "NASM_EXECUTABLE")
|
||||
endif()
|
||||
elseif(SDK_TARGET_ARCH STREQUAL "x86" OR SDK_TARGET_ARCH MATCHES "x64")
|
||||
# Windows processor checks
|
||||
find_package(NASM)
|
||||
if(NASM_EXECUTABLE)
|
||||
set(enable_asm true)
|
||||
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}_BINARIES "nasm" "NASM_EXECUTABLE")
|
||||
endif()
|
||||
else()
|
||||
find_package(GASPP)
|
||||
if(TARGET GASPP::GASPP)
|
||||
set(enable_asm true)
|
||||
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}_BINARIES "gas-preprocessor.pl" "GASPP_PL")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(Meson REQUIRED)
|
||||
find_package(Ninja REQUIRED)
|
||||
|
||||
if(WIN32 OR WINDOWS_STORE)
|
||||
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_libType shared)
|
||||
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_SHARED_LIB 1)
|
||||
|
||||
set(patches "${CORE_SOURCE_DIR}/tools/depends/target/${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}/01-win-sharedname.patch")
|
||||
generate_patchcommand("${patches}")
|
||||
unset(patches)
|
||||
|
||||
if(WINDOWS_STORE)
|
||||
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_EXE_LINKER_FLAGS "/APPCONTAINER windowsapp.lib")
|
||||
endif()
|
||||
|
||||
create_module_dev_env()
|
||||
else()
|
||||
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_libType static)
|
||||
endif()
|
||||
|
||||
# generate meson cross file for build target
|
||||
generate_mesoncrossfile()
|
||||
|
||||
if(EXISTS ${DEPENDS_PATH}/share/${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}-cross-file.meson)
|
||||
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}_CROSS_FILE --cross-file=${DEPENDS_PATH}/share/${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}-cross-file.meson)
|
||||
elseif(EXISTS ${DEPENDS_PATH}/share/cross-file.meson)
|
||||
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}_CROSS_FILE --cross-file=${DEPENDS_PATH}/share/cross-file.meson)
|
||||
endif()
|
||||
|
||||
set(CONFIGURE_COMMAND ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_dev_env}
|
||||
${CMAKE_COMMAND} -E env --modify NINJA=set:${NINJA_EXECUTABLE}
|
||||
${MESON_EXECUTABLE} setup ./build
|
||||
--buildtype=release
|
||||
--default-library=${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_libType}
|
||||
--prefix=${DEPENDS_PATH}
|
||||
--libdir=lib
|
||||
-Denable_asm=${enable_asm}
|
||||
-Denable_tools=false
|
||||
-Denable_examples=false
|
||||
-Denable_tests=false
|
||||
${${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}_CROSS_FILE})
|
||||
|
||||
set(BUILD_COMMAND ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_dev_env}
|
||||
${NINJA_EXECUTABLE} -C ./build)
|
||||
set(INSTALL_COMMAND ${NINJA_EXECUTABLE} -C ./build install)
|
||||
set(BUILD_IN_SOURCE 1)
|
||||
|
||||
BUILD_DEP_TARGET()
|
||||
|
||||
endmacro()
|
||||
|
||||
set(${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC dav1d)
|
||||
|
||||
SETUP_BUILD_VARS()
|
||||
|
|
@ -18,38 +95,34 @@ if(NOT TARGET LIBRARY::${CMAKE_FIND_PACKAGE_NAME})
|
|||
|
||||
SEARCH_EXISTING_PACKAGES()
|
||||
|
||||
if((ENABLE_INTERNAL_DAV1D AND ENABLE_INTERNAL_FFMPEG) AND NOT (WIN32 OR WINDOWS_STORE))
|
||||
if((${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME}_VERSION VERSION_LESS ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_VER} AND ENABLE_INTERNAL_DAV1D) OR
|
||||
((CORE_SYSTEM_NAME STREQUAL linux OR CORE_SYSTEM_NAME STREQUAL freebsd) AND ENABLE_INTERNAL_DAV1D))
|
||||
message(STATUS "Building ${${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC}: \(version \"${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_VER}\"\)")
|
||||
set(DAV1D_VERSION ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_VER})
|
||||
|
||||
find_program(NINJA_EXECUTABLE ninja REQUIRED)
|
||||
find_program(MESON_EXECUTABLE meson REQUIRED)
|
||||
|
||||
set(CONFIGURE_COMMAND ${MESON_EXECUTABLE}
|
||||
--buildtype=release
|
||||
--default-library=static
|
||||
--prefix=${DEPENDS_PATH}
|
||||
--libdir=lib
|
||||
-Denable_asm=true
|
||||
-Denable_tools=false
|
||||
-Denable_examples=false
|
||||
-Denable_tests=false
|
||||
../${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_BUILD_NAME})
|
||||
set(BUILD_COMMAND ${NINJA_EXECUTABLE})
|
||||
set(INSTALL_COMMAND ${NINJA_EXECUTABLE} install)
|
||||
|
||||
BUILD_DEP_TARGET()
|
||||
cmake_language(EVAL CODE "
|
||||
buildmacro${CMAKE_FIND_PACKAGE_NAME}()
|
||||
")
|
||||
endif()
|
||||
|
||||
if(${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME}_FOUND)
|
||||
if(TARGET PkgConfig::${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME} AND NOT TARGET ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_BUILD_NAME})
|
||||
add_library(LIBRARY::${CMAKE_FIND_PACKAGE_NAME} ALIAS PkgConfig::${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME})
|
||||
elseif(TARGET dav1d::dav1d)
|
||||
# cmake target and not building internal
|
||||
if(TARGET dav1d::dav1d AND NOT TARGET ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_BUILD_NAME})
|
||||
add_library(LIBRARY::${CMAKE_FIND_PACKAGE_NAME} ALIAS dav1d::dav1d)
|
||||
elseif(TARGET PkgConfig::${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME} AND NOT TARGET ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_BUILD_NAME})
|
||||
add_library(LIBRARY::${CMAKE_FIND_PACKAGE_NAME} ALIAS PkgConfig::${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME})
|
||||
else()
|
||||
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_TYPE LIBRARY)
|
||||
|
||||
SETUP_BUILD_TARGET()
|
||||
|
||||
add_dependencies(LIBRARY::${CMAKE_FIND_PACKAGE_NAME} ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_BUILD_NAME})
|
||||
|
||||
# We are building as a requirement, so set LIB_BUILD property to allow calling
|
||||
# modules to know we will be building, and they will want to rebuild as well.
|
||||
# Property must be set on actual TARGET and not the ALIAS
|
||||
set_target_properties(LIBRARY::${CMAKE_FIND_PACKAGE_NAME} PROPERTIES LIB_BUILD ON)
|
||||
endif()
|
||||
|
||||
ADD_MULTICONFIG_BUILDMACRO()
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -390,6 +390,7 @@
|
||||
version : dav1d_soname_version,
|
||||
soversion : dav1d_soversion,
|
||||
install : true,
|
||||
+ name_prefix : 'lib',
|
||||
)
|
||||
|
||||
dav1d_dep = declare_dependency(link_with: libdav1d,
|
||||
|
|
@ -3,3 +3,4 @@ VERSION=1.5.1
|
|||
ARCHIVE=$(LIBNAME)-$(VERSION).tar.bz2
|
||||
SHA512=43319d75c173003337bb3e0b4ffe1b0b544bfe882dd51097d7634168ee94c0d316a1c04e4f101057ff4629117dde8f22362df1a49d6a058ba510c3e648a437a3
|
||||
BYPRODUCT=libdav1d.a
|
||||
BYPRODUCT_WIN=libdav1d.lib
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
-include ../../Makefile.include
|
||||
include DAV1D-VERSION
|
||||
DEPS = Makefile DAV1D-VERSION ../../download-files.include
|
||||
DEPS = Makefile DAV1D-VERSION ../../download-files.include \
|
||||
01-win-sharedname.patch
|
||||
|
||||
ifeq ($(CROSS_COMPILING), yes)
|
||||
DEPS += ../../Makefile.include
|
||||
|
|
@ -64,6 +65,7 @@ $(PLATFORM): $(DEPS) | $(TARBALLS_LOCATION)/$(ARCHIVE).$(HASH_TYPE)
|
|||
rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
|
||||
cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
|
||||
cd $(PLATFORM); rm -rf build; mkdir -p build
|
||||
cd $(PLATFORM); patch -p1 -i ../01-win-sharedname.patch
|
||||
cd $(PLATFORM); $(CONFIGURE) . build
|
||||
|
||||
$(LIBDYLIB): $(PLATFORM)
|
||||
|
|
|
|||
Loading…
Reference in New Issue