summaryrefslogtreecommitdiffstats
path: root/project/cmake/modules/FindLibDvd.cmake
blob: f2817738eeca1df66383a20ed8bbf0a311b46612 (plain)
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
set(dvdlibs libdvdread libdvdnav)
if(ENABLE_DVDCSS)
  list(APPEND dvdlibs libdvdcss)
endif()

if(NOT WIN32)
  foreach(dvdlib ${dvdlibs})
    file(GLOB VERSION_FILE ${CORE_SOURCE_DIR}/tools/depends/target/${dvdlib}/DVD*-VERSION)
    file(STRINGS ${VERSION_FILE} VER)
    string(REGEX MATCH "VERSION=[^ ]*$.*" ${dvdlib}_VER "${VER}")
    list(GET ${dvdlib}_VER 0 ${dvdlib}_VER)
    string(SUBSTRING "${${dvdlib}_VER}" 8 -1 ${dvdlib}_VER)
    string(REGEX MATCH "BASE_URL=([^ ]*)" ${dvdlib}_BASE_URL "${VER}")
    list(GET ${dvdlib}_BASE_URL 0 ${dvdlib}_BASE_URL)
    string(SUBSTRING "${${dvdlib}_BASE_URL}" 9 -1 ${dvdlib}_BASE_URL)
  endforeach()

  set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include")
  if(CMAKE_CROSSCOMPILING)
    set(EXTRA_FLAGS "CC=${CMAKE_C_COMPILER}")
  endif()

  if(APPLE)
      set(CMAKE_LD_FLAGS "-framework IOKit -framework CoreFoundation")
  endif()

  if(ENABLE_DVDCSS)
    ExternalProject_ADD(dvdcss URL ${libdvdcss_BASE_URL}/archive/${libdvdcss_VER}.tar.gz
                               PREFIX ${CORE_BUILD_DIR}/libdvd
                               UPDATE_COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
                               CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
                                          --target=${ARCH}
                                          --host=${ARCH}
                                          --disable-doc
                                          --enable-static
                                          --disable-shared
                                          --with-pic
                                          --prefix=<INSTALL_DIR>
                                          "${EXTRA_FLAGS}"
                                          "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
                                          "LDFLAGS=${CMAKE_LD_FLAGS}")

    core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdcss.a
                      system/players/VideoPlayer/libdvdcss dvdcss)
  endif()

  set(DVDREAD_CFLAGS "-D_XBMC")
  if(ENABLE_DVDCSS)
    set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -DHAVE_DVDCSS_DVDCSS_H -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include")
  endif(ENABLE_DVDCSS)

  ExternalProject_ADD(dvdread URL ${libdvdread_BASE_URL}/archive/${libdvdread_VER}.tar.gz
                              PREFIX ${CORE_BUILD_DIR}/libdvd
                              UPDATE_COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
                              CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
                                        --target=${ARCH}
                                        --host=${ARCH}
                                        --enable-static
                                        --disable-shared
                                        --with-pic
                                        --prefix=<INSTALL_DIR>
                                        "${EXTRA_FLAGS}"
                                        "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
                                        "LDFLAGS=${CMAKE_LD_FLAGS}")
  if(ENABLE_DVDCSS)
    add_dependencies(dvdread dvdcss)
  endif()

  core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.a
                    system/players/VideoPlayer/libdvdread dvdread)

  if(ENABLE_DVDCSS)
    set(DVDNAV_LIBS -ldvdcss)
  endif(ENABLE_DVDCSS)

  ExternalProject_ADD(dvdnav URL ${libdvdnav_BASE_URL}/archive/${libdvdnav_VER}.tar.gz
                             PREFIX ${CORE_BUILD_DIR}/libdvd
                             UPDATE_COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
                             CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
                                        --target=${ARCH}
                                        --host=${ARCH}
                                        --enable-static
                                        --disable-shared
                                        --with-pic
                                        --prefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd
                                        "${EXTRA_FLAGS}"
                                        "LDFLAGS=${CMAKE_LD_FLAGS} -L${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib"
                                        "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
                                        "DVDREAD_CFLAGS=${DVDREAD_CFLAGS}"
                                        "DVDREAD_LIBS=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.la"
                                        "LIBS=${DVDNAV_LIBS}")
  add_dependencies(dvdnav dvdread)
  core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdnav.a
                    system/players/VideoPlayer/libdvdnav dvdnav)

  set(LIBDVD_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include)
  set(LIBDVD_LIBRARIES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdnav.a
                       ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.a)
  if(ENABLE_DVDCSS)
     list(APPEND LIBDVD_LIBRARIES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdcss.a)
  endif()
  set(LIBDVD_LIBRARIES ${LIBDVD_LIBRARIES} CACHE STRING "libdvd libraries" FORCE)
  set(LIBDVD_FOUND 1 CACHE BOOL "libdvd found" FORCE)
else()
  # Dynamically loaded on Windows
  find_path(LIBDVD_INCLUDE_DIR dvdcss/dvdcss.h PATHS ${CORE_SOURCE_DIR}/lib/libdvd/include)

  include(FindPackageHandleStandardArgs)
  find_package_handle_standard_args(LIBDVD REQUIRED_VARS LIBDVD_INCLUDE_DIR)

  if(LIBDVD_FOUND)
    set(LIBDVD_INCLUDE_DIRS ${LIBDVD_INCLUDE_DIR})
  endif()

  mark_as_advanced(LIBDVD_INCLUDE_DIR)
endif()