summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/KodiConfig.cmake.in1
-rw-r--r--cmake/README.md4
-rw-r--r--cmake/addons/CMakeLists.txt8
-rw-r--r--cmake/addons/depends/common/kodi-platform/kodi-platform.txt2
-rw-r--r--cmake/addons/depends/windows/cmake/mingw/CMakeLists.txt37
-rw-r--r--cmake/addons/depends/windows/cmake/mingw/MinGWConfig.cmake.in3
-rw-r--r--cmake/addons/depends/windows/cmake/mingw/Toolchain_mingw32.cmake.in17
-rw-r--r--cmake/addons/depends/windows/cmake/mingw/mingw.txt1
-rw-r--r--cmake/addons/depends/windows/cmake/mingw/mingw32-cmd.bat.in6
-rw-r--r--cmake/addons/depends/windows/cmake/mingw/noinstall.txt0
-rw-r--r--cmake/addons/depends/windows/cmake/msys/CMakeLists.txt5
-rw-r--r--cmake/addons/depends/windows/cmake/msys/msys.txt1
-rw-r--r--cmake/addons/depends/windows/cmake/msys/noinstall.txt0
-rw-r--r--cmake/cpack/deb/packages/kodi.txt.in2
-rw-r--r--cmake/installdata/common/addons.txt1
-rw-r--r--cmake/installdata/windowsstore/certificates.txt1
-rw-r--r--cmake/modules/FindAML.cmake14
-rw-r--r--cmake/modules/FindAlsa.cmake2
-rw-r--r--cmake/modules/FindCdio.cmake2
-rw-r--r--cmake/modules/FindCpluff.cmake33
-rw-r--r--cmake/modules/FindCurl.cmake34
-rw-r--r--cmake/modules/FindFFMPEG.cmake12
-rw-r--r--cmake/modules/FindLircClient.cmake36
-rw-r--r--cmake/modules/FindMariaDBClient.cmake69
-rw-r--r--cmake/modules/FindMicroHttpd.cmake2
-rw-r--r--cmake/modules/FindMir.cmake2
-rw-r--r--cmake/modules/FindSSH.cmake2
-rw-r--r--cmake/modules/FindWaylandProtocols.cmake24
-rw-r--r--cmake/modules/FindWaylandpp.cmake73
-rw-r--r--cmake/modules/FindXkbcommon.cmake26
-rw-r--r--cmake/platform/freebsd/wayland.cmake18
-rw-r--r--cmake/platform/linux/aml.cmake2
-rw-r--r--cmake/platform/linux/gbm.cmake2
-rw-r--r--cmake/platform/linux/mir.cmake1
-rw-r--r--cmake/platform/linux/rbpi.cmake2
-rw-r--r--cmake/platform/linux/wayland.cmake6
-rw-r--r--cmake/platform/linux/x11.cmake1
-rw-r--r--cmake/scripts/android/ArchSetup.cmake4
-rw-r--r--cmake/scripts/android/Install.cmake31
-rw-r--r--cmake/scripts/common/AddonHelpers.cmake33
-rw-r--r--cmake/scripts/common/ArchSetup.cmake4
-rw-r--r--cmake/scripts/common/HandleDepends.cmake3
-rw-r--r--cmake/scripts/common/Macros.cmake111
-rw-r--r--cmake/scripts/common/Uninstall.cmake36
-rw-r--r--cmake/scripts/freebsd/ArchSetup.cmake5
-rw-r--r--cmake/scripts/ios/ArchSetup.cmake2
-rw-r--r--cmake/scripts/linux/ArchSetup.cmake28
-rw-r--r--cmake/scripts/linux/ExtraTargets.cmake6
-rw-r--r--cmake/scripts/windows/ArchSetup.cmake14
-rw-r--r--cmake/scripts/windows/tools/patch.cmake7
-rw-r--r--cmake/scripts/windowsstore/ArchSetup.cmake14
-rw-r--r--cmake/scripts/windowsstore/Macros.cmake3
-rw-r--r--cmake/scripts/windowsstore/tools/patch.cmake7
-rw-r--r--cmake/treedata/android/subdirs.txt25
-rw-r--r--cmake/treedata/common/games.txt2
-rw-r--r--cmake/treedata/common/retroplayer.txt3
-rw-r--r--cmake/treedata/common/subdirs.txt2
-rw-r--r--cmake/treedata/freebsd/subdirs.txt23
-rw-r--r--cmake/treedata/ios/subdirs.txt34
-rw-r--r--cmake/treedata/linux/subdirs.txt24
-rw-r--r--cmake/treedata/osx/subdirs.txt28
-rw-r--r--cmake/treedata/windows/subdirs.txt28
-rw-r--r--cmake/treedata/windowsstore/subdirs.txt29
63 files changed, 548 insertions, 410 deletions
diff --git a/cmake/KodiConfig.cmake.in b/cmake/KodiConfig.cmake.in
index 58dfc40..2a572e7 100644
--- a/cmake/KodiConfig.cmake.in
+++ b/cmake/KodiConfig.cmake.in
@@ -16,6 +16,7 @@ endif()
16if(NOT @APP_NAME_UC@_DATA_DIR) 16if(NOT @APP_NAME_UC@_DATA_DIR)
17 set(@APP_NAME_UC@_DATA_DIR @APP_DATA_DIR@) 17 set(@APP_NAME_UC@_DATA_DIR @APP_DATA_DIR@)
18endif() 18endif()
19set(APP_RENDER_SYSTEM @APP_RENDER_SYSTEM@)
19if(NOT WIN32) 20if(NOT WIN32)
20 set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} @CXX11_SWITCH@") 21 set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} @CXX11_SWITCH@")
21endif() 22endif()
diff --git a/cmake/README.md b/cmake/README.md
index 0848f2d..c1b953f 100644
--- a/cmake/README.md
+++ b/cmake/README.md
@@ -36,7 +36,7 @@ dependencies have to be installed as explained in
36### Windows 36### Windows
37 37
38For Windows the dependencies can be found in the 38For Windows the dependencies can be found in the
39[Wiki](http://kodi.wiki/view/HOW-TO:Compile_Kodi_for_Windows) (Step 1-4). If not already available on your pc, you should 39[Wiki](https://kodi.wiki/view/HOW-TO:Compile_Kodi_for_Windows#Setting_up_the_build_Environment) (Step 1-4). If not already available on your pc, you should
40install the [Windows Software Development Kit (SDK)](https://dev.windows.com/en-us/downloads/sdk-archive) for your Windows version. This is required for HLSL shader offline compiling with the [Effect-Compiler Tool](https://msdn.microsoft.com/de-de/library/windows/desktop/bb232919(v=vs.85).aspx) (fxc.exe). 40install the [Windows Software Development Kit (SDK)](https://dev.windows.com/en-us/downloads/sdk-archive) for your Windows version. This is required for HLSL shader offline compiling with the [Effect-Compiler Tool](https://msdn.microsoft.com/de-de/library/windows/desktop/bb232919(v=vs.85).aspx) (fxc.exe).
41 41
42On Windows, the CMake based buildsystem requires that the binary dependencies 42On Windows, the CMake based buildsystem requires that the binary dependencies
@@ -113,6 +113,8 @@ cmake --build . -- VERBOSE=1 -j$(nproc) # or: make VERBOSE=1 -j$(nproc)
113``` 113```
114 114
115### Windows with Visual Studio project files 115### Windows with Visual Studio project files
116These instructions are for Visual Studio 2015. If you want to build for Visal Studio 2017, you need to target `Visual Studio 15` instead of `Visual Studio 14`.
117
116#### Build for win32 118#### Build for win32
117``` 119```
118cmake -G "Visual Studio 14" <KODI_SRC> 120cmake -G "Visual Studio 14" <KODI_SRC>
diff --git a/cmake/addons/CMakeLists.txt b/cmake/addons/CMakeLists.txt
index fd1d448..5db5dba 100644
--- a/cmake/addons/CMakeLists.txt
+++ b/cmake/addons/CMakeLists.txt
@@ -1,4 +1,4 @@
1cmake_minimum_required(VERSION 3.1) 1cmake_minimum_required(VERSION 3.3)
2project(kodi-addons) 2project(kodi-addons)
3 3
4list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) 4list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
@@ -403,8 +403,12 @@ foreach(addon ${addons})
403 endif() 403 endif()
404 404
405 # create a forwarding target to the addon-package target 405 # create a forwarding target to the addon-package target
406 get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
407 if(_isMultiConfig)
408 set(config --config $<CONFIG>)
409 endif()
406 add_custom_target(package-${id} 410 add_custom_target(package-${id}
407 COMMAND ${CMAKE_COMMAND} --build ${id}-prefix/src/${id}-build --target addon-package 411 COMMAND ${CMAKE_COMMAND} --build ${id}-prefix/src/${id}-build ${config} --target addon-package
408 DEPENDS ${id}) 412 DEPENDS ${id})
409 add_dependencies(package-addons package-${id}) 413 add_dependencies(package-addons package-${id})
410 414
diff --git a/cmake/addons/depends/common/kodi-platform/kodi-platform.txt b/cmake/addons/depends/common/kodi-platform/kodi-platform.txt
index 1b5c8bf..c553769 100644
--- a/cmake/addons/depends/common/kodi-platform/kodi-platform.txt
+++ b/cmake/addons/depends/common/kodi-platform/kodi-platform.txt
@@ -1 +1 @@
kodi-platform https://github.com/xbmc/kodi-platform 36fb49371dbce49bf470a5bb1fc51b74b4a3612d kodi-platform https://github.com/xbmc/kodi-platform e8574b883ffa2131f2eeb96ff3724d60b21130f7
diff --git a/cmake/addons/depends/windows/cmake/mingw/CMakeLists.txt b/cmake/addons/depends/windows/cmake/mingw/CMakeLists.txt
deleted file mode 100644
index 02d9724..0000000
--- a/cmake/addons/depends/windows/cmake/mingw/CMakeLists.txt
+++ /dev/null
@@ -1,37 +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")
12if(CMAKE_SIZEOF_VOID_P EQUAL 4)
13 set(MINGW_PATH "${MSYS_PATH}/mingw32")
14elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
15 set(MINGW_PATH "${MSYS_PATH}/mingw64")
16endif()
17
18# configure the MinGW toolchain file
19configure_file(${PROJECT_SOURCE_DIR}/Toolchain_mingw32.cmake.in ${CMAKE_INSTALL_PREFIX}/Toolchain_mingw32.cmake @ONLY)
20
21# configure MinGWConfig.cmake
22configure_file(${PROJECT_SOURCE_DIR}/MinGWConfig.cmake.in ${CMAKE_INSTALL_PREFIX}/MinGWConfig.cmake)
23
24# TODO: MinGW GCC 5.3.0-1 comes without cc.exe, Remove this once package is bumped to 5.3.0-p2
25# See https://github.com/Alexpux/MINGW-packages/pull/1034
26if(NOT EXISTS ${MINGW_PATH}/bin/cc.exe)
27 execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${MINGW_PATH}/bin/gcc.exe ${MINGW_PATH}/bin/cc.exe)
28endif()
29
30# configure the MinGW wrapper batch scripts
31generate_mingw32_wrapper("make")
32generate_mingw32_wrapper("gcc")
33generate_mingw32_wrapper("cc")
34generate_mingw32_wrapper("g++")
35generate_mingw32_wrapper("ar")
36generate_mingw32_wrapper("ld")
37generate_mingw32_wrapper("windres")
diff --git a/cmake/addons/depends/windows/cmake/mingw/MinGWConfig.cmake.in b/cmake/addons/depends/windows/cmake/mingw/MinGWConfig.cmake.in
deleted file mode 100644
index 2d6baa7..0000000
--- a/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/cmake/addons/depends/windows/cmake/mingw/Toolchain_mingw32.cmake.in b/cmake/addons/depends/windows/cmake/mingw/Toolchain_mingw32.cmake.in
deleted file mode 100644
index 01d281d..0000000
--- a/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/cmake/addons/depends/windows/cmake/mingw/mingw.txt b/cmake/addons/depends/windows/cmake/mingw/mingw.txt
deleted file mode 100644
index 90aa6ae..0000000
--- a/cmake/addons/depends/windows/cmake/mingw/mingw.txt
+++ /dev/null
@@ -1 +0,0 @@
1mingw
diff --git a/cmake/addons/depends/windows/cmake/mingw/mingw32-cmd.bat.in b/cmake/addons/depends/windows/cmake/mingw/mingw32-cmd.bat.in
deleted file mode 100644
index 44a0ea2..0000000
--- a/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/cmake/addons/depends/windows/cmake/mingw/noinstall.txt b/cmake/addons/depends/windows/cmake/mingw/noinstall.txt
deleted file mode 100644
index e69de29..0000000
--- a/cmake/addons/depends/windows/cmake/mingw/noinstall.txt
+++ /dev/null
diff --git a/cmake/addons/depends/windows/cmake/msys/CMakeLists.txt b/cmake/addons/depends/windows/cmake/msys/CMakeLists.txt
deleted file mode 100644
index 1c0536e..0000000
--- a/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/cmake/addons/depends/windows/cmake/msys/msys.txt b/cmake/addons/depends/windows/cmake/msys/msys.txt
deleted file mode 100644
index 00de9c2..0000000
--- a/cmake/addons/depends/windows/cmake/msys/msys.txt
+++ /dev/null
@@ -1 +0,0 @@
1msys
diff --git a/cmake/addons/depends/windows/cmake/msys/noinstall.txt b/cmake/addons/depends/windows/cmake/msys/noinstall.txt
deleted file mode 100644
index e69de29..0000000
--- a/cmake/addons/depends/windows/cmake/msys/noinstall.txt
+++ /dev/null
diff --git a/cmake/cpack/deb/packages/kodi.txt.in b/cmake/cpack/deb/packages/kodi.txt.in
index 376fe80..90ae9ea 100644
--- a/cmake/cpack/deb/packages/kodi.txt.in
+++ b/cmake/cpack/deb/packages/kodi.txt.in
@@ -15,7 +15,7 @@ PACKAGE_ARCHITECTURE all
15PACKAGE_SECTION video 15PACKAGE_SECTION video
16PACKAGE_PRIORITY optional 16PACKAGE_PRIORITY optional
17PACKAGE_SHLIBDEPS 17PACKAGE_SHLIBDEPS
18PACKAGE_DEPENDS @APP_NAME_LC@-bin (>= @CPACK_DEBIAN_PACKAGE_VERSION@), @APP_NAME_LC@-bin (<< @CPACK_DEBIAN_PACKAGE_VERSION@.1~), curl, libcurl3, mesa-utils, x11-utils, fonts-liberation | ttf-liberation, fonts-dejavu-core | ttf-dejavu-core, python-bluez | python-lightblue, python-imaging, python-simplejson, libass5 | libass4, libgif5 | libgif7, libssh-4 | libssh2-1, libnfs8 | libnfs4 | libnfs1, libbluray1 | libbluray2, libshairplay0, libvorbisfile3, libaacs0, libcec4, libgnutls30 | libgnutls-deb0-28 | libgnutls28 | libgnutls26, libxslt1.1, libyajl2 18PACKAGE_DEPENDS @APP_NAME_LC@-bin (>= @CPACK_DEBIAN_PACKAGE_VERSION@), @APP_NAME_LC@-bin (<< @CPACK_DEBIAN_PACKAGE_VERSION@.1~), curl, libcurl4 | libcurl3, mesa-utils, x11-utils, fonts-liberation | ttf-liberation, fonts-dejavu-core | ttf-dejavu-core, python-bluez | python-lightblue, python-imaging | python-pil, python-simplejson, libass9 | libass5 | libass4, libgif5 | libgif7, libssh-4 | libssh2-1, libnfs8 | libnfs4 | libnfs1, libbluray1 | libbluray2, libshairplay0, libvorbisfile3, libaacs0, libcec4, libgnutls30 | libgnutls-deb0-28 | libgnutls28 | libgnutls26, libxslt1.1, libyajl2
19PACKAGE_RECOMMENDS libvdpau1, libva-intel-vaapi-driver, libva1 19PACKAGE_RECOMMENDS libvdpau1, libva-intel-vaapi-driver, libva1
20PACKAGE_SUGGESTS @APP_NAME_LC@-pvr-mythtv, @APP_NAME_LC@-pvr-vuplus, @APP_NAME_LC@-pvr-vdr-vnsi, @APP_NAME_LC@-pvr-njoy, @APP_NAME_LC@-pvr-nextpvr, @APP_NAME_LC@-pvr-mediaportal-tvserver, @APP_NAME_LC@-pvr-tvheadend-hts, @APP_NAME_LC@-pvr-dvbviewer, @APP_NAME_LC@-pvr-argustv, @APP_NAME_LC@-pvr-iptvsimple, @APP_NAME_LC@-audioencoder-vorbis, @APP_NAME_LC@-audioencoder-flac, @APP_NAME_LC@-audioencoder-lame 20PACKAGE_SUGGESTS @APP_NAME_LC@-pvr-mythtv, @APP_NAME_LC@-pvr-vuplus, @APP_NAME_LC@-pvr-vdr-vnsi, @APP_NAME_LC@-pvr-njoy, @APP_NAME_LC@-pvr-nextpvr, @APP_NAME_LC@-pvr-mediaportal-tvserver, @APP_NAME_LC@-pvr-tvheadend-hts, @APP_NAME_LC@-pvr-dvbviewer, @APP_NAME_LC@-pvr-argustv, @APP_NAME_LC@-pvr-iptvsimple, @APP_NAME_LC@-audioencoder-vorbis, @APP_NAME_LC@-audioencoder-flac, @APP_NAME_LC@-audioencoder-lame
21PACKAGE_BREAKS xbmc (<< 2:14.0~git20141019), xbmc-data, xbmc-standalone 21PACKAGE_BREAKS xbmc (<< 2:14.0~git20141019), xbmc-data, xbmc-standalone
diff --git a/cmake/installdata/common/addons.txt b/cmake/installdata/common/addons.txt
index 9efba38..b8f763c 100644
--- a/cmake/installdata/common/addons.txt
+++ b/cmake/installdata/common/addons.txt
@@ -1,7 +1,6 @@
1addons/audioencoder.kodi.builtin.aac/* 1addons/audioencoder.kodi.builtin.aac/*
2addons/audioencoder.kodi.builtin.wma/* 2addons/audioencoder.kodi.builtin.wma/*
3addons/game.controller.default/* 3addons/game.controller.default/*
4addons/kodi.adsp/*
5addons/kodi.audiodecoder/* 4addons/kodi.audiodecoder/*
6addons/kodi.game/* 5addons/kodi.game/*
7addons/kodi.imagedecoder/* 6addons/kodi.imagedecoder/*
diff --git a/cmake/installdata/windowsstore/certificates.txt b/cmake/installdata/windowsstore/certificates.txt
new file mode 100644
index 0000000..14e74a7
--- /dev/null
+++ b/cmake/installdata/windowsstore/certificates.txt
@@ -0,0 +1 @@
tools/depends/target/openssl/cacert.pem system/certs \ No newline at end of file
diff --git a/cmake/modules/FindAML.cmake b/cmake/modules/FindAML.cmake
index 5b9a859..602f5d9 100644
--- a/cmake/modules/FindAML.cmake
+++ b/cmake/modules/FindAML.cmake
@@ -20,9 +20,23 @@ include(FindPackageHandleStandardArgs)
20find_package_handle_standard_args(AML 20find_package_handle_standard_args(AML
21 REQUIRED_VARS AML_INCLUDE_DIR) 21 REQUIRED_VARS AML_INCLUDE_DIR)
22 22
23include(CheckCSourceCompiles)
24set(CMAKE_REQUIRED_INCLUDES ${AML_INCLUDE_DIR})
25check_c_source_compiles("#include <amcodec/codec.h>
26
27 int main()
28 {
29 int i = VIDEO_DEC_FORMAT_VP9;
30 return 0;
31 }
32 " AML_HAS_VP9)
33
23if(AML_FOUND) 34if(AML_FOUND)
24 set(AML_INCLUDE_DIRS ${AML_INCLUDE_DIR}) 35 set(AML_INCLUDE_DIRS ${AML_INCLUDE_DIR})
25 set(AML_DEFINITIONS -DHAS_LIBAMCODEC=1) 36 set(AML_DEFINITIONS -DHAS_LIBAMCODEC=1)
37 if(AML_HAS_VP9)
38 list(APPEND AML_DEFINITIONS -DHAS_LIBAMCODEC_VP9=1)
39 endif()
26 40
27 if(NOT TARGET AML::AML) 41 if(NOT TARGET AML::AML)
28 add_library(AML::AML UNKNOWN IMPORTED) 42 add_library(AML::AML UNKNOWN IMPORTED)
diff --git a/cmake/modules/FindAlsa.cmake b/cmake/modules/FindAlsa.cmake
index bed4faa..ae05817 100644
--- a/cmake/modules/FindAlsa.cmake
+++ b/cmake/modules/FindAlsa.cmake
@@ -15,7 +15,7 @@
15# ALSA::ALSA - The Alsa library 15# ALSA::ALSA - The Alsa library
16 16
17if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
18 pkg_check_modules(PC_ALSA alsa QUIET) 18 pkg_check_modules(PC_ALSA alsa>=1.0.27 QUIET)
19endif() 19endif()
20 20
21find_path(ALSA_INCLUDE_DIR NAMES alsa/asoundlib.h 21find_path(ALSA_INCLUDE_DIR NAMES alsa/asoundlib.h
diff --git a/cmake/modules/FindCdio.cmake b/cmake/modules/FindCdio.cmake
index 64f4bb8..cce7f2a 100644
--- a/cmake/modules/FindCdio.cmake
+++ b/cmake/modules/FindCdio.cmake
@@ -14,7 +14,7 @@
14# CDIO::CDIO - The cdio library 14# CDIO::CDIO - The cdio library
15 15
16if(PKG_CONFIG_FOUND) 16if(PKG_CONFIG_FOUND)
17 pkg_check_modules(PC_CDIO libcdio libiso9660 QUIET) 17 pkg_check_modules(PC_CDIO libcdio>=0.78 libiso9660 QUIET)
18endif() 18endif()
19 19
20find_path(CDIO_INCLUDE_DIR NAMES cdio/cdio.h 20find_path(CDIO_INCLUDE_DIR NAMES cdio/cdio.h
diff --git a/cmake/modules/FindCpluff.cmake b/cmake/modules/FindCpluff.cmake
index 913d7ae..9e29e17 100644
--- a/cmake/modules/FindCpluff.cmake
+++ b/cmake/modules/FindCpluff.cmake
@@ -6,8 +6,11 @@
6# 6#
7# and link Kodi against the cpluff libraries. 7# and link Kodi against the cpluff libraries.
8 8
9if(NOT WIN32) 9find_package(EXPAT REQUIRED)
10 find_package(EXPAT REQUIRED) 10if(CORE_SYSTEM_NAME MATCHES windows)
11 add_subdirectory(${CMAKE_SOURCE_DIR}/lib/cpluff)
12 set(CPLUFF_LIBRARIES $<TARGET_FILE:libcpluff> ${EXPAT_LIBRARIES})
13else()
11 string(REPLACE ";" " " defines "${CMAKE_C_FLAGS} ${SYSTEM_DEFINES} -I${EXPAT_INCLUDE_DIR}") 14 string(REPLACE ";" " " defines "${CMAKE_C_FLAGS} ${SYSTEM_DEFINES} -I${EXPAT_INCLUDE_DIR}")
12 get_filename_component(expat_dir ${EXPAT_LIBRARY} DIRECTORY) 15 get_filename_component(expat_dir ${EXPAT_LIBRARY} DIRECTORY)
13 set(ldflags "-L${expat_dir}") 16 set(ldflags "-L${expat_dir}")
@@ -31,7 +34,8 @@ if(NOT WIN32)
31 --host=${ARCH} 34 --host=${ARCH}
32 CFLAGS=${defines} 35 CFLAGS=${defines}
33 CPPFLAGS=${cppflags} 36 CPPFLAGS=${cppflags}
34 LDFLAGS=${ldflags}) 37 LDFLAGS=${ldflags}
38 BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libcpluff.a)
35 ExternalProject_Add_Step(libcpluff autoreconf 39 ExternalProject_Add_Step(libcpluff autoreconf
36 DEPENDEES download update patch 40 DEPENDEES download update patch
37 DEPENDERS configure 41 DEPENDERS configure
@@ -39,24 +43,9 @@ if(NOT WIN32)
39 COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif 43 COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
40 WORKING_DIRECTORY <SOURCE_DIR>) 44 WORKING_DIRECTORY <SOURCE_DIR>)
41 45
42 set(ldflags "${ldflags};-lexpat") 46 set(CPLUFF_LIBRARIES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/lib/libcpluff.a ${EXPAT_LIBRARIES})
43 core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/lib/libcpluff.a
44 system/libcpluff libcpluff extras "${ldflags}")
45 set(CPLUFF_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/include)
46 set(CPLUFF_FOUND 1)
47 mark_as_advanced(CPLUFF_INCLUDE_DIRS CPLUFF_FOUND)
48else()
49 find_path(CPLUFF_INCLUDE_DIR cpluff.h)
50
51 include(FindPackageHandleStandardArgs)
52 find_package_handle_standard_args(Cpluff
53 REQUIRED_VARS CPLUFF_INCLUDE_DIR)
54
55 if(CPLUFF_FOUND)
56 set(CPLUFF_INCLUDE_DIRS ${CPLUFF_INCLUDE_DIR})
57 endif()
58 mark_as_advanced(CPLUFF_INCLUDE_DIRS CPLUFF_FOUND)
59
60 add_custom_target(libcpluff)
61endif() 47endif()
48set(CPLUFF_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/include)
49set(CPLUFF_FOUND 1)
50mark_as_advanced(CPLUFF_INCLUDE_DIRS CPLUFF_LIBRARIES)
62set_target_properties(libcpluff PROPERTIES FOLDER "External Projects") 51set_target_properties(libcpluff PROPERTIES FOLDER "External Projects")
diff --git a/cmake/modules/FindCurl.cmake b/cmake/modules/FindCurl.cmake
index d0759a6..17c1f01 100644
--- a/cmake/modules/FindCurl.cmake
+++ b/cmake/modules/FindCurl.cmake
@@ -34,40 +34,6 @@ if(CURL_FOUND)
34 set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR}) 34 set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR})
35 set(CURL_LIBRARIES ${CURL_LIBRARY}) 35 set(CURL_LIBRARIES ${CURL_LIBRARY})
36 36
37 # Check whether OpenSSL inside libcurl is static.
38 if(UNIX)
39 if(NOT DEFINED HAS_CURL_STATIC)
40 get_filename_component(CURL_LIBRARY_DIR ${CURL_LIBRARY} DIRECTORY)
41 find_soname(CURL REQUIRED)
42
43 if(APPLE)
44 set(libchecker nm)
45 set(searchpattern "T [_]?CRYPTO_set_locking_call")
46 else()
47 set(libchecker readelf -s)
48 set(searchpattern "CRYPTO_set_locking_call")
49 endif()
50 execute_process(
51 COMMAND ${libchecker} ${CURL_LIBRARY_DIR}/${CURL_SONAME}
52 COMMAND grep -Eq ${searchpattern}
53 RESULT_VARIABLE HAS_CURL_STATIC)
54 unset(libchecker)
55 unset(searchpattern)
56 if(HAS_CURL_STATIC EQUAL 0)
57 set(HAS_CURL_STATIC TRUE)
58 else()
59 set(HAS_CURL_STATIC FALSE)
60 endif()
61 set(HAS_CURL_STATIC ${HAS_CURL_STATIC} CACHE INTERNAL
62 "OpenSSL is statically linked into Curl")
63 message(STATUS "OpenSSL is statically linked into Curl: ${HAS_CURL_STATIC}")
64 endif()
65 endif()
66
67 if(HAS_CURL_STATIC)
68 set(CURL_DEFINITIONS -DHAS_CURL_STATIC=1)
69 endif()
70
71 if(NOT TARGET Curl::Curl) 37 if(NOT TARGET Curl::Curl)
72 add_library(Curl::Curl UNKNOWN IMPORTED) 38 add_library(Curl::Curl UNKNOWN IMPORTED)
73 set_target_properties(Curl::Curl PROPERTIES 39 set_target_properties(Curl::Curl PROPERTIES
diff --git a/cmake/modules/FindFFMPEG.cmake b/cmake/modules/FindFFMPEG.cmake
index 689cf28..e2fbe8d 100644
--- a/cmake/modules/FindFFMPEG.cmake
+++ b/cmake/modules/FindFFMPEG.cmake
@@ -67,7 +67,6 @@ endif()
67# external FFMPEG 67# external FFMPEG
68if(NOT ENABLE_INTERNAL_FFMPEG OR KODI_DEPENDSBUILD) 68if(NOT ENABLE_INTERNAL_FFMPEG OR KODI_DEPENDSBUILD)
69 if(FFMPEG_PATH) 69 if(FFMPEG_PATH)
70 set(ENV{PKG_CONFIG_PATH} "${FFMPEG_PATH}/lib/pkgconfig")
71 list(APPEND CMAKE_PREFIX_PATH ${FFMPEG_PATH}) 70 list(APPEND CMAKE_PREFIX_PATH ${FFMPEG_PATH})
72 endif() 71 endif()
73 72
@@ -236,8 +235,6 @@ if(NOT FFMPEG_FOUND)
236 -DCROSSCOMPILING=${CMAKE_CROSSCOMPILING} 235 -DCROSSCOMPILING=${CMAKE_CROSSCOMPILING}
237 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} 236 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
238 -DOS=${OS} 237 -DOS=${OS}
239 -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
240 -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
241 -DCMAKE_AR=${CMAKE_AR}) 238 -DCMAKE_AR=${CMAKE_AR})
242 endif() 239 endif()
243 240
@@ -253,6 +250,9 @@ if(NOT FFMPEG_FOUND)
253 -DCORE_PLATFORM_NAME=${CORE_PLATFORM_NAME_LC} 250 -DCORE_PLATFORM_NAME=${CORE_PLATFORM_NAME_LC}
254 -DCPU=${CPU} 251 -DCPU=${CPU}
255 -DENABLE_NEON=${ENABLE_NEON} 252 -DENABLE_NEON=${ENABLE_NEON}
253 -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
254 -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
255 -DENABLE_CCACHE=${ENABLE_CCACHE}
256 -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} 256 -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
257 -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} 257 -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
258 -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS} 258 -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
@@ -264,8 +264,12 @@ if(NOT FFMPEG_FOUND)
264 ${CMAKE_SOURCE_DIR}/tools/depends/target/ffmpeg/FindGnuTls.cmake 264 ${CMAKE_SOURCE_DIR}/tools/depends/target/ffmpeg/FindGnuTls.cmake
265 <SOURCE_DIR>) 265 <SOURCE_DIR>)
266 266
267 find_program(BASH_COMMAND bash)
268 if(NOT BASH_COMMAND)
269 message(FATAL_ERROR "Internal FFmpeg requires bash.")
270 endif()
267 file(WRITE ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg/ffmpeg-link-wrapper 271 file(WRITE ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg/ffmpeg-link-wrapper
268"#!/bin/bash 272"#!${BASH_COMMAND}
269if [[ $@ == *${APP_NAME_LC}.bin* || $@ == *${APP_NAME_LC}${APP_BINARY_SUFFIX}* || $@ == *${APP_NAME_LC}.so* || $@ == *${APP_NAME_LC}-test* ]] 273if [[ $@ == *${APP_NAME_LC}.bin* || $@ == *${APP_NAME_LC}${APP_BINARY_SUFFIX}* || $@ == *${APP_NAME_LC}.so* || $@ == *${APP_NAME_LC}-test* ]]
270then 274then
271 avformat=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libavcodec` 275 avformat=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libavcodec`
diff --git a/cmake/modules/FindLircClient.cmake b/cmake/modules/FindLircClient.cmake
new file mode 100644
index 0000000..528c38e
--- /dev/null
+++ b/cmake/modules/FindLircClient.cmake
@@ -0,0 +1,36 @@
1# FindLircClient
2# -----------
3# Finds the liblirc_client library
4#
5# This will will define the following variables::
6#
7# LIRCCLIENT_FOUND - if false, do not try to link to lirc_client
8# LIRCCLIENT_INCLUDE_DIRS - where to find lirc/lirc_client.h
9# LIRCCLIENT_LIBRARYS - the library to link against
10# LIRCCLIENT_DEFINITIONS - the lirc definitions
11
12if(PKG_CONFIG_FOUND)
13 pkg_check_modules(PC_LIRC lirc QUIET)
14endif()
15
16find_path(LIRCCLIENT_INCLUDE_DIR lirc/lirc_client.h PATHS ${PC_LIRC_INCLUDEDIR})
17find_library(LIRCCLIENT_LIBRARY lirc_client PATHS ${PC_LIRC_LIBDIR})
18
19include(FindPackageHandleStandardArgs)
20find_package_handle_standard_args(LircClient
21 REQUIRED_VARS LIRCCLIENT_LIBRARY LIRCCLIENT_INCLUDE_DIR)
22
23if(LIRCCLIENT_FOUND)
24 set(LIRCCLIENT_LIBRARIES ${LIRCCLIENT_LIBRARY})
25 set(LIRCCLIENT_INCLUDE_DIRS ${LIRCCLIENT_INCLUDE_DIR})
26 set(LIRCCLIENT_DEFINITIONS -DHAS_LIRC=1)
27
28 if(NOT TARGET LIRCCLIENT::LIRCCLIENT)
29 add_library(LIRCCLIENT::LIRCCLIENT UNKNOWN IMPORTED)
30 set_target_properties(LIRCCLIENT::LIRCCLIENT PROPERTIES
31 IMPORTED_LOCATION "${LIRCCLIENT_LIBRARYS}"
32 INTERFACE_INCLUDE_DIRECTORIES "${LIRCCLIENT_INCLUDE_DIRS}")
33 endif()
34endif()
35
36mark_as_advanced(LIRCCLIENT_LIBRARY LIRCCLIENT_INCLUDE_DIR) \ No newline at end of file
diff --git a/cmake/modules/FindMariaDBClient.cmake b/cmake/modules/FindMariaDBClient.cmake
new file mode 100644
index 0000000..1e5e736
--- /dev/null
+++ b/cmake/modules/FindMariaDBClient.cmake
@@ -0,0 +1,69 @@
1#.rst:
2# FindMariaDBClient
3# ---------------
4# Finds the MariaDBClient library
5#
6# This will will define the following variables::
7#
8# MARIADBCLIENT_FOUND - system has MariaDBClient
9# MARIADBCLIENT_INCLUDE_DIRS - the MariaDBClient include directory
10# MARIADBCLIENT_LIBRARIES - the MariaDBClient libraries
11# MARIADBCLIENT_DEFINITIONS - the MariaDBClient compile definitions
12#
13# and the following imported targets::
14#
15# MariaDBClient::MariaDBClient - The MariaDBClient library
16
17# Don't find system wide installed version on Windows
18if(WIN32)
19 set(EXTRA_FIND_ARGS NO_SYSTEM_ENVIRONMENT_PATH)
20else()
21 set(EXTRA_FIND_ARGS)
22endif()
23
24find_path(MARIADBCLIENT_INCLUDE_DIR NAMES mariadb/mysql.h mariadb/server/mysql.h)
25find_library(MARIADBCLIENT_LIBRARY_RELEASE NAMES mariadbclient libmariadb
26 PATH_SUFFIXES mariadb
27 ${EXTRA_FIND_ARGS})
28find_library(MARIADBCLIENT_LIBRARY_DEBUG NAMES mariadbclient libmariadb
29 PATH_SUFFIXES mariadb
30 ${EXTRA_FIND_ARGS})
31
32if(MARIADBCLIENT_INCLUDE_DIR AND EXISTS "${MARIADBCLIENT_INCLUDE_DIR}/mariadb/mariadb_version.h")
33 file(STRINGS "${MARIADBCLIENT_INCLUDE_DIR}/mariadb/mariadb_version.h" mariadb_version_str REGEX "^#define[\t ]+MARIADB_CLIENT_VERSION_STR[\t ]+\".*\".*")
34 string(REGEX REPLACE "^#define[\t ]+MARIADB_CLIENT_VERSION_STR[\t ]+\"([^\"]+)\".*" "\\1" MARIADBCLIENT_VERSION_STRING "${mariadb_version_str}")
35 unset(mariadb_version_str)
36endif()
37
38include(SelectLibraryConfigurations)
39select_library_configurations(MARIADBCLIENT)
40
41include(FindPackageHandleStandardArgs)
42find_package_handle_standard_args(MariaDBClient
43 REQUIRED_VARS MARIADBCLIENT_LIBRARY MARIADBCLIENT_INCLUDE_DIR
44 VERSION_VAR MARIADBCLIENT_VERSION_STRING)
45
46if(MARIADBCLIENT_FOUND)
47 set(MARIADBCLIENT_LIBRARIES ${MARIADBCLIENT_LIBRARY})
48 set(MARIADBCLIENT_INCLUDE_DIRS ${MARIADBCLIENT_INCLUDE_DIR})
49 set(MARIADBCLIENT_DEFINITIONS -DHAS_MARIADB=1)
50
51 if(NOT TARGET MariaDBClient::MariaDBClient)
52 add_library(MariaDBClient::MariaDBClient UNKNOWN IMPORTED)
53 if(MARIADBCLIENT_LIBRARY_RELEASE)
54 set_target_properties(MariaDBClient::MariaDBClient PROPERTIES
55 IMPORTED_CONFIGURATIONS RELEASE
56 IMPORTED_LOCATION "${MARIADBCLIENT_LIBRARY_RELEASE}")
57 endif()
58 if(MARIADBCLIENT_LIBRARY_DEBUG)
59 set_target_properties(MariaDBClient::MariaDBClient PROPERTIES
60 IMPORTED_CONFIGURATIONS DEBUG
61 IMPORTED_LOCATION "${MARIADBCLIENT_LIBRARY_DEBUG}")
62 endif()
63 set_target_properties(MariaDBClient::MariaDBClient PROPERTIES
64 INTERFACE_INCLUDE_DIRECTORIES "${MARIADBCLIENT_INCLUDE_DIR}"
65 INTERFACE_COMPILE_DEFINITIONS HAS_MARIADB=1)
66 endif()
67endif()
68
69mark_as_advanced(MARIADBCLIENT_INCLUDE_DIR MARIADBCLIENT_LIBRARY)
diff --git a/cmake/modules/FindMicroHttpd.cmake b/cmake/modules/FindMicroHttpd.cmake
index 232f8e5..d04878c 100644
--- a/cmake/modules/FindMicroHttpd.cmake
+++ b/cmake/modules/FindMicroHttpd.cmake
@@ -15,7 +15,7 @@
15# MicroHttpd::MicroHttpd - The MicroHttpd library 15# MicroHttpd::MicroHttpd - The MicroHttpd library
16 16
17if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
18 pkg_check_modules(PC_MICROHTTPD libmicrohttpd>=0.4 QUIET) 18 pkg_check_modules(PC_MICROHTTPD libmicrohttpd>=0.9.40 QUIET)
19endif() 19endif()
20 20
21find_path(MICROHTTPD_INCLUDE_DIR NAMES microhttpd.h 21find_path(MICROHTTPD_INCLUDE_DIR NAMES microhttpd.h
diff --git a/cmake/modules/FindMir.cmake b/cmake/modules/FindMir.cmake
index 47a441c..e66ff02 100644
--- a/cmake/modules/FindMir.cmake
+++ b/cmake/modules/FindMir.cmake
@@ -21,7 +21,7 @@ find_library(MIR_LIBRARY NAMES mirclient
21 PATHS ${PC_MIR_LIBRARIES} ${PC_MIR_LIBRARY_DIRS}) 21 PATHS ${PC_MIR_LIBRARIES} ${PC_MIR_LIBRARY_DIRS})
22 22
23include (FindPackageHandleStandardArgs) 23include (FindPackageHandleStandardArgs)
24find_package_handle_standard_args (MIR 24find_package_handle_standard_args (Mir
25 REQUIRED_VARS MIR_LIBRARY MIR_INCLUDE_DIR) 25 REQUIRED_VARS MIR_LIBRARY MIR_INCLUDE_DIR)
26 26
27if (MIR_FOUND) 27if (MIR_FOUND)
diff --git a/cmake/modules/FindSSH.cmake b/cmake/modules/FindSSH.cmake
index ee65210..bf3837e 100644
--- a/cmake/modules/FindSSH.cmake
+++ b/cmake/modules/FindSSH.cmake
@@ -15,7 +15,7 @@
15# SSH::SSH - The SSH library 15# SSH::SSH - The SSH library
16 16
17if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
18 pkg_check_modules(PC_SSH libssh QUIET) 18 pkg_check_modules(PC_SSH libssh>=0.6 QUIET)
19endif() 19endif()
20 20
21find_path(SSH_INCLUDE_DIR NAMES libssh/libssh.h 21find_path(SSH_INCLUDE_DIR NAMES libssh/libssh.h
diff --git a/cmake/modules/FindWaylandProtocols.cmake b/cmake/modules/FindWaylandProtocols.cmake
new file mode 100644
index 0000000..0b96ff0
--- /dev/null
+++ b/cmake/modules/FindWaylandProtocols.cmake
@@ -0,0 +1,24 @@
1# FindWaylandProtocols
2# --------------------
3# Find wayland-protocols
4#
5# This will will define the following variables::
6#
7# WAYLAND_PROTOCOLS_DIR - directory containing the additional Wayland protocols
8# from the wayland-protocols package
9
10pkg_check_modules(PC_WAYLAND_PROTOCOLS wayland-protocols)
11if(PC_WAYLAND_PROTOCOLS_FOUND)
12 pkg_get_variable(WAYLAND_PROTOCOLS_DIR wayland-protocols pkgdatadir)
13endif()
14
15# Promote to cache variables so all code can access it
16set(WAYLAND_PROTOCOLS_DIR ${WAYLAND_PROTOCOLS_DIR} CACHE INTERNAL "")
17
18include(FindPackageHandleStandardArgs)
19find_package_handle_standard_args(WaylandProtocols
20 REQUIRED_VARS
21 PC_WAYLAND_PROTOCOLS_FOUND
22 WAYLAND_PROTOCOLS_DIR
23 VERSION_VAR
24 PC_WAYLAND_PROTOCOLS_VERSION)
diff --git a/cmake/modules/FindWaylandpp.cmake b/cmake/modules/FindWaylandpp.cmake
index 8a1cd74..336e613 100644
--- a/cmake/modules/FindWaylandpp.cmake
+++ b/cmake/modules/FindWaylandpp.cmake
@@ -1,64 +1,39 @@
1# FindWaylandpp 1# FindWaylandpp
2# ----------- 2# -------------
3# Finds the waylandpp library 3# Finds the waylandpp library
4# 4#
5# This will will define the following variables:: 5# This will will define the following variables::
6# 6#
7# WAYLANDPP_FOUND - the system has Wayland 7# WAYLANDPP_FOUND - the system has waylandpp
8# WAYLANDPP_INCLUDE_DIRS - the Wayland include directory 8# WAYLANDPP_INCLUDE_DIRS - the waylandpp include directory
9# WAYLANDPP_LIBRARIES - the Wayland libraries 9# WAYLANDPP_LIBRARIES - the waylandpp libraries
10# WAYLANDPP_DEFINITIONS - the Wayland definitions 10# WAYLANDPP_DEFINITIONS - the waylandpp definitions
11 11# WAYLANDPP_SCANNER - path to wayland-scanner++
12 12
13if(PKG_CONFIG_FOUND) 13pkg_check_modules(WAYLANDPP wayland-client++ wayland-egl++ wayland-cursor++)
14 pkg_check_modules(PC_WAYLANDPP wayland-client++>=0.1 wayland-egl++ wayland-cursor++ wayland-scanner++ QUIET) 14pkg_check_modules(PC_WAYLANDPP_SCANNER wayland-scanner++)
15 pkg_check_modules(PC_WAYLAND_PROTOCOLS wayland-protocols>=1.7 QUIET) 15if(WAYLANDPP_FOUND)
16 # TODO: Remove check when CMake minimum version is bumped globally 16 pkg_get_variable(PC_WAYLANDPP_PKGDATADIR wayland-client++ pkgdatadir)
17 if(CMAKE_VERSION VERSION_EQUAL 3.4.0 OR CMAKE_VERSION VERSION_GREATER 3.4.0) 17endif()
18 if(PC_WAYLANDPP_FOUND) 18if(PC_WAYLANDPP_SCANNER_FOUND)
19 pkg_get_variable(PC_WAYLANDPP_SCANNER wayland-scanner++ wayland_scannerpp) 19 pkg_get_variable(PC_WAYLANDPP_SCANNER wayland-scanner++ wayland_scannerpp)
20 endif()
21 if(PC_WAYLAND_PROTOCOLS_FOUND)
22 pkg_get_variable(PC_WAYLAND_PROTOCOLS_DIR wayland-protocols pkgdatadir)
23 endif()
24 endif()
25endif() 20endif()
26 21
27find_path(WAYLANDPP_INCLUDE_DIR NAMES wayland-client.hpp 22# Promote to cache variables so all code can access it
28 PATHS ${PC_WAYLANDPP_INCLUDE_DIRS}) 23set(WAYLANDPP_PROTOCOLS_DIR "${PC_WAYLANDPP_PKGDATADIR}/protocols" CACHE INTERNAL "")
29
30find_library(WAYLANDPP_CLIENT_LIBRARY NAMES wayland-client++
31 PATHS ${PC_WAYLANDPP_LIBRARIES} ${PC_WAYLANDPP_LIBRARY_DIRS})
32
33find_library(WAYLANDPP_CURSOR_LIBRARY NAMES wayland-cursor++
34 PATHS ${PC_WAYLANDPP_LIBRARIES} ${PC_WAYLANDPP_LIBRARY_DIRS})
35
36find_library(WAYLANDPP_EGL_LIBRARY NAMES wayland-egl++
37 PATHS ${PC_WAYLANDPP_LIBRARIES} ${PC_WAYLANDPP_LIBRARY_DIRS})
38
39find_program(WAYLANDPP_SCANNER NAMES wayland-scanner++
40 PATHS ${PC_WAYLANDPP_SCANNER})
41 24
42find_path(WAYLAND_PROTOCOLS_DIR NAMES unstable/xdg-shell/xdg-shell-unstable-v6.xml 25# wayland-scanner++ is from native/host system in case of cross-compilation, so
43 PATHS ${PC_WAYLAND_PROTOCOLS_DIR} 26# it's ok if we don't find it with pkgconfig
44 DOC "Directory containing additional Wayland protocols") 27find_program(WAYLANDPP_SCANNER wayland-scanner++ PATHS ${PC_WAYLANDPP_SCANNER})
45 28
46include (FindPackageHandleStandardArgs) 29include (FindPackageHandleStandardArgs)
47find_package_handle_standard_args (Waylandpp 30find_package_handle_standard_args (Waylandpp
48 REQUIRED_VARS 31 REQUIRED_VARS
49 WAYLANDPP_INCLUDE_DIR 32 WAYLANDPP_FOUND
50 WAYLANDPP_CLIENT_LIBRARY
51 WAYLANDPP_CURSOR_LIBRARY
52 WAYLANDPP_EGL_LIBRARY
53 WAYLANDPP_SCANNER 33 WAYLANDPP_SCANNER
54 WAYLAND_PROTOCOLS_DIR
55 VERSION_VAR 34 VERSION_VAR
56 PC_WAYLANDPP_wayland-client++_VERSION) 35 WAYLANDPP_wayland-client++_VERSION)
57
58if (WAYLANDPP_FOUND)
59 set(WAYLANDPP_LIBRARIES ${WAYLANDPP_CLIENT_LIBRARY} ${WAYLANDPP_CURSOR_LIBRARY} ${WAYLANDPP_EGL_LIBRARY})
60 set(WAYLANDPP_INCLUDE_DIRS ${PC_WAYLANDPP_INCLUDE_DIRS})
61 set(WAYLANDPP_DEFINITIONS -DHAVE_WAYLAND=1)
62endif()
63 36
64mark_as_advanced (WAYLANDPP_CLIENT_LIBRARY WAYLANDPP_CURSOR_LIBRARY WAYLANDPP_EGL_LIBRARY WAYLANDPP_INCLUDE_DIR) 37set(WAYLANDPP_DEFINITIONS -DHAVE_WAYLAND=1)
38# Also pass on library directories
39set(WAYLANDPP_LIBRARIES ${WAYLANDPP_LDFLAGS})
diff --git a/cmake/modules/FindXkbcommon.cmake b/cmake/modules/FindXkbcommon.cmake
index 88c6121..2a84fe5 100644
--- a/cmake/modules/FindXkbcommon.cmake
+++ b/cmake/modules/FindXkbcommon.cmake
@@ -9,27 +9,13 @@
9# XKBCOMMON_LIBRARIES - the libxkbcommon libraries 9# XKBCOMMON_LIBRARIES - the libxkbcommon libraries
10# XKBCOMMON_DEFINITIONS - the libxkbcommon definitions 10# XKBCOMMON_DEFINITIONS - the libxkbcommon definitions
11 11
12 12pkg_check_modules (XKBCOMMON xkbcommon)
13if(PKG_CONFIG_FOUND)
14 pkg_check_modules (PC_XKBCOMMON xkbcommon QUIET)
15endif()
16
17find_path(XKBCOMMON_INCLUDE_DIR NAMES xkbcommon/xkbcommon.h
18 PATHS ${PC_XKBCOMMON_INCLUDE_DIRS})
19
20find_library(XKBCOMMON_LIBRARY NAMES xkbcommon
21 PATHS ${PC_XKBCOMMON_LIBRARIES} ${PC_XKBCOMMON_LIBRARY_DIRS})
22 13
23include (FindPackageHandleStandardArgs) 14include (FindPackageHandleStandardArgs)
24find_package_handle_standard_args (XKBCOMMON 15find_package_handle_standard_args (Xkbcommon
25 REQUIRED_VARS 16 REQUIRED_VARS
26 XKBCOMMON_INCLUDE_DIR 17 XKBCOMMON_FOUND)
27 XKBCOMMON_LIBRARY)
28
29if (XKBCOMMON_FOUND)
30 set(XKBCOMMON_LIBRARIES ${XKBCOMMON_LIBRARY})
31 set(XKBCOMMON_INCLUDE_DIRS ${PC_XKBCOMMON_INCLUDE_DIRS})
32 set(XKBCOMMON_DEFINITIONS -DHAVE_XKBCOMMON=1)
33endif()
34 18
35mark_as_advanced (XKBCOMMON_LIBRARY XKBCOMMON_INCLUDE_DIR) \ No newline at end of file 19set(XKBCOMMON_DEFINITIONS -DHAVE_XKBCOMMON=1)
20set(XKBCOMMON_LIBRARIES ${XKBCOMMON_LDFLAGS})
21set(XKBCOMMON_INCLUDE_DIRS ${XKBCOMMON_INCLUDEDIR})
diff --git a/cmake/platform/freebsd/wayland.cmake b/cmake/platform/freebsd/wayland.cmake
index 55fbd8a..c9c1d00 100644
--- a/cmake/platform/freebsd/wayland.cmake
+++ b/cmake/platform/freebsd/wayland.cmake
@@ -1,17 +1 @@
1set(PLATFORM_REQUIRED_DEPS EGL Waylandpp LibDRM Xkbcommon) include(cmake/platform/linux/wayland.cmake)
2set(PLATFORM_OPTIONAL_DEPS VAAPI)
3
4set(WAYLAND_RENDER_SYSTEM "" CACHE STRING "Render system to use with Wayland: \"gl\" or \"gles\"")
5
6if(WAYLAND_RENDER_SYSTEM STREQUAL "gl")
7 list(APPEND PLATFORM_REQUIRED_DEPS OpenGl)
8elseif(WAYLAND_RENDER_SYSTEM STREQUAL "gles")
9 list(APPEND PLATFORM_REQUIRED_DEPS OpenGLES)
10else()
11 message(SEND_ERROR "You need to decide whether you want to use GL- or GLES-based rendering in combination with the Wayland windowing system. Please set WAYLAND_RENDER_SYSTEM to either \"gl\" or \"gles\". For normal desktop systems, you will usually want to use \"gl\".")
12endif()
13
14set(PLATFORM_GLOBAL_TARGET_DEPS generate-wayland-extra-protocols)
15set(WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}")
16# for wayland-extra-protocols.hpp
17include_directories("${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}")
diff --git a/cmake/platform/linux/aml.cmake b/cmake/platform/linux/aml.cmake
index c1d464d..82e242b 100644
--- a/cmake/platform/linux/aml.cmake
+++ b/cmake/platform/linux/aml.cmake
@@ -1 +1,3 @@
1set(PLATFORM_REQUIRED_DEPS OpenGLES AML EGL) 1set(PLATFORM_REQUIRED_DEPS OpenGLES AML EGL)
2set(APP_RENDER_SYSTEM gles)
3list(APPEND PLATFORM_DEFINES -DMESA_EGL_NO_X11_HEADERS)
diff --git a/cmake/platform/linux/gbm.cmake b/cmake/platform/linux/gbm.cmake
index 6a9165a..d8e73d0 100644
--- a/cmake/platform/linux/gbm.cmake
+++ b/cmake/platform/linux/gbm.cmake
@@ -1,2 +1,4 @@
1set(PLATFORM_REQUIRED_DEPS OpenGLES EGL GBM LibDRM) 1set(PLATFORM_REQUIRED_DEPS OpenGLES EGL GBM LibDRM)
2set(PLATFORM_OPTIONAL_DEPS VAAPI) 2set(PLATFORM_OPTIONAL_DEPS VAAPI)
3set(APP_RENDER_SYSTEM gles)
4list(APPEND PLATFORM_DEFINES -DMESA_EGL_NO_X11_HEADERS -DPLATFORM_SETTINGS_FILE=gbm.xml)
diff --git a/cmake/platform/linux/mir.cmake b/cmake/platform/linux/mir.cmake
index 7f20da8..0e672a9 100644
--- a/cmake/platform/linux/mir.cmake
+++ b/cmake/platform/linux/mir.cmake
@@ -1,2 +1,3 @@
1set(PLATFORM_REQUIRED_DEPS OpenGl EGL Mir LibDRM) 1set(PLATFORM_REQUIRED_DEPS OpenGl EGL Mir LibDRM)
2set(PLATFORM_OPTIONAL_DEPS VAAPI OpenGLES) 2set(PLATFORM_OPTIONAL_DEPS VAAPI OpenGLES)
3set(APP_RENDER_SYSTEM gl)
diff --git a/cmake/platform/linux/rbpi.cmake b/cmake/platform/linux/rbpi.cmake
index 4899857..fa9a1dc 100644
--- a/cmake/platform/linux/rbpi.cmake
+++ b/cmake/platform/linux/rbpi.cmake
@@ -1 +1,3 @@
1set(PLATFORM_REQUIRED_DEPS OpenGLES EGL MMAL) 1set(PLATFORM_REQUIRED_DEPS OpenGLES EGL MMAL)
2set(APP_RENDER_SYSTEM gles)
3list(APPEND PLATFORM_DEFINES -D_ARMEL -DTARGET_RASPBERRY_PI)
diff --git a/cmake/platform/linux/wayland.cmake b/cmake/platform/linux/wayland.cmake
index 3934834..f42dbf5 100644
--- a/cmake/platform/linux/wayland.cmake
+++ b/cmake/platform/linux/wayland.cmake
@@ -1,12 +1,14 @@
1set(PLATFORM_REQUIRED_DEPS EGL Waylandpp LibDRM Xkbcommon) 1set(PLATFORM_REQUIRED_DEPS EGL WaylandProtocols>=1.7 Waylandpp>=0.2.2 LibDRM Xkbcommon>=0.4.1)
2set(PLATFORM_OPTIONAL_DEPS VAAPI) 2set(PLATFORM_OPTIONAL_DEPS VAAPI)
3 3
4set(WAYLAND_RENDER_SYSTEM "" CACHE STRING "Render system to use with Wayland: \"gl\" or \"gles\"") 4set(WAYLAND_RENDER_SYSTEM "" CACHE STRING "Render system to use with Wayland: \"gl\" or \"gles\"")
5 5
6if(WAYLAND_RENDER_SYSTEM STREQUAL "gl") 6if(WAYLAND_RENDER_SYSTEM STREQUAL "gl")
7 list(APPEND PLATFORM_REQUIRED_DEPS OpenGl) 7 list(APPEND PLATFORM_REQUIRED_DEPS OpenGl)
8 set(APP_RENDER_SYSTEM gl)
8elseif(WAYLAND_RENDER_SYSTEM STREQUAL "gles") 9elseif(WAYLAND_RENDER_SYSTEM STREQUAL "gles")
9 list(APPEND PLATFORM_REQUIRED_DEPS OpenGLES) 10 list(APPEND PLATFORM_REQUIRED_DEPS OpenGLES)
11 set(APP_RENDER_SYSTEM gles)
10else() 12else()
11 message(SEND_ERROR "You need to decide whether you want to use GL- or GLES-based rendering in combination with the Wayland windowing system. Please set WAYLAND_RENDER_SYSTEM to either \"gl\" or \"gles\". For normal desktop systems, you will usually want to use \"gl\".") 13 message(SEND_ERROR "You need to decide whether you want to use GL- or GLES-based rendering in combination with the Wayland windowing system. Please set WAYLAND_RENDER_SYSTEM to either \"gl\" or \"gles\". For normal desktop systems, you will usually want to use \"gl\".")
12endif() 14endif()
@@ -14,4 +16,4 @@ endif()
14set(PLATFORM_GLOBAL_TARGET_DEPS generate-wayland-extra-protocols) 16set(PLATFORM_GLOBAL_TARGET_DEPS generate-wayland-extra-protocols)
15set(WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}") 17set(WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}")
16# for wayland-extra-protocols.hpp 18# for wayland-extra-protocols.hpp
17include_directories("${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}") \ No newline at end of file 19include_directories("${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}")
diff --git a/cmake/platform/linux/x11.cmake b/cmake/platform/linux/x11.cmake
index 656fd66..09cebde 100644
--- a/cmake/platform/linux/x11.cmake
+++ b/cmake/platform/linux/x11.cmake
@@ -1,2 +1,3 @@
1set(PLATFORM_REQUIRED_DEPS OpenGl EGL X XRandR LibDRM) 1set(PLATFORM_REQUIRED_DEPS OpenGl EGL X XRandR LibDRM)
2set(PLATFORM_OPTIONAL_DEPS VAAPI VDPAU GLX) 2set(PLATFORM_OPTIONAL_DEPS VAAPI VDPAU GLX)
3set(APP_RENDER_SYSTEM gl)
diff --git a/cmake/scripts/android/ArchSetup.cmake b/cmake/scripts/android/ArchSetup.cmake
index 03056fa..69bb88d 100644
--- a/cmake/scripts/android/ArchSetup.cmake
+++ b/cmake/scripts/android/ArchSetup.cmake
@@ -1,7 +1,5 @@
1if(NOT CMAKE_TOOLCHAIN_FILE) 1if(NOT CMAKE_TOOLCHAIN_FILE)
2 message(FATAL_ERROR "CMAKE_TOOLCHAIN_FILE required for android. See ${CMAKE_SOURCE_DIR}/cmake/README.md") 2 message(FATAL_ERROR "CMAKE_TOOLCHAIN_FILE required for android. See ${CMAKE_SOURCE_DIR}/cmake/README.md")
3elseif(NOT SDK_PLATFORM)
4 message(FATAL_ERROR "Toolchain did not define SDK_PLATFORM. Possibly outdated depends.")
5endif() 3endif()
6 4
7set(ARCH_DEFINES -DTARGET_POSIX -DTARGET_LINUX -D_LINUX -DTARGET_ANDROID) 5set(ARCH_DEFINES -DTARGET_POSIX -DTARGET_LINUX -D_LINUX -DTARGET_ANDROID)
@@ -34,7 +32,7 @@ else()
34endif() 32endif()
35 33
36# Additional SYSTEM_DEFINES 34# Additional SYSTEM_DEFINES
37list(APPEND SYSTEM_DEFINES -DHAS_ZEROCONF) 35list(APPEND SYSTEM_DEFINES -DHAS_ZEROCONF -DHAS_LINUX_NETWORK)
38 36
39set(ENABLE_X11 OFF CACHE BOOL "" FORCE) 37set(ENABLE_X11 OFF CACHE BOOL "" FORCE)
40set(ENABLE_AML OFF CACHE BOOL "" FORCE) 38set(ENABLE_AML OFF CACHE BOOL "" FORCE)
diff --git a/cmake/scripts/android/Install.cmake b/cmake/scripts/android/Install.cmake
index cc52d51..cc53607 100644
--- a/cmake/scripts/android/Install.cmake
+++ b/cmake/scripts/android/Install.cmake
@@ -53,29 +53,47 @@ endif()
53unset(patch) 53unset(patch)
54 54
55set(package_files strings.xml 55set(package_files strings.xml
56 activity_main.xml
57 colors.xml 56 colors.xml
58 searchable.xml 57 searchable.xml
59 AndroidManifest.xml 58 AndroidManifest.xml
60 build.gradle 59 build.gradle
61 src/Main.java
62 src/Splash.java 60 src/Splash.java
61 src/Main.java
63 src/XBMCBroadcastReceiver.java 62 src/XBMCBroadcastReceiver.java
64 src/XBMCImageContentProvider.java
65 src/XBMCInputDeviceListener.java 63 src/XBMCInputDeviceListener.java
66 src/XBMCJsonRPC.java 64 src/XBMCJsonRPC.java
67 src/XBMCMediaContentProvider.java 65 src/XBMCMainView.java
68 src/XBMCMediaSession.java 66 src/XBMCMediaSession.java
69 src/XBMCRecommendationBuilder.java 67 src/XBMCRecommendationBuilder.java
70 src/XBMCSearchableActivity.java 68 src/XBMCSearchableActivity.java
71 src/XBMCSettingsContentObserver.java 69 src/XBMCSettingsContentObserver.java
72 src/XBMCProperties.java 70 src/XBMCProperties.java
73 src/XBMCVideoView.java 71 src/XBMCVideoView.java
72 src/XBMCFile.java
73 src/channels/SyncChannelJobService.java
74 src/channels/SyncProgramsJobService.java
75 src/channels/model/XBMCDatabase.java
76 src/channels/model/Subscription.java
77 src/channels/util/SharedPreferencesHelper.java
78 src/channels/util/TvUtil.java
74 src/interfaces/XBMCAudioManagerOnAudioFocusChangeListener.java 79 src/interfaces/XBMCAudioManagerOnAudioFocusChangeListener.java
75 src/interfaces/XBMCSurfaceTextureOnFrameAvailableListener.java 80 src/interfaces/XBMCSurfaceTextureOnFrameAvailableListener.java
76 src/interfaces/XBMCNsdManagerDiscoveryListener.java
77 src/interfaces/XBMCNsdManagerRegistrationListener.java
78 src/interfaces/XBMCNsdManagerResolveListener.java 81 src/interfaces/XBMCNsdManagerResolveListener.java
82 src/interfaces/XBMCNsdManagerRegistrationListener.java
83 src/interfaces/XBMCNsdManagerDiscoveryListener.java
84 src/interfaces/XBMCMediaDrmOnEventListener.java
85 src/model/TVEpisode.java
86 src/model/Movie.java
87 src/model/TVShow.java
88 src/model/File.java
89 src/model/Album.java
90 src/model/Song.java
91 src/model/MusicVideo.java
92 src/model/Media.java
93 src/content/XBMCFileContentProvider.java
94 src/content/XBMCMediaContentProvider.java
95 src/content/XBMCContentProvider.java
96 src/content/XBMCYTDLContentProvider.java
79 ) 97 )
80foreach(file IN LISTS package_files) 98foreach(file IN LISTS package_files)
81 configure_file(${CMAKE_SOURCE_DIR}/tools/android/packaging/xbmc/${file}.in 99 configure_file(${CMAKE_SOURCE_DIR}/tools/android/packaging/xbmc/${file}.in
@@ -154,7 +172,6 @@ foreach(target apk obb apk-unsigned apk-obb apk-obb-unsigned apk-noobb apk-clean
154 DEPENDS_PATH=${DEPENDS_PATH} 172 DEPENDS_PATH=${DEPENDS_PATH}
155 NDKROOT=${NDKROOT} 173 NDKROOT=${NDKROOT}
156 SDKROOT=${SDKROOT} 174 SDKROOT=${SDKROOT}
157 SDK_PLATFORM=${SDK_PLATFORM}
158 STRIP=${CMAKE_STRIP} 175 STRIP=${CMAKE_STRIP}
159 AAPT=${AAPT_EXECUTABLE} 176 AAPT=${AAPT_EXECUTABLE}
160 DX=${DX_EXECUTABLE} 177 DX=${DX_EXECUTABLE}
diff --git a/cmake/scripts/common/AddonHelpers.cmake b/cmake/scripts/common/AddonHelpers.cmake
index c11923e..5470940 100644
--- a/cmake/scripts/common/AddonHelpers.cmake
+++ b/cmake/scripts/common/AddonHelpers.cmake
@@ -6,15 +6,20 @@
6# Sadly we cannot extend the 'package' target, as it is a builtin target, see 6# Sadly we cannot extend the 'package' target, as it is a builtin target, see
7# http://public.kitware.com/Bug/view.php?id=8438 7# http://public.kitware.com/Bug/view.php?id=8438
8# Thus, we have to add an 'addon-package' target. 8# Thus, we have to add an 'addon-package' target.
9add_custom_target(addon-package 9get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
10 COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target package) 10if(_isMultiConfig)
11 add_custom_target(addon-package DEPENDS PACKAGE)
12else()
13 add_custom_target(addon-package
14 COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target package)
15endif()
11 16
12macro(add_cpack_workaround target version ext) 17macro(add_cpack_workaround target version ext)
13 if(NOT PACKAGE_DIR) 18 if(NOT PACKAGE_DIR)
14 set(PACKAGE_DIR "${CMAKE_INSTALL_PREFIX}/zips") 19 set(PACKAGE_DIR "${CMAKE_INSTALL_PREFIX}/zips")
15 endif() 20 endif()
16 21
17 add_custom_command(TARGET addon-package PRE_BUILD 22 add_custom_command(TARGET addon-package POST_BUILD
18 COMMAND ${CMAKE_COMMAND} -E make_directory ${PACKAGE_DIR} 23 COMMAND ${CMAKE_COMMAND} -E make_directory ${PACKAGE_DIR}
19 COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_PACKAGE_DIRECTORY}/addon-${target}-${version}.${ext} ${PACKAGE_DIR}/${target}-${version}.${ext}) 24 COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_PACKAGE_DIRECTORY}/addon-${target}-${version}.${ext} ${PACKAGE_DIR}/${target}-${version}.${ext})
20endmacro() 25endmacro()
@@ -194,7 +199,7 @@ macro (build_addon target prefix libs)
194 endif() 199 endif()
195 200
196 string(CONFIGURE "${addon_file}" addon_file_conf @ONLY) 201 string(CONFIGURE "${addon_file}" addon_file_conf @ONLY)
197 file(GENERATE OUTPUT ${PROJECT_SOURCE_DIR}/${target}/addon.xml CONTENT "${addon_file_conf}") 202 file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${target}/addon.xml CONTENT "${addon_file_conf}")
198 if(${APP_NAME_UC}_BUILD_DIR) 203 if(${APP_NAME_UC}_BUILD_DIR)
199 file(GENERATE OUTPUT ${${APP_NAME_UC}_BUILD_DIR}/addons/${target}/addon.xml CONTENT "${addon_file_conf}") 204 file(GENERATE OUTPUT ${${APP_NAME_UC}_BUILD_DIR}/addons/${target}/addon.xml CONTENT "${addon_file_conf}")
200 endif() 205 endif()
@@ -207,7 +212,7 @@ macro (build_addon target prefix libs)
207 212
208 file(READ ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in settings_file) 213 file(READ ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in settings_file)
209 string(CONFIGURE "${settings_file}" settings_file_conf @ONLY) 214 string(CONFIGURE "${settings_file}" settings_file_conf @ONLY)
210 file(GENERATE OUTPUT ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml CONTENT "${settings_file_conf}") 215 file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${target}/resources/settings.xml CONTENT "${settings_file_conf}")
211 if(${APP_NAME_UC}_BUILD_DIR) 216 if(${APP_NAME_UC}_BUILD_DIR)
212 file(GENERATE OUTPUT ${${APP_NAME_UC}_BUILD_DIR}/addons/${target}/resources/settings.xml CONTENT "${settings_file_conf}") 217 file(GENERATE OUTPUT ${${APP_NAME_UC}_BUILD_DIR}/addons/${target}/resources/settings.xml CONTENT "${settings_file_conf}")
213 endif() 218 endif()
@@ -230,7 +235,7 @@ macro (build_addon target prefix libs)
230 set(CPACK_COMPONENTS_IGNORE_GROUPS 1) 235 set(CPACK_COMPONENTS_IGNORE_GROUPS 1)
231 list(APPEND CPACK_COMPONENTS_ALL ${target}-${${prefix}_VERSION}) 236 list(APPEND CPACK_COMPONENTS_ALL ${target}-${${prefix}_VERSION})
232 # Pack files together to create an archive 237 # Pack files together to create an archive
233 install(DIRECTORY ${target} DESTINATION ./ 238 install(DIRECTORY ${target} ${CMAKE_CURRENT_BINARY_DIR}/${target} DESTINATION ./
234 COMPONENT ${target}-${${prefix}_VERSION} 239 COMPONENT ${target}-${${prefix}_VERSION}
235 REGEX ".+\\.xml\\.in(clude)?$" EXCLUDE) 240 REGEX ".+\\.xml\\.in(clude)?$" EXCLUDE)
236 if(WIN32) 241 if(WIN32)
@@ -247,21 +252,15 @@ macro (build_addon target prefix libs)
247 endif() 252 endif()
248 endif() 253 endif()
249 254
250 # in case of a VC++ project the installation location contains a $(Configuration) VS variable
251 # we replace it with ${CMAKE_BUILD_TYPE} (which doesn't cover the case when the build configuration
252 # is changed within Visual Studio)
253 string(REPLACE "$(Configuration)" "${CMAKE_BUILD_TYPE}" LIBRARY_LOCATION "${LIBRARY_LOCATION}")
254
255 if(${prefix}_SOURCES) 255 if(${prefix}_SOURCES)
256 # install the generated DLL file 256 # install the generated DLL file
257 install(PROGRAMS ${LIBRARY_LOCATION} DESTINATION ${target} 257 install(PROGRAMS ${LIBRARY_LOCATION} DESTINATION ${target}
258 COMPONENT ${target}-${${prefix}_VERSION}) 258 COMPONENT ${target}-${${prefix}_VERSION})
259 259
260 if(CMAKE_BUILD_TYPE MATCHES Debug) 260 # for debug builds also install the PDB file
261 # for debug builds also install the PDB file 261 install(FILES $<TARGET_PDB_FILE:${target}> DESTINATION ${target}
262 install(FILES $<TARGET_PDB_FILE:${target}> DESTINATION ${target} 262 CONFIGURATIONS Debug RelWithDebInfo
263 COMPONENT ${target}-${${prefix}_VERSION}) 263 COMPONENT ${target}-${${prefix}_VERSION})
264 endif()
265 endif() 264 endif()
266 if(${prefix}_CUSTOM_BINARY) 265 if(${prefix}_CUSTOM_BINARY)
267 install(FILES ${LIBRARY_LOCATION} DESTINATION ${target} RENAME ${LIBRARY_FILENAME}) 266 install(FILES ${LIBRARY_LOCATION} DESTINATION ${target} RENAME ${LIBRARY_FILENAME})
@@ -325,7 +324,7 @@ macro (build_addon target prefix libs)
325 if (${prefix}_CUSTOM_BINARY) 324 if (${prefix}_CUSTOM_BINARY)
326 install(FILES ${LIBRARY_LOCATION} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target} RENAME ${LIBRARY_FILENAME}) 325 install(FILES ${LIBRARY_LOCATION} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target} RENAME ${LIBRARY_FILENAME})
327 endif() 326 endif()
328 install(DIRECTORY ${target} DESTINATION ${CMAKE_INSTALL_DATADIR}/addons 327 install(DIRECTORY ${target} ${CMAKE_CURRENT_BINARY_DIR}/${target} DESTINATION ${CMAKE_INSTALL_DATADIR}/addons
329 REGEX ".+\\.xml\\.in(clude)?$" EXCLUDE) 328 REGEX ".+\\.xml\\.in(clude)?$" EXCLUDE)
330 if(${prefix}_CUSTOM_DATA) 329 if(${prefix}_CUSTOM_DATA)
331 install(DIRECTORY ${${prefix}_CUSTOM_DATA} DESTINATION ${CMAKE_INSTALL_DATADIR}/addons/${target}/resources) 330 install(DIRECTORY ${${prefix}_CUSTOM_DATA} DESTINATION ${CMAKE_INSTALL_DATADIR}/addons/${target}/resources)
diff --git a/cmake/scripts/common/ArchSetup.cmake b/cmake/scripts/common/ArchSetup.cmake
index 3b81533..c97929e 100644
--- a/cmake/scripts/common/ArchSetup.cmake
+++ b/cmake/scripts/common/ArchSetup.cmake
@@ -153,6 +153,10 @@ if(NOT DEFINED NEON OR NEON)
153 endif() 153 endif()
154endif() 154endif()
155 155
156if(PLATFORM_DEFINES)
157 add_options(ALL_LANGUAGES ALL_BUILDS ${PLATFORM_DEFINES})
158endif()
159
156if(CMAKE_BUILD_TYPE STREQUAL "Debug") 160if(CMAKE_BUILD_TYPE STREQUAL "Debug")
157 add_options (ALL_LANGUAGES DEBUG "-g" "-D_DEBUG" "-Wall") 161 add_options (ALL_LANGUAGES DEBUG "-g" "-D_DEBUG" "-Wall")
158endif() 162endif()
diff --git a/cmake/scripts/common/HandleDepends.cmake b/cmake/scripts/common/HandleDepends.cmake
index 49e5ac8..fb110d6 100644
--- a/cmake/scripts/common/HandleDepends.cmake
+++ b/cmake/scripts/common/HandleDepends.cmake
@@ -54,9 +54,6 @@ function(add_addon_depends addon searchpath)
54 if(EXISTS ${dir}/flags.txt) 54 if(EXISTS ${dir}/flags.txt)
55 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${dir}/flags.txt) 55 set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${dir}/flags.txt)
56 file(STRINGS ${dir}/flags.txt extraflags) 56 file(STRINGS ${dir}/flags.txt extraflags)
57
58 # replace some custom placeholders
59 string(REPLACE "@MINGW_TOOLCHAIN_FILE@" "${OUTPUT_DIR}/Toolchain_mingw32.cmake" extraflags "${extraflags}")
60 string(REPLACE " " ";" extraflags ${extraflags}) 57 string(REPLACE " " ";" extraflags ${extraflags})
61 58
62 message(STATUS "${id} extraflags: ${extraflags}") 59 message(STATUS "${id} extraflags: ${extraflags}")
diff --git a/cmake/scripts/common/Macros.cmake b/cmake/scripts/common/Macros.cmake
index d508f87..c21069d 100644
--- a/cmake/scripts/common/Macros.cmake
+++ b/cmake/scripts/common/Macros.cmake
@@ -338,15 +338,54 @@ macro(export_dep)
338 mark_as_advanced(${depup}_LIBRARIES) 338 mark_as_advanced(${depup}_LIBRARIES)
339endmacro() 339endmacro()
340 340
341# add a required dependency of main application 341# split dependency specification to name and version
342# Arguments: 342# Arguments:
343# dep_list name of find rule for dependency, used uppercased for variable prefix 343# depspec dependency specification that can optionally include a required
344# also accepts a list of multiple dependencies 344# package version
345# syntax: [package name], [package name]>=[version] (minimum version),
346# or [package name]=[version] (exact version)
347# name_outvar variable that should receive the package name
348# version_outvar variable that should receive the package version part (>=[version])
345# On return: 349# On return:
346# dependency added to ${SYSTEM_INCLUDES}, ${DEPLIBS} and ${DEP_DEFINES} 350# ${name_outvar} and ${version_outvar} in caller scope are set to respective values.
351# ${version_outvar} may be unset if there is no specific version requested.
352function(split_dependency_specification depspec name_outvar version_outvar)
353 if(${depspec} MATCHES "^([^>]*)(>?=[0-9.]+)$")
354 set(${name_outvar} ${CMAKE_MATCH_1} PARENT_SCOPE)
355 set(${version_outvar} ${CMAKE_MATCH_2} PARENT_SCOPE)
356 else()
357 set(${name_outvar} ${depspec} PARENT_SCOPE)
358 unset(${version_outvar} PARENT_SCOPE)
359 endif()
360endfunction()
361
362# helper macro to split version info from req and call find_package
363macro(find_package_with_ver package)
364 set(_find_arguments "${ARGN}")
365 if("${ARGV1}" MATCHES "^(>)?=([0-9.]+)$")
366 # We have a version spec, parse it
367 list(REMOVE_AT _find_arguments 0)
368 # ">" not present? -> exact match
369 if(NOT CMAKE_MATCH_1)
370 list(INSERT _find_arguments 0 "EXACT")
371 endif()
372 find_package(${package} ${CMAKE_MATCH_2} ${_find_arguments})
373 else()
374 find_package(${package} ${_find_arguments})
375 endif()
376 unset(_find_arguments)
377endmacro()
378
379# add required dependencies of main application
380# Arguments:
381# dep_list One or many dependency specifications (see split_dependency_specification)
382# for syntax). The dependency name is used uppercased as variable prefix.
383# On return:
384# dependencies added to ${SYSTEM_INCLUDES}, ${DEPLIBS} and ${DEP_DEFINES}
347function(core_require_dep) 385function(core_require_dep)
348 foreach(dep ${ARGN}) 386 foreach(depspec ${ARGN})
349 find_package(${dep} REQUIRED) 387 split_dependency_specification(${depspec} dep version)
388 find_package_with_ver(${dep} ${version} REQUIRED)
350 string(TOUPPER ${dep} depup) 389 string(TOUPPER ${dep} depup)
351 list(APPEND SYSTEM_INCLUDES ${${depup}_INCLUDE_DIRS}) 390 list(APPEND SYSTEM_INCLUDES ${${depup}_INCLUDE_DIRS})
352 list(APPEND DEPLIBS ${${depup}_LIBRARIES}) 391 list(APPEND DEPLIBS ${${depup}_LIBRARIES})
@@ -355,15 +394,16 @@ function(core_require_dep)
355 endforeach() 394 endforeach()
356endfunction() 395endfunction()
357 396
358# add a required dyloaded dependency of main application 397# add required dyloaded dependencies of main application
359# Arguments: 398# Arguments:
360# dep_list name of find rule for dependency, used uppercased for variable prefix 399# dep_list One or many dependency specifications (see split_dependency_specification)
361# also accepts a list of multiple dependencies 400# for syntax). The dependency name is used uppercased as variable prefix.
362# On return: 401# On return:
363# dependency added to ${SYSTEM_INCLUDES}, ${dep}_SONAME is set up 402# dependency added to ${SYSTEM_INCLUDES}, ${dep}_SONAME is set up
364function(core_require_dyload_dep) 403function(core_require_dyload_dep)
365 foreach(dep ${ARGN}) 404 foreach(depspec ${ARGN})
366 find_package(${dep} REQUIRED) 405 split_dependency_specification(${depspec} dep version)
406 find_package_with_ver(${dep} ${version} REQUIRED)
367 string(TOUPPER ${dep} depup) 407 string(TOUPPER ${dep} depup)
368 list(APPEND SYSTEM_INCLUDES ${${depup}_INCLUDE_DIRS}) 408 list(APPEND SYSTEM_INCLUDES ${${depup}_INCLUDE_DIRS})
369 list(APPEND DEP_DEFINES ${${depup}_DEFINITIONS}) 409 list(APPEND DEP_DEFINES ${${depup}_DEFINITIONS})
@@ -385,20 +425,21 @@ macro(setup_enable_switch)
385 set(${enable_switch} "AUTO" CACHE STRING "Enable ${depup} support?") 425 set(${enable_switch} "AUTO" CACHE STRING "Enable ${depup} support?")
386endmacro() 426endmacro()
387 427
388# add an optional dependency of main application 428# add optional dependencies of main application
389# Arguments: 429# Arguments:
390# dep_list name of find rule for dependency, used uppercased for variable prefix 430# dep_list One or many dependency specifications (see split_dependency_specification)
391# also accepts a list of multiple dependencies 431# for syntax). The dependency name is used uppercased as variable prefix.
392# On return: 432# On return:
393# dependency optionally added to ${SYSTEM_INCLUDES}, ${DEPLIBS} and ${DEP_DEFINES} 433# dependency optionally added to ${SYSTEM_INCLUDES}, ${DEPLIBS} and ${DEP_DEFINES}
394function(core_optional_dep) 434function(core_optional_dep)
395 foreach(dep ${ARGN}) 435 foreach(depspec ${ARGN})
396 set(_required False) 436 set(_required False)
437 split_dependency_specification(${depspec} dep version)
397 setup_enable_switch() 438 setup_enable_switch()
398 if(${enable_switch} STREQUAL AUTO) 439 if(${enable_switch} STREQUAL AUTO)
399 find_package(${dep}) 440 find_package_with_ver(${dep} ${version})
400 elseif(${${enable_switch}}) 441 elseif(${${enable_switch}})
401 find_package(${dep} REQUIRED) 442 find_package_with_ver(${dep} ${version} REQUIRED)
402 set(_required True) 443 set(_required True)
403 endif() 444 endif()
404 445
@@ -417,20 +458,21 @@ function(core_optional_dep)
417 set(final_message ${final_message} PARENT_SCOPE) 458 set(final_message ${final_message} PARENT_SCOPE)
418endfunction() 459endfunction()
419 460
420# add an optional dyloaded dependency of main application 461# add optional dyloaded dependencies of main application
421# Arguments: 462# Arguments:
422# dep_list name of find rule for dependency, used uppercased for variable prefix 463# dep_list One or many dependency specifications (see split_dependency_specification)
423# also accepts a list of multiple dependencies 464# for syntax). The dependency name is used uppercased as variable prefix.
424# On return: 465# On return:
425# dependency optionally added to ${SYSTEM_INCLUDES}, ${DEP_DEFINES}, ${dep}_SONAME is set up 466# dependency optionally added to ${SYSTEM_INCLUDES}, ${DEP_DEFINES}, ${dep}_SONAME is set up
426function(core_optional_dyload_dep) 467function(core_optional_dyload_dep)
427 foreach(dep ${ARGN}) 468 foreach(depspec ${ARGN})
428 set(_required False) 469 set(_required False)
429 setup_enable_switch() 470 split_dependency_specification(${depspec} dep version)
471 setup_enable_switch()
430 if(${enable_switch} STREQUAL AUTO) 472 if(${enable_switch} STREQUAL AUTO)
431 find_package(${dep}) 473 find_package_with_ver(${dep} ${version})
432 elseif(${${enable_switch}}) 474 elseif(${${enable_switch}})
433 find_package(${dep} REQUIRED) 475 find_package_with_ver(${dep} ${version} REQUIRED)
434 set(_required True) 476 set(_required True)
435 endif() 477 endif()
436 478
@@ -592,6 +634,7 @@ function(core_find_git_rev stamp)
592 else() 634 else()
593 find_package(Git) 635 find_package(Git)
594 if(GIT_FOUND AND EXISTS ${CMAKE_SOURCE_DIR}/.git) 636 if(GIT_FOUND AND EXISTS ${CMAKE_SOURCE_DIR}/.git)
637 # get tree status i.e. clean working tree vs dirty (uncommited or unstashed changes, etc.)
595 execute_process(COMMAND ${GIT_EXECUTABLE} update-index --ignore-submodules -q --refresh 638 execute_process(COMMAND ${GIT_EXECUTABLE} update-index --ignore-submodules -q --refresh
596 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) 639 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
597 execute_process(COMMAND ${GIT_EXECUTABLE} diff-files --ignore-submodules --quiet -- 640 execute_process(COMMAND ${GIT_EXECUTABLE} diff-files --ignore-submodules --quiet --
@@ -602,21 +645,21 @@ function(core_find_git_rev stamp)
602 RESULT_VARIABLE status_code 645 RESULT_VARIABLE status_code
603 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) 646 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
604 endif() 647 endif()
648 # get HEAD commit SHA-1
649 execute_process(COMMAND ${GIT_EXECUTABLE} log -n 1 --pretty=format:"%h" HEAD
650 OUTPUT_VARIABLE HASH
651 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
652 string(REPLACE "\"" "" HASH ${HASH})
653
605 if(status_code) 654 if(status_code)
606 execute_process(COMMAND ${GIT_EXECUTABLE} log -n 1 --pretty=format:"%h-dirty" HEAD 655 string(CONCAT HASH ${HASH} "-dirty")
607 OUTPUT_VARIABLE HASH
608 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
609 string(SUBSTRING ${HASH} 1 13 HASH)
610 else()
611 execute_process(COMMAND ${GIT_EXECUTABLE} log -n 1 --pretty=format:"%h" HEAD
612 OUTPUT_VARIABLE HASH
613 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
614 string(SUBSTRING ${HASH} 1 7 HASH)
615 endif() 656 endif()
657
658 # get HEAD commit date
616 execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --pretty=format:"%cd" --date=short HEAD 659 execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --pretty=format:"%cd" --date=short HEAD
617 OUTPUT_VARIABLE DATE 660 OUTPUT_VARIABLE DATE
618 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) 661 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
619 string(SUBSTRING ${DATE} 1 10 DATE) 662 string(REPLACE "\"" "" DATE ${DATE})
620 string(REPLACE "-" "" DATE ${DATE}) 663 string(REPLACE "-" "" DATE ${DATE})
621 else() 664 else()
622 string(TIMESTAMP DATE "%Y%m%d" UTC) 665 string(TIMESTAMP DATE "%Y%m%d" UTC)
diff --git a/cmake/scripts/common/Uninstall.cmake b/cmake/scripts/common/Uninstall.cmake
index 5660e19..5753857 100644
--- a/cmake/scripts/common/Uninstall.cmake
+++ b/cmake/scripts/common/Uninstall.cmake
@@ -1,9 +1,40 @@
1macro(remove_empty_dirs)
2 list(REMOVE_DUPLICATES DIRECTORIES)
3 unset(PDIRECTORIES)
4 foreach(dir IN LISTS DIRECTORIES)
5 if(EXISTS $ENV{DESTDIR}${dir})
6 file(GLOB _res $ENV{DESTDIR}${dir}/*)
7 list(LENGTH _res _len)
8 if(_len EQUAL 0 AND EXISTS $ENV{DESTDIR}${dir})
9 message(STATUS "Removing empty dir: ${dir}")
10 execute_process(
11 COMMAND ${CMAKE_COMMAND} -E remove_directory $ENV{DESTDIR}${dir}
12 OUTPUT_VARIABLE rm_out
13 RESULT_VARIABLE rm_retval
14 )
15 if(NOT "${rm_retval}" STREQUAL 0)
16 message(FATAL_ERROR "Failed to remove directory: $ENV{DESTDIR}${dir}")
17 endif()
18 get_filename_component(_pdir $ENV{DESTDIR}${dir} DIRECTORY)
19 list(APPEND PDIRECTORIES ${_pdir})
20 endif()
21 endif()
22 endforeach()
23 list(LENGTH PDIRECTORIES _plen)
24 if(_plen GREATER 0)
25 set(DIRECTORIES ${PDIRECTORIES})
26 remove_empty_dirs()
27 endif()
28endmacro()
29
1# Uninstall target 30# Uninstall target
2set(MANIFEST ${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt) 31set(MANIFEST ${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt)
3if(EXISTS ${MANIFEST}) 32if(EXISTS ${MANIFEST})
4 file(STRINGS ${MANIFEST} files) 33 file(STRINGS ${MANIFEST} files)
5 foreach(file IN LISTS files) 34 foreach(file IN LISTS files)
6 if(EXISTS $ENV{DESTDIR}${file}) 35 if(EXISTS $ENV{DESTDIR}${file})
36 get_filename_component(_dir $ENV{DESTDIR}${file} DIRECTORY)
37 list(APPEND DIRECTORIES $ENV{DESTDIR}${_dir})
7 message(STATUS "Uninstalling: ${file}") 38 message(STATUS "Uninstalling: ${file}")
8 execute_process( 39 execute_process(
9 COMMAND ${CMAKE_COMMAND} -E remove $ENV{DESTDIR}${file} 40 COMMAND ${CMAKE_COMMAND} -E remove $ENV{DESTDIR}${file}
@@ -17,6 +48,11 @@ if(EXISTS ${MANIFEST})
17 message(STATUS "File does not exist: $ENV{DESTDIR}${file}") 48 message(STATUS "File does not exist: $ENV{DESTDIR}${file}")
18 endif() 49 endif()
19 endforeach(file) 50 endforeach(file)
51
52 # delete empty dirs
53 if(DIRECTORIES)
54 remove_empty_dirs()
55 endif()
20else() 56else()
21 message(STATUS "Cannot find install manifest: '${MANIFEST}'") 57 message(STATUS "Cannot find install manifest: '${MANIFEST}'")
22endif() 58endif()
diff --git a/cmake/scripts/freebsd/ArchSetup.cmake b/cmake/scripts/freebsd/ArchSetup.cmake
index 8ee78fc..db11bf8 100644
--- a/cmake/scripts/freebsd/ArchSetup.cmake
+++ b/cmake/scripts/freebsd/ArchSetup.cmake
@@ -15,5 +15,10 @@ else()
15 endif() 15 endif()
16endif() 16endif()
17 17
18# Disable ALSA by default
19if(NOT ENABLE_ALSA)
20 option(ENABLE_ALSA "Enable alsa support?" OFF)
21endif()
22
18# Additional SYSTEM_DEFINES 23# Additional SYSTEM_DEFINES
19list(APPEND SYSTEM_DEFINES -DHAS_LINUX_NETWORK) 24list(APPEND SYSTEM_DEFINES -DHAS_LINUX_NETWORK)
diff --git a/cmake/scripts/ios/ArchSetup.cmake b/cmake/scripts/ios/ArchSetup.cmake
index 0808eb2..bec8a7c 100644
--- a/cmake/scripts/ios/ArchSetup.cmake
+++ b/cmake/scripts/ios/ArchSetup.cmake
@@ -39,7 +39,7 @@ list(APPEND DEPLIBS "-framework CoreFoundation" "-framework CoreVideo"
39set(ENABLE_DVDCSS OFF CACHE BOOL "" FORCE) 39set(ENABLE_DVDCSS OFF CACHE BOOL "" FORCE)
40set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE) 40set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE)
41 41
42set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "6.0") 42set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "9.0")
43set(CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2") 43set(CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2")
44 44
45set(CMAKE_XCODE_ATTRIBUTE_INLINES_ARE_PRIVATE_EXTERN OFF) 45set(CMAKE_XCODE_ATTRIBUTE_INLINES_ARE_PRIVATE_EXTERN OFF)
diff --git a/cmake/scripts/linux/ArchSetup.cmake b/cmake/scripts/linux/ArchSetup.cmake
index ee69c09..fcee675 100644
--- a/cmake/scripts/linux/ArchSetup.cmake
+++ b/cmake/scripts/linux/ArchSetup.cmake
@@ -1,8 +1,5 @@
1set(ARCH_DEFINES -D_LINUX -DTARGET_POSIX -DTARGET_LINUX) 1# we always want to use GNU features if available, so set _GNU_SOURCE
2# temp until further cleanup is done 2set(ARCH_DEFINES -D_LINUX -DTARGET_POSIX -DTARGET_LINUX -D_GNU_SOURCE)
3if(CORE_PLATFORM_NAME_LC STREQUAL rbpi)
4 list(APPEND ARCH_DEFINES -D_ARMEL -DTARGET_RASPBERRY_PI)
5endif()
6set(SYSTEM_DEFINES -D__STDC_CONSTANT_MACROS -D_FILE_DEFINED 3set(SYSTEM_DEFINES -D__STDC_CONSTANT_MACROS -D_FILE_DEFINED
7 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) 4 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64)
8set(PLATFORM_DIR platform/linux) 5set(PLATFORM_DIR platform/linux)
@@ -21,14 +18,17 @@ else()
21 set(ARCH arm) 18 set(ARCH arm)
22 set(NEON False) 19 set(NEON False)
23 set(NEON_FLAGS "-mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp") 20 set(NEON_FLAGS "-mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp")
24 elseif(CPU MATCHES "cortex-a7" OR CPU MATCHES "cortex-a53") 21 elseif(CPU MATCHES "cortex-a7")
25 set(ARCH arm) 22 set(ARCH arm)
26 set(NEON True) 23 set(NEON True)
27 set(NEON_FLAGS "-fPIC -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4 -mvectorize-with-neon-quad") 24 set(NEON_FLAGS "-fPIC -mcpu=cortex-a7")
25 elseif(CPU MATCHES "cortex-a53")
26 set(ARCH arm)
27 set(NEON True)
28 set(NEON_FLAGS "-fPIC -mcpu=cortex-a53")
28 elseif(CPU MATCHES arm) 29 elseif(CPU MATCHES arm)
29 set(ARCH arm) 30 set(ARCH arm)
30 set(NEON True) 31 set(NEON True)
31 set(NEON_FLAGS "-mfpu=neon -mvectorize-with-neon-quad")
32 elseif(CPU MATCHES aarch64 OR CPU MATCHES arm64) 32 elseif(CPU MATCHES aarch64 OR CPU MATCHES arm64)
33 set(ARCH aarch64) 33 set(ARCH aarch64)
34 set(NEON True) 34 set(NEON True)
@@ -37,6 +37,16 @@ else()
37 endif() 37 endif()
38endif() 38endif()
39 39
40# temp until further cleanup is done
41# add Raspberry Pi 2 and 3 specific flags
42if(CORE_PLATFORM_NAME_LC STREQUAL rbpi)
43 if(CPU MATCHES "cortex-a7")
44 set(NEON_FLAGS "-fPIC -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4 -mvectorize-with-neon-quad")
45 elseif(CPU MATCHES "cortex-a53")
46 set(NEON_FLAGS "-fPIC -mcpu=cortex-a53 -mfloat-abi=hard -mfpu=neon-fp-armv8 -mvectorize-with-neon-quad")
47 endif()
48endif()
49
40if((CMAKE_BUILD_TYPE STREQUAL Release OR CMAKE_BUILD_TYPE STREQUAL MinSizeRel) 50if((CMAKE_BUILD_TYPE STREQUAL Release OR CMAKE_BUILD_TYPE STREQUAL MinSizeRel)
41 AND CMAKE_COMPILER_IS_GNUCXX) 51 AND CMAKE_COMPILER_IS_GNUCXX)
42 # Make sure we strip binaries in Release build 52 # Make sure we strip binaries in Release build
@@ -84,7 +94,7 @@ set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE")
84check_symbol_exists("mkostemp" "stdlib.h" HAVE_MKOSTEMP) 94check_symbol_exists("mkostemp" "stdlib.h" HAVE_MKOSTEMP)
85set(CMAKE_REQUIRED_DEFINITIONS "") 95set(CMAKE_REQUIRED_DEFINITIONS "")
86if(HAVE_MKOSTEMP) 96if(HAVE_MKOSTEMP)
87 list(APPEND ARCH_DEFINES "-DHAVE_MKOSTEMP=1" "-D_GNU_SOURCE") 97 list(APPEND ARCH_DEFINES "-DHAVE_MKOSTEMP=1")
88endif() 98endif()
89 99
90# Additional SYSTEM_DEFINES 100# Additional SYSTEM_DEFINES
diff --git a/cmake/scripts/linux/ExtraTargets.cmake b/cmake/scripts/linux/ExtraTargets.cmake
index 4753f73..37d196a 100644
--- a/cmake/scripts/linux/ExtraTargets.cmake
+++ b/cmake/scripts/linux/ExtraTargets.cmake
@@ -17,7 +17,9 @@ endif()
17if(CORE_PLATFORM_NAME_LC STREQUAL "wayland") 17if(CORE_PLATFORM_NAME_LC STREQUAL "wayland")
18 # This cannot go into wayland.cmake since it requires the Wayland dependencies 18 # This cannot go into wayland.cmake since it requires the Wayland dependencies
19 # to already be resolved 19 # to already be resolved
20 set(PROTOCOL_XMLS "${WAYLAND_PROTOCOLS_DIR}/unstable/xdg-shell/xdg-shell-unstable-v6.xml" 20 set(PROTOCOL_XMLS "${WAYLANDPP_PROTOCOLS_DIR}/presentation-time.xml"
21 "${WAYLANDPP_PROTOCOLS_DIR}/xdg-shell.xml"
22 "${WAYLAND_PROTOCOLS_DIR}/unstable/xdg-shell/xdg-shell-unstable-v6.xml"
21 "${WAYLAND_PROTOCOLS_DIR}/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml") 23 "${WAYLAND_PROTOCOLS_DIR}/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml")
22 add_custom_command(OUTPUT "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.hpp" "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.cpp" 24 add_custom_command(OUTPUT "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.hpp" "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.cpp"
23 COMMAND "${WAYLANDPP_SCANNER}" ${PROTOCOL_XMLS} "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.hpp" "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.cpp" 25 COMMAND "${WAYLANDPP_SCANNER}" ${PROTOCOL_XMLS} "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.hpp" "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.cpp"
@@ -26,4 +28,4 @@ if(CORE_PLATFORM_NAME_LC STREQUAL "wayland")
26 28
27 # Dummy target for dependencies 29 # Dummy target for dependencies
28 add_custom_target(generate-wayland-extra-protocols DEPENDS wayland-extra-protocols.hpp) 30 add_custom_target(generate-wayland-extra-protocols DEPENDS wayland-extra-protocols.hpp)
29endif() \ No newline at end of file 31endif()
diff --git a/cmake/scripts/windows/ArchSetup.cmake b/cmake/scripts/windows/ArchSetup.cmake
index 8e4f61d..b3963a6 100644
--- a/cmake/scripts/windows/ArchSetup.cmake
+++ b/cmake/scripts/windows/ArchSetup.cmake
@@ -1,3 +1,12 @@
1# Minimum SDK version we support
2set(VS_MINIMUM_SDK_VERSION 10.0.14393.0)
3
4if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION VERSION_LESS VS_MINIMUM_SDK_VERSION)
5 message(FATAL_ERROR "Detected Windows SDK version is ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}.\n"
6 "Windows SDK ${VS_MINIMUM_SDK_VERSION} or higher is required.\n"
7 "INFO: Windows SDKs can be installed from the Visual Studio installer.")
8endif()
9
1# -------- Architecture settings --------- 10# -------- Architecture settings ---------
2 11
3if(CMAKE_SIZEOF_VOID_P EQUAL 4) 12if(CMAKE_SIZEOF_VOID_P EQUAL 4)
@@ -12,6 +21,7 @@ endif()
12# -------- Paths (mainly for find_package) --------- 21# -------- Paths (mainly for find_package) ---------
13 22
14set(PLATFORM_DIR platform/win32) 23set(PLATFORM_DIR platform/win32)
24set(APP_RENDER_SYSTEM dx11)
15 25
16set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/win32/WinMain.cpp) 26set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/win32/WinMain.cpp)
17 27
@@ -31,7 +41,7 @@ set(PYTHON_INCLUDE_DIR ${DEPENDENCIES_DIR}/include/python)
31 41
32add_options(CXX ALL_BUILDS "/wd\"4996\"") 42add_options(CXX ALL_BUILDS "/wd\"4996\"")
33set(ARCH_DEFINES -D_WINDOWS -DTARGET_WINDOWS -DTARGET_WINDOWS_DESKTOP -D__SSE__ -D__SSE2__) 43set(ARCH_DEFINES -D_WINDOWS -DTARGET_WINDOWS -DTARGET_WINDOWS_DESKTOP -D__SSE__ -D__SSE2__)
34set(SYSTEM_DEFINES -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS 44set(SYSTEM_DEFINES -DWIN32_LEAN_AND_MEAN -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS
35 -DTAGLIB_STATIC -DNPT_CONFIG_ENABLE_LOGGING 45 -DTAGLIB_STATIC -DNPT_CONFIG_ENABLE_LOGGING
36 -DPLT_HTTP_DEFAULT_USER_AGENT="UPnP/1.0 DLNADOC/1.50 Kodi" 46 -DPLT_HTTP_DEFAULT_USER_AGENT="UPnP/1.0 DLNADOC/1.50 Kodi"
37 -DPLT_HTTP_DEFAULT_SERVER="UPnP/1.0 DLNADOC/1.50 Kodi" 47 -DPLT_HTTP_DEFAULT_SERVER="UPnP/1.0 DLNADOC/1.50 Kodi"
@@ -43,7 +53,7 @@ if(${ARCH} STREQUAL win32)
43endif() 53endif()
44 54
45# Additional SYSTEM_DEFINES 55# Additional SYSTEM_DEFINES
46list(APPEND SYSTEM_DEFINES -DHAS_IRSERVERSUITE -DHAS_WIN32_NETWORK -DHAS_FILESYSTEM_SMB) 56list(APPEND SYSTEM_DEFINES -DHAS_WIN32_NETWORK -DHAS_FILESYSTEM_SMB)
47 57
48# Make sure /FS is set for Visual Studio in order to prevent simultaneous access to pdb files. 58# Make sure /FS is set for Visual Studio in order to prevent simultaneous access to pdb files.
49if(CMAKE_GENERATOR MATCHES "Visual Studio") 59if(CMAKE_GENERATOR MATCHES "Visual Studio")
diff --git a/cmake/scripts/windows/tools/patch.cmake b/cmake/scripts/windows/tools/patch.cmake
index 0a342fa..b955b4c 100644
--- a/cmake/scripts/windows/tools/patch.cmake
+++ b/cmake/scripts/windows/tools/patch.cmake
@@ -2,7 +2,7 @@ find_program(PATCH_FOUND NAMES patch patch.exe)
2if(PATCH_FOUND) 2if(PATCH_FOUND)
3 message(STATUS "patch utility found at ${PATCH_FOUND}") 3 message(STATUS "patch utility found at ${PATCH_FOUND}")
4else() 4else()
5 set(PATCH_ARCHIVE_NAME "patch-2.5.9-7-bin-3") 5 set(PATCH_ARCHIVE_NAME "patch-2.7.6-bin")
6 set(PATCH_ARCHIVE "${PATCH_ARCHIVE_NAME}.zip") 6 set(PATCH_ARCHIVE "${PATCH_ARCHIVE_NAME}.zip")
7 set(PATCH_URL "${KODI_MIRROR}/build-deps/win32/${PATCH_ARCHIVE}") 7 set(PATCH_URL "${KODI_MIRROR}/build-deps/win32/${PATCH_ARCHIVE}")
8 set(PATCH_DOWNLOAD ${BUILD_DIR}/download/${PATCH_ARCHIVE}) 8 set(PATCH_DOWNLOAD ${BUILD_DIR}/download/${PATCH_ARCHIVE})
@@ -28,6 +28,11 @@ else()
28 28
29 # copy patch.exe into the output directory 29 # copy patch.exe into the output directory
30 file(INSTALL ${PATCH_BINARY_PATH} DESTINATION ${ADDON_DEPENDS_PATH}/bin) 30 file(INSTALL ${PATCH_BINARY_PATH} DESTINATION ${ADDON_DEPENDS_PATH}/bin)
31 # copy patch depends
32 file(GLOB PATCH_BINARIES ${PATCH_PATH}/bin/*.dll)
33 if(NOT "${PATCH_BINARIES}" STREQUAL "")
34 file(INSTALL ${PATCH_BINARIES} DESTINATION ${ADDON_DEPENDS_PATH}/bin)
35 endif()
31 36
32 # make sure that cmake can find the copied patch.exe 37 # make sure that cmake can find the copied patch.exe
33 find_program(PATCH_FOUND NAMES patch patch.exe) 38 find_program(PATCH_FOUND NAMES patch patch.exe)
diff --git a/cmake/scripts/windowsstore/ArchSetup.cmake b/cmake/scripts/windowsstore/ArchSetup.cmake
index 6c6622c..a663bb9 100644
--- a/cmake/scripts/windowsstore/ArchSetup.cmake
+++ b/cmake/scripts/windowsstore/ArchSetup.cmake
@@ -1,3 +1,12 @@
1# Minimum SDK version we support
2set(VS_MINIMUM_SDK_VERSION 10.0.14393.0)
3
4if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION VERSION_LESS VS_MINIMUM_SDK_VERSION)
5 message(FATAL_ERROR "Detected Windows SDK version is ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}.\n"
6 "Windows SDK ${VS_MINIMUM_SDK_VERSION} or higher is required.\n"
7 "INFO: Windows SDKs can be installed from the Visual Studio installer.")
8endif()
9
1# -------- Architecture settings --------- 10# -------- Architecture settings ---------
2 11
3check_symbol_exists(_X86_ "Windows.h" _X86_) 12check_symbol_exists(_X86_ "Windows.h" _X86_)
@@ -24,6 +33,7 @@ unset(_ARM_)
24# -------- Paths (mainly for find_package) --------- 33# -------- Paths (mainly for find_package) ---------
25 34
26set(PLATFORM_DIR platform/win32) 35set(PLATFORM_DIR platform/win32)
36set(APP_RENDER_SYSTEM dx11)
27set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/win10/main.cpp) 37set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/win10/main.cpp)
28 38
29# Precompiled headers fail with per target output directory. (needs CMake 3.1) 39# Precompiled headers fail with per target output directory. (needs CMake 3.1)
@@ -57,7 +67,7 @@ set(ARCH_DEFINES -D_WINDOWS -DTARGET_WINDOWS -DTARGET_WINDOWS_STORE -DXBMC_EXPOR
57if(NOT SDK_TARGET_ARCH STREQUAL arm) 67if(NOT SDK_TARGET_ARCH STREQUAL arm)
58 list(APPEND ARCH_DEFINES -D__SSE__ -D__SSE2__) 68 list(APPEND ARCH_DEFINES -D__SSE__ -D__SSE2__)
59endif() 69endif()
60set(SYSTEM_DEFINES -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS 70set(SYSTEM_DEFINES -DWIN32_LEAN_AND_MEAN -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS
61 -DFMT_HEADER_ONLY -DTAGLIB_STATIC -DNPT_CONFIG_ENABLE_LOGGING 71 -DFMT_HEADER_ONLY -DTAGLIB_STATIC -DNPT_CONFIG_ENABLE_LOGGING
62 -DPLT_HTTP_DEFAULT_USER_AGENT="UPnP/1.0 DLNADOC/1.50 Kodi" 72 -DPLT_HTTP_DEFAULT_USER_AGENT="UPnP/1.0 DLNADOC/1.50 Kodi"
63 -DPLT_HTTP_DEFAULT_SERVER="UPnP/1.0 DLNADOC/1.50 Kodi" 73 -DPLT_HTTP_DEFAULT_SERVER="UPnP/1.0 DLNADOC/1.50 Kodi"
@@ -65,7 +75,7 @@ set(SYSTEM_DEFINES -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS
65 $<$<CONFIG:Debug>:-DD3D_DEBUG_INFO>) 75 $<$<CONFIG:Debug>:-DD3D_DEBUG_INFO>)
66 76
67# Additional SYSTEM_DEFINES 77# Additional SYSTEM_DEFINES
68list(APPEND SYSTEM_DEFINES -DHAS_IRSERVERSUITE -DHAS_WIN10_NETWORK) 78list(APPEND SYSTEM_DEFINES -DHAS_WIN10_NETWORK)
69 79
70# The /MP option enables /FS by default. 80# The /MP option enables /FS by default.
71set(CMAKE_CXX_FLAGS "/MP ${CMAKE_CXX_FLAGS} /ZW /EHsc /await") 81set(CMAKE_CXX_FLAGS "/MP ${CMAKE_CXX_FLAGS} /ZW /EHsc /await")
diff --git a/cmake/scripts/windowsstore/Macros.cmake b/cmake/scripts/windowsstore/Macros.cmake
index 6e7d1d0..7240138 100644
--- a/cmake/scripts/windowsstore/Macros.cmake
+++ b/cmake/scripts/windowsstore/Macros.cmake
@@ -128,7 +128,8 @@ macro(winstore_append_props target)
128 endforeach(_dll DEBUG_DLLS) 128 endforeach(_dll DEBUG_DLLS)
129 129
130 add_deployment_content_group($(BuildRootPath)/dlls "" *.dll "${DEBUG_DLLS_EXCLUDE}") 130 add_deployment_content_group($(BuildRootPath)/dlls "" *.dll "${DEBUG_DLLS_EXCLUDE}")
131 add_deployment_content_group($(BuildRootPath)/system system **/* "$(BuildRootPath)/**/*.glsl") 131 add_deployment_content_group($(BuildRootPath)/system system **/* "$(BuildRootPath)/**/shaders/**")
132 add_deployment_content_group($(BuildRootPath)/system/shaders system/shaders **/*.fx "")
132 add_deployment_content_group($(BuildRootPath)/media media **/* "") 133 add_deployment_content_group($(BuildRootPath)/media media **/* "")
133 add_deployment_content_group($(BuildRootPath)/userdata userdata **/* "") 134 add_deployment_content_group($(BuildRootPath)/userdata userdata **/* "")
134 add_deployment_content_group($(BuildRootPath)/addons addons **/* "") 135 add_deployment_content_group($(BuildRootPath)/addons addons **/* "")
diff --git a/cmake/scripts/windowsstore/tools/patch.cmake b/cmake/scripts/windowsstore/tools/patch.cmake
index 0a342fa..b955b4c 100644
--- a/cmake/scripts/windowsstore/tools/patch.cmake
+++ b/cmake/scripts/windowsstore/tools/patch.cmake
@@ -2,7 +2,7 @@ find_program(PATCH_FOUND NAMES patch patch.exe)
2if(PATCH_FOUND) 2if(PATCH_FOUND)
3 message(STATUS "patch utility found at ${PATCH_FOUND}") 3 message(STATUS "patch utility found at ${PATCH_FOUND}")
4else() 4else()
5 set(PATCH_ARCHIVE_NAME "patch-2.5.9-7-bin-3") 5 set(PATCH_ARCHIVE_NAME "patch-2.7.6-bin")
6 set(PATCH_ARCHIVE "${PATCH_ARCHIVE_NAME}.zip") 6 set(PATCH_ARCHIVE "${PATCH_ARCHIVE_NAME}.zip")
7 set(PATCH_URL "${KODI_MIRROR}/build-deps/win32/${PATCH_ARCHIVE}") 7 set(PATCH_URL "${KODI_MIRROR}/build-deps/win32/${PATCH_ARCHIVE}")
8 set(PATCH_DOWNLOAD ${BUILD_DIR}/download/${PATCH_ARCHIVE}) 8 set(PATCH_DOWNLOAD ${BUILD_DIR}/download/${PATCH_ARCHIVE})
@@ -28,6 +28,11 @@ else()
28 28
29 # copy patch.exe into the output directory 29 # copy patch.exe into the output directory
30 file(INSTALL ${PATCH_BINARY_PATH} DESTINATION ${ADDON_DEPENDS_PATH}/bin) 30 file(INSTALL ${PATCH_BINARY_PATH} DESTINATION ${ADDON_DEPENDS_PATH}/bin)
31 # copy patch depends
32 file(GLOB PATCH_BINARIES ${PATCH_PATH}/bin/*.dll)
33 if(NOT "${PATCH_BINARIES}" STREQUAL "")
34 file(INSTALL ${PATCH_BINARIES} DESTINATION ${ADDON_DEPENDS_PATH}/bin)
35 endif()
31 36
32 # make sure that cmake can find the copied patch.exe 37 # make sure that cmake can find the copied patch.exe
33 find_program(PATCH_FOUND NAMES patch patch.exe) 38 find_program(PATCH_FOUND NAMES patch patch.exe)
diff --git a/cmake/treedata/android/subdirs.txt b/cmake/treedata/android/subdirs.txt
index b56618a..7f7fef5 100644
--- a/cmake/treedata/android/subdirs.txt
+++ b/cmake/treedata/android/subdirs.txt
@@ -1,16 +1,17 @@
1xbmc/cores/RetroPlayer/process/android cores/RetroPlayer/process/android 1xbmc/cores/RetroPlayer/process/android cores/RetroPlayer/process/android
2xbmc/platform/linux platform/linux
3xbmc/input/touch input/touch 2xbmc/input/touch input/touch
4xbmc/input/touch/generic input/touch/generic 3xbmc/input/touch/generic input/touch/generic
5xbmc/network/linux network/linux
6xbmc/network/android network/android
7xbmc/peripherals/bus/linux peripherals/bus/linux
8xbmc/peripherals/bus/android peripherals/bus/android
9xbmc/powermanagement/android powermanagement/android
10xbmc/storage/android storage/android
11xbmc/filesystem/posix filesystem/posix
12xbmc/utils/posix utils_posix
13xbmc/windowing/android windowing/android 4xbmc/windowing/android windowing/android
14xbmc/platform/posix posix 5xbmc/platform/posix platform/posix
15xbmc/platform/android/activity android_activity 6xbmc/platform/posix/filesystem platform/posix/filesystem
16xbmc/platform/android/bionic_supplement android_bionicsupplement 7xbmc/platform/posix/utils platform/posix/utils
8xbmc/platform/linux platform/linux
9xbmc/platform/linux/network platform/linux/network
10xbmc/platform/linux/peripherals platform/linux/peripherals
11xbmc/platform/android/activity platform/android/activity
12xbmc/platform/android/bionic_supplement platform/android/bionicsupplement
13xbmc/platform/android/filesystem platform/android/filesystem
14xbmc/platform/android/network platform/android/network
15xbmc/platform/android/peripherals platform/android/peripherals
16xbmc/platform/android/powermanagement platform/android/powermanagement
17xbmc/platform/android/storage platform/android/storage
diff --git a/cmake/treedata/common/games.txt b/cmake/treedata/common/games.txt
index b2faead..7b63f6a 100644
--- a/cmake/treedata/common/games.txt
+++ b/cmake/treedata/common/games.txt
@@ -1,10 +1,12 @@
1xbmc/games games 1xbmc/games games
2xbmc/games/addons games/addons 2xbmc/games/addons games/addons
3xbmc/games/addons/input games/addons/input
3xbmc/games/addons/playback games/addons/playback 4xbmc/games/addons/playback games/addons/playback
4xbmc/games/addons/savestates games/addons/savestates 5xbmc/games/addons/savestates games/addons/savestates
5xbmc/games/controllers games/controllers 6xbmc/games/controllers games/controllers
6xbmc/games/controllers/dialogs games/controllers/dialogs 7xbmc/games/controllers/dialogs games/controllers/dialogs
7xbmc/games/controllers/guicontrols games/controllers/guicontrols 8xbmc/games/controllers/guicontrols games/controllers/guicontrols
9xbmc/games/controllers/types games/controllers/types
8xbmc/games/controllers/windows games/controllers/windows 10xbmc/games/controllers/windows games/controllers/windows
9xbmc/games/dialogs games/dialogs 11xbmc/games/dialogs games/dialogs
10xbmc/games/dialogs/osd games/dialogs/osd 12xbmc/games/dialogs/osd games/dialogs/osd
diff --git a/cmake/treedata/common/retroplayer.txt b/cmake/treedata/common/retroplayer.txt
index 97e27b3..0239801 100644
--- a/cmake/treedata/common/retroplayer.txt
+++ b/cmake/treedata/common/retroplayer.txt
@@ -1,7 +1,8 @@
1xbmc/cores/RetroPlayer cores/RetroPlayer 1xbmc/cores/RetroPlayer cores/RetroPlayer
2xbmc/cores/RetroPlayer/guibridge cores/RetroPlayer/guibridge
2xbmc/cores/RetroPlayer/guicontrols cores/RetroPlayer/guicontrols 3xbmc/cores/RetroPlayer/guicontrols cores/RetroPlayer/guicontrols
4xbmc/cores/RetroPlayer/guiwindows cores/RetroPlayer/guiwindows
3xbmc/cores/RetroPlayer/process cores/RetroPlayer/process 5xbmc/cores/RetroPlayer/process cores/RetroPlayer/process
4xbmc/cores/RetroPlayer/rendering cores/RetroPlayer/rendering 6xbmc/cores/RetroPlayer/rendering cores/RetroPlayer/rendering
5xbmc/cores/RetroPlayer/rendering/VideoRenderers cores/RetroPlayer/rendering/VideoRenderers 7xbmc/cores/RetroPlayer/rendering/VideoRenderers cores/RetroPlayer/rendering/VideoRenderers
6xbmc/cores/RetroPlayer/rendering/VideoShaders cores/RetroPlayer/rendering/VideoShaders 8xbmc/cores/RetroPlayer/rendering/VideoShaders cores/RetroPlayer/rendering/VideoShaders
7xbmc/cores/RetroPlayer/windows cores/RetroPlayer/windows
diff --git a/cmake/treedata/common/subdirs.txt b/cmake/treedata/common/subdirs.txt
index d5412b5..368f473 100644
--- a/cmake/treedata/common/subdirs.txt
+++ b/cmake/treedata/common/subdirs.txt
@@ -17,8 +17,8 @@ xbmc/commons commons
17xbmc/dbwrappers dbwrappers 17xbmc/dbwrappers dbwrappers
18xbmc/dialogs dialogs 18xbmc/dialogs dialogs
19xbmc/favourites favourites 19xbmc/favourites favourites
20xbmc/guiinfo guiinfo
21xbmc/guilib guilib 20xbmc/guilib guilib
21xbmc/guilib/guiinfo guilib_guiinfo
22xbmc/input input 22xbmc/input input
23xbmc/input/joysticks input/joysticks 23xbmc/input/joysticks input/joysticks
24xbmc/input/joysticks/dialogs input/joysticks/dialogs 24xbmc/input/joysticks/dialogs input/joysticks/dialogs
diff --git a/cmake/treedata/freebsd/subdirs.txt b/cmake/treedata/freebsd/subdirs.txt
index f7651ee..fe0725c 100644
--- a/cmake/treedata/freebsd/subdirs.txt
+++ b/cmake/treedata/freebsd/subdirs.txt
@@ -1,12 +1,11 @@
1xbmc/platform/linux platform/linux 1xbmc/platform/posix platform/posix
2xbmc/platform/linux/input platform/linux/input 2xbmc/platform/posix/filesystem platform/posix/filesystem
3xbmc/input/touch input/touch 3xbmc/platform/posix/utils platform/posix/utils
4xbmc/input/touch/generic input/touch/generic 4xbmc/platform/linux platform/linux
5xbmc/network/linux network/linux 5xbmc/platform/linux/input platform/linux/input
6xbmc/peripherals/bus/linux peripherals/bus/linux 6xbmc/platform/linux/network platform/linux/network
7xbmc/powermanagement/linux powermanagement/linux 7xbmc/platform/linux/peripherals platform/linux/peripherals
8xbmc/storage/linux storage/linux 8xbmc/platform/linux/powermanagement platform/linux/powermanagement
9xbmc/filesystem/posix filesystem/posix 9xbmc/platform/linux/storage platform/linux/storage
10xbmc/utils/posix utils_posix 10xbmc/input/touch input/touch
11xbmc/platform/posix posix 11xbmc/input/touch/generic input/touch/generic
12xbmc/freebsd freebsdsupport
diff --git a/cmake/treedata/ios/subdirs.txt b/cmake/treedata/ios/subdirs.txt
index 00f5cf1..a287418 100644
--- a/cmake/treedata/ios/subdirs.txt
+++ b/cmake/treedata/ios/subdirs.txt
@@ -1,17 +1,17 @@
1xbmc/platform/linux platform/linux 1xbmc/platform/linux platform/linux
2xbmc/input/touch input/touch 2xbmc/platform/linux/network platform/linux/network
3xbmc/input/touch/generic input/touch/generic 3xbmc/input/touch input/touch
4xbmc/network/linux network/linux 4xbmc/input/touch/generic input/touch/generic
5xbmc/network/osx network/osx 5xbmc/platform/posix posix
6xbmc/peripherals/bus/osx peripherals/bus/osx 6xbmc/platform/posix/filesystem platform/posix/filesystem
7xbmc/powermanagement/osx powermanagement/osx 7xbmc/platform/posix/utils platform/posix/utils
8xbmc/storage/osx storage/osx 8xbmc/platform/darwin platform/darwin
9xbmc/platform/posix posix 9xbmc/platform/darwin/ios platform/ios
10xbmc/platform/darwin platform_darwin 10xbmc/platform/darwin/ios-common platform/ios-common
11xbmc/platform/darwin/ios platform_ios 11xbmc/platform/darwin/osx/network platform/osx/network
12xbmc/platform/darwin/ios-common platform_ios-common 12xbmc/platform/darwin/osx/peripherals platform/osx/peripherals
13xbmc/filesystem/posix filesystem/posix 13xbmc/platform/darwin/osx/powermanagement platform/darwin/osx/powermanagement
14xbmc/utils/posix utils_posix 14xbmc/platform/darwin/osx/storage platform/osx/storage
15xbmc/windowing/osx windowing/osx 15xbmc/windowing/osx windowing/osx
16xbmc/cores/RetroPlayer/process/ios cores/RetroPlayer/process/ios 16xbmc/cores/RetroPlayer/process/ios cores/RetroPlayer/process/ios
17xbmc/cores/VideoPlayer/Process/ios cores/VideoPlayer/Process/ios 17xbmc/cores/VideoPlayer/Process/ios cores/VideoPlayer/Process/ios
diff --git a/cmake/treedata/linux/subdirs.txt b/cmake/treedata/linux/subdirs.txt
index b310b53..6e1d013 100644
--- a/cmake/treedata/linux/subdirs.txt
+++ b/cmake/treedata/linux/subdirs.txt
@@ -1,14 +1,14 @@
1xbmc/platform/linux platform/linux 1xbmc/platform/posix platform/posix
2xbmc/platform/linux/input platform/linux/input 2xbmc/platform/posix/filesystem platform/posix/filesystem
3xbmc/input/touch input/touch 3xbmc/platform/posix/utils platform/posix/utils
4xbmc/input/touch/generic input/touch/generic 4xbmc/platform/linux platform/linux
5xbmc/network/linux network/linux 5xbmc/platform/linux/input platform/linux/input
6xbmc/peripherals/bus/linux peripherals/bus/linux 6xbmc/platform/linux/network platform/linux/network
7xbmc/powermanagement/linux powermanagement/linux 7xbmc/platform/linux/peripherals platform/linux/peripherals
8xbmc/storage/linux storage/linux 8xbmc/platform/linux/powermanagement platform/linux/powermanagement
9xbmc/filesystem/posix filesystem/posix 9xbmc/platform/linux/storage platform/linux/storage
10xbmc/utils/posix utils_posix 10xbmc/input/touch input/touch
11xbmc/platform/posix posix 11xbmc/input/touch/generic input/touch/generic
12xbmc/cores/RetroPlayer/process/rbpi cores/RetroPlayer/process/rbpi 12xbmc/cores/RetroPlayer/process/rbpi cores/RetroPlayer/process/rbpi
13xbmc/cores/VideoPlayer/Process/rbpi cores/VideoPlayer/Process/rbpi 13xbmc/cores/VideoPlayer/Process/rbpi cores/VideoPlayer/Process/rbpi
14xbmc/windowing/linux windowing/linux 14xbmc/windowing/linux windowing/linux
diff --git a/cmake/treedata/osx/subdirs.txt b/cmake/treedata/osx/subdirs.txt
index 5b1b302..166a966 100644
--- a/cmake/treedata/osx/subdirs.txt
+++ b/cmake/treedata/osx/subdirs.txt
@@ -1,14 +1,14 @@
1xbmc/platform/linux platform/linux 1xbmc/platform/posix posix
2xbmc/network/linux network/linux 2xbmc/platform/posix/filesystem platform/posix/filesystem
3xbmc/network/osx network/osx 3xbmc/platform/posix/utils platform/posix/utils
4xbmc/peripherals/bus/osx peripherals/bus/osx 4xbmc/platform/linux platform/linux
5xbmc/powermanagement/osx powermanagement/osx 5xbmc/platform/linux/network platform/linux/network
6xbmc/storage/osx storage/osx 6xbmc/platform/darwin platform/darwin
7xbmc/platform/posix posix 7xbmc/platform/darwin/osx platform/osx
8xbmc/platform/darwin platform_darwin 8xbmc/platform/darwin/osx/network platform/osx/network
9xbmc/platform/darwin/osx platform_osx 9xbmc/platform/darwin/osx/peripherals platform/osx/peripherals
10xbmc/filesystem/posix filesystem/posix 10xbmc/platform/darwin/osx/powermanagement platform/darwin/osx/powermanagement
11xbmc/utils/posix utils_posix 11xbmc/platform/darwin/osx/storage platform/osx/storage
12xbmc/windowing/osx windowing/osx 12xbmc/windowing/osx windowing/osx
13xbmc/cores/RetroPlayer/process/osx cores/RetroPlayer/process/osx 13xbmc/cores/RetroPlayer/process/osx cores/RetroPlayer/process/osx
14xbmc/cores/VideoPlayer/Process/osx cores/VideoPlayer/Process/osx 14xbmc/cores/VideoPlayer/Process/osx cores/VideoPlayer/Process/osx
diff --git a/cmake/treedata/windows/subdirs.txt b/cmake/treedata/windows/subdirs.txt
index 8344320..a2c8c29 100644
--- a/cmake/treedata/windows/subdirs.txt
+++ b/cmake/treedata/windows/subdirs.txt
@@ -1,17 +1,17 @@
1xbmc/platform/win32 platform_win32 1xbmc/platform/win32 platform/win32
2xbmc/input/windows input/windows 2xbmc/platform/win32/input platform/win32/input
3xbmc/input/touch input/touch 3xbmc/platform/win32/filesystem platform/win32/filesystem
4xbmc/input/touch/generic input/touch/generic 4xbmc/platform/win32/network platform/win32/network
5xbmc/network/windows network/windows 5xbmc/platform/win32/peripherals platform/win32/peripherals
6xbmc/network/mdns network/mdns 6xbmc/platform/win32/powermanagement platform/win32/powermanagement
7xbmc/peripherals/bus/win32 peripherals/bus/win32 7xbmc/platform/win32/storage platform/win32/storage
8xbmc/powermanagement/windows powermanagement/windows 8xbmc/platform/win32/utils platform/win32/utils
9xbmc/storage/windows storage/windows 9xbmc/input/touch input/touch
10xbmc/filesystem/win32 filesystem/win32 10xbmc/input/touch/generic input/touch/generic
11xbmc/utils/win32 utils_win32 11xbmc/network/mdns network/mdns
12xbmc/rendering/dx rendering_dx 12xbmc/rendering/dx rendering/dx
13xbmc/threads/platform/win threads_win 13xbmc/threads/platform/win threads/win
14xbmc/windowing/windows windowing/windows 14xbmc/windowing/windows windowing/windows
15xbmc/cores/RetroPlayer/process/windows cores/RetroPlayer/process/windows 15xbmc/cores/RetroPlayer/process/windows cores/RetroPlayer/process/windows
16xbmc/cores/RetroPlayer/rendering/VideoShaders/windows cores/RetroPlayer/rendering/VideoShaders/windows 16xbmc/cores/RetroPlayer/rendering/VideoShaders/windows cores/RetroPlayer/rendering/VideoShaders/windows
17xbmc/cores/VideoPlayer/Process/windows cores/VideoPlayer/Process/windows 17xbmc/cores/VideoPlayer/Process/windows cores/VideoPlayer/Process/windows
diff --git a/cmake/treedata/windowsstore/subdirs.txt b/cmake/treedata/windowsstore/subdirs.txt
index 84150d5..604be08 100644
--- a/cmake/treedata/windowsstore/subdirs.txt
+++ b/cmake/treedata/windowsstore/subdirs.txt
@@ -1,16 +1,15 @@
1xbmc/platform/win10 platform_win10 1xbmc/platform/win10 platform/win10
2xbmc/input/windows input/windows 2xbmc/platform/win10/filesystem platform/win10/filesystem
3xbmc/input/touch input/touch 3xbmc/platform/win10/network platform/win10/network
4xbmc/input/touch/generic input/touch/generic 4xbmc/platform/win10/peripherals platform/win10/peripherals
5xbmc/network/win10 network/win10 5xbmc/platform/win10/powermanagement platfrom/win10/powermanagement
6xbmc/network/mdns network/mdns 6xbmc/platform/win10/storage platfrom/win10/storage
7xbmc/peripherals/bus/win10 peripherals/bus/win10 7xbmc/platform/win32/filesystem platform/win32/filesystem
8xbmc/powermanagement/win10 powermanagement/win10 8xbmc/platform/win32/utils platform/win32/utils
9xbmc/storage/win10 storage/win10 9xbmc/input/touch input/touch
10xbmc/filesystem/win32 filesystem/win32 10xbmc/input/touch/generic input/touch/generic
11xbmc/filesystem/win10 filesystem/win10 11xbmc/network/mdns network/mdns
12xbmc/utils/win32 utils_win32 12xbmc/rendering/dx rendering/dx
13xbmc/rendering/dx rendering_dx 13xbmc/threads/platform/win threads/win
14xbmc/threads/platform/win threads_win 14xbmc/windowing/win10 windowing/win10
15xbmc/windowing/win10 windowing/win10
16xbmc/cores/VideoPlayer/Process/windows cores/VideoPlayer/Process/windows 15xbmc/cores/VideoPlayer/Process/windows cores/VideoPlayer/Process/windows