File: FindLibDvdRead.cmake

package info (click to toggle)
kodi 2%3A20.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 143,820 kB
  • sloc: cpp: 664,925; xml: 68,398; ansic: 37,223; python: 6,903; sh: 4,209; javascript: 2,325; makefile: 1,754; perl: 969; java: 513; cs: 390; objc: 340
file content (166 lines) | stat: -rw-r--r-- 5,924 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#.rst:
# FindLibDvdRead
# ----------
# Finds the dvdread library
#
# This will define the following variables::
#
# LIBDVDREAD_FOUND - system has LibDvdRead
# LIBDVDREAD_INCLUDE_DIRS - the LibDvdRead include directory
# LIBDVDREAD_LIBRARIES - the LibDvdRead libraries
#
# and the following imported targets::
#
#   LibDvdRead::LibDvdRead   - The LibDvdRead library

if(NOT TARGET LibDvdRead::LibDvdRead)

  if(ENABLE_DVDCSS)
    # Check for existing LIBDVDCSS.
    # Suppress mismatch warning, see https://cmake.org/cmake/help/latest/module/FindPackageHandleStandardArgs.html
    set(FPHSA_NAME_MISMATCHED 1)
    find_package(LibDvdCSS MODULE REQUIRED)
    unset(FPHSA_NAME_MISMATCHED)
  endif()

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

  set(MODULE_LC libdvdread)

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

    SETUP_BUILD_VARS()

    if(NOT LIBDVDREAD_URL_PROVIDED)
      # override LIBDVDREAD_URL due to tar naming when retrieved from github release
      set(LIBDVDREAD_URL ${LIBDVDREAD_BASE_URL}/archive/${LIBDVDREAD_VER}.tar.gz)
    endif()

    set(LIBDVDREAD_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}")
    endif()

    string(APPEND LIBDVDREAD_CFLAGS "-D_XBMC")

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

    if(CORE_SYSTEM_NAME MATCHES windows)
      set(CMAKE_ARGS -DDUMMY_DEFINE=ON
                     ${LIBDVD_ADDITIONAL_ARGS})
    else()

      if(TARGET LibDvdCSS::LibDvdCSS)
        string(APPEND LIBDVDREAD_CFLAGS " -I$<TARGET_PROPERTY:LibDvdCSS::LibDvdCSS,INTERFACE_INCLUDE_DIRECTORIES> $<TARGET_PROPERTY:LibDvdCSS::LibDvdCSS,INTERFACE_COMPILE_DEFINITIONS>")
        string(APPEND with-css "--with-libdvdcss")
      endif()

      find_program(AUTORECONF autoreconf REQUIRED)
      find_program(MAKE_EXECUTABLE make REQUIRED)

      set(CONFIGURE_COMMAND ${AUTORECONF} -vif
                    COMMAND ac_cv_path_GIT= ./configure
                            --target=${HOST_ARCH}
                            --host=${HOST_ARCH}
                            --enable-static
                            --disable-shared
                            --with-pic
                            --prefix=${DEPENDS_PATH}
                            --libdir=${DEPENDS_PATH}/lib
                            ${with-css}
                            "CC=${CMAKE_C_COMPILER}"
                            "CFLAGS=${CMAKE_C_FLAGS} ${LIBDVDREAD_CFLAGS}"
                            "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS} ${LIBDVDREAD_LDFLAGS}"
                            "PKG_CONFIG_PATH=${DEPENDS_PATH}/lib/pkgconfig")

      set(BUILD_COMMAND ${MAKE_EXECUTABLE})
      set(INSTALL_COMMAND ${MAKE_EXECUTABLE} install)
      set(BUILD_IN_SOURCE 1)
    endif()

    BUILD_DEP_TARGET()

    if(TARGET LibDvdCSS::LibDvdCSS)
      add_dependencies(libdvdread LibDvdCSS::LibDvdCSS)
    endif()
  else()
    if(PKG_CONFIG_FOUND)
      pkg_check_modules(PC_DVDREAD dvdread QUIET)
    endif()

    find_path(LIBDVDREAD_INCLUDE_DIR NAMES dvd_reader.h
                                     PATH_SUFFIXES dvdread
                                     PATHS ${PC_DVDREAD_INCLUDEDIR})
    find_library(LIBDVDREAD_LIBRARY NAMES dvdread libdvdread
                                    PATHS ${PC_DVDREAD_LIBDIR})

    set(LIBDVDREAD_VERSION ${PC_DVDREAD_VERSION})
  endif()
endif()

include(SelectLibraryConfigurations)
select_library_configurations(LibDvdRead)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibDvdRead
                                  REQUIRED_VARS LIBDVDREAD_LIBRARY LIBDVDREAD_INCLUDE_DIR
                                  VERSION_VAR LIBDVDREAD_VERSION)

if(LIBDVDREAD_FOUND)
  set(LIBDVDREAD_INCLUDE_DIRS ${LIBDVDREAD_INCLUDE_DIR})
  set(LIBDVDREAD_LIBRARIES ${LIBDVDREAD_LIBRARY})
  set(LIBDVDREAD_DEFINITIONS -D_XBMC)

  if(APPLE)
    string(APPEND LIBDVDREAD_DEFINITIONS " -D__DARWIN__")
  endif()

  if(NOT TARGET LibDvdRead::LibDvdRead)
    add_library(LibDvdRead::LibDvdRead UNKNOWN IMPORTED)

    set_target_properties(LibDvdRead::LibDvdRead PROPERTIES
                                                 IMPORTED_LOCATION "${LIBDVDREAD_LIBRARY}"
                                                 INTERFACE_COMPILE_DEFINITIONS "${LIBDVDREAD_DEFINITIONS}"
                                                 INTERFACE_INCLUDE_DIRECTORIES "${LIBDVDREAD_INCLUDE_DIR}")

    if(TARGET libdvdread)
      add_dependencies(LibDvdRead::LibDvdRead libdvdread)
    endif()
    if(TARGET LibDvdCSS::LibDvdCSS)
      add_dependencies(LibDvdRead::LibDvdRead LibDvdCSS::LibDvdCSS)
      set_target_properties(LibDvdRead::LibDvdRead PROPERTIES
                                                   INTERFACE_LINK_LIBRARIES "-ldvdcss")
    endif()
  endif()

else()
  if(LIBDVDREAD_FIND_REQUIRED)
    message(FATAL_ERROR "Libdvdread not found")
  endif()
endif()

mark_as_advanced(LIBDVDREAD_INCLUDE_DIR LIBDVDREAD_LIBRARY)