1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
#.rst:
# FindLibDvdNav
# ----------
# Finds the dvdnav library
#
# This will define the following target:
#
# LibDvdNav::LibDvdNav - The LibDvdNav library
if(NOT TARGET LibDvdNav::LibDvdNav)
# Check for existing LibDvdRead.
# Suppress mismatch warning, see https://cmake.org/cmake/help/latest/module/FindPackageHandleStandardArgs.html
set(FPHSA_NAME_MISMATCHED 1)
find_package(LibDvdRead MODULE REQUIRED)
unset(FPHSA_NAME_MISMATCHED)
include(cmake/scripts/common/ModuleHelpers.cmake)
set(MODULE_LC libdvdnav)
if(ENABLE_INTERNAL_LIBDVD)
# We require this due to the odd nature of github URL's compared to our other tarball
# mirror system. If User sets LIBDVDNAV_URL or libdvdnav_URL, allow get_filename_component in SETUP_BUILD_VARS
if(LIBDVDNAV_URL OR ${MODULE_LC}_URL)
set(LIBDVDNAV_URL_PROVIDED TRUE)
endif()
SETUP_BUILD_VARS()
if(NOT LIBDVDNAV_URL_PROVIDED)
# override LIBDVDNAV_URL due to tar naming when retrieved from github release
set(LIBDVDNAV_URL ${LIBDVDNAV_BASE_URL}/archive/${LIBDVDNAV_VER}.tar.gz)
endif()
set(LIBDVDNAV_VERSION ${${MODULE}_VER})
set(HOST_ARCH ${ARCH})
if(CORE_SYSTEM_NAME STREQUAL android)
if(ARCH STREQUAL arm)
set(HOST_ARCH arm-linux-androideabi)
elseif(ARCH STREQUAL aarch64)
set(HOST_ARCH aarch64-linux-android)
elseif(ARCH STREQUAL i486-linux)
set(HOST_ARCH i686-linux-android)
elseif(ARCH STREQUAL x86_64)
set(HOST_ARCH x86_64-linux-android)
endif()
elseif(CORE_SYSTEM_NAME STREQUAL windowsstore)
set(LIBDVD_ADDITIONAL_ARGS "-DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}" "-DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}")
endif()
string(APPEND LIBDVDNAV_CFLAGS "-D_XBMC")
if(APPLE)
set(LIBDVDNAV_LDFLAGS "-framework CoreFoundation")
string(APPEND LIBDVDNAV_CFLAGS " -D__DARWIN__")
if(NOT CORE_SYSTEM_NAME STREQUAL darwin_embedded)
string(APPEND LIBDVDNAV_LDFLAGS " -framework IOKit")
endif()
endif()
if(CORE_SYSTEM_NAME MATCHES windows)
set(CMAKE_ARGS -DDUMMY_DEFINE=ON
${LIBDVD_ADDITIONAL_ARGS})
else()
string(APPEND LIBDVDNAV_CFLAGS " -I$<TARGET_PROPERTY:LibDvdRead::LibDvdRead,INTERFACE_INCLUDE_DIRECTORIES>")
if(TARGET LibDvdCSS::LibDvdCSS)
string(APPEND LIBDVDNAV_CFLAGS " -I$<TARGET_PROPERTY:LibDvdCSS::LibDvdCSS,INTERFACE_INCLUDE_DIRECTORIES> $<$<TARGET_EXISTS:LibDvdCSS::LibDvdCSS>:-D$<TARGET_PROPERTY:LibDvdCSS::LibDvdCSS,INTERFACE_COMPILE_DEFINITIONS>>")
endif()
find_program(AUTORECONF autoreconf REQUIRED)
if (CMAKE_HOST_SYSTEM_NAME MATCHES "(Free|Net|Open)BSD")
find_program(MAKE_EXECUTABLE gmake)
endif()
find_program(MAKE_EXECUTABLE make REQUIRED)
set(CONFIGURE_COMMAND ${AUTORECONF} -vif
COMMAND ac_cv_path_GIT= ./configure
--target=${HOST_ARCH}
--host=${HOST_ARCH}
--enable-static
--disable-shared
--with-pic
--prefix=${DEPENDS_PATH}
--libdir=${DEPENDS_PATH}/lib
"CC=${CMAKE_C_COMPILER}"
"CFLAGS=${CMAKE_C_FLAGS} ${LIBDVDNAV_CFLAGS}"
"LDFLAGS=${CMAKE_EXE_LINKER_FLAGS} ${LIBDVDNAV_LDFLAGS}"
"PKG_CONFIG_PATH=${DEPENDS_PATH}/lib/pkgconfig")
set(BUILD_COMMAND ${MAKE_EXECUTABLE})
set(INSTALL_COMMAND ${MAKE_EXECUTABLE} install)
set(BUILD_IN_SOURCE 1)
endif()
BUILD_DEP_TARGET()
if(TARGET LibDvdRead::LibDvdRead)
add_dependencies(libdvdnav LibDvdRead::LibDvdRead)
endif()
else()
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_DVDNAV dvdnav QUIET)
endif()
find_path(LIBDVDNAV_INCLUDE_DIR NAMES dvdnav.h
PATH_SUFFIXES dvdnav
PATHS ${PC_DVDNAV_INCLUDEDIR})
find_library(LIBDVDNAV_LIBRARY NAMES dvdnav libdvdnav
PATHS ${PC_DVDNAV_LIBDIR})
set(LIBDVDNAV_VERSION ${PC_DVDNAV_VERSION})
endif()
endif()
include(SelectLibraryConfigurations)
select_library_configurations(LibDvdNav)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibDvdNav
REQUIRED_VARS LIBDVDNAV_LIBRARY LIBDVDNAV_INCLUDE_DIR
VERSION_VAR LIBDVDNAV_VERSION)
if(LIBDVDNAV_FOUND)
if(NOT TARGET LibDvdNav::LibDvdNav)
add_library(LibDvdNav::LibDvdNav UNKNOWN IMPORTED)
set_target_properties(LibDvdNav::LibDvdNav PROPERTIES
IMPORTED_LOCATION "${LIBDVDNAV_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${LIBDVDNAV_INCLUDE_DIR}")
if(TARGET libdvdnav)
add_dependencies(LibDvdNav::LibDvdNav libdvdnav)
endif()
if(TARGET LibDvdRead::LibDvdRead)
add_dependencies(LibDvdNav::LibDvdNav LibDvdRead::LibDvdRead)
endif()
endif()
set_property(GLOBAL APPEND PROPERTY INTERNAL_DEPS_PROP LibDvdNav::LibDvdNav)
else()
if(LIBDVDNAV_FIND_REQUIRED)
message(FATAL_ERROR "Libdvdnav not found")
endif()
endif()
mark_as_advanced(LIBDVDNAV_INCLUDE_DIR LIBDVDNAV_LIBRARY)
|