summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2016-12-14 02:24:46 +0100
committermanuel <manuel@mausz.at>2016-12-14 02:24:46 +0100
commita662ba767a6444b76b0394eb60380eee3e839db7 (patch)
treea13d904b75e8d899e2b11df3db5bd2a8a47b0acb
parent2818eb9609d118212211cd657134974f10428b31 (diff)
downloadkodi-pvr-build-a662ba767a6444b76b0394eb60380eee3e839db7.tar.gz
kodi-pvr-build-a662ba767a6444b76b0394eb60380eee3e839db7.tar.bz2
kodi-pvr-build-a662ba767a6444b76b0394eb60380eee3e839db7.zip
Sync with Krypton branch
-rw-r--r--project/cmake/CMakeLists.txt26
-rw-r--r--project/cmake/addons/bootstrap/repositories/binary-addons.txt2
-rw-r--r--project/cmake/addons/depends/windows/cmake/mingw/CMakeLists.txt33
-rw-r--r--project/cmake/addons/depends/windows/cmake/mingw/MinGWConfig.cmake.in3
-rw-r--r--project/cmake/addons/depends/windows/cmake/mingw/Toolchain_mingw32.cmake.in17
-rw-r--r--project/cmake/addons/depends/windows/cmake/mingw/mingw.txt1
-rw-r--r--project/cmake/addons/depends/windows/cmake/mingw/mingw32-cmd.bat.in6
-rw-r--r--project/cmake/addons/depends/windows/cmake/mingw/noinstall.txt0
-rw-r--r--project/cmake/addons/depends/windows/cmake/msys/CMakeLists.txt5
-rw-r--r--project/cmake/addons/depends/windows/cmake/msys/msys.txt1
-rw-r--r--project/cmake/addons/depends/windows/cmake/msys/noinstall.txt0
-rw-r--r--project/cmake/installdata/common/addons.txt3
-rw-r--r--project/cmake/modules/FindCpluff.cmake8
-rw-r--r--project/cmake/modules/FindCrossGUID.cmake5
-rw-r--r--project/cmake/modules/FindMir.cmake33
-rw-r--r--project/cmake/modules/FindVAAPI.cmake15
-rw-r--r--project/cmake/scripts/common/HandleDepends.cmake43
-rw-r--r--project/cmake/scripts/common/Macros.cmake9
-rw-r--r--project/cmake/scripts/common/PrepareEnv.cmake47
-rw-r--r--project/cmake/scripts/ios/ArchSetup.cmake21
-rw-r--r--project/cmake/scripts/ios/Install.cmake93
-rw-r--r--project/cmake/scripts/linux/ArchSetup.cmake4
-rw-r--r--project/cmake/scripts/linux/Install.cmake12
-rw-r--r--project/cmake/scripts/linux/PathSetup.cmake1
-rw-r--r--project/cmake/scripts/osx/Macros.cmake9
-rw-r--r--project/cmake/scripts/windows/tools/patch.cmake37
-rw-r--r--project/cmake/treedata/common/addons.txt3
-rw-r--r--project/cmake/treedata/common/cores.txt1
-rw-r--r--project/cmake/treedata/common/games.txt8
-rw-r--r--project/cmake/treedata/common/subdirs.txt5
-rw-r--r--project/cmake/treedata/optional/common/mir.txt1
-rw-r--r--version.txt8
-rw-r--r--xbmc/addons/addon-bindings.mk5
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_inputstream_types.h7
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_peripheral_types.h3
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_inputstream.h96
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h43
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h211
38 files changed, 324 insertions, 501 deletions
diff --git a/project/cmake/CMakeLists.txt b/project/cmake/CMakeLists.txt
index c70b18d..46df299 100644
--- a/project/cmake/CMakeLists.txt
+++ b/project/cmake/CMakeLists.txt
@@ -52,7 +52,6 @@ if(UNIX)
52 option(ENABLE_INTERNAL_CROSSGUID "Enable internal crossguid?" ON) 52 option(ENABLE_INTERNAL_CROSSGUID "Enable internal crossguid?" ON)
53 option(ENABLE_OPENSSL "Enable OpenSSL?" ON) 53 option(ENABLE_OPENSSL "Enable OpenSSL?" ON)
54 option(ENABLE_SDL "Enable SDL?" OFF) 54 option(ENABLE_SDL "Enable SDL?" OFF)
55 option(ENABLE_MIR "Enable MIR?" OFF)
56 if(CORE_SYSTEM_NAME STREQUAL linux OR CORE_SYSTEM_NAME STREQUAL freebsd) 55 if(CORE_SYSTEM_NAME STREQUAL linux OR CORE_SYSTEM_NAME STREQUAL freebsd)
57 option(ENABLE_X11 "Enable X11 support?" ON) 56 option(ENABLE_X11 "Enable X11 support?" ON)
58 option(ENABLE_AML "Enable AML?" OFF) 57 option(ENABLE_AML "Enable AML?" OFF)
@@ -197,24 +196,14 @@ endif()
197if(NOT WIN32) 196if(NOT WIN32)
198 core_optional_dep(OpenGl) 197 core_optional_dep(OpenGl)
199 if(OPENGL_FOUND) 198 if(OPENGL_FOUND)
200 if(ENABLE_MIR) 199 core_optional_dep(X ENABLE_X11)
201 core_require_dep(Mir ENABLE_MIR) 200 core_optional_dep(LibDRM ENABLE_X11)
202 core_optional_dep(LibDRM ENABLE_MIR) 201 core_optional_dep(XRandR ENABLE_X11)
203 else()
204 core_optional_dep(X ENABLE_X11)
205 core_optional_dep(XRandR ENABLE_X11)
206 core_optional_dep(LibDRM ENABLE_X11)
207 endif()
208 else() 202 else()
209 core_optional_dep(OpenGLES) 203 core_optional_dep(OpenGLES)
210 if(OPENGLES_FOUND) 204 if(OPENGLES_FOUND)
211 if(ENABLE_MIR) 205 core_optional_dep(X ENABLE_X11)
212 core_require_dep(Mir ENABLE_MIR) 206 core_optional_dep(LibDRM ENABLE_X11)
213 core_optional_dep(LibDRM ENABLE_MIR)
214 else()
215 core_optional_dep(X ENABLE_X11)
216 core_optional_dep(LibDRM ENABLE_X11)
217 endif()
218 endif() 207 endif()
219 endif() 208 endif()
220 if(NOT APPLE) 209 if(NOT APPLE)
@@ -347,12 +336,9 @@ unset(_MAIN_LIBRARIES)
347if(WIN32) 336if(WIN32)
348 set_target_properties(${APP_NAME_LC} PROPERTIES WIN32_EXECUTABLE ON) 337 set_target_properties(${APP_NAME_LC} PROPERTIES WIN32_EXECUTABLE ON)
349 set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT ${APP_NAME_LC}) 338 set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT ${APP_NAME_LC})
350 target_sources(${APP_NAME_LC} PRIVATE ${CORE_SOURCE_DIR}/xbmc/platform/win32/app.manifest) 339 target_sources(kodi PRIVATE ${CORE_SOURCE_DIR}/xbmc/platform/win32/app.manifest)
351elseif(CORE_SYSTEM_NAME STREQUAL android) 340elseif(CORE_SYSTEM_NAME STREQUAL android)
352 # Nothing 341 # Nothing
353elseif(CORE_SYSTEM_NAME STREQUAL ios)
354 set_target_properties(${APP_NAME_LC} PROPERTIES OUTPUT_NAME ${APP_NAME}
355 MACOSX_BUNDLE_INFO_PLIST ${CORE_SOURCE_DIR}/xbmc/platform/darwin/ios/Info.plist.in)
356else() 342else()
357 set_target_properties(${APP_NAME_LC} PROPERTIES SUFFIX ".bin") 343 set_target_properties(${APP_NAME_LC} PROPERTIES SUFFIX ".bin")
358endif() 344endif()
diff --git a/project/cmake/addons/bootstrap/repositories/binary-addons.txt b/project/cmake/addons/bootstrap/repositories/binary-addons.txt
index 8674f06..7439983 100644
--- a/project/cmake/addons/bootstrap/repositories/binary-addons.txt
+++ b/project/cmake/addons/bootstrap/repositories/binary-addons.txt
@@ -1 +1 @@
binary-addons https://github.com/xbmc/repo-binary-addons.git master \ No newline at end of file binary-addons https://github.com/xbmc/repo-binary-addons.git Krypton
diff --git a/project/cmake/addons/depends/windows/cmake/mingw/CMakeLists.txt b/project/cmake/addons/depends/windows/cmake/mingw/CMakeLists.txt
deleted file mode 100644
index 2c2c4b8..0000000
--- a/project/cmake/addons/depends/windows/cmake/mingw/CMakeLists.txt
+++ /dev/null
@@ -1,33 +0,0 @@
1cmake_minimum_required(VERSION 3.1)
2project(mingw)
3
4function(generate_mingw32_wrapper cmd)
5 set(CMD ${cmd})
6 configure_file(${PROJECT_SOURCE_DIR}/mingw32-cmd.bat.in ${MINGW_PATH}/bin/${CMD}.bat @ONLY)
7endfunction()
8
9get_filename_component(CORE_SOURCE_DIR ${PROJECT_SOURCE_DIR}/../../../../../../.. REALPATH)
10
11set(MSYS_PATH "${CORE_SOURCE_DIR}/project/BuildDependencies/msys64")
12set(MINGW_PATH "${MSYS_PATH}/mingw32")
13
14# configure the MinGW toolchain file
15configure_file(${PROJECT_SOURCE_DIR}/Toolchain_mingw32.cmake.in ${CMAKE_INSTALL_PREFIX}/Toolchain_mingw32.cmake @ONLY)
16
17# configure MinGWConfig.cmake
18configure_file(${PROJECT_SOURCE_DIR}/MinGWConfig.cmake.in ${CMAKE_INSTALL_PREFIX}/MinGWConfig.cmake)
19
20# TODO: MinGW GCC 5.3.0-1 comes without cc.exe, Remove this once package is bumped to 5.3.0-p2
21# See https://github.com/Alexpux/MINGW-packages/pull/1034
22if(NOT EXISTS ${MINGW_PATH}/bin/cc.exe)
23 execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${MINGW_PATH}/bin/gcc.exe ${MINGW_PATH}/bin/cc.exe)
24endif()
25
26# configure the MinGW wrapper batch scripts
27generate_mingw32_wrapper("make")
28generate_mingw32_wrapper("gcc")
29generate_mingw32_wrapper("cc")
30generate_mingw32_wrapper("g++")
31generate_mingw32_wrapper("ar")
32generate_mingw32_wrapper("ld")
33generate_mingw32_wrapper("windres")
diff --git a/project/cmake/addons/depends/windows/cmake/mingw/MinGWConfig.cmake.in b/project/cmake/addons/depends/windows/cmake/mingw/MinGWConfig.cmake.in
deleted file mode 100644
index 2d6baa7..0000000
--- a/project/cmake/addons/depends/windows/cmake/mingw/MinGWConfig.cmake.in
+++ /dev/null
@@ -1,3 +0,0 @@
1set(MINGW_INCLUDE_DIRS @MINGW_PATH@/include)
2set(MINGW_MAKE @MINGW_PATH@/bin/make.bat -j$ENV{NUMBER_OF_PROCESSORS})
3set(MINGW_FOUND 1)
diff --git a/project/cmake/addons/depends/windows/cmake/mingw/Toolchain_mingw32.cmake.in b/project/cmake/addons/depends/windows/cmake/mingw/Toolchain_mingw32.cmake.in
deleted file mode 100644
index 01d281d..0000000
--- a/project/cmake/addons/depends/windows/cmake/mingw/Toolchain_mingw32.cmake.in
+++ /dev/null
@@ -1,17 +0,0 @@
1set(CMAKE_SYSTEM_VERSION 1)
2set(CMAKE_SYSTEM_NAME Windows)
3
4set(CMAKE_FIND_ROOT_PATH @CMAKE_FIND_ROOT_PATH@ @CMAKE_INSTALL_PREFIX@ @MSYS_PATH@ @MINGW_PATH@)
5
6# specify the cross compiler
7set(CMAKE_C_COMPILER @MINGW_PATH@/bin/gcc.bat)
8set(CMAKE_CXX_COMPILER @MINGW_PATH@/bin/g++.bat)
9set(CMAKE_AR @MINGW_PATH@/bin/ar.bat CACHE FILEPATH "Archiver")
10set(CMAKE_LINKER @MINGW_PATH@/bin/ld.bat CACHE FILEPATH "Linker")
11SET(CMAKE_RC_COMPILER @MINGW_PATH@/bin/windres.bat)
12
13# search for programs in the build host directories
14set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
15# for libraries and headers in the target directories
16set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
17set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/project/cmake/addons/depends/windows/cmake/mingw/mingw.txt b/project/cmake/addons/depends/windows/cmake/mingw/mingw.txt
deleted file mode 100644
index 90aa6ae..0000000
--- a/project/cmake/addons/depends/windows/cmake/mingw/mingw.txt
+++ /dev/null
@@ -1 +0,0 @@
1mingw
diff --git a/project/cmake/addons/depends/windows/cmake/mingw/mingw32-cmd.bat.in b/project/cmake/addons/depends/windows/cmake/mingw/mingw32-cmd.bat.in
deleted file mode 100644
index 44a0ea2..0000000
--- a/project/cmake/addons/depends/windows/cmake/mingw/mingw32-cmd.bat.in
+++ /dev/null
@@ -1,6 +0,0 @@
1@ECHO OFF
2SETLOCAL
3
4SET PATH=@MINGW_PATH@/bin;@MSYS_PATH@/usr/bin;%PATH%
5@CMD@.exe %*
6
diff --git a/project/cmake/addons/depends/windows/cmake/mingw/noinstall.txt b/project/cmake/addons/depends/windows/cmake/mingw/noinstall.txt
deleted file mode 100644
index e69de29..0000000
--- a/project/cmake/addons/depends/windows/cmake/mingw/noinstall.txt
+++ /dev/null
diff --git a/project/cmake/addons/depends/windows/cmake/msys/CMakeLists.txt b/project/cmake/addons/depends/windows/cmake/msys/CMakeLists.txt
deleted file mode 100644
index 1c0536e..0000000
--- a/project/cmake/addons/depends/windows/cmake/msys/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1cmake_minimum_required(VERSION 3.1)
2project(msys LANGUAGES NONE)
3
4# This is an empty dummy dependency because a lot of game addons depend on it.
5# After they got fixed, this can be removed.
diff --git a/project/cmake/addons/depends/windows/cmake/msys/msys.txt b/project/cmake/addons/depends/windows/cmake/msys/msys.txt
deleted file mode 100644
index 00de9c2..0000000
--- a/project/cmake/addons/depends/windows/cmake/msys/msys.txt
+++ /dev/null
@@ -1 +0,0 @@
1msys
diff --git a/project/cmake/addons/depends/windows/cmake/msys/noinstall.txt b/project/cmake/addons/depends/windows/cmake/msys/noinstall.txt
deleted file mode 100644
index e69de29..0000000
--- a/project/cmake/addons/depends/windows/cmake/msys/noinstall.txt
+++ /dev/null
diff --git a/project/cmake/installdata/common/addons.txt b/project/cmake/installdata/common/addons.txt
index 5613ba7..1cbe4d6 100644
--- a/project/cmake/installdata/common/addons.txt
+++ b/project/cmake/installdata/common/addons.txt
@@ -20,11 +20,12 @@ addons/xbmc.python/*
20addons/xbmc.webinterface/* 20addons/xbmc.webinterface/*
21addons/library.kodi.adsp/* 21addons/library.kodi.adsp/*
22addons/library.kodi.audioengine/* 22addons/library.kodi.audioengine/*
23addons/library.kodi.game/*
24addons/library.kodi.guilib/* 23addons/library.kodi.guilib/*
24addons/library.kodi.inputstream/*
25addons/library.kodi.peripheral/* 25addons/library.kodi.peripheral/*
26addons/library.xbmc.addon/* 26addons/library.xbmc.addon/*
27addons/library.xbmc.codec/* 27addons/library.xbmc.codec/*
28addons/library.xbmc.pvr/*
28addons/repository.xbmc.org/* 29addons/repository.xbmc.org/*
29addons/webinterface.default/* 30addons/webinterface.default/*
30addons/screensaver.xbmc.builtin.dim/* 31addons/screensaver.xbmc.builtin.dim/*
diff --git a/project/cmake/modules/FindCpluff.cmake b/project/cmake/modules/FindCpluff.cmake
index ce6c127..fb2bb25 100644
--- a/project/cmake/modules/FindCpluff.cmake
+++ b/project/cmake/modules/FindCpluff.cmake
@@ -10,13 +10,6 @@ if(NOT WIN32)
10 string(REPLACE ";" " " defines "${CMAKE_C_FLAGS} ${SYSTEM_DEFINES} -I${EXPAT_INCLUDE_DIR}") 10 string(REPLACE ";" " " defines "${CMAKE_C_FLAGS} ${SYSTEM_DEFINES} -I${EXPAT_INCLUDE_DIR}")
11 get_filename_component(expat_dir ${EXPAT_LIBRARY} DIRECTORY) 11 get_filename_component(expat_dir ${EXPAT_LIBRARY} DIRECTORY)
12 set(ldflags "-L${expat_dir}") 12 set(ldflags "-L${expat_dir}")
13
14 # iOS: Without specifying -arch, configure tries to use /bin/cpp as C-preprocessor
15 # http://stackoverflow.com/questions/38836754/cant-cross-compile-c-library-for-arm-ios
16 if(CORE_SYSTEM_NAME STREQUAL ios)
17 set(cppflags "-arch ${CPU}")
18 endif()
19
20 ExternalProject_Add(libcpluff SOURCE_DIR ${CORE_SOURCE_DIR}/lib/cpluff 13 ExternalProject_Add(libcpluff SOURCE_DIR ${CORE_SOURCE_DIR}/lib/cpluff
21 BUILD_IN_SOURCE 1 14 BUILD_IN_SOURCE 1
22 PREFIX ${CORE_BUILD_DIR}/cpluff 15 PREFIX ${CORE_BUILD_DIR}/cpluff
@@ -29,7 +22,6 @@ if(NOT WIN32)
29 --libdir=<INSTALL_DIR>/lib 22 --libdir=<INSTALL_DIR>/lib
30 --host=${ARCH} 23 --host=${ARCH}
31 CFLAGS=${defines} 24 CFLAGS=${defines}
32 CPPFLAGS=${cppflags}
33 LDFLAGS=${ldflags}) 25 LDFLAGS=${ldflags})
34 ExternalProject_Add_Step(libcpluff autoreconf 26 ExternalProject_Add_Step(libcpluff autoreconf
35 DEPENDEES download update patch 27 DEPENDEES download update patch
diff --git a/project/cmake/modules/FindCrossGUID.cmake b/project/cmake/modules/FindCrossGUID.cmake
index ba2823a..bcae3d3 100644
--- a/project/cmake/modules/FindCrossGUID.cmake
+++ b/project/cmake/modules/FindCrossGUID.cmake
@@ -16,10 +16,6 @@ if(ENABLE_INTERNAL_CROSSGUID)
16 message(STATUS "CROSSGUID_URL: ${CROSSGUID_URL}") 16 message(STATUS "CROSSGUID_URL: ${CROSSGUID_URL}")
17 endif() 17 endif()
18 18
19 if(APPLE)
20 set(EXTRA_ARGS "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}")
21 endif()
22
23 set(CROSSGUID_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/libcrossguid.a) 19 set(CROSSGUID_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/libcrossguid.a)
24 set(CROSSGUID_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include) 20 set(CROSSGUID_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include)
25 externalproject_add(crossguid 21 externalproject_add(crossguid
@@ -28,7 +24,6 @@ if(ENABLE_INTERNAL_CROSSGUID)
28 PREFIX ${CORE_BUILD_DIR}/crossguid 24 PREFIX ${CORE_BUILD_DIR}/crossguid
29 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} 25 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}
30 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} 26 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
31 "${EXTRA_ARGS}"
32 PATCH_COMMAND ${CMAKE_COMMAND} -E copy 27 PATCH_COMMAND ${CMAKE_COMMAND} -E copy
33 ${CORE_SOURCE_DIR}/tools/depends/target/crossguid/CMakeLists.txt 28 ${CORE_SOURCE_DIR}/tools/depends/target/crossguid/CMakeLists.txt
34 <SOURCE_DIR> && 29 <SOURCE_DIR> &&
diff --git a/project/cmake/modules/FindMir.cmake b/project/cmake/modules/FindMir.cmake
deleted file mode 100644
index 8847a61..0000000
--- a/project/cmake/modules/FindMir.cmake
+++ /dev/null
@@ -1,33 +0,0 @@
1# FindMir
2# -------
3# Finds the Mir library
4#
5# This will will define the following variables::
6#
7# MIR_FOUND - the system has Mir
8# MIR_INCLUDE_DIRS - the Mir include directory
9# MIR_LIBRARIES - the Mir libraries
10# MIR_DEFINITIONS - the Mir definitions
11
12
13if(PKG_CONFIG_FOUND)
14 pkg_check_modules (PC_MIR mirclient QUIET)
15endif()
16
17find_path(MIR_INCLUDE_DIR NAMES mir_toolkit/mir_client_library.h
18 PATHS ${PC_MIR_INCLUDE_DIRS})
19
20find_library(MIR_LIBRARY NAMES mirclient
21 PATHS ${PC_MIR_LIBRARIES} ${PC_MIR_LIBRARY_DIRS})
22
23include (FindPackageHandleStandardArgs)
24find_package_handle_standard_args (MIR
25 REQUIRED_VARS MIR_LIBRARY MIR_INCLUDE_DIR)
26
27if (MIR_FOUND)
28 set(MIR_LIBRARIES ${MIR_LIBRARY})
29 set(MIR_INCLUDE_DIRS ${PC_MIR_INCLUDE_DIRS})
30 set(MIR_DEFINITIONS -DHAVE_MIR=1)
31endif()
32
33mark_as_advanced (MIR_LIBRARY MIR_INCLUDE_DIR)
diff --git a/project/cmake/modules/FindVAAPI.cmake b/project/cmake/modules/FindVAAPI.cmake
index ea9a3c9..ce3fe1a 100644
--- a/project/cmake/modules/FindVAAPI.cmake
+++ b/project/cmake/modules/FindVAAPI.cmake
@@ -24,8 +24,6 @@ find_library(VAAPI_libva_LIBRARY NAMES va
24 PATHS ${PC_VAAPI_libva_LIBDIR}) 24 PATHS ${PC_VAAPI_libva_LIBDIR})
25find_library(VAAPI_libva-x11_LIBRARY NAMES va-x11 25find_library(VAAPI_libva-x11_LIBRARY NAMES va-x11
26 PATHS ${PC_VAAPI_libva_LIBDIR}) 26 PATHS ${PC_VAAPI_libva_LIBDIR})
27find_library(VAAPI_libva-drm_LIBRARY NAMES va-drm
28 PATHS ${PC_VAAPI_libva_LIBDIR})
29 27
30if(PC_VAAPI_libva_VERSION) 28if(PC_VAAPI_libva_VERSION)
31 set(VAAPI_VERSION_STRING ${PC_VAAPI_libva_VERSION}) 29 set(VAAPI_VERSION_STRING ${PC_VAAPI_libva_VERSION})
@@ -41,12 +39,12 @@ endif()
41 39
42include(FindPackageHandleStandardArgs) 40include(FindPackageHandleStandardArgs)
43find_package_handle_standard_args(VAAPI 41find_package_handle_standard_args(VAAPI
44 REQUIRED_VARS VAAPI_libva_LIBRARY VAAPI_libva-x11_LIBRARY VAAPI_libva-drm_LIBRARY VAAPI_INCLUDE_DIR 42 REQUIRED_VARS VAAPI_libva_LIBRARY VAAPI_libva-x11_LIBRARY VAAPI_INCLUDE_DIR
45 VERSION_VAR VAAPI_VERSION_STRING) 43 VERSION_VAR VAAPI_VERSION_STRING)
46 44
47if(VAAPI_FOUND) 45if(VAAPI_FOUND)
48 set(VAAPI_INCLUDE_DIRS ${VAAPI_INCLUDE_DIR}) 46 set(VAAPI_INCLUDE_DIRS ${VAAPI_INCLUDE_DIR})
49 set(VAAPI_LIBRARIES ${VAAPI_libva_LIBRARY} ${VAAPI_libva-x11_LIBRARY} ${VAAPI_libva-drm_LIBRARY}) 47 set(VAAPI_LIBRARIES ${VAAPI_libva_LIBRARY} ${VAAPI_libva-x11_LIBRARY})
50 set(VAAPI_DEFINITIONS -DHAVE_LIBVA=1) 48 set(VAAPI_DEFINITIONS -DHAVE_LIBVA=1)
51 49
52 if(NOT TARGET VAAPI::VAAPI_X11) 50 if(NOT TARGET VAAPI::VAAPI_X11)
@@ -54,19 +52,14 @@ if(VAAPI_FOUND)
54 set_target_properties(VAAPI::VAAPI_X11 PROPERTIES 52 set_target_properties(VAAPI::VAAPI_X11 PROPERTIES
55 IMPORTED_LOCATION "${VAAPI_libva-x11_LIBRARY}") 53 IMPORTED_LOCATION "${VAAPI_libva-x11_LIBRARY}")
56 endif() 54 endif()
57 if (NOT TARGET VAAPI::VAAPI_DRM)
58 add_library(VAAPI::VAAPI_DRM UNKNOWN IMPORTED)
59 set_target_properties(VAAPI::VAAPI_DRM PROPERTIES
60 IMPORTED_LOCATION "${VAAPI_libva-drm_LIBRARY}")
61 endif()
62 if(NOT TARGET VAAPI::VAAPI) 55 if(NOT TARGET VAAPI::VAAPI)
63 add_library(VAAPI::VAAPI UNKNOWN IMPORTED) 56 add_library(VAAPI::VAAPI UNKNOWN IMPORTED)
64 set_target_properties(VAAPI::VAAPI PROPERTIES 57 set_target_properties(VAAPI::VAAPI PROPERTIES
65 IMPORTED_LOCATION "${VAAPI_libva_LIBRARY}" 58 IMPORTED_LOCATION "${VAAPI_libva_LIBRARY}"
66 INTERFACE_INCLUDE_DIRECTORIES "${VAAPI_INCLUDE_DIR}" 59 INTERFACE_INCLUDE_DIRECTORIES "${VAAPI_INCLUDE_DIR}"
67 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBVA=1 60 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBVA=1
68 INTERFACE_LINK_LIBRARIES "VAAPI::VAAPI_X11 VAAPI::VAAPI_DRM") 61 INTERFACE_LINK_LIBRARIES VAAPI::VAAPI_X11)
69 endif() 62 endif()
70endif() 63endif()
71 64
72mark_as_advanced(VAAPI_INCLUDE_DIR VAAPI_libva_LIBRARY VAAPI_libva-x11_LIBRARY VAAPI_libva-drm_LIBRARY) 65mark_as_advanced(VAAPI_INCLUDE_DIR VAAPI_libva_LIBRARY VAAPI_libva-x11_LIBRARY)
diff --git a/project/cmake/scripts/common/HandleDepends.cmake b/project/cmake/scripts/common/HandleDepends.cmake
index adc105b..880ccdf 100644
--- a/project/cmake/scripts/common/HandleDepends.cmake
+++ b/project/cmake/scripts/common/HandleDepends.cmake
@@ -17,7 +17,6 @@ function(add_addon_depends addon searchpath)
17 file MATCHES noinstall.txt OR 17 file MATCHES noinstall.txt OR
18 file MATCHES flags.txt OR 18 file MATCHES flags.txt OR
19 file MATCHES deps.txt OR 19 file MATCHES deps.txt OR
20 file MATCHES "[a-z]+-deps[.]txt" OR
21 file MATCHES platforms.txt)) 20 file MATCHES platforms.txt))
22 message(STATUS "Processing ${file}") 21 message(STATUS "Processing ${file}")
23 file(STRINGS ${file} def) 22 file(STRINGS ${file} def)
@@ -50,11 +49,7 @@ function(add_addon_depends addon searchpath)
50 if(EXISTS ${dir}/flags.txt) 49 if(EXISTS ${dir}/flags.txt)
51 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${dir}/flags.txt) 50 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${dir}/flags.txt)
52 file(STRINGS ${dir}/flags.txt extraflags) 51 file(STRINGS ${dir}/flags.txt extraflags)
53
54 # replace some custom placeholders
55 string(REPLACE "@MINGW_TOOLCHAIN_FILE@" "${OUTPUT_DIR}/Toolchain_mingw32.cmake" extraflags "${extraflags}")
56 string(REPLACE " " ";" extraflags ${extraflags}) 52 string(REPLACE " " ";" extraflags ${extraflags})
57
58 message(STATUS "${id} extraflags: ${extraflags}") 53 message(STATUS "${id} extraflags: ${extraflags}")
59 endif() 54 endif()
60 55
@@ -108,18 +103,11 @@ function(add_addon_depends addon searchpath)
108 endif() 103 endif()
109 endif() 104 endif()
110 105
106 # on windows "patch.exe" can only handle CR-LF line-endings so we
107 # need to force it to also handle LF-only line endings
111 set(PATCH_PROGRAM ${PATCH_EXECUTABLE}) 108 set(PATCH_PROGRAM ${PATCH_EXECUTABLE})
112
113 # On Windows "patch.exe" can only handle CR-LF line-endings.
114 # Our patches have LF-only line endings - except when they
115 # have been checked out as part of a dependency hosted on Git
116 # and core.autocrlf=true.
117 if(WIN32) 109 if(WIN32)
118 file(READ ${patch} patch_content_hex HEX) 110 set(PATCH_PROGRAM "\"${PATCH_PROGRAM}\" --binary")
119 # Force handle LF-only line endings
120 if(NOT patch_content_hex MATCHES "0d0a")
121 set(PATCH_PROGRAM "\"${PATCH_PROGRAM}\" --binary")
122 endif()
123 endif() 111 endif()
124 endif() 112 endif()
125 113
@@ -143,11 +131,8 @@ function(add_addon_depends addon searchpath)
143 set(INSTALL_COMMAND INSTALL_COMMAND "") 131 set(INSTALL_COMMAND INSTALL_COMMAND "")
144 endif() 132 endif()
145 133
146 # check if there's a platform-specific or generic deps.txt containing dependencies on other libraries 134 # check if there's a deps.txt containing dependencies on other libraries
147 if(EXISTS ${dir}/${CORE_SYSTEM_NAME}-deps.txt) 135 if(EXISTS ${dir}/deps.txt)
148 file(STRINGS ${dir}/${CORE_SYSTEM_NAME}-deps.txt deps)
149 message(STATUS "${id} depends: ${deps}")
150 elseif(EXISTS ${dir}/deps.txt)
151 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${dir}/deps.txt) 136 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${dir}/deps.txt)
152 file(STRINGS ${dir}/deps.txt deps) 137 file(STRINGS ${dir}/deps.txt deps)
153 message(STATUS "${id} depends: ${deps}") 138 message(STATUS "${id} depends: ${deps}")
@@ -176,10 +161,6 @@ function(add_addon_depends addon searchpath)
176 PATCH_COMMAND ${PATCH_COMMAND} 161 PATCH_COMMAND ${PATCH_COMMAND}
177 "${INSTALL_COMMAND}") 162 "${INSTALL_COMMAND}")
178 163
179 if(CMAKE_VERSION VERSION_GREATER 3.5.9)
180 list(APPEND EXTERNALPROJECT_SETUP GIT_SHALLOW 1)
181 endif()
182
183 # if there's an url defined we need to pass that to externalproject_add() 164 # if there's an url defined we need to pass that to externalproject_add()
184 if(DEFINED url AND NOT "${url}" STREQUAL "") 165 if(DEFINED url AND NOT "${url}" STREQUAL "")
185 # check if there's a third parameter in the file 166 # check if there's a third parameter in the file
@@ -191,20 +172,6 @@ function(add_addon_depends addon searchpath)
191 GIT_REPOSITORY ${url} 172 GIT_REPOSITORY ${url}
192 GIT_TAG ${revision} 173 GIT_TAG ${revision}
193 "${EXTERNALPROJECT_SETUP}") 174 "${EXTERNALPROJECT_SETUP}")
194
195 # For patchfiles to work, disable (users globally set) autocrlf=true
196 if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_GREATER 3.7)
197 message(AUTHOR_WARNING "Make use of GIT_CONFIG")
198 endif()
199 if(WIN32 AND patches)
200 externalproject_add_step(${id} gitconfig
201 COMMAND git config core.autocrlf false
202 COMMAND git rm -rf --cached .
203 COMMAND git reset --hard HEAD
204 COMMENT "Performing gitconfig step: Disabling autocrlf to enable patching for '${id}'"
205 DEPENDERS patch
206 WORKING_DIRECTORY <SOURCE_DIR>)
207 endif()
208 else() 175 else()
209 set(CONFIGURE_COMMAND "") 176 set(CONFIGURE_COMMAND "")
210 if(NOT WIN32) 177 if(NOT WIN32)
diff --git a/project/cmake/scripts/common/Macros.cmake b/project/cmake/scripts/common/Macros.cmake
index cce3245..71c39ef 100644
--- a/project/cmake/scripts/common/Macros.cmake
+++ b/project/cmake/scripts/common/Macros.cmake
@@ -155,12 +155,9 @@ function(core_add_shared_library name)
155 add_library(${name} SHARED ${SOURCES} ${HEADERS} ${OTHERS}) 155 add_library(${name} SHARED ${SOURCES} ${HEADERS} ${OTHERS})
156 set_target_properties(${name} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${OUTPUT_DIRECTORY} 156 set_target_properties(${name} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${OUTPUT_DIRECTORY}
157 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${OUTPUT_DIRECTORY} 157 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${OUTPUT_DIRECTORY}
158 RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/${OUTPUT_DIRECTORY}
159 RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/${OUTPUT_DIRECTORY}
158 OUTPUT_NAME ${OUTPUT_NAME} PREFIX "") 160 OUTPUT_NAME ${OUTPUT_NAME} PREFIX "")
159 foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
160 string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
161 set_target_properties(${name} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OUTPUT_DIRECTORY}
162 RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OUTPUT_DIRECTORY})
163 endforeach()
164 161
165 set(LIBRARY_FILES ${LIBRARY_FILES} ${CMAKE_BINARY_DIR}/${OUTPUT_DIRECTORY}/${OUTPUT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX} CACHE STRING "" FORCE) 162 set(LIBRARY_FILES ${LIBRARY_FILES} ${CMAKE_BINARY_DIR}/${OUTPUT_DIRECTORY}/${OUTPUT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX} CACHE STRING "" FORCE)
166 add_dependencies(${APP_NAME_LC}-libraries ${name}) 163 add_dependencies(${APP_NAME_LC}-libraries ${name})
@@ -598,9 +595,9 @@ macro(core_find_versions)
598 set(APP_VERSION ${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}) 595 set(APP_VERSION ${APP_VERSION_MAJOR}.${APP_VERSION_MINOR})
599 if(APP_VERSION_TAG) 596 if(APP_VERSION_TAG)
600 set(APP_VERSION ${APP_VERSION}-${APP_VERSION_TAG}) 597 set(APP_VERSION ${APP_VERSION}-${APP_VERSION_TAG})
601 string(TOLOWER ${APP_VERSION_TAG} APP_VERSION_TAG_LC)
602 endif() 598 endif()
603 string(REPLACE "." "," FILE_VERSION ${APP_ADDON_API}.0) 599 string(REPLACE "." "," FILE_VERSION ${APP_ADDON_API}.0)
600 string(TOLOWER ${APP_VERSION_TAG} APP_VERSION_TAG_LC)
604 file(STRINGS ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h guilib_version REGEX "^.*GUILIB_API_VERSION (.*)$") 601 file(STRINGS ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h guilib_version REGEX "^.*GUILIB_API_VERSION (.*)$")
605 string(REGEX REPLACE ".*\"(.*)\"" "\\1" guilib_version ${guilib_version}) 602 string(REGEX REPLACE ".*\"(.*)\"" "\\1" guilib_version ${guilib_version})
606 file(STRINGS ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h guilib_version_min REGEX "^.*GUILIB_MIN_API_VERSION (.*)$") 603 file(STRINGS ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h guilib_version_min REGEX "^.*GUILIB_MIN_API_VERSION (.*)$")
diff --git a/project/cmake/scripts/common/PrepareEnv.cmake b/project/cmake/scripts/common/PrepareEnv.cmake
index 51be739..8e02382 100644
--- a/project/cmake/scripts/common/PrepareEnv.cmake
+++ b/project/cmake/scripts/common/PrepareEnv.cmake
@@ -51,14 +51,43 @@ foreach(binding ${bindings})
51 configure_file(${CORE_SOURCE_DIR}/${header} ${APP_INCLUDE_DIR} COPYONLY) 51 configure_file(${CORE_SOURCE_DIR}/${header} ${APP_INCLUDE_DIR} COPYONLY)
52endforeach() 52endforeach()
53 53
54### processing additional tools required by the platform 54### on windows we need a "patch" binary to be able to patch 3rd party sources
55if(EXISTS ${CORE_SOURCE_DIR}/project/cmake/scripts/${CORE_SYSTEM_NAME}/tools/) 55if(WIN32)
56 file(GLOB platform_tools ${CORE_SOURCE_DIR}/project/cmake/scripts/${CORE_SYSTEM_NAME}/tools/*.cmake) 56 find_program(PATCH_FOUND NAMES patch patch.exe)
57 foreach(platform_tool ${platform_tools}) 57 if(PATCH_FOUND)
58 get_filename_component(platform_tool_name ${platform_tool} NAME_WE) 58 message(STATUS "patch utility found at ${PATCH_FOUND}")
59 message(STATUS "Processing ${CORE_SYSTEM_NAME} specific tool: ${platform_tool_name}") 59 else()
60 set(PATCH_ARCHIVE_NAME "patch-2.5.9-7-bin-3")
61 set(PATCH_ARCHIVE "${PATCH_ARCHIVE_NAME}.zip")
62 set(PATCH_URL "${KODI_MIRROR}/build-deps/win32/${PATCH_ARCHIVE}")
63 set(PATCH_DOWNLOAD ${BUILD_DIR}/download/${PATCH_ARCHIVE})
60 64
61 # include the file 65 # download the archive containing patch.exe
62 include(${platform_tool}) 66 message(STATUS "Downloading patch utility from ${PATCH_URL}...")
63 endforeach() 67 file(DOWNLOAD "${PATCH_URL}" "${PATCH_DOWNLOAD}" STATUS PATCH_DL_STATUS LOG PATCH_LOG SHOW_PROGRESS)
68 list(GET PATCH_DL_STATUS 0 PATCH_RETCODE)
69 if(NOT ${PATCH_RETCODE} EQUAL 0)
70 message(FATAL_ERROR "ERROR downloading ${PATCH_URL} - status: ${PATCH_DL_STATUS} log: ${PATCH_LOG}")
71 endif()
72
73 # extract the archive containing patch.exe
74 execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzvf ${PATCH_DOWNLOAD}
75 WORKING_DIRECTORY ${BUILD_DIR})
76
77 # make sure the extraction worked and that patch.exe is there
78 set(PATCH_PATH ${BUILD_DIR}/${PATCH_ARCHIVE_NAME})
79 set(PATCH_BINARY_PATH ${PATCH_PATH}/bin/patch.exe)
80 if(NOT EXISTS ${PATCH_PATH} OR NOT EXISTS ${PATCH_BINARY_PATH})
81 message(FATAL_ERROR "ERROR extracting patch utility from ${PATCH_DOWNLOAD_DIR}")
82 endif()
83
84 # copy patch.exe into the output directory
85 file(INSTALL ${PATCH_BINARY_PATH} DESTINATION ${ADDON_DEPENDS_PATH}/bin)
86
87 # make sure that cmake can find the copied patch.exe
88 find_program(PATCH_FOUND NAMES patch patch.exe)
89 if(NOT PATCH_FOUND)
90 message(FATAL_ERROR "ERROR installing patch utility from ${PATCH_BINARY_PATH} to ${ADDON_DEPENDS_PATH}/bin")
91 endif()
92 endif()
64endif() 93endif()
diff --git a/project/cmake/scripts/ios/ArchSetup.cmake b/project/cmake/scripts/ios/ArchSetup.cmake
index f3e8590..56661e2 100644
--- a/project/cmake/scripts/ios/ArchSetup.cmake
+++ b/project/cmake/scripts/ios/ArchSetup.cmake
@@ -13,7 +13,6 @@ if(WITH_ARCH)
13 set(ARCH ${WITH_ARCH}) 13 set(ARCH ${WITH_ARCH})
14else() 14else()
15 if(CPU STREQUAL armv7 OR CPU STREQUAL arm64) 15 if(CPU STREQUAL armv7 OR CPU STREQUAL arm64)
16 set(CMAKE_OSX_ARCHITECTURES ${CPU})
17 set(ARCH arm-osx) 16 set(ARCH arm-osx)
18 set(NEON False) 17 set(NEON False)
19 else() 18 else()
@@ -35,23 +34,3 @@ list(APPEND DEPLIBS "-framework CoreFoundation" "-framework CoreVideo"
35 34
36set(ENABLE_DVDCSS OFF CACHE BOOL "" FORCE) 35set(ENABLE_DVDCSS OFF CACHE BOOL "" FORCE)
37set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE) 36set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE)
38
39set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "5.1")
40set(CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2")
41
42set(CMAKE_XCODE_ATTRIBUTE_INLINES_ARE_PRIVATE_EXTERN OFF)
43set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN OFF)
44set(CMAKE_XCODE_ATTRIBUTE_COPY_PHASE_STRIP OFF)
45
46# Xcode strips dead code by default which breaks wrapping
47set(CMAKE_XCODE_ATTRIBUTE_DEAD_CODE_STRIPPING OFF)
48
49# Unify output directories for iOS packaging scripts
50if(NOT CMAKE_GENERATOR MATCHES Xcode)
51 set(CORE_BUILD_CONFIG "${CORE_BUILD_CONFIG}-iphoneos")
52endif()
53set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CORE_BUILD_DIR}/${CORE_BUILD_CONFIG})
54foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
55 string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
56 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CORE_BUILD_DIR}/${CORE_BUILD_CONFIG})
57endforeach()
diff --git a/project/cmake/scripts/ios/Install.cmake b/project/cmake/scripts/ios/Install.cmake
index c49fcd5..052565f 100644
--- a/project/cmake/scripts/ios/Install.cmake
+++ b/project/cmake/scripts/ios/Install.cmake
@@ -1,54 +1,42 @@
1# IOS packaging 1# IOS packaging
2 2
3set(BUNDLE_RESOURCES ${CORE_SOURCE_DIR}/xbmc/platform/darwin/ios/Default-568h@2x.png 3set(PACKAGE_OUTPUT_DIR ${CMAKE_BINARY_DIR}/build/${CORE_BUILD_CONFIG}-iphoneos)
4 ${CORE_SOURCE_DIR}/xbmc/platform/darwin/ios/Default-667h@2x.png
5 ${CORE_SOURCE_DIR}/xbmc/platform/darwin/ios/Default-736h@3x.png
6 ${CORE_SOURCE_DIR}/xbmc/platform/darwin/ios/Default-Landscape-736h@3x.png
7 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon29x29.png
8 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon29x29@2x.png
9 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon40x40.png
10 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon40x40@2x.png
11 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon50x50.png
12 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon50x50@2x.png
13 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon57x57.png
14 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon57x57@2x.png
15 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon60x60.png
16 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon60x60@2x.png
17 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon72x72.png
18 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon72x72@2x.png
19 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon76x76.png
20 ${CORE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon76x76@2x.png)
21 4
22if(CMAKE_GENERATOR STREQUAL Xcode) 5file(MAKE_DIRECTORY ${PACKAGE_OUTPUT_DIR}/${APP_NAME}.app)
23 set(RESOURCE_LOCATION ${APP_NAME}.app) 6set(BUNDLE_RESOURCES xbmc/platform/darwin/ios/Default-568h@2x.png
24else() 7 xbmc/platform/darwin/ios/Default-667h@2x.png
25 set(RESOURCE_LOCATION ".") 8 xbmc/platform/darwin/ios/Default-736h@3x.png
26endif() 9 xbmc/platform/darwin/ios/Default-Landscape-736h@3x.png
10 tools/darwin/packaging/media/ios/rounded/AppIcon29x29.png
11 tools/darwin/packaging/media/ios/rounded/AppIcon29x29@2x.png
12 tools/darwin/packaging/media/ios/rounded/AppIcon40x40.png
13 tools/darwin/packaging/media/ios/rounded/AppIcon40x40@2x.png
14 tools/darwin/packaging/media/ios/rounded/AppIcon50x50.png
15 tools/darwin/packaging/media/ios/rounded/AppIcon50x50@2x.png
16 tools/darwin/packaging/media/ios/rounded/AppIcon57x57.png
17 tools/darwin/packaging/media/ios/rounded/AppIcon57x57@2x.png
18 tools/darwin/packaging/media/ios/rounded/AppIcon60x60.png
19 tools/darwin/packaging/media/ios/rounded/AppIcon60x60@2x.png
20 tools/darwin/packaging/media/ios/rounded/AppIcon72x72.png
21 tools/darwin/packaging/media/ios/rounded/AppIcon72x72@2x.png
22 tools/darwin/packaging/media/ios/rounded/AppIcon76x76.png
23 tools/darwin/packaging/media/ios/rounded/AppIcon76x76@2x.png)
27 24
28target_sources(${APP_NAME_LC} PRIVATE ${BUNDLE_RESOURCES}) 25foreach(resource IN LISTS BUNDLE_RESOURCES)
29foreach(file IN LISTS BUNDLE_RESOURCES) 26 configure_file(${CORE_SOURCE_DIR}/${resource} ${PACKAGE_OUTPUT_DIR}/${APP_NAME}.app COPYONLY)
30 set_source_files_properties(${file} PROPERTIES MACOSX_PACKAGE_LOCATION ${RESOURCE_LOCATION})
31endforeach() 27endforeach()
28configure_file(${CORE_SOURCE_DIR}/xbmc/platform/darwin/ios/English.lproj/InfoPlist.strings
29 ${PACKAGE_OUTPUT_DIR}/${APP_NAME}.app/English.lproj/InfoPlist.strings COPYONLY)
32 30
33target_sources(${APP_NAME_LC} PRIVATE ${CORE_SOURCE_DIR}/xbmc/platform/darwin/ios/English.lproj/InfoPlist.strings) 31configure_file(${CORE_SOURCE_DIR}/xbmc/platform/darwin/ios/Info.plist.in
34set_source_files_properties(${CORE_SOURCE_DIR}/xbmc/platform/darwin/ios/English.lproj/InfoPlist.strings PROPERTIES MACOSX_PACKAGE_LOCATION "${RESOURCE_LOCATION}/English.lproj") 32 ${PACKAGE_OUTPUT_DIR}/${APP_NAME}.app/Info.plist @ONLY)
35
36# Options for code signing propagated as env vars to Codesign.command via Xcode
37set(IOS_CODE_SIGN_IDENTITY "" CACHE STRING "Code Sign Identity")
38if(IOS_CODE_SIGN_IDENTITY)
39 set_target_properties(${APP_NAME_LC} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED TRUE
40 XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${IOS_CODE_SIGN_IDENTITY})
41endif()
42
43add_custom_command(TARGET ${APP_NAME_LC} POST_BUILD
44 # TODO: Remove in sync with CopyRootFiles-ios expecting the ".bin" file
45 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${APP_NAME_LC}>
46 $<TARGET_FILE_DIR:${APP_NAME_LC}>/${APP_NAME}.bin
47 33
34add_custom_target(bundle
35 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${APP_NAME_LC}> ${PACKAGE_OUTPUT_DIR}/${APP_NAME}.app/${APP_NAME}.bin
48 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/DllPaths_generated.h 36 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/DllPaths_generated.h
49 ${CMAKE_BINARY_DIR}/xbmc/DllPaths_generated.h 37 ${CMAKE_BINARY_DIR}/xbmc/DllPaths_generated.h
50 COMMAND "ACTION=build" 38 COMMAND "ACTION=build"
51 "TARGET_BUILD_DIR=$<TARGET_FILE_DIR:${APP_NAME_LC}>/.." 39 "TARGET_BUILD_DIR=${PACKAGE_OUTPUT_DIR}"
52 "TARGET_NAME=${APP_NAME}.app" 40 "TARGET_NAME=${APP_NAME}.app"
53 "APP_NAME=${APP_NAME}" 41 "APP_NAME=${APP_NAME}"
54 "PRODUCT_NAME=${APP_NAME}" 42 "PRODUCT_NAME=${APP_NAME}"
@@ -56,22 +44,15 @@ add_custom_command(TARGET ${APP_NAME_LC} POST_BUILD
56 "SRCROOT=${CMAKE_BINARY_DIR}" 44 "SRCROOT=${CMAKE_BINARY_DIR}"
57 ${CORE_SOURCE_DIR}/tools/darwin/Support/CopyRootFiles-ios.command 45 ${CORE_SOURCE_DIR}/tools/darwin/Support/CopyRootFiles-ios.command
58 COMMAND "XBMC_DEPENDS=${DEPENDS_PATH}" 46 COMMAND "XBMC_DEPENDS=${DEPENDS_PATH}"
59 "TARGET_BUILD_DIR=$<TARGET_FILE_DIR:${APP_NAME_LC}>/.." 47 "TARGET_BUILD_DIR=${PACKAGE_OUTPUT_DIR}"
60 "TARGET_NAME=${APP_NAME}.app" 48 "TARGET_NAME=${APP_NAME}.app"
61 "APP_NAME=${APP_NAME}" 49 "APP_NAME=${APP_NAME}"
62 "PRODUCT_NAME=${APP_NAME}" 50 "PRODUCT_NAME=${APP_NAME}"
63 "FULL_PRODUCT_NAME=${APP_NAME}.app" 51 "FULL_PRODUCT_NAME=${APP_NAME}.app"
64 "WRAPPER_EXTENSION=app" 52 "WRAPPER_EXTENSION=app"
65 "SRCROOT=${CMAKE_BINARY_DIR}" 53 "SRCROOT=${CMAKE_BINARY_DIR}"
66 ${CORE_SOURCE_DIR}/tools/darwin/Support/copyframeworks-ios.command 54 ${CORE_SOURCE_DIR}/tools/darwin/Support/copyframeworks-ios.command)
67 COMMAND "XBMC_DEPENDS_ROOT=${NATIVEPREFIX}/.." 55add_dependencies(bundle ${APP_NAME_LC})
68 "PLATFORM_NAME=${PLATFORM}"
69 "CODESIGNING_FOLDER_PATH=$<TARGET_FILE_DIR:${APP_NAME_LC}>"
70 "BUILT_PRODUCTS_DIR=$<TARGET_FILE_DIR:${APP_NAME_LC}>/.."
71 "WRAPPER_NAME=${APP_NAME}.app"
72 "APP_NAME=${APP_NAME}"
73 ${CORE_SOURCE_DIR}/tools/darwin/Support/Codesign.command
74)
75 56
76set(DEPENDS_ROOT_FOR_XCODE ${NATIVEPREFIX}/..) 57set(DEPENDS_ROOT_FOR_XCODE ${NATIVEPREFIX}/..)
77configure_file(${CORE_SOURCE_DIR}/tools/darwin/packaging/ios/mkdeb-ios.sh.in 58configure_file(${CORE_SOURCE_DIR}/tools/darwin/packaging/ios/mkdeb-ios.sh.in
@@ -80,6 +61,14 @@ configure_file(${CORE_SOURCE_DIR}/tools/darwin/packaging/migrate_to_kodi_ios.sh.
80 ${CMAKE_BINARY_DIR}/tools/darwin/packaging/migrate_to_kodi_ios.sh @ONLY) 61 ${CMAKE_BINARY_DIR}/tools/darwin/packaging/migrate_to_kodi_ios.sh @ONLY)
81 62
82add_custom_target(deb 63add_custom_target(deb
64 COMMAND "XBMC_DEPENDS_ROOT=${NATIVEPREFIX}/.."
65 "PLATFORM_NAME=${PLATFORM}"
66 "CODESIGNING_FOLDER_PATH=${PACKAGE_OUTPUT_DIR}/${APP_NAME}.app"
67 "BUILT_PRODUCTS_DIR=${PACKAGE_OUTPUT_DIR}"
68 "WRAPPER_NAME=${APP_NAME}.app"
69 "APP_NAME=${APP_NAME}"
70 "CODE_SIGN_IDENTITY=\"\""
71 ${CORE_SOURCE_DIR}/tools/darwin/Support/Codesign.command
83 COMMAND sh ./mkdeb-ios.sh ${CORE_BUILD_CONFIG} 72 COMMAND sh ./mkdeb-ios.sh ${CORE_BUILD_CONFIG}
84 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tools/darwin/packaging/ios) 73 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tools/darwin/packaging/ios)
85add_dependencies(deb ${APP_NAME_LC}) 74add_dependencies(deb bundle)
diff --git a/project/cmake/scripts/linux/ArchSetup.cmake b/project/cmake/scripts/linux/ArchSetup.cmake
index bcd70df..cae0bb8 100644
--- a/project/cmake/scripts/linux/ArchSetup.cmake
+++ b/project/cmake/scripts/linux/ArchSetup.cmake
@@ -39,7 +39,3 @@ if(CMAKE_BUILD_TYPE STREQUAL Coverage)
39 set(COVERAGE_DEPENDS "\${APP_NAME_LC}" "\${APP_NAME_LC}-test") 39 set(COVERAGE_DEPENDS "\${APP_NAME_LC}" "\${APP_NAME_LC}-test")
40 set(COVERAGE_EXCLUDES */test/* lib/* */lib/*) 40 set(COVERAGE_EXCLUDES */test/* lib/* */lib/*)
41endif() 41endif()
42
43if(ENABLE_MIR)
44 set(ENABLE_VDPAU OFF CACHE BOOL "Disabling VDPAU since no Mir support" FORCE)
45endif()
diff --git a/project/cmake/scripts/linux/Install.cmake b/project/cmake/scripts/linux/Install.cmake
index 43e2e5e..adf428d 100644
--- a/project/cmake/scripts/linux/Install.cmake
+++ b/project/cmake/scripts/linux/Install.cmake
@@ -129,7 +129,7 @@ install(FILES ${CORE_SOURCE_DIR}/copying.txt
129 ${CORE_SOURCE_DIR}/LICENSE.GPL 129 ${CORE_SOURCE_DIR}/LICENSE.GPL
130 ${CORE_SOURCE_DIR}/version.txt 130 ${CORE_SOURCE_DIR}/version.txt
131 ${CORE_SOURCE_DIR}/docs/README.linux 131 ${CORE_SOURCE_DIR}/docs/README.linux
132 DESTINATION ${datarootdir}/doc/${APP_NAME_LC} 132 DESTINATION ${docdir}
133 COMPONENT kodi) 133 COMPONENT kodi)
134 134
135install(FILES ${CORE_SOURCE_DIR}/privacy-policy.txt 135install(FILES ${CORE_SOURCE_DIR}/privacy-policy.txt
@@ -154,14 +154,12 @@ install(FILES ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/kod
154 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h 154 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h
155 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_codec.h 155 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_codec.h
156 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h 156 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h
157 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h
158 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_cpp_dll.h 157 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_cpp_dll.h
159 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h 158 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h
160 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_types.h 159 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_types.h
161 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_codec_types.h 160 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_codec_types.h
162 ${CORE_SOURCE_DIR}/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxPacket.h 161 ${CORE_SOURCE_DIR}/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxPacket.h
163 ${CORE_SOURCE_DIR}/xbmc/filesystem/IFileTypes.h 162 ${CORE_SOURCE_DIR}/xbmc/filesystem/IFileTypes.h
164 ${CORE_SOURCE_DIR}/xbmc/input/XBMC_vkeys.h
165 DESTINATION ${includedir}/${APP_NAME_LC} 163 DESTINATION ${includedir}/${APP_NAME_LC}
166 COMPONENT kodi-addon-dev) 164 COMPONENT kodi-addon-dev)
167 165
@@ -314,14 +312,6 @@ install(FILES ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/kod
314 DESTINATION ${includedir}/${APP_NAME_LC} 312 DESTINATION ${includedir}/${APP_NAME_LC}
315 COMPONENT kodi-peripheral-dev) 313 COMPONENT kodi-peripheral-dev)
316 314
317# Install kodi-game-dev
318install(FILES ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_callbacks.h
319 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h
320 ${CORE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h
321 DESTINATION ${includedir}/${APP_NAME_LC}
322 COMPONENT kodi-game-dev)
323
324
325# Install XBT skin files 315# Install XBT skin files
326foreach(texture ${XBT_FILES}) 316foreach(texture ${XBT_FILES})
327 string(REPLACE "${CMAKE_BINARY_DIR}/" "" dir ${texture}) 317 string(REPLACE "${CMAKE_BINARY_DIR}/" "" dir ${texture})
diff --git a/project/cmake/scripts/linux/PathSetup.cmake b/project/cmake/scripts/linux/PathSetup.cmake
index f69711e..5532c2d 100644
--- a/project/cmake/scripts/linux/PathSetup.cmake
+++ b/project/cmake/scripts/linux/PathSetup.cmake
@@ -34,6 +34,7 @@ list(APPEND final_message "Bindir: ${bindir}")
34list(APPEND final_message "Includedir: ${includedir}") 34list(APPEND final_message "Includedir: ${includedir}")
35list(APPEND final_message "Datarootdir: ${datarootdir}") 35list(APPEND final_message "Datarootdir: ${datarootdir}")
36list(APPEND final_message "Datadir: ${datadir}") 36list(APPEND final_message "Datadir: ${datadir}")
37list(APPEND final_message "Docdir: ${docdir}")
37 38
38set(PATH_DEFINES -DBIN_INSTALL_PATH=\"${libdir}/kodi\" 39set(PATH_DEFINES -DBIN_INSTALL_PATH=\"${libdir}/kodi\"
39 -DINSTALL_PATH=\"${datarootdir}/kodi\") 40 -DINSTALL_PATH=\"${datarootdir}/kodi\")
diff --git a/project/cmake/scripts/osx/Macros.cmake b/project/cmake/scripts/osx/Macros.cmake
index 52f87d1..0d04439 100644
--- a/project/cmake/scripts/osx/Macros.cmake
+++ b/project/cmake/scripts/osx/Macros.cmake
@@ -2,7 +2,7 @@ function(core_link_library lib wraplib)
2 if(CMAKE_GENERATOR MATCHES "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL Ninja) 2 if(CMAKE_GENERATOR MATCHES "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL Ninja)
3 set(wrapper_obj cores/dll-loader/exports/CMakeFiles/wrapper.dir/wrapper.c.o) 3 set(wrapper_obj cores/dll-loader/exports/CMakeFiles/wrapper.dir/wrapper.c.o)
4 elseif(CMAKE_GENERATOR MATCHES "Xcode") 4 elseif(CMAKE_GENERATOR MATCHES "Xcode")
5 set(wrapper_obj cores/dll-loader/exports/kodi.build/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/wrapper.build/Objects-$(CURRENT_VARIANT)/$(CURRENT_ARCH)/wrapper.o) 5 set(wrapper_obj cores/dll-loader/exports/kodi.build/$(CONFIGURATION)/wrapper.build/Objects-$(CURRENT_VARIANT)/$(CURRENT_ARCH)/wrapper.o)
6 else() 6 else()
7 message(FATAL_ERROR "Unsupported generator in core_link_library") 7 message(FATAL_ERROR "Unsupported generator in core_link_library")
8 endif() 8 endif()
@@ -17,13 +17,6 @@ function(core_link_library lib wraplib)
17 set(link_lib $<TARGET_FILE:${lib}>) 17 set(link_lib $<TARGET_FILE:${lib}>)
18 set(check_arg ${ARGV2}) 18 set(check_arg ${ARGV2})
19 set(data_arg ${ARGV3}) 19 set(data_arg ${ARGV3})
20
21 # iOS: EFFECTIVE_PLATFORM_NAME is not resolved
22 # http://public.kitware.com/pipermail/cmake/2016-March/063049.html
23 if(CORE_SYSTEM_NAME STREQUAL ios AND CMAKE_GENERATOR STREQUAL Xcode)
24 get_target_property(dir ${lib} BINARY_DIR)
25 set(link_lib ${dir}/${CORE_BUILD_CONFIG}/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX})
26 endif()
27 else() 20 else()
28 set(target ${ARGV2}) 21 set(target ${ARGV2})
29 set(link_lib ${lib}) 22 set(link_lib ${lib})
diff --git a/project/cmake/scripts/windows/tools/patch.cmake b/project/cmake/scripts/windows/tools/patch.cmake
deleted file mode 100644
index 0ef2952..0000000
--- a/project/cmake/scripts/windows/tools/patch.cmake
+++ /dev/null
@@ -1,37 +0,0 @@
1find_program(PATCH_FOUND NAMES patch patch.exe)
2if(PATCH_FOUND)
3 message(STATUS "patch utility found at ${PATCH_FOUND}")
4else()
5 set(PATCH_ARCHIVE_NAME "patch-2.5.9-7-bin-1")
6 set(PATCH_ARCHIVE "${PATCH_ARCHIVE_NAME}.zip")
7 set(PATCH_URL "${KODI_MIRROR}/build-deps/win32/${PATCH_ARCHIVE}")
8 set(PATCH_DOWNLOAD ${BUILD_DIR}/download/${PATCH_ARCHIVE})
9
10 # download the archive containing patch.exe
11 message(STATUS "Downloading patch utility from ${PATCH_URL}...")
12 file(DOWNLOAD "${PATCH_URL}" "${PATCH_DOWNLOAD}" STATUS PATCH_DL_STATUS LOG PATCH_LOG SHOW_PROGRESS)
13 list(GET PATCH_DL_STATUS 0 PATCH_RETCODE)
14 if(NOT PATCH_RETCODE EQUAL 0)
15 message(FATAL_ERROR "ERROR downloading ${PATCH_URL} - status: ${PATCH_DL_STATUS} log: ${PATCH_LOG}")
16 endif()
17
18 # extract the archive containing patch.exe
19 execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzvf ${PATCH_DOWNLOAD}
20 WORKING_DIRECTORY ${BUILD_DIR})
21
22 # make sure the extraction worked and that patch.exe is there
23 set(PATCH_PATH ${BUILD_DIR}/${PATCH_ARCHIVE_NAME})
24 set(PATCH_BINARY_PATH ${PATCH_PATH}/bin/patch.exe)
25 if(NOT EXISTS ${PATCH_PATH} OR NOT EXISTS ${PATCH_BINARY_PATH})
26 message(FATAL_ERROR "ERROR extracting patch utility from ${PATCH_PATH}")
27 endif()
28
29 # copy patch.exe into the output directory
30 file(INSTALL ${PATCH_BINARY_PATH} DESTINATION ${ADDON_DEPENDS_PATH}/bin)
31
32 # make sure that cmake can find the copied patch.exe
33 find_program(PATCH_FOUND NAMES patch patch.exe)
34 if(NOT PATCH_FOUND)
35 message(FATAL_ERROR "ERROR installing patch utility from ${PATCH_BINARY_PATH} to ${ADDON_DEPENDS_PATH}/bin")
36 endif()
37endif()
diff --git a/project/cmake/treedata/common/addons.txt b/project/cmake/treedata/common/addons.txt
index f29e086..76410b7 100644
--- a/project/cmake/treedata/common/addons.txt
+++ b/project/cmake/treedata/common/addons.txt
@@ -1,7 +1,8 @@
1lib/addons/library.kodi.adsp KODI_adsp 1lib/addons/library.kodi.adsp KODI_adsp
2lib/addons/library.kodi.audioengine KODI_audioengine 2lib/addons/library.kodi.audioengine KODI_audioengine
3lib/addons/library.kodi.game KODI_game
4lib/addons/library.kodi.guilib KODI_guilib 3lib/addons/library.kodi.guilib KODI_guilib
4lib/addons/library.kodi.inputstream KODI_inputstream
5lib/addons/library.kodi.peripheral KODI_peripheral 5lib/addons/library.kodi.peripheral KODI_peripheral
6lib/addons/library.xbmc.addon XBMC_addon 6lib/addons/library.xbmc.addon XBMC_addon
7lib/addons/library.xbmc.codec XBMC_codec 7lib/addons/library.xbmc.codec XBMC_codec
8lib/addons/library.xbmc.pvr XBMC_pvr
diff --git a/project/cmake/treedata/common/cores.txt b/project/cmake/treedata/common/cores.txt
index 8d79dd1..d23939d 100644
--- a/project/cmake/treedata/common/cores.txt
+++ b/project/cmake/treedata/common/cores.txt
@@ -6,4 +6,3 @@ xbmc/cores/DllLoader/exports/util cores/dll-loader/exports/util
6xbmc/cores/ExternalPlayer cores/externalplayer 6xbmc/cores/ExternalPlayer cores/externalplayer
7xbmc/cores/paplayer cores/paplayer 7xbmc/cores/paplayer cores/paplayer
8xbmc/cores/playercorefactory cores/playercorefactory 8xbmc/cores/playercorefactory cores/playercorefactory
9xbmc/cores/RetroPlayer cores/RetroPlayer
diff --git a/project/cmake/treedata/common/games.txt b/project/cmake/treedata/common/games.txt
index 03d42bc..b622f5a 100644
--- a/project/cmake/treedata/common/games.txt
+++ b/project/cmake/treedata/common/games.txt
@@ -1,12 +1,4 @@
1xbmc/games games
2xbmc/games/addons games/addons
3xbmc/games/addons/playback games/addons/playback
4xbmc/games/addons/savestates games/addons/savestates
5xbmc/games/controllers games/controllers 1xbmc/games/controllers games/controllers
6xbmc/games/controllers/dialogs games/controllers/dialogs 2xbmc/games/controllers/dialogs games/controllers/dialogs
7xbmc/games/controllers/guicontrols games/controllers/guicontrols 3xbmc/games/controllers/guicontrols games/controllers/guicontrols
8xbmc/games/controllers/windows games/controllers/windows 4xbmc/games/controllers/windows games/controllers/windows
9xbmc/games/dialogs games/dialogs
10xbmc/games/ports games/ports
11xbmc/games/tags games/tags
12xbmc/games/windows games/windows
diff --git a/project/cmake/treedata/common/subdirs.txt b/project/cmake/treedata/common/subdirs.txt
index af91611..e2bca7e 100644
--- a/project/cmake/treedata/common/subdirs.txt
+++ b/project/cmake/treedata/common/subdirs.txt
@@ -5,7 +5,6 @@ xbmc/addons/binary/interfaces/api1/Addon api1AddonCallbacks_Addon
5xbmc/addons/binary/interfaces/api1/AudioDSP api1AddonCallbacks_AudioDSP 5xbmc/addons/binary/interfaces/api1/AudioDSP api1AddonCallbacks_AudioDSP
6xbmc/addons/binary/interfaces/api1/AudioEngine api1AddonCallbacks_AudioEngine 6xbmc/addons/binary/interfaces/api1/AudioEngine api1AddonCallbacks_AudioEngine
7xbmc/addons/binary/interfaces/api1/Codec api1AddonCallbacks_Codec 7xbmc/addons/binary/interfaces/api1/Codec api1AddonCallbacks_Codec
8xbmc/addons/binary/interfaces/api1/Game api1AddonCallbacks_Game
9xbmc/addons/binary/interfaces/api1/GUI api1AddonCallbacks_GUI 8xbmc/addons/binary/interfaces/api1/GUI api1AddonCallbacks_GUI
10xbmc/addons/binary/interfaces/api1/InputStream api1AddonCallbacks_InputStream 9xbmc/addons/binary/interfaces/api1/InputStream api1AddonCallbacks_InputStream
11xbmc/addons/binary/interfaces/api1/Peripheral api1AddonCallbacks_Peripheral 10xbmc/addons/binary/interfaces/api1/Peripheral api1AddonCallbacks_Peripheral
@@ -19,10 +18,6 @@ xbmc/input input
19xbmc/input/joysticks input/joysticks 18xbmc/input/joysticks input/joysticks
20xbmc/input/joysticks/dialogs input/joysticks/dialogs 19xbmc/input/joysticks/dialogs input/joysticks/dialogs
21xbmc/input/joysticks/generic input/joysticks/generic 20xbmc/input/joysticks/generic input/joysticks/generic
22xbmc/input/keyboard input/keyboard
23xbmc/input/keyboard/generic input/keyboard/generic
24xbmc/input/mouse input/mouse
25xbmc/input/mouse/generic input/mouse/generic
26xbmc/listproviders listproviders 21xbmc/listproviders listproviders
27xbmc/media media 22xbmc/media media
28xbmc/messaging messaging 23xbmc/messaging messaging
diff --git a/project/cmake/treedata/optional/common/mir.txt b/project/cmake/treedata/optional/common/mir.txt
deleted file mode 100644
index d681e8b..0000000
--- a/project/cmake/treedata/optional/common/mir.txt
+++ /dev/null
@@ -1 +0,0 @@
1xbmc/windowing/mir windowing/mir # MIR
diff --git a/version.txt b/version.txt
index a27c1bd..b6c1b1d 100644
--- a/version.txt
+++ b/version.txt
@@ -1,11 +1,11 @@
1APP_NAME Kodi 1APP_NAME Kodi
2COMPANY_NAME XBMC-Foundation 2COMPANY_NAME XBMC-Foundation
3WEBSITE http://kodi.tv 3WEBSITE http://kodi.tv
4VERSION_MAJOR 18 4VERSION_MAJOR 17
5VERSION_MINOR 0 5VERSION_MINOR 0
6VERSION_TAG ALPHA1 6VERSION_TAG BETA7
7VERSION_CODE 179701 7VERSION_CODE 169807
8ADDON_API 17.9.701 8ADDON_API 16.9.807
9 9
10# Notes: 10# Notes:
11# Change AC_INIT in configure.ac 11# Change AC_INIT in configure.ac
diff --git a/xbmc/addons/addon-bindings.mk b/xbmc/addons/addon-bindings.mk
index 788b50e..6bfed36 100644
--- a/xbmc/addons/addon-bindings.mk
+++ b/xbmc/addons/addon-bindings.mk
@@ -13,9 +13,6 @@ BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_audioenc_types.h
13BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_audioengine_types.h 13BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_audioengine_types.h
14BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_codec_types.h 14BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_codec_types.h
15BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h 15BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h
16BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_callbacks.h
17BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h
18BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h
19BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_inputstream_dll.h 16BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_inputstream_dll.h
20BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_inputstream_types.h 17BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_inputstream_types.h
21BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_peripheral_callbacks.h 18BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_peripheral_callbacks.h
@@ -33,7 +30,6 @@ BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_vis_types.h
33BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h 30BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h
34BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_audioengine.h 31BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_audioengine.h
35BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_adsp.h 32BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_adsp.h
36BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h
37BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h 33BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h
38BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_inputstream.h 34BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_inputstream.h
39BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_peripheral.h 35BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_peripheral.h
@@ -42,4 +38,3 @@ BINDINGS+=xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_codec.h
42BINDINGS+=xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxPacket.h 38BINDINGS+=xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxPacket.h
43BINDINGS+=xbmc/cores/AudioEngine/Utils/AEChannelData.h 39BINDINGS+=xbmc/cores/AudioEngine/Utils/AEChannelData.h
44BINDINGS+=xbmc/filesystem/IFileTypes.h 40BINDINGS+=xbmc/filesystem/IFileTypes.h
45BINDINGS+=xbmc/input/XBMC_vkeys.h
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_inputstream_types.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_inputstream_types.h
index 46e9d03..87807e2 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_inputstream_types.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_inputstream_types.h
@@ -20,16 +20,9 @@
20 * 20 *
21 */ 21 */
22 22
23#ifdef TARGET_WINDOWS
24#include <windows.h>
25#else
26#ifndef __cdecl 23#ifndef __cdecl
27#define __cdecl 24#define __cdecl
28#endif 25#endif
29#ifndef __declspec
30#define __declspec(X)
31#endif
32#endif
33 26
34#ifdef BUILD_KODI_ADDON 27#ifdef BUILD_KODI_ADDON
35#include "DVDDemuxPacket.h" 28#include "DVDDemuxPacket.h"
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_peripheral_types.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_peripheral_types.h
index d7c4282..2df5622 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_peripheral_types.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_peripheral_types.h
@@ -51,7 +51,7 @@
51#endif 51#endif
52 52
53/* current Peripheral API version */ 53/* current Peripheral API version */
54#define PERIPHERAL_API_VERSION "1.2.1" 54#define PERIPHERAL_API_VERSION "1.2.0"
55 55
56/* min. Peripheral API version */ 56/* min. Peripheral API version */
57#define PERIPHERAL_MIN_API_VERSION "1.2.0" 57#define PERIPHERAL_MIN_API_VERSION "1.2.0"
@@ -84,7 +84,6 @@ extern "C"
84 { 84 {
85 PERIPHERAL_TYPE_UNKNOWN, 85 PERIPHERAL_TYPE_UNKNOWN,
86 PERIPHERAL_TYPE_JOYSTICK, 86 PERIPHERAL_TYPE_JOYSTICK,
87 PERIPHERAL_TYPE_KEYBOARD,
88 } PERIPHERAL_TYPE; 87 } PERIPHERAL_TYPE;
89 88
90 typedef struct PERIPHERAL_INFO 89 typedef struct PERIPHERAL_INFO
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_inputstream.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_inputstream.h
index c55a42b..a6e83cb 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_inputstream.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_inputstream.h
@@ -33,40 +33,27 @@
33#include "cores/VideoPlayer/DVDDemuxers/DVDDemuxPacket.h" 33#include "cores/VideoPlayer/DVDDemuxers/DVDDemuxPacket.h"
34#endif 34#endif
35 35
36#define INPUTSTREAM_HELPER_DLL KODI_DLL("inputstream")
37#define INPUTSTREAM_HELPER_DLL_NAME KODI_DLL_NAME("inputstream")
38
36/* current input stream API version */ 39/* current input stream API version */
37#define KODI_INPUTSTREAM_API_VERSION "1.0.0" 40#define KODI_INPUTSTREAM_API_VERSION "1.0.0"
38 41
39namespace KodiAPI
40{
41namespace V1
42{
43namespace InputStream
44{
45
46typedef struct CB_INPUTSTREAMLib
47{
48 void (*FreeDemuxPacket)(void *addonData, DemuxPacket* pPacket);
49 DemuxPacket* (*AllocateDemuxPacket)(void *addonData, int iDataSize);
50} CB_INPUTSTREAMLib;
51
52} /* namespace InputStream */
53} /* namespace V1 */
54} /* namespace KodiAPI */
55
56class CHelper_libKODI_inputstream 42class CHelper_libKODI_inputstream
57{ 43{
58public: 44public:
59 CHelper_libKODI_inputstream(void) 45 CHelper_libKODI_inputstream(void)
60 { 46 {
47 m_libKODI_inputstream = nullptr;
61 m_Handle = nullptr; 48 m_Handle = nullptr;
62 m_Callbacks = nullptr;
63 } 49 }
64 50
65 ~CHelper_libKODI_inputstream(void) 51 ~CHelper_libKODI_inputstream(void)
66 { 52 {
67 if (m_Handle && m_Callbacks) 53 if (m_libKODI_inputstream)
68 { 54 {
69 m_Handle->INPUTSTREAMLib_UnRegisterMe(m_Handle->addonData, m_Callbacks); 55 INPUTSTREAM_unregister_me(m_Handle, m_Callbacks);
56 dlclose(m_libKODI_inputstream);
70 } 57 }
71 } 58 }
72 59
@@ -77,12 +64,52 @@ public:
77 */ 64 */
78 bool RegisterMe(void* handle) 65 bool RegisterMe(void* handle)
79 { 66 {
80 m_Handle = static_cast<AddonCB*>(handle); 67 m_Handle = handle;
81 if (m_Handle) 68
82 m_Callbacks = (KodiAPI::V1::InputStream::CB_INPUTSTREAMLib*)m_Handle->INPUTSTREAMLib_RegisterMe(m_Handle->addonData); 69 std::string libBasePath;
83 if (!m_Callbacks) 70 libBasePath = ((cb_array*)m_Handle)->libPath;
84 fprintf(stderr, "libKODI_inputstream-ERROR: InputStream_RegisterMe can't get callback table from Kodi !!!\n"); 71 libBasePath += INPUTSTREAM_HELPER_DLL;
72
73 m_libKODI_inputstream = dlopen(libBasePath.c_str(), RTLD_LAZY);
74 if (m_libKODI_inputstream == nullptr)
75 {
76 fprintf(stderr, "Unable to load %s\n", dlerror());
77 return false;
78 }
79
80 INPUTSTREAM_register_me = (void* (*)(void *HANDLE))
81 dlsym(m_libKODI_inputstream, "INPUTSTREAM_register_me");
82 if (INPUTSTREAM_register_me == nullptr)
83 {
84 fprintf(stderr, "Unable to assign function %s\n", dlerror());
85 return false;
86 }
85 87
88 INPUTSTREAM_unregister_me = (void (*)(void* HANDLE, void* CB))
89 dlsym(m_libKODI_inputstream, "INPUTSTREAM_unregister_me");
90 if (INPUTSTREAM_unregister_me == nullptr)
91 {
92 fprintf(stderr, "Unable to assign function %s\n", dlerror());
93 return false;
94 }
95
96 INPUTSTREAM_free_demux_packet = (void (*)(void* HANDLE, void* CB, DemuxPacket* pPacket))
97 dlsym(m_libKODI_inputstream, "INPUTSTREAM_free_demux_packet");
98 if (INPUTSTREAM_free_demux_packet == NULL)
99 {
100 fprintf(stderr, "Unable to assign function %s\n", dlerror());
101 return false;
102 }
103
104 INPUTSTREAM_allocate_demux_packet = (DemuxPacket* (*)(void* HANDLE, void* CB, int iDataSize))
105 dlsym(m_libKODI_inputstream, "INPUTSTREAM_allocate_demux_packet");
106 if (INPUTSTREAM_allocate_demux_packet == NULL)
107 {
108 fprintf(stderr, "Unable to assign function %s\n", dlerror());
109 return false;
110 }
111
112 m_Callbacks = INPUTSTREAM_register_me(m_Handle);
86 return m_Callbacks != nullptr; 113 return m_Callbacks != nullptr;
87 } 114 }
88 115
@@ -93,7 +120,7 @@ public:
93 */ 120 */
94 DemuxPacket* AllocateDemuxPacket(int iDataSize) 121 DemuxPacket* AllocateDemuxPacket(int iDataSize)
95 { 122 {
96 return m_Callbacks->AllocateDemuxPacket(m_Handle->addonData, iDataSize); 123 return INPUTSTREAM_allocate_demux_packet(m_Handle, m_Callbacks, iDataSize);
97 } 124 }
98 125
99 /*! 126 /*!
@@ -102,10 +129,21 @@ public:
102 */ 129 */
103 void FreeDemuxPacket(DemuxPacket* pPacket) 130 void FreeDemuxPacket(DemuxPacket* pPacket)
104 { 131 {
105 return m_Callbacks->FreeDemuxPacket(m_Handle->addonData, pPacket); 132 return INPUTSTREAM_free_demux_packet(m_Handle, m_Callbacks, pPacket);
106 } 133 }
107 134
135protected:
136 void* (*INPUTSTREAM_register_me)(void*);
137 void (*INPUTSTREAM_unregister_me)(void*, void*);
138 void (*INPUTSTREAM_free_demux_packet)(void*, void*, DemuxPacket*);
139 DemuxPacket* (*INPUTSTREAM_allocate_demux_packet)(void*, void*, int);
140
108private: 141private:
109 AddonCB* m_Handle; 142 void* m_libKODI_inputstream;
110 KodiAPI::V1::InputStream::CB_INPUTSTREAMLib* m_Callbacks; 143 void* m_Handle;
144 void* m_Callbacks;
145 struct cb_array
146 {
147 const char* libPath;
148 };
111}; 149};
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h
index d9f72c1..70bd19b 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h
@@ -116,49 +116,6 @@ typedef intptr_t ssize_t;
116/* current addon API version */ 116/* current addon API version */
117#define KODI_ADDON_API_VERSION "1.0.0" 117#define KODI_ADDON_API_VERSION "1.0.0"
118 118
119typedef void* (*KODIAddOnLib_RegisterMe)(void *addonData);
120typedef void (*KODIAddOnLib_UnRegisterMe)(void *addonData, void *cbTable);
121typedef void* (*KODIAudioEngineLib_RegisterMe)(void *addonData);
122typedef void (*KODIAudioEngineLib_UnRegisterMe)(void *addonData, void *cbTable);
123typedef void* (*KODIGUILib_RegisterMe)(void *addonData);
124typedef void (*KODIGUILib_UnRegisterMe)(void *addonData, void *cbTable);
125typedef void* (*KODIPVRLib_RegisterMe)(void *addonData);
126typedef void (*KODIPVRLib_UnRegisterMe)(void *addonData, void *cbTable);
127typedef void* (*KODIADSPLib_RegisterMe)(void *addonData);
128typedef void (*KODIADSPLib_UnRegisterMe)(void *addonData, void *cbTable);
129typedef void* (*KODICodecLib_RegisterMe)(void *addonData);
130typedef void (*KODICodecLib_UnRegisterMe)(void *addonData, void *cbTable);
131typedef void* (*KODIINPUTSTREAMLib_RegisterMe)(void *addonData);
132typedef void (*KODIINPUTSTREAMLib_UnRegisterMe)(void *addonData, void *cbTable);
133typedef void* (*KODIPeripheralLib_RegisterMe)(void *addonData);
134typedef void (*KODIPeripheralLib_UnRegisterMe)(void *addonData, void *cbTable);
135typedef void* (*KODIGameLib_RegisterMe)(void *addonData);
136typedef void (*KODIGameLib_UnRegisterMe)(void *addonData, void *cbTable);
137
138typedef struct AddonCB
139{
140 const char* libBasePath; ///< Never, never change this!!!
141 void* addonData;
142 KODIAddOnLib_RegisterMe AddOnLib_RegisterMe;
143 KODIAddOnLib_UnRegisterMe AddOnLib_UnRegisterMe;
144 KODIAudioEngineLib_RegisterMe AudioEngineLib_RegisterMe;
145 KODIAudioEngineLib_UnRegisterMe AudioEngineLib_UnRegisterMe;
146 KODICodecLib_RegisterMe CodecLib_RegisterMe;
147 KODICodecLib_UnRegisterMe CodecLib_UnRegisterMe;
148 KODIGUILib_RegisterMe GUILib_RegisterMe;
149 KODIGUILib_UnRegisterMe GUILib_UnRegisterMe;
150 KODIPVRLib_RegisterMe PVRLib_RegisterMe;
151 KODIPVRLib_UnRegisterMe PVRLib_UnRegisterMe;
152 KODIADSPLib_RegisterMe ADSPLib_RegisterMe;
153 KODIADSPLib_UnRegisterMe ADSPLib_UnRegisterMe;
154 KODIINPUTSTREAMLib_RegisterMe INPUTSTREAMLib_RegisterMe;
155 KODIINPUTSTREAMLib_UnRegisterMe INPUTSTREAMLib_UnRegisterMe;
156 KODIPeripheralLib_RegisterMe PeripheralLib_RegisterMe;
157 KODIPeripheralLib_UnRegisterMe PeripheralLib_UnRegisterMe;
158 KODIGameLib_RegisterMe GameLib_RegisterMe;
159 KODIGameLib_UnRegisterMe GameLib_UnRegisterMe;
160} AddonCB;
161
162namespace ADDON 119namespace ADDON
163{ 120{
164 typedef enum addon_log 121 typedef enum addon_log
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h
index 3ae30a7..a769328 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h
@@ -27,60 +27,29 @@
27#include "xbmc_pvr_types.h" 27#include "xbmc_pvr_types.h"
28#include "libXBMC_addon.h" 28#include "libXBMC_addon.h"
29 29
30#define PVR_HELPER_DLL_NAME XBMC_DLL_NAME("pvr")
31#define PVR_HELPER_DLL XBMC_DLL("pvr")
32
30#define DVD_TIME_BASE 1000000 33#define DVD_TIME_BASE 1000000
31 34
32//! @todo original definition is in DVDClock.h 35//! @todo original definition is in DVDClock.h
33#define DVD_NOPTS_VALUE 0xFFF0000000000000 36#define DVD_NOPTS_VALUE 0xFFF0000000000000
34 37
35namespace KodiAPI
36{
37namespace V1
38{
39namespace PVR
40{
41
42typedef struct CB_PVRLib
43{
44 void (*TransferEpgEntry)(void *userData, const ADDON_HANDLE handle, const EPG_TAG *epgentry);
45 void (*TransferChannelEntry)(void *userData, const ADDON_HANDLE handle, const PVR_CHANNEL *chan);
46 void (*TransferTimerEntry)(void *userData, const ADDON_HANDLE handle, const PVR_TIMER *timer);
47 void (*TransferRecordingEntry)(void *userData, const ADDON_HANDLE handle, const PVR_RECORDING *recording);
48 void (*AddMenuHook)(void *addonData, PVR_MENUHOOK *hook);
49 void (*Recording)(void *addonData, const char *Name, const char *FileName, bool On);
50 void (*TriggerChannelUpdate)(void *addonData);
51 void (*TriggerTimerUpdate)(void *addonData);
52 void (*TriggerRecordingUpdate)(void *addonData);
53 void (*TriggerChannelGroupsUpdate)(void *addonData);
54 void (*TriggerEpgUpdate)(void *addonData, unsigned int iChannelUid);
55
56 void (*TransferChannelGroup)(void *addonData, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP *group);
57 void (*TransferChannelGroupMember)(void *addonData, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER *member);
58
59 void (*FreeDemuxPacket)(void *addonData, DemuxPacket* pPacket);
60 DemuxPacket* (*AllocateDemuxPacket)(void *addonData, int iDataSize);
61
62 void (*ConnectionStateChange)(void* addonData, const char* strConnectionString, PVR_CONNECTION_STATE newState, const char *strMessage);
63 void (*EpgEventStateChange)(void* addonData, EPG_TAG* tag, unsigned int iUniqueChannelId, EPG_EVENT_STATE newState);
64} CB_PVRLib;
65
66} /* namespace PVR */
67} /* namespace V1 */
68} /* namespace KodiAPI */
69
70class CHelper_libXBMC_pvr 38class CHelper_libXBMC_pvr
71{ 39{
72public: 40public:
73 CHelper_libXBMC_pvr(void) 41 CHelper_libXBMC_pvr(void)
74 { 42 {
75 m_Handle = nullptr; 43 m_libXBMC_pvr = NULL;
76 m_Callbacks = nullptr; 44 m_Handle = NULL;
77 } 45 }
78 46
79 ~CHelper_libXBMC_pvr(void) 47 ~CHelper_libXBMC_pvr(void)
80 { 48 {
81 if (m_Handle && m_Callbacks) 49 if (m_libXBMC_pvr)
82 { 50 {
83 m_Handle->PVRLib_UnRegisterMe(m_Handle->addonData, m_Callbacks); 51 PVR_unregister_me(m_Handle, m_Callbacks);
52 dlclose(m_libXBMC_pvr);
84 } 53 }
85 } 54 }
86 55
@@ -91,12 +60,98 @@ public:
91 */ 60 */
92 bool RegisterMe(void* handle) 61 bool RegisterMe(void* handle)
93 { 62 {
94 m_Handle = static_cast<AddonCB*>(handle); 63 m_Handle = handle;
95 if (m_Handle) 64
96 m_Callbacks = (KodiAPI::V1::PVR::CB_PVRLib*)m_Handle->PVRLib_RegisterMe(m_Handle->addonData); 65 std::string libBasePath;
97 if (!m_Callbacks) 66 libBasePath = ((cb_array*)m_Handle)->libPath;
98 fprintf(stderr, "libXBMC_pvr-ERROR: PVRLib_register_me can't get callback table from Kodi !!!\n"); 67 libBasePath += PVR_HELPER_DLL;
99 68
69 m_libXBMC_pvr = dlopen(libBasePath.c_str(), RTLD_LAZY);
70 if (m_libXBMC_pvr == NULL)
71 {
72 fprintf(stderr, "Unable to load %s\n", dlerror());
73 return false;
74 }
75
76 PVR_register_me = (void* (*)(void *HANDLE))
77 dlsym(m_libXBMC_pvr, "PVR_register_me");
78 if (PVR_register_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
79
80 PVR_unregister_me = (void (*)(void* HANDLE, void* CB))
81 dlsym(m_libXBMC_pvr, "PVR_unregister_me");
82 if (PVR_unregister_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
83
84 PVR_transfer_epg_entry = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const EPG_TAG *epgentry))
85 dlsym(m_libXBMC_pvr, "PVR_transfer_epg_entry");
86 if (PVR_transfer_epg_entry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
87
88 PVR_transfer_channel_entry = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const PVR_CHANNEL *chan))
89 dlsym(m_libXBMC_pvr, "PVR_transfer_channel_entry");
90 if (PVR_transfer_channel_entry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
91
92 PVR_transfer_timer_entry = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const PVR_TIMER *timer))
93 dlsym(m_libXBMC_pvr, "PVR_transfer_timer_entry");
94 if (PVR_transfer_timer_entry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
95
96 PVR_transfer_recording_entry = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const PVR_RECORDING *recording))
97 dlsym(m_libXBMC_pvr, "PVR_transfer_recording_entry");
98 if (PVR_transfer_recording_entry == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
99
100 PVR_add_menu_hook = (void (*)(void* HANDLE, void* CB, PVR_MENUHOOK *hook))
101 dlsym(m_libXBMC_pvr, "PVR_add_menu_hook");
102 if (PVR_add_menu_hook == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
103
104 PVR_recording = (void (*)(void* HANDLE, void* CB, const char *Name, const char *FileName, bool On))
105 dlsym(m_libXBMC_pvr, "PVR_recording");
106 if (PVR_recording == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
107
108 PVR_trigger_timer_update = (void (*)(void* HANDLE, void* CB))
109 dlsym(m_libXBMC_pvr, "PVR_trigger_timer_update");
110 if (PVR_trigger_timer_update == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
111
112 PVR_trigger_recording_update = (void (*)(void* HANDLE, void* CB))
113 dlsym(m_libXBMC_pvr, "PVR_trigger_recording_update");
114 if (PVR_trigger_recording_update == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
115
116 PVR_trigger_channel_update = (void (*)(void* HANDLE, void* CB))
117 dlsym(m_libXBMC_pvr, "PVR_trigger_channel_update");
118 if (PVR_trigger_channel_update == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
119
120 PVR_trigger_channel_groups_update = (void (*)(void* HANDLE, void* CB))
121 dlsym(m_libXBMC_pvr, "PVR_trigger_channel_groups_update");
122 if (PVR_trigger_channel_groups_update == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
123
124 PVR_trigger_epg_update = (void (*)(void* HANDLE, void* CB, unsigned int iChannelUid))
125 dlsym(m_libXBMC_pvr, "PVR_trigger_epg_update");
126 if (PVR_trigger_epg_update == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
127
128 PVR_transfer_channel_group = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP *group))
129 dlsym(m_libXBMC_pvr, "PVR_transfer_channel_group");
130 if (PVR_transfer_channel_group == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
131
132 PVR_transfer_channel_group_member = (void (*)(void* HANDLE, void* CB, const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER *member))
133 dlsym(m_libXBMC_pvr, "PVR_transfer_channel_group_member");
134 if (PVR_transfer_channel_group_member == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
135
136#ifdef USE_DEMUX
137 PVR_free_demux_packet = (void (*)(void* HANDLE, void* CB, DemuxPacket* pPacket))
138 dlsym(m_libXBMC_pvr, "PVR_free_demux_packet");
139 if (PVR_free_demux_packet == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
140
141 PVR_allocate_demux_packet = (DemuxPacket* (*)(void* HANDLE, void* CB, int iDataSize))
142 dlsym(m_libXBMC_pvr, "PVR_allocate_demux_packet");
143 if (PVR_allocate_demux_packet == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
144#endif
145
146 PVR_connection_state_change = (void (*)(void* HANDLE, void* CB, const char *strConnectionString, PVR_CONNECTION_STATE newState, const char *strMessage))
147 dlsym(m_libXBMC_pvr, "PVR_connection_state_change");
148 if (PVR_connection_state_change == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
149
150 PVR_epg_event_state_change = (void (*)(void* HANDLE, void* CB, EPG_TAG* tag, unsigned int iUniqueChannelId, EPG_EVENT_STATE newState))
151 dlsym(m_libXBMC_pvr, "PVR_epg_event_state_change");
152 if (PVR_epg_event_state_change == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; }
153
154 m_Callbacks = PVR_register_me(m_Handle);
100 return m_Callbacks != NULL; 155 return m_Callbacks != NULL;
101 } 156 }
102 157
@@ -107,7 +162,7 @@ public:
107 */ 162 */
108 void TransferEpgEntry(const ADDON_HANDLE handle, const EPG_TAG* entry) 163 void TransferEpgEntry(const ADDON_HANDLE handle, const EPG_TAG* entry)
109 { 164 {
110 return m_Callbacks->TransferEpgEntry(m_Handle->addonData, handle, entry); 165 return PVR_transfer_epg_entry(m_Handle, m_Callbacks, handle, entry);
111 } 166 }
112 167
113 /*! 168 /*!
@@ -117,7 +172,7 @@ public:
117 */ 172 */
118 void TransferChannelEntry(const ADDON_HANDLE handle, const PVR_CHANNEL* entry) 173 void TransferChannelEntry(const ADDON_HANDLE handle, const PVR_CHANNEL* entry)
119 { 174 {
120 return m_Callbacks->TransferChannelEntry(m_Handle->addonData, handle, entry); 175 return PVR_transfer_channel_entry(m_Handle, m_Callbacks, handle, entry);
121 } 176 }
122 177
123 /*! 178 /*!
@@ -127,7 +182,7 @@ public:
127 */ 182 */
128 void TransferTimerEntry(const ADDON_HANDLE handle, const PVR_TIMER* entry) 183 void TransferTimerEntry(const ADDON_HANDLE handle, const PVR_TIMER* entry)
129 { 184 {
130 return m_Callbacks->TransferTimerEntry(m_Handle->addonData, handle, entry); 185 return PVR_transfer_timer_entry(m_Handle, m_Callbacks, handle, entry);
131 } 186 }
132 187
133 /*! 188 /*!
@@ -137,7 +192,7 @@ public:
137 */ 192 */
138 void TransferRecordingEntry(const ADDON_HANDLE handle, const PVR_RECORDING* entry) 193 void TransferRecordingEntry(const ADDON_HANDLE handle, const PVR_RECORDING* entry)
139 { 194 {
140 return m_Callbacks->TransferRecordingEntry(m_Handle->addonData, handle, entry); 195 return PVR_transfer_recording_entry(m_Handle, m_Callbacks, handle, entry);
141 } 196 }
142 197
143 /*! 198 /*!
@@ -147,7 +202,7 @@ public:
147 */ 202 */
148 void TransferChannelGroup(const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP* entry) 203 void TransferChannelGroup(const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP* entry)
149 { 204 {
150 return m_Callbacks->TransferChannelGroup(m_Handle->addonData, handle, entry); 205 return PVR_transfer_channel_group(m_Handle, m_Callbacks, handle, entry);
151 } 206 }
152 207
153 /*! 208 /*!
@@ -157,7 +212,7 @@ public:
157 */ 212 */
158 void TransferChannelGroupMember(const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER* entry) 213 void TransferChannelGroupMember(const ADDON_HANDLE handle, const PVR_CHANNEL_GROUP_MEMBER* entry)
159 { 214 {
160 return m_Callbacks->TransferChannelGroupMember(m_Handle->addonData, handle, entry); 215 return PVR_transfer_channel_group_member(m_Handle, m_Callbacks, handle, entry);
161 } 216 }
162 217
163 /*! 218 /*!
@@ -166,7 +221,7 @@ public:
166 */ 221 */
167 void AddMenuHook(PVR_MENUHOOK* hook) 222 void AddMenuHook(PVR_MENUHOOK* hook)
168 { 223 {
169 return m_Callbacks->AddMenuHook(m_Handle->addonData, hook); 224 return PVR_add_menu_hook(m_Handle, m_Callbacks, hook);
170 } 225 }
171 226
172 /*! 227 /*!
@@ -177,7 +232,7 @@ public:
177 */ 232 */
178 void Recording(const char* strRecordingName, const char* strFileName, bool bOn) 233 void Recording(const char* strRecordingName, const char* strFileName, bool bOn)
179 { 234 {
180 return m_Callbacks->Recording(m_Handle->addonData, strRecordingName, strFileName, bOn); 235 return PVR_recording(m_Handle, m_Callbacks, strRecordingName, strFileName, bOn);
181 } 236 }
182 237
183 /*! 238 /*!
@@ -185,7 +240,7 @@ public:
185 */ 240 */
186 void TriggerTimerUpdate(void) 241 void TriggerTimerUpdate(void)
187 { 242 {
188 return m_Callbacks->TriggerTimerUpdate(m_Handle->addonData); 243 return PVR_trigger_timer_update(m_Handle, m_Callbacks);
189 } 244 }
190 245
191 /*! 246 /*!
@@ -193,7 +248,7 @@ public:
193 */ 248 */
194 void TriggerRecordingUpdate(void) 249 void TriggerRecordingUpdate(void)
195 { 250 {
196 return m_Callbacks->TriggerRecordingUpdate(m_Handle->addonData); 251 return PVR_trigger_recording_update(m_Handle, m_Callbacks);
197 } 252 }
198 253
199 /*! 254 /*!
@@ -201,7 +256,7 @@ public:
201 */ 256 */
202 void TriggerChannelUpdate(void) 257 void TriggerChannelUpdate(void)
203 { 258 {
204 return m_Callbacks->TriggerChannelUpdate(m_Handle->addonData); 259 return PVR_trigger_channel_update(m_Handle, m_Callbacks);
205 } 260 }
206 261
207 /*! 262 /*!
@@ -210,7 +265,7 @@ public:
210 */ 265 */
211 void TriggerEpgUpdate(unsigned int iChannelUid) 266 void TriggerEpgUpdate(unsigned int iChannelUid)
212 { 267 {
213 return m_Callbacks->TriggerEpgUpdate(m_Handle->addonData, iChannelUid); 268 return PVR_trigger_epg_update(m_Handle, m_Callbacks, iChannelUid);
214 } 269 }
215 270
216 /*! 271 /*!
@@ -218,7 +273,7 @@ public:
218 */ 273 */
219 void TriggerChannelGroupsUpdate(void) 274 void TriggerChannelGroupsUpdate(void)
220 { 275 {
221 return m_Callbacks->TriggerChannelGroupsUpdate(m_Handle->addonData); 276 return PVR_trigger_channel_groups_update(m_Handle, m_Callbacks);
222 } 277 }
223 278
224#ifdef USE_DEMUX 279#ifdef USE_DEMUX
@@ -228,7 +283,7 @@ public:
228 */ 283 */
229 void FreeDemuxPacket(DemuxPacket* pPacket) 284 void FreeDemuxPacket(DemuxPacket* pPacket)
230 { 285 {
231 return m_Callbacks->FreeDemuxPacket(m_Handle->addonData, pPacket); 286 return PVR_free_demux_packet(m_Handle, m_Callbacks, pPacket);
232 } 287 }
233 288
234 /*! 289 /*!
@@ -238,7 +293,7 @@ public:
238 */ 293 */
239 DemuxPacket* AllocateDemuxPacket(int iDataSize) 294 DemuxPacket* AllocateDemuxPacket(int iDataSize)
240 { 295 {
241 return m_Callbacks->AllocateDemuxPacket(m_Handle->addonData, iDataSize); 296 return PVR_allocate_demux_packet(m_Handle, m_Callbacks, iDataSize);
242 } 297 }
243#endif 298#endif
244 299
@@ -251,7 +306,7 @@ public:
251 */ 306 */
252 void ConnectionStateChange(const char *strConnectionString, PVR_CONNECTION_STATE newState, const char *strMessage) 307 void ConnectionStateChange(const char *strConnectionString, PVR_CONNECTION_STATE newState, const char *strMessage)
253 { 308 {
254 return m_Callbacks->ConnectionStateChange(m_Handle->addonData, strConnectionString, newState, strMessage); 309 return PVR_connection_state_change(m_Handle, m_Callbacks, strConnectionString, newState, strMessage);
255 } 310 }
256 311
257 /*! 312 /*!
@@ -263,10 +318,38 @@ public:
263 */ 318 */
264 void EpgEventStateChange(EPG_TAG *tag, unsigned int iUniqueChannelId, EPG_EVENT_STATE newState) 319 void EpgEventStateChange(EPG_TAG *tag, unsigned int iUniqueChannelId, EPG_EVENT_STATE newState)
265 { 320 {
266 return m_Callbacks->EpgEventStateChange(m_Handle->addonData, tag, iUniqueChannelId, newState); 321 return PVR_epg_event_state_change(m_Handle, m_Callbacks, tag, iUniqueChannelId, newState);
267 } 322 }
268 323
324protected:
325 void* (*PVR_register_me)(void*);
326 void (*PVR_unregister_me)(void*, void*);
327 void (*PVR_transfer_epg_entry)(void*, void*, const ADDON_HANDLE, const EPG_TAG*);
328 void (*PVR_transfer_channel_entry)(void*, void*, const ADDON_HANDLE, const PVR_CHANNEL*);
329 void (*PVR_transfer_timer_entry)(void*, void*, const ADDON_HANDLE, const PVR_TIMER*);
330 void (*PVR_transfer_recording_entry)(void*, void*, const ADDON_HANDLE, const PVR_RECORDING*);
331 void (*PVR_add_menu_hook)(void*, void*, PVR_MENUHOOK*);
332 void (*PVR_recording)(void*, void*, const char*, const char*, bool);
333 void (*PVR_trigger_channel_update)(void*, void*);
334 void (*PVR_trigger_channel_groups_update)(void*, void*);
335 void (*PVR_trigger_timer_update)(void*, void*);
336 void (*PVR_trigger_recording_update)(void* , void*);
337 void (*PVR_trigger_epg_update)(void*, void*, unsigned int);
338 void (*PVR_transfer_channel_group)(void*, void*, const ADDON_HANDLE, const PVR_CHANNEL_GROUP*);
339 void (*PVR_transfer_channel_group_member)(void*, void*, const ADDON_HANDLE, const PVR_CHANNEL_GROUP_MEMBER*);
340#ifdef USE_DEMUX
341 void (*PVR_free_demux_packet)(void*, void*, DemuxPacket*);
342 DemuxPacket* (*PVR_allocate_demux_packet)(void*, void*, int);
343#endif
344 void (*PVR_connection_state_change)(void*, void*, const char*, PVR_CONNECTION_STATE, const char*);
345 void (*PVR_epg_event_state_change)(void*, void*, EPG_TAG*, unsigned int, EPG_EVENT_STATE);
346
269private: 347private:
270 AddonCB* m_Handle; 348 void* m_libXBMC_pvr;
271 KodiAPI::V1::PVR::CB_PVRLib *m_Callbacks; 349 void* m_Handle;
350 void* m_Callbacks;
351 struct cb_array
352 {
353 const char* libPath;
354 };
272}; 355};