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_ASS "Enable internal libass?")
|
||||||
dependent_option(ENABLE_INTERNAL_CEC "Enable internal libcec?")
|
dependent_option(ENABLE_INTERNAL_CEC "Enable internal libcec?")
|
||||||
dependent_option(ENABLE_INTERNAL_CURL "Enable internal libcurl?")
|
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_EXIV2 "Enable internal exiv2?")
|
||||||
dependent_option(ENABLE_INTERNAL_FLATBUFFERS "Enable internal flatbuffers?")
|
dependent_option(ENABLE_INTERNAL_FLATBUFFERS "Enable internal flatbuffers?")
|
||||||
dependent_option(ENABLE_INTERNAL_FMT "Enable internal fmt?")
|
dependent_option(ENABLE_INTERNAL_FMT "Enable internal fmt?")
|
||||||
|
|
@ -143,9 +144,6 @@ endif()
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
option(FFMPEG_PATH "Path to external ffmpeg?" "")
|
option(FFMPEG_PATH "Path to external ffmpeg?" "")
|
||||||
option(ENABLE_INTERNAL_FSTRCMP "Enable internal fstrcmp?" OFF)
|
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)
|
option(ENABLE_INTERNAL_GTEST "Enable internal gtest?" OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,85 @@
|
||||||
# LIBRARY::Dav1d - The dav1d library
|
# LIBRARY::Dav1d - The dav1d library
|
||||||
|
|
||||||
if(NOT TARGET LIBRARY::${CMAKE_FIND_PACKAGE_NAME})
|
if(NOT TARGET LIBRARY::${CMAKE_FIND_PACKAGE_NAME})
|
||||||
|
|
||||||
include(cmake/scripts/common/ModuleHelpers.cmake)
|
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)
|
set(${CMAKE_FIND_PACKAGE_NAME}_MODULE_LC dav1d)
|
||||||
|
|
||||||
SETUP_BUILD_VARS()
|
SETUP_BUILD_VARS()
|
||||||
|
|
@ -18,38 +95,34 @@ if(NOT TARGET LIBRARY::${CMAKE_FIND_PACKAGE_NAME})
|
||||||
|
|
||||||
SEARCH_EXISTING_PACKAGES()
|
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}\"\)")
|
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)
|
cmake_language(EVAL CODE "
|
||||||
find_program(MESON_EXECUTABLE meson REQUIRED)
|
buildmacro${CMAKE_FIND_PACKAGE_NAME}()
|
||||||
|
")
|
||||||
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()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME}_FOUND)
|
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})
|
# cmake target and not building internal
|
||||||
add_library(LIBRARY::${CMAKE_FIND_PACKAGE_NAME} ALIAS PkgConfig::${${CMAKE_FIND_PACKAGE_NAME}_SEARCH_NAME})
|
if(TARGET dav1d::dav1d AND NOT TARGET ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_BUILD_NAME})
|
||||||
elseif(TARGET dav1d::dav1d)
|
|
||||||
add_library(LIBRARY::${CMAKE_FIND_PACKAGE_NAME} ALIAS dav1d::dav1d)
|
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()
|
else()
|
||||||
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_TYPE LIBRARY)
|
set(${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_TYPE LIBRARY)
|
||||||
|
|
||||||
SETUP_BUILD_TARGET()
|
SETUP_BUILD_TARGET()
|
||||||
|
|
||||||
add_dependencies(LIBRARY::${CMAKE_FIND_PACKAGE_NAME} ${${${CMAKE_FIND_PACKAGE_NAME}_MODULE}_BUILD_NAME})
|
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()
|
endif()
|
||||||
|
|
||||||
|
ADD_MULTICONFIG_BUILDMACRO()
|
||||||
endif()
|
endif()
|
||||||
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
|
ARCHIVE=$(LIBNAME)-$(VERSION).tar.bz2
|
||||||
SHA512=43319d75c173003337bb3e0b4ffe1b0b544bfe882dd51097d7634168ee94c0d316a1c04e4f101057ff4629117dde8f22362df1a49d6a058ba510c3e648a437a3
|
SHA512=43319d75c173003337bb3e0b4ffe1b0b544bfe882dd51097d7634168ee94c0d316a1c04e4f101057ff4629117dde8f22362df1a49d6a058ba510c3e648a437a3
|
||||||
BYPRODUCT=libdav1d.a
|
BYPRODUCT=libdav1d.a
|
||||||
|
BYPRODUCT_WIN=libdav1d.lib
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
-include ../../Makefile.include
|
-include ../../Makefile.include
|
||||||
include DAV1D-VERSION
|
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)
|
ifeq ($(CROSS_COMPILING), yes)
|
||||||
DEPS += ../../Makefile.include
|
DEPS += ../../Makefile.include
|
||||||
|
|
@ -64,6 +65,7 @@ $(PLATFORM): $(DEPS) | $(TARBALLS_LOCATION)/$(ARCHIVE).$(HASH_TYPE)
|
||||||
rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
|
rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
|
||||||
cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
|
cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
|
||||||
cd $(PLATFORM); rm -rf build; mkdir -p build
|
cd $(PLATFORM); rm -rf build; mkdir -p build
|
||||||
|
cd $(PLATFORM); patch -p1 -i ../01-win-sharedname.patch
|
||||||
cd $(PLATFORM); $(CONFIGURE) . build
|
cd $(PLATFORM); $(CONFIGURE) . build
|
||||||
|
|
||||||
$(LIBDYLIB): $(PLATFORM)
|
$(LIBDYLIB): $(PLATFORM)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue