File: FindLibDvdCSS.cmake

package info (click to toggle)
kodi 2%3A21.2%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 143,076 kB
  • sloc: cpp: 694,471; xml: 52,618; ansic: 38,300; python: 7,161; sh: 4,289; javascript: 2,325; makefile: 1,791; perl: 969; java: 513; cs: 390; objc: 340
file content (128 lines) | stat: -rw-r--r-- 4,463 bytes parent folder | download
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
#.rst:
# FindLibDvdCSS
# ----------
# Finds the libdvdcss library
#
# This will define the following target:
#
#   LibDvdCSS::LibDvdCSS   - The LibDvdCSS library

if(ENABLE_DVDCSS)
  include(cmake/scripts/common/ModuleHelpers.cmake)

  set(MODULE_LC libdvdcss)

  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 LIBDVDCSS_URL or libdvdcss_URL, allow get_filename_component in SETUP_BUILD_VARS
    if(LIBDVDCSS_URL OR ${MODULE_LC}_URL)
      set(LIBDVDCSS_URL_PROVIDED TRUE)
    endif()

    SETUP_BUILD_VARS()

    if(NOT LIBDVDCSS_URL_PROVIDED)
      # override LIBDVDCSS_URL_PROVIDED due to tar naming when retrieved from github release
      set(LIBDVDCSS_URL ${LIBDVDCSS_BASE_URL}/archive/${LIBDVDCSS_VER}.tar.gz)
    endif()

    set(LIBDVDCSS_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}")
      set(${MODULE}_CXX_FLAGS "/Zc:twoPhase-")
    endif()

    if(APPLE)
      set(LIBDVDCSS_FLAGS " -framework CoreFoundation")
      if(NOT CORE_SYSTEM_NAME STREQUAL darwin_embedded)
        string(APPEND LIBDVDCSS_FLAGS " -framework IOKit")
      endif()
    endif()

    if(CORE_SYSTEM_NAME MATCHES windows)
      set(CMAKE_ARGS -DDUMMY_DEFINE=ON
                     ${LIBDVD_ADDITIONAL_ARGS})
    else()
      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}
                            --disable-doc
                            --enable-static
                            --disable-shared
                            --with-pic
                            --prefix=${DEPENDS_PATH}
                            --libdir=${DEPENDS_PATH}/lib
                            "CC=${CMAKE_C_COMPILER}"
                            "CFLAGS=${CMAKE_C_FLAGS}"
                            "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS} ${LIBDVDCSS_FLAGS}")
      set(BUILD_COMMAND ${MAKE_EXECUTABLE})
      set(INSTALL_COMMAND ${MAKE_EXECUTABLE} install)
      set(BUILD_IN_SOURCE 1)
    endif()

    BUILD_DEP_TARGET()

  else()
    if(PKG_CONFIG_FOUND)
      pkg_check_modules(PC_DVDCSS libdvdcss QUIET)
    endif()

    find_path(LIBDVDCSS_INCLUDE_DIR NAMES dvdcss.h
                                    PATH_SUFFIXES dvdcss
                                    PATHS ${PC_DVDCSS_INCLUDEDIR})
    find_library(LIBDVDCSS_LIBRARY NAMES dvdcss libdvdcss
                                   PATHS ${PC_DVDCSS_LIBDIR})

    set(LIBDVDCSS_VERSION ${PC_DVDCSS_VERSION})
  endif()
endif()

include(SelectLibraryConfigurations)
select_library_configurations(LibDvdCSS)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibDvdCSS
                                  REQUIRED_VARS LIBDVDCSS_LIBRARY LIBDVDCSS_INCLUDE_DIR
                                  VERSION_VAR LIBDVDCSS_VERSION)

if(LIBDVDCSS_FOUND)
  if(NOT TARGET LibDvdCSS::LibDvdCSS)
    add_library(LibDvdCSS::LibDvdCSS UNKNOWN IMPORTED)

    set_target_properties(LibDvdCSS::LibDvdCSS PROPERTIES
                                               IMPORTED_LOCATION "${LIBDVDCSS_LIBRARY}"
                                               INTERFACE_COMPILE_DEFINITIONS "HAVE_DVDCSS_DVDCSS_H"
                                               INTERFACE_INCLUDE_DIRECTORIES "${LIBDVDCSS_INCLUDE_DIR}")

    if(TARGET libdvdcss)
      add_dependencies(LibDvdCSS::LibDvdCSS libdvdcss)
    endif()
  endif()

else()
  if(LIBDVDCSS_FIND_REQUIRED)
    message(FATAL_ERROR "Libdvdcss not found. Possibly remove ENABLE_DVDCSS.")
  endif()
endif()

mark_as_advanced(LIBDVDCSS_INCLUDE_DIR LIBDVDCSS_LIBRARY)