summaryrefslogtreecommitdiffstats
path: root/project/cmake/modules/FindLibDvd.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'project/cmake/modules/FindLibDvd.cmake')
-rw-r--r--project/cmake/modules/FindLibDvd.cmake291
1 files changed, 197 insertions, 94 deletions
diff --git a/project/cmake/modules/FindLibDvd.cmake b/project/cmake/modules/FindLibDvd.cmake
index f281773..fa644d6 100644
--- a/project/cmake/modules/FindLibDvd.cmake
+++ b/project/cmake/modules/FindLibDvd.cmake
@@ -1,106 +1,206 @@
1set(dvdlibs libdvdread libdvdnav)
2if(ENABLE_DVDCSS)
3 list(APPEND dvdlibs libdvdcss)
4endif()
5
6if(NOT WIN32) 1if(NOT WIN32)
7 foreach(dvdlib ${dvdlibs})
8 file(GLOB VERSION_FILE ${CORE_SOURCE_DIR}/tools/depends/target/${dvdlib}/DVD*-VERSION)
9 file(STRINGS ${VERSION_FILE} VER)
10 string(REGEX MATCH "VERSION=[^ ]*$.*" ${dvdlib}_VER "${VER}")
11 list(GET ${dvdlib}_VER 0 ${dvdlib}_VER)
12 string(SUBSTRING "${${dvdlib}_VER}" 8 -1 ${dvdlib}_VER)
13 string(REGEX MATCH "BASE_URL=([^ ]*)" ${dvdlib}_BASE_URL "${VER}")
14 list(GET ${dvdlib}_BASE_URL 0 ${dvdlib}_BASE_URL)
15 string(SUBSTRING "${${dvdlib}_BASE_URL}" 9 -1 ${dvdlib}_BASE_URL)
16 endforeach()
17
18 set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include")
19 if(CMAKE_CROSSCOMPILING) 2 if(CMAKE_CROSSCOMPILING)
20 set(EXTRA_FLAGS "CC=${CMAKE_C_COMPILER}") 3 set(_dvdlibs dvdread dvdnav)
21 endif() 4 set(_handlevars LIBDVD_INCLUDE_DIRS DVDREAD_LIBRARY DVDNAV_LIBRARY)
5 if(ENABLE_DVDCSS)
6 list(APPEND _dvdlibs libdvdcss)
7 list(APPEND _handlevars DVDCSS_LIBRARY)
8 endif()
9
10 if(PKG_CONFIG_FOUND)
11 pkg_check_modules(PC_DVD ${_dvdlibs} QUIET)
12 endif()
13
14 find_path(LIBDVD_INCLUDE_DIRS dvdnav/dvdnav.h PATHS ${PC_DVD_INCLUDE_DIRS})
15 find_library(DVDREAD_LIBRARY NAMES dvdread libdvdread PATHS ${PC_DVD_dvdread_LIBDIR})
16 find_library(DVDNAV_LIBRARY NAMES dvdnav libdvdnav PATHS ${PC_DVD_dvdnav_LIBDIR})
17 if(ENABLE_DVDCSS)
18 find_library(DVDCSS_LIBRARY NAMES dvdcss libdvdcss PATHS ${PC_DVD_libdvdcss_LIBDIR})
19 endif()
20
21 include(FindPackageHandleStandardArgs)
22 find_package_handle_standard_args(LIBDVD REQUIRED_VARS ${_handlevars})
23 if(LIBDVD_FOUND)
24 add_library(dvdnav UNKNOWN IMPORTED)
25 set_target_properties(dvdnav PROPERTIES
26 FOLDER "External Projects"
27 IMPORTED_LOCATION "${DVDNAV_LIBRARY}")
28
29 add_library(dvdread UNKNOWN IMPORTED)
30 set_target_properties(dvdread PROPERTIES
31 FOLDER "External Projects"
32 IMPORTED_LOCATION "${DVDREAD_LIBRARY}")
33 add_library(dvdcss UNKNOWN IMPORTED)
34 set_target_properties(dvdcss PROPERTIES
35 FOLDER "External Projects"
36 IMPORTED_LOCATION "${DVDCSS_LIBRARY}")
22 37
23 if(APPLE) 38 set(_linklibs ${DVDREAD_LIBRARY})
39 if(ENABLE_DVDCSS)
40 list(APPEND _linklibs ${DVDCSS_LIBRARY})
41 endif()
42 core_link_library(${DVDNAV_LIBRARY} system/players/VideoPlayer/libdvdnav dvdnav archives "${_linklibs}")
43 set(LIBDVD_LIBRARIES ${DVDNAV_LIBRARY})
44 mark_as_advanced(LIBDVD_INCLUDE_DIRS LIBDVD_LIBRARIES)
45 endif()
46 else()
47 set(dvdlibs libdvdread libdvdnav)
48 if(ENABLE_DVDCSS)
49 list(APPEND dvdlibs libdvdcss)
50 endif()
51 foreach(dvdlib ${dvdlibs})
52 file(GLOB VERSION_FILE ${CORE_SOURCE_DIR}/tools/depends/target/${dvdlib}/DVD*-VERSION)
53 file(STRINGS ${VERSION_FILE} VER)
54 string(REGEX MATCH "VERSION=[^ ]*$.*" ${dvdlib}_VER "${VER}")
55 list(GET ${dvdlib}_VER 0 ${dvdlib}_VER)
56 string(SUBSTRING "${${dvdlib}_VER}" 8 -1 ${dvdlib}_VER)
57 string(REGEX MATCH "BASE_URL=([^ ]*)" ${dvdlib}_BASE_URL "${VER}")
58 list(GET ${dvdlib}_BASE_URL 0 ${dvdlib}_BASE_URL)
59 string(SUBSTRING "${${dvdlib}_BASE_URL}" 9 -1 ${dvdlib}_BASE_URL)
60 string(TOUPPER ${dvdlib} DVDLIB)
61
62 # allow user to override the download URL with a local tarball
63 # needed for offline build envs
64 # allow upper and lowercase var name
65 if(${dvdlib}_URL)
66 set(${DVDLIB}_URL ${${dvdlib}_URL})
67 endif()
68 if(${DVDLIB}_URL)
69 get_filename_component(${DVDLIB}_URL "${${DVDLIB}_URL}" ABSOLUTE)
70 else()
71 set(${DVDLIB}_URL ${${dvdlib}_BASE_URL}/archive/${${dvdlib}_VER}.tar.gz)
72 endif()
73 if(VERBOSE)
74 message(STATUS "${DVDLIB}_URL: ${${DVDLIB}_URL}")
75 endif()
76 endforeach()
77
78 set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include")
79 if(CMAKE_CROSSCOMPILING)
80 set(EXTRA_FLAGS "CC=${CMAKE_C_COMPILER}")
81 endif()
82
83 if(APPLE)
24 set(CMAKE_LD_FLAGS "-framework IOKit -framework CoreFoundation") 84 set(CMAKE_LD_FLAGS "-framework IOKit -framework CoreFoundation")
25 endif() 85 endif()
86
87 set(HOST_ARCH ${ARCH})
88 if(CORE_SYSTEM_NAME STREQUAL android)
89 if(ARCH STREQUAL arm)
90 set(HOST_ARCH arm-linux-androideabi)
91 elseif(ARCH STREQUAL aarch64)
92 set(HOST_ARCH aarch64-linux-android)
93 elseif(ARCH STREQUAL i486-linux)
94 set(HOST_ARCH i686-linux-android)
95 endif()
96 endif()
26 97
27 if(ENABLE_DVDCSS) 98 if(ENABLE_DVDCSS)
28 ExternalProject_ADD(dvdcss URL ${libdvdcss_BASE_URL}/archive/${libdvdcss_VER}.tar.gz 99 set(DVDCSS_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdcss.a)
100 ExternalProject_Add(dvdcss URL ${LIBDVDCSS_URL}
101 DOWNLOAD_NAME libdvdcss-${libdvdcss_VER}.tar.gz
102 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
103 PREFIX ${CORE_BUILD_DIR}/libdvd
104 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
105 --target=${HOST_ARCH}
106 --host=${HOST_ARCH}
107 --disable-doc
108 --enable-static
109 --disable-shared
110 --with-pic
111 --prefix=<INSTALL_DIR>
112 --libdir=<INSTALL_DIR>/lib
113 "${EXTRA_FLAGS}"
114 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
115 "LDFLAGS=${CMAKE_LD_FLAGS}"
116 BUILD_BYPRODUCTS ${DVDCSS_LIBRARY})
117 ExternalProject_Add_Step(dvdcss autoreconf
118 DEPENDEES download update patch
119 DEPENDERS configure
120 COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
121 WORKING_DIRECTORY <SOURCE_DIR>)
122
123 set_target_properties(dvdcss PROPERTIES FOLDER "External Projects")
124 endif()
125
126 set(DVDREAD_CFLAGS "-D_XBMC")
127 if(ENABLE_DVDCSS)
128 set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -DHAVE_DVDCSS_DVDCSS_H -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include")
129 endif()
130
131 set(DVDREAD_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.a)
132 ExternalProject_Add(dvdread URL ${LIBDVDREAD_URL}
133 DOWNLOAD_NAME libdvdread-${libdvdread_VER}.tar.gz
134 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
135 PREFIX ${CORE_BUILD_DIR}/libdvd
136 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
137 --target=${HOST_ARCH}
138 --host=${HOST_ARCH}
139 --enable-static
140 --disable-shared
141 --with-pic
142 --prefix=<INSTALL_DIR>
143 --libdir=<INSTALL_DIR>/lib
144 "${EXTRA_FLAGS}"
145 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
146 "LDFLAGS=${CMAKE_LD_FLAGS}"
147 BUILD_BYPRODUCTS ${DVDREAD_LIBRARY})
148 ExternalProject_Add_Step(dvdread autoreconf
149 DEPENDEES download update patch
150 DEPENDERS configure
151 COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
152 WORKING_DIRECTORY <SOURCE_DIR>)
153 if(ENABLE_DVDCSS)
154 add_dependencies(dvdread dvdcss)
155 endif()
156
157 set_target_properties(dvdread PROPERTIES FOLDER "External Projects")
158
159 if(ENABLE_DVDCSS)
160 set(DVDNAV_LIBS -ldvdcss)
161 endif()
162
163 set(DVDNAV_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdnav.a)
164 ExternalProject_Add(dvdnav URL ${LIBDVDNAV_URL}
165 DOWNLOAD_NAME libdvdnav-${libdvdnav_VER}.tar.gz
166 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
29 PREFIX ${CORE_BUILD_DIR}/libdvd 167 PREFIX ${CORE_BUILD_DIR}/libdvd
30 UPDATE_COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
31 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure 168 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
32 --target=${ARCH} 169 --target=${HOST_ARCH}
33 --host=${ARCH} 170 --host=${HOST_ARCH}
34 --disable-doc 171 --enable-static
35 --enable-static 172 --disable-shared
36 --disable-shared 173 --with-pic
37 --with-pic 174 --prefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd
38 --prefix=<INSTALL_DIR> 175 --libdir=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib
39 "${EXTRA_FLAGS}" 176 "${EXTRA_FLAGS}"
40 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}" 177 "LDFLAGS=${CMAKE_LD_FLAGS} -L${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib"
41 "LDFLAGS=${CMAKE_LD_FLAGS}") 178 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
42 179 "DVDREAD_CFLAGS=${DVDREAD_CFLAGS}"
43 core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdcss.a 180 "DVDREAD_LIBS=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.la"
44 system/players/VideoPlayer/libdvdcss dvdcss) 181 "LIBS=${DVDNAV_LIBS}"
45 endif() 182 BUILD_BYPRODUCTS ${DVDNAV_LIBRARY})
183 ExternalProject_Add_Step(dvdnav autoreconf
184 DEPENDEES download update patch
185 DEPENDERS configure
186 COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
187 WORKING_DIRECTORY <SOURCE_DIR>)
188 add_dependencies(dvdnav dvdread)
189 set_target_properties(dvdnav PROPERTIES FOLDER "External Projects")
46 190
47 set(DVDREAD_CFLAGS "-D_XBMC") 191 set(_dvdlibs ${DVDREAD_LIBRARY} ${DVDCSS_LIBRARY})
48 if(ENABLE_DVDCSS) 192 # link a shared dvdnav library that includes the whole archives of dvdread and dvdcss as well
49 set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -DHAVE_DVDCSS_DVDCSS_H -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include") 193 # the quotes around _dvdlibs are on purpose, since we want to pass a list to the function that will be unpacked automatically
50 endif(ENABLE_DVDCSS) 194 core_link_library(${DVDNAV_LIBRARY} system/players/VideoPlayer/libdvdnav dvdnav archives "${_dvdlibs}")
51
52 ExternalProject_ADD(dvdread URL ${libdvdread_BASE_URL}/archive/${libdvdread_VER}.tar.gz
53 PREFIX ${CORE_BUILD_DIR}/libdvd
54 UPDATE_COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
55 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
56 --target=${ARCH}
57 --host=${ARCH}
58 --enable-static
59 --disable-shared
60 --with-pic
61 --prefix=<INSTALL_DIR>
62 "${EXTRA_FLAGS}"
63 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
64 "LDFLAGS=${CMAKE_LD_FLAGS}")
65 if(ENABLE_DVDCSS)
66 add_dependencies(dvdread dvdcss)
67 endif()
68 195
69 core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.a 196 set(LIBDVD_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include)
70 system/players/VideoPlayer/libdvdread dvdread) 197 set(LIBDVD_LIBRARIES ${DVDNAV_LIBRARY} ${DVDREAD_LIBRARY})
71 198 if(ENABLE_DVDCSS)
72 if(ENABLE_DVDCSS) 199 list(APPEND LIBDVD_LIBRARIES ${DVDCSS_LIBRARY})
73 set(DVDNAV_LIBS -ldvdcss) 200 endif()
74 endif(ENABLE_DVDCSS) 201 set(LIBDVD_LIBRARIES ${LIBDVD_LIBRARIES} CACHE STRING "libdvd libraries" FORCE)
75 202 set(LIBDVD_FOUND 1 CACHE BOOL "libdvd found" FORCE)
76 ExternalProject_ADD(dvdnav URL ${libdvdnav_BASE_URL}/archive/${libdvdnav_VER}.tar.gz 203 endif()
77 PREFIX ${CORE_BUILD_DIR}/libdvd
78 UPDATE_COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
79 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
80 --target=${ARCH}
81 --host=${ARCH}
82 --enable-static
83 --disable-shared
84 --with-pic
85 --prefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd
86 "${EXTRA_FLAGS}"
87 "LDFLAGS=${CMAKE_LD_FLAGS} -L${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib"
88 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
89 "DVDREAD_CFLAGS=${DVDREAD_CFLAGS}"
90 "DVDREAD_LIBS=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.la"
91 "LIBS=${DVDNAV_LIBS}")
92 add_dependencies(dvdnav dvdread)
93 core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdnav.a
94 system/players/VideoPlayer/libdvdnav dvdnav)
95
96 set(LIBDVD_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include)
97 set(LIBDVD_LIBRARIES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdnav.a
98 ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.a)
99 if(ENABLE_DVDCSS)
100 list(APPEND LIBDVD_LIBRARIES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdcss.a)
101 endif()
102 set(LIBDVD_LIBRARIES ${LIBDVD_LIBRARIES} CACHE STRING "libdvd libraries" FORCE)
103 set(LIBDVD_FOUND 1 CACHE BOOL "libdvd found" FORCE)
104else() 204else()
105 # Dynamically loaded on Windows 205 # Dynamically loaded on Windows
106 find_path(LIBDVD_INCLUDE_DIR dvdcss/dvdcss.h PATHS ${CORE_SOURCE_DIR}/lib/libdvd/include) 206 find_path(LIBDVD_INCLUDE_DIR dvdcss/dvdcss.h PATHS ${CORE_SOURCE_DIR}/lib/libdvd/include)
@@ -110,6 +210,9 @@ else()
110 210
111 if(LIBDVD_FOUND) 211 if(LIBDVD_FOUND)
112 set(LIBDVD_INCLUDE_DIRS ${LIBDVD_INCLUDE_DIR}) 212 set(LIBDVD_INCLUDE_DIRS ${LIBDVD_INCLUDE_DIR})
213
214 add_custom_target(dvdnav)
215 set_target_properties(dvdnav PROPERTIES FOLDER "External Projects")
113 endif() 216 endif()
114 217
115 mark_as_advanced(LIBDVD_INCLUDE_DIR) 218 mark_as_advanced(LIBDVD_INCLUDE_DIR)