Merge pull request #25883 from CrystalP/fix-slowscan
[xbmc.git] / cmake / modules / FindLibDvdCSS.cmake
blobdeed2de5ac3767628d04468c861a25becd6b9fa9
1 #.rst:
2 # FindLibDvdCSS
3 # ----------
4 # Finds the libdvdcss library
6 # This will define the following target:
8 #   LibDvdCSS::LibDvdCSS   - The LibDvdCSS library
10 if(NOT TARGET LibDvdCSS::LibDvdCSS)
11   include(cmake/scripts/common/ModuleHelpers.cmake)
13   set(MODULE_LC libdvdcss)
15   # We require this due to the odd nature of github URL's compared to our other tarball
16   # mirror system. If User sets LIBDVDCSS_URL or libdvdcss_URL, allow get_filename_component in SETUP_BUILD_VARS
17   if(LIBDVDCSS_URL OR ${MODULE_LC}_URL)
18     if(${MODULE_LC}_URL)
19       set(LIBDVDCSS_URL ${${MODULE_LC}_URL})
20     endif()
21     set(LIBDVDCSS_URL_PROVIDED TRUE)
22   endif()
24   SETUP_BUILD_VARS()
26   if(NOT LIBDVDCSS_URL_PROVIDED)
27     # override LIBDVDCSS_URL_PROVIDED due to tar naming when retrieved from github release
28     set(LIBDVDCSS_URL ${LIBDVDCSS_BASE_URL}/archive/${LIBDVDCSS_VER}.tar.gz)
29   endif()
31   set(LIBDVDCSS_VERSION ${${MODULE}_VER})
33   set(HOST_ARCH ${ARCH})
34   if(CORE_SYSTEM_NAME STREQUAL android)
35     if(ARCH STREQUAL arm)
36       set(HOST_ARCH arm-linux-androideabi)
37     elseif(ARCH STREQUAL i486-linux)
38       set(HOST_ARCH i686-linux-android)
39     elseif()
40       set(HOST_ARCH ${ARCH}-linux-android)
41     endif()
42   elseif(CORE_SYSTEM_NAME STREQUAL windowsstore)
43     set(LIBDVD_ADDITIONAL_ARGS "-DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}" "-DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}")
44     set(${MODULE}_CXX_FLAGS "/Zc:twoPhase-")
45   endif()
47   if(APPLE)
48     set(LIBDVDCSS_FLAGS " -framework CoreFoundation")
49     if(NOT CORE_SYSTEM_NAME STREQUAL darwin_embedded)
50       string(APPEND LIBDVDCSS_FLAGS " -framework IOKit")
51     endif()
52   endif()
54   if(CORE_SYSTEM_NAME MATCHES windows)
55     set(CMAKE_ARGS -DDUMMY_DEFINE=ON
56                    ${LIBDVD_ADDITIONAL_ARGS})
57   else()
58     find_program(AUTORECONF autoreconf REQUIRED)
59     if (CMAKE_HOST_SYSTEM_NAME MATCHES "(Free|Net|Open)BSD")
60       find_program(MAKE_EXECUTABLE gmake)
61     endif()
62     find_program(MAKE_EXECUTABLE make REQUIRED)
64     set(CONFIGURE_COMMAND ${AUTORECONF} -vif
65                   COMMAND ac_cv_path_GIT= ./configure
66                           --target=${HOST_ARCH}
67                           --host=${HOST_ARCH}
68                           --disable-doc
69                           --enable-static
70                           --disable-shared
71                           --with-pic
72                           --prefix=${DEPENDS_PATH}
73                           --libdir=${DEPENDS_PATH}/lib
74                           "CC=${CMAKE_C_COMPILER}"
75                           "CFLAGS=${CMAKE_C_FLAGS}"
76                           "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS} ${LIBDVDCSS_FLAGS}")
77     set(BUILD_COMMAND ${MAKE_EXECUTABLE})
78     set(INSTALL_COMMAND ${MAKE_EXECUTABLE} install)
79     set(BUILD_IN_SOURCE 1)
80   endif()
82   BUILD_DEP_TARGET()
84   include(FindPackageHandleStandardArgs)
85   find_package_handle_standard_args(LibDvdCSS
86                                     REQUIRED_VARS LIBDVDCSS_LIBRARY LIBDVDCSS_INCLUDE_DIR
87                                     VERSION_VAR LIBDVDCSS_VERSION)
89   if(LibDvdCSS_FOUND)
90     add_library(LibDvdCSS::LibDvdCSS STATIC IMPORTED)
91     set_target_properties(LibDvdCSS::LibDvdCSS PROPERTIES
92                                                IMPORTED_LOCATION "${LIBDVDCSS_LIBRARY}"
93                                                INTERFACE_COMPILE_DEFINITIONS "HAVE_DVDCSS_DVDCSS_H"
94                                                INTERFACE_INCLUDE_DIRECTORIES "${LIBDVDCSS_INCLUDE_DIR}")
95     add_dependencies(LibDvdCSS::LibDvdCSS libdvdcss)
96   else()
97     if(LibDvdCSS_FIND_REQUIRED)
98       message(FATAL_ERROR "Libdvdcss not found. Possibly remove ENABLE_DVDCSS.")
99     endif()
100   endif()
101 endif()