4 # Finds the dvdnav library
6 # This will define the following target:
8 # LibDvdNav::LibDvdNav - The LibDvdNav library
10 if(NOT TARGET LibDvdNav::LibDvdNav)
12 find_package(LibDvdRead MODULE REQUIRED)
14 include(cmake/scripts/common/ModuleHelpers.cmake)
16 set(MODULE_LC libdvdnav)
18 # We require this due to the odd nature of github URL's compared to our other tarball
19 # mirror system. If User sets LIBDVDNAV_URL or libdvdnav_URL, allow get_filename_component in SETUP_BUILD_VARS
20 if(LIBDVDNAV_URL OR ${MODULE_LC}_URL)
22 set(LIBDVDNAV_URL ${${MODULE_LC}_URL})
24 set(LIBDVDNAV_URL_PROVIDED TRUE)
29 if(NOT LIBDVDNAV_URL_PROVIDED)
30 # override LIBDVDNAV_URL due to tar naming when retrieved from github release
31 set(LIBDVDNAV_URL ${LIBDVDNAV_BASE_URL}/archive/${LIBDVDNAV_VER}.tar.gz)
34 set(LIBDVDNAV_VERSION ${${MODULE}_VER})
36 set(HOST_ARCH ${ARCH})
37 if(CORE_SYSTEM_NAME STREQUAL android)
39 set(HOST_ARCH arm-linux-androideabi)
40 elseif(ARCH STREQUAL i486-linux)
41 set(HOST_ARCH i686-linux-android)
43 set(HOST_ARCH ${ARCH}-linux-android)
45 elseif(CORE_SYSTEM_NAME STREQUAL windowsstore)
46 set(LIBDVD_ADDITIONAL_ARGS "-DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}" "-DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}")
49 string(APPEND LIBDVDNAV_CFLAGS "-D_XBMC")
52 set(LIBDVDNAV_LDFLAGS "-framework CoreFoundation")
53 string(APPEND LIBDVDNAV_CFLAGS " -D__DARWIN__")
54 if(NOT CORE_SYSTEM_NAME STREQUAL darwin_embedded)
55 string(APPEND LIBDVDNAV_LDFLAGS " -framework IOKit")
59 if(CORE_SYSTEM_NAME MATCHES windows)
60 set(CMAKE_ARGS -DDUMMY_DEFINE=ON
61 ${LIBDVD_ADDITIONAL_ARGS})
64 # INTERFACE_INCLUDE_DIRECTORIES may have multiple paths. We need to separate these
65 # individually to then set the -I argument correctly with each path
66 get_target_property(_interface_include_dirs LibDvdRead::LibDvdRead INTERFACE_INCLUDE_DIRECTORIES)
67 foreach(_interface_include_dir ${_interface_include_dirs})
68 string(APPEND LIBDVDNAV_CFLAGS " -I${_interface_include_dir}")
71 if(TARGET LibDvdCSS::LibDvdCSS)
72 string(APPEND LIBDVDNAV_CFLAGS " -I$<TARGET_PROPERTY:LibDvdCSS::LibDvdCSS,INTERFACE_INCLUDE_DIRECTORIES> $<$<TARGET_EXISTS:LibDvdCSS::LibDvdCSS>:-D$<TARGET_PROPERTY:LibDvdCSS::LibDvdCSS,INTERFACE_COMPILE_DEFINITIONS>>")
75 find_program(AUTORECONF autoreconf REQUIRED)
76 if (CMAKE_HOST_SYSTEM_NAME MATCHES "(Free|Net|Open)BSD")
77 find_program(MAKE_EXECUTABLE gmake)
79 find_program(MAKE_EXECUTABLE make REQUIRED)
81 set(CONFIGURE_COMMAND ${AUTORECONF} -vif
82 COMMAND ac_cv_path_GIT= ./configure
88 --prefix=${DEPENDS_PATH}
89 --libdir=${DEPENDS_PATH}/lib
90 "CC=${CMAKE_C_COMPILER}"
91 "CFLAGS=${CMAKE_C_FLAGS} ${LIBDVDNAV_CFLAGS}"
92 "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS} ${LIBDVDNAV_LDFLAGS}"
93 "PKG_CONFIG_PATH=${DEPENDS_PATH}/lib/pkgconfig")
95 set(BUILD_COMMAND ${MAKE_EXECUTABLE})
96 set(INSTALL_COMMAND ${MAKE_EXECUTABLE} install)
97 set(BUILD_IN_SOURCE 1)
102 add_dependencies(libdvdnav LibDvdRead::LibDvdRead)
104 include(FindPackageHandleStandardArgs)
105 find_package_handle_standard_args(LibDvdNav
106 REQUIRED_VARS LIBDVDNAV_LIBRARY LIBDVDNAV_INCLUDE_DIR
107 VERSION_VAR LIBDVDNAV_VERSION)
110 add_library(LibDvdNav::LibDvdNav UNKNOWN IMPORTED)
111 set_target_properties(LibDvdNav::LibDvdNav PROPERTIES
112 IMPORTED_LOCATION "${LIBDVDNAV_LIBRARY}"
113 INTERFACE_LINK_LIBRARIES LibDvdRead::LibDvdRead
114 INTERFACE_INCLUDE_DIRECTORIES "${LIBDVDNAV_INCLUDE_DIR}")
116 add_dependencies(LibDvdNav::LibDvdNav libdvdnav)
118 if(LibDvdNav_FIND_REQUIRED)
119 message(FATAL_ERROR "Libdvdnav not found")