Merge pull request #23092 from webosbrew/feature/webOS
[xbmc.git] / cmake / modules / FindLibDvdRead.cmake
blobeeca81c238ce4d7204860f122aaa51d3cbdfb7eb
1 #.rst:
2 # FindLibDvdRead
3 # ----------
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)
18   if(ENABLE_DVDCSS)
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)
24   endif()
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)
33     if(${MODULE_LC}_URL)
34       set(LIBDVDREAD_URL ${${MODULE_LC}_URL})
35     endif()
36     set(LIBDVDREAD_URL_PROVIDED TRUE)
37   endif()
39   SETUP_BUILD_VARS()
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)
44   endif()
46   set(LIBDVDREAD_VERSION ${${MODULE}_VER})
48   set(HOST_ARCH ${ARCH})
49   if(CORE_SYSTEM_NAME STREQUAL android)
50     if(ARCH STREQUAL arm)
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)
58     endif()
59   elseif(CORE_SYSTEM_NAME STREQUAL windowsstore)
60     set(LIBDVD_ADDITIONAL_ARGS "-DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}" "-DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}")
61   endif()
63   string(APPEND LIBDVDREAD_CFLAGS "-D_XBMC")
65   if(APPLE)
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")
70     endif()
71   endif()
73   if(CORE_SYSTEM_NAME MATCHES windows)
74     set(CMAKE_ARGS -DDUMMY_DEFINE=ON
75                    ${LIBDVD_ADDITIONAL_ARGS})
76   else()
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")
81     endif()
83     find_program(AUTORECONF autoreconf REQUIRED)
84     if (CMAKE_HOST_SYSTEM_NAME MATCHES "(Free|Net|Open)BSD")
85       find_program(MAKE_EXECUTABLE gmake)
86     endif()
87     find_program(MAKE_EXECUTABLE make REQUIRED)
89     set(CONFIGURE_COMMAND ${AUTORECONF} -vif
90                   COMMAND ac_cv_path_GIT= ./configure
91                           --target=${HOST_ARCH}
92                           --host=${HOST_ARCH}
93                           --enable-static
94                           --disable-shared
95                           --with-pic
96                           --prefix=${DEPENDS_PATH}
97                           --libdir=${DEPENDS_PATH}/lib
98                           ${with-css}
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)
107   endif()
109   BUILD_DEP_TARGET()
111   if(TARGET LibDvdCSS::LibDvdCSS)
112     add_dependencies(libdvdread LibDvdCSS::LibDvdCSS)
113   endif()
114 endif()
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)
124 if(LIBDVDREAD_FOUND)
125   set(LIBDVDREAD_INCLUDE_DIRS ${LIBDVDREAD_INCLUDE_DIR})
126   set(LIBDVDREAD_LIBRARIES ${LIBDVDREAD_LIBRARY})
127   set(LIBDVDREAD_DEFINITIONS -D_XBMC)
129   if(APPLE)
130     string(APPEND LIBDVDREAD_DEFINITIONS " -D__DARWIN__")
131   endif()
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)
143     endif()
144     if(TARGET LibDvdCSS::LibDvdCSS)
145       add_dependencies(LibDvdRead::LibDvdRead LibDvdCSS::LibDvdCSS)
146       set_target_properties(LibDvdRead::LibDvdRead PROPERTIES
147                                                    INTERFACE_LINK_LIBRARIES "-ldvdcss")
148     endif()
149   endif()
151 else()
152   if(LIBDVDREAD_FIND_REQUIRED)
153     message(FATAL_ERROR "Libdvdread not found")
154   endif()
155 endif()
157 mark_as_advanced(LIBDVDREAD_INCLUDE_DIR LIBDVDREAD_LIBRARY)