4 # Finds the dvdread library
6 # This will define the following variables::
8 # LIBDVDREAD_FOUND - system has LibDvdRead
9 # LIBDVDREAD_INCLUDE_DIRS - the LibDvdRead include directory
10 # LIBDVDREAD_LIBRARIES - the LibDvdRead libraries
12 # and the following imported targets::
14 # LibDvdRead::LibDvdRead - The LibDvdRead library
16 if(NOT TARGET LibDvdRead::LibDvdRead)
19 # Check for existing LIBDVDCSS.
20 # Suppress mismatch warning, see https://cmake.org/cmake/help/latest/module/FindPackageHandleStandardArgs.html
21 set(FPHSA_NAME_MISMATCHED 1)
22 find_package(LibDvdCSS MODULE REQUIRED)
23 unset(FPHSA_NAME_MISMATCHED)
26 include(cmake/scripts/common/ModuleHelpers.cmake)
28 set(MODULE_LC libdvdread)
30 # We require this due to the odd nature of github URL's compared to our other tarball
31 # mirror system. If User sets LIBDVDREAD_URL or libdvdread_URL, allow get_filename_component in SETUP_BUILD_VARS
32 if(LIBDVDREAD_URL OR ${MODULE_LC}_URL)
34 set(LIBDVDREAD_URL ${${MODULE_LC}_URL})
36 set(LIBDVDREAD_URL_PROVIDED TRUE)
41 if(NOT LIBDVDREAD_URL_PROVIDED)
42 # override LIBDVDREAD_URL due to tar naming when retrieved from github release
43 set(LIBDVDREAD_URL ${LIBDVDREAD_BASE_URL}/archive/${LIBDVDREAD_VER}.tar.gz)
46 set(LIBDVDREAD_VERSION ${${MODULE}_VER})
48 set(HOST_ARCH ${ARCH})
49 if(CORE_SYSTEM_NAME STREQUAL android)
51 set(HOST_ARCH arm-linux-androideabi)
52 elseif(ARCH STREQUAL aarch64)
53 set(HOST_ARCH aarch64-linux-android)
54 elseif(ARCH STREQUAL i486-linux)
55 set(HOST_ARCH i686-linux-android)
56 elseif(ARCH STREQUAL x86_64)
57 set(HOST_ARCH x86_64-linux-android)
59 elseif(CORE_SYSTEM_NAME STREQUAL windowsstore)
60 set(LIBDVD_ADDITIONAL_ARGS "-DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}" "-DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}")
63 string(APPEND LIBDVDREAD_CFLAGS "-D_XBMC")
66 set(LIBDVDREAD_LDFLAGS "-framework CoreFoundation")
67 string(APPEND LIBDVDREAD_CFLAGS " -D__DARWIN__")
68 if(NOT CORE_SYSTEM_NAME STREQUAL darwin_embedded)
69 string(APPEND LIBDVDREAD_LDFLAGS " -framework IOKit")
73 if(CORE_SYSTEM_NAME MATCHES windows)
74 set(CMAKE_ARGS -DDUMMY_DEFINE=ON
75 ${LIBDVD_ADDITIONAL_ARGS})
78 if(TARGET LibDvdCSS::LibDvdCSS)
79 string(APPEND LIBDVDREAD_CFLAGS " -I$<TARGET_PROPERTY:LibDvdCSS::LibDvdCSS,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:LibDvdCSS::LibDvdCSS,INTERFACE_COMPILE_DEFINITIONS>")
80 string(APPEND with-css "--with-libdvdcss")
83 find_program(AUTORECONF autoreconf REQUIRED)
84 if (CMAKE_HOST_SYSTEM_NAME MATCHES "(Free|Net|Open)BSD")
85 find_program(MAKE_EXECUTABLE gmake)
87 find_program(MAKE_EXECUTABLE make REQUIRED)
89 set(CONFIGURE_COMMAND ${AUTORECONF} -vif
90 COMMAND ac_cv_path_GIT= ./configure
96 --prefix=${DEPENDS_PATH}
97 --libdir=${DEPENDS_PATH}/lib
99 "CC=${CMAKE_C_COMPILER}"
100 "CFLAGS=${CMAKE_C_FLAGS} ${LIBDVDREAD_CFLAGS}"
101 "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS} ${LIBDVDREAD_LDFLAGS}"
102 "PKG_CONFIG_PATH=${DEPENDS_PATH}/lib/pkgconfig")
104 set(BUILD_COMMAND ${MAKE_EXECUTABLE})
105 set(INSTALL_COMMAND ${MAKE_EXECUTABLE} install)
106 set(BUILD_IN_SOURCE 1)
111 if(TARGET LibDvdCSS::LibDvdCSS)
112 add_dependencies(libdvdread LibDvdCSS::LibDvdCSS)
116 include(SelectLibraryConfigurations)
117 select_library_configurations(LibDvdRead)
119 include(FindPackageHandleStandardArgs)
120 find_package_handle_standard_args(LibDvdRead
121 REQUIRED_VARS LIBDVDREAD_LIBRARY LIBDVDREAD_INCLUDE_DIR
122 VERSION_VAR LIBDVDREAD_VERSION)
125 set(LIBDVDREAD_INCLUDE_DIRS ${LIBDVDREAD_INCLUDE_DIR})
126 set(LIBDVDREAD_LIBRARIES ${LIBDVDREAD_LIBRARY})
127 set(LIBDVDREAD_DEFINITIONS -D_XBMC)
130 string(APPEND LIBDVDREAD_DEFINITIONS " -D__DARWIN__")
133 if(NOT TARGET LibDvdRead::LibDvdRead)
134 add_library(LibDvdRead::LibDvdRead UNKNOWN IMPORTED)
136 set_target_properties(LibDvdRead::LibDvdRead PROPERTIES
137 IMPORTED_LOCATION "${LIBDVDREAD_LIBRARY}"
138 INTERFACE_COMPILE_DEFINITIONS "${LIBDVDREAD_DEFINITIONS}"
139 INTERFACE_INCLUDE_DIRECTORIES "${LIBDVDREAD_INCLUDE_DIR}")
141 if(TARGET libdvdread)
142 add_dependencies(LibDvdRead::LibDvdRead libdvdread)
144 if(TARGET LibDvdCSS::LibDvdCSS)
145 add_dependencies(LibDvdRead::LibDvdRead LibDvdCSS::LibDvdCSS)
146 set_target_properties(LibDvdRead::LibDvdRead PROPERTIES
147 INTERFACE_LINK_LIBRARIES "-ldvdcss")
152 if(LIBDVDREAD_FIND_REQUIRED)
153 message(FATAL_ERROR "Libdvdread not found")
157 mark_as_advanced(LIBDVDREAD_INCLUDE_DIR LIBDVDREAD_LIBRARY)