From b3d195f0188758a14875a5a2f270e4fd190a679f Mon Sep 17 00:00:00 2001 From: manuel Date: Tue, 17 Apr 2018 00:15:38 +0200 Subject: sync with upstream --- cmake/KodiConfig.cmake.in | 1 + cmake/README.md | 4 +- cmake/addons/CMakeLists.txt | 8 +- .../depends/common/kodi-platform/kodi-platform.txt | 2 +- .../depends/windows/cmake/mingw/CMakeLists.txt | 37 ------- .../windows/cmake/mingw/MinGWConfig.cmake.in | 3 - .../windows/cmake/mingw/Toolchain_mingw32.cmake.in | 17 ---- cmake/addons/depends/windows/cmake/mingw/mingw.txt | 1 - .../depends/windows/cmake/mingw/mingw32-cmd.bat.in | 6 -- .../depends/windows/cmake/mingw/noinstall.txt | 0 .../depends/windows/cmake/msys/CMakeLists.txt | 5 - cmake/addons/depends/windows/cmake/msys/msys.txt | 1 - .../depends/windows/cmake/msys/noinstall.txt | 0 cmake/cpack/deb/packages/kodi.txt.in | 2 +- cmake/installdata/common/addons.txt | 1 - cmake/installdata/windowsstore/certificates.txt | 1 + cmake/modules/FindAML.cmake | 14 +++ cmake/modules/FindAlsa.cmake | 2 +- cmake/modules/FindCdio.cmake | 2 +- cmake/modules/FindCpluff.cmake | 33 ++---- cmake/modules/FindCurl.cmake | 34 ------- cmake/modules/FindFFMPEG.cmake | 12 ++- cmake/modules/FindLircClient.cmake | 36 +++++++ cmake/modules/FindMariaDBClient.cmake | 69 +++++++++++++ cmake/modules/FindMicroHttpd.cmake | 2 +- cmake/modules/FindMir.cmake | 2 +- cmake/modules/FindSSH.cmake | 2 +- cmake/modules/FindWaylandProtocols.cmake | 24 +++++ cmake/modules/FindWaylandpp.cmake | 73 +++++--------- cmake/modules/FindXkbcommon.cmake | 26 ++--- cmake/platform/freebsd/wayland.cmake | 18 +--- cmake/platform/linux/aml.cmake | 2 + cmake/platform/linux/gbm.cmake | 2 + cmake/platform/linux/mir.cmake | 1 + cmake/platform/linux/rbpi.cmake | 2 + cmake/platform/linux/wayland.cmake | 6 +- cmake/platform/linux/x11.cmake | 1 + cmake/scripts/android/ArchSetup.cmake | 4 +- cmake/scripts/android/Install.cmake | 31 ++++-- cmake/scripts/common/AddonHelpers.cmake | 33 +++--- cmake/scripts/common/ArchSetup.cmake | 4 + cmake/scripts/common/HandleDepends.cmake | 3 - cmake/scripts/common/Macros.cmake | 111 ++++++++++++++------- cmake/scripts/common/Uninstall.cmake | 36 +++++++ cmake/scripts/freebsd/ArchSetup.cmake | 5 + cmake/scripts/ios/ArchSetup.cmake | 2 +- cmake/scripts/linux/ArchSetup.cmake | 28 ++++-- cmake/scripts/linux/ExtraTargets.cmake | 6 +- cmake/scripts/windows/ArchSetup.cmake | 14 ++- cmake/scripts/windows/tools/patch.cmake | 7 +- cmake/scripts/windowsstore/ArchSetup.cmake | 14 ++- cmake/scripts/windowsstore/Macros.cmake | 3 +- cmake/scripts/windowsstore/tools/patch.cmake | 7 +- cmake/treedata/android/subdirs.txt | 25 ++--- cmake/treedata/common/games.txt | 2 + cmake/treedata/common/retroplayer.txt | 3 +- cmake/treedata/common/subdirs.txt | 2 +- cmake/treedata/freebsd/subdirs.txt | 23 ++--- cmake/treedata/ios/subdirs.txt | 34 +++---- cmake/treedata/linux/subdirs.txt | 24 ++--- cmake/treedata/osx/subdirs.txt | 28 +++--- cmake/treedata/windows/subdirs.txt | 28 +++--- cmake/treedata/windowsstore/subdirs.txt | 29 +++--- 63 files changed, 548 insertions(+), 410 deletions(-) delete mode 100644 cmake/addons/depends/windows/cmake/mingw/CMakeLists.txt delete mode 100644 cmake/addons/depends/windows/cmake/mingw/MinGWConfig.cmake.in delete mode 100644 cmake/addons/depends/windows/cmake/mingw/Toolchain_mingw32.cmake.in delete mode 100644 cmake/addons/depends/windows/cmake/mingw/mingw.txt delete mode 100644 cmake/addons/depends/windows/cmake/mingw/mingw32-cmd.bat.in delete mode 100644 cmake/addons/depends/windows/cmake/mingw/noinstall.txt delete mode 100644 cmake/addons/depends/windows/cmake/msys/CMakeLists.txt delete mode 100644 cmake/addons/depends/windows/cmake/msys/msys.txt delete mode 100644 cmake/addons/depends/windows/cmake/msys/noinstall.txt create mode 100644 cmake/installdata/windowsstore/certificates.txt create mode 100644 cmake/modules/FindLircClient.cmake create mode 100644 cmake/modules/FindMariaDBClient.cmake create mode 100644 cmake/modules/FindWaylandProtocols.cmake (limited to 'cmake') 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() if(NOT @APP_NAME_UC@_DATA_DIR) set(@APP_NAME_UC@_DATA_DIR @APP_DATA_DIR@) endif() +set(APP_RENDER_SYSTEM @APP_RENDER_SYSTEM@) if(NOT WIN32) set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} @CXX11_SWITCH@") endif() 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 ### Windows For Windows the dependencies can be found in the -[Wiki](http://kodi.wiki/view/HOW-TO:Compile_Kodi_for_Windows) (Step 1-4). If not already available on your pc, you should +[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 install 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). On 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) ``` ### Windows with Visual Studio project files +These 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`. + #### Build for win32 ``` cmake -G "Visual Studio 14" 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 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.3) project(kodi-addons) list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) @@ -403,8 +403,12 @@ foreach(addon ${addons}) endif() # create a forwarding target to the addon-package target + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig) + set(config --config $) + endif() add_custom_target(package-${id} - COMMAND ${CMAKE_COMMAND} --build ${id}-prefix/src/${id}-build --target addon-package + COMMAND ${CMAKE_COMMAND} --build ${id}-prefix/src/${id}-build ${config} --target addon-package DEPENDS ${id}) add_dependencies(package-addons package-${id}) 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 @@ -cmake_minimum_required(VERSION 3.1) -project(mingw) - -function(generate_mingw32_wrapper cmd) - set(CMD ${cmd}) - configure_file(${PROJECT_SOURCE_DIR}/mingw32-cmd.bat.in ${MINGW_PATH}/bin/${CMD}.bat @ONLY) -endfunction() - -get_filename_component(CORE_SOURCE_DIR ${PROJECT_SOURCE_DIR}/../../../../../.. REALPATH) - -set(MSYS_PATH "${CORE_SOURCE_DIR}/project/BuildDependencies/msys64") -if(CMAKE_SIZEOF_VOID_P EQUAL 4) - set(MINGW_PATH "${MSYS_PATH}/mingw32") -elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(MINGW_PATH "${MSYS_PATH}/mingw64") -endif() - -# configure the MinGW toolchain file -configure_file(${PROJECT_SOURCE_DIR}/Toolchain_mingw32.cmake.in ${CMAKE_INSTALL_PREFIX}/Toolchain_mingw32.cmake @ONLY) - -# configure MinGWConfig.cmake -configure_file(${PROJECT_SOURCE_DIR}/MinGWConfig.cmake.in ${CMAKE_INSTALL_PREFIX}/MinGWConfig.cmake) - -# TODO: MinGW GCC 5.3.0-1 comes without cc.exe, Remove this once package is bumped to 5.3.0-p2 -# See https://github.com/Alexpux/MINGW-packages/pull/1034 -if(NOT EXISTS ${MINGW_PATH}/bin/cc.exe) - execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${MINGW_PATH}/bin/gcc.exe ${MINGW_PATH}/bin/cc.exe) -endif() - -# configure the MinGW wrapper batch scripts -generate_mingw32_wrapper("make") -generate_mingw32_wrapper("gcc") -generate_mingw32_wrapper("cc") -generate_mingw32_wrapper("g++") -generate_mingw32_wrapper("ar") -generate_mingw32_wrapper("ld") -generate_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 @@ -set(MINGW_INCLUDE_DIRS @MINGW_PATH@/include) -set(MINGW_MAKE @MINGW_PATH@/bin/make.bat -j$ENV{NUMBER_OF_PROCESSORS}) -set(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 @@ -set(CMAKE_SYSTEM_VERSION 1) -set(CMAKE_SYSTEM_NAME Windows) - -set(CMAKE_FIND_ROOT_PATH @CMAKE_FIND_ROOT_PATH@ @CMAKE_INSTALL_PREFIX@ @MSYS_PATH@ @MINGW_PATH@) - -# specify the cross compiler -set(CMAKE_C_COMPILER @MINGW_PATH@/bin/gcc.bat) -set(CMAKE_CXX_COMPILER @MINGW_PATH@/bin/g++.bat) -set(CMAKE_AR @MINGW_PATH@/bin/ar.bat CACHE FILEPATH "Archiver") -set(CMAKE_LINKER @MINGW_PATH@/bin/ld.bat CACHE FILEPATH "Linker") -SET(CMAKE_RC_COMPILER @MINGW_PATH@/bin/windres.bat) - -# search for programs in the build host directories -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -# for libraries and headers in the target directories -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(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 @@ -mingw 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 @@ -@ECHO OFF -SETLOCAL - -SET PATH=@MINGW_PATH@/bin;@MSYS_PATH@/usr/bin;%PATH% -@CMD@.exe %* - 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 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 @@ -cmake_minimum_required(VERSION 3.1) -project(msys LANGUAGES NONE) - -# This is an empty dummy dependency because a lot of game addons depend on it. -# 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 @@ -msys 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 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 PACKAGE_SECTION video PACKAGE_PRIORITY optional PACKAGE_SHLIBDEPS -PACKAGE_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 +PACKAGE_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 PACKAGE_RECOMMENDS libvdpau1, libva-intel-vaapi-driver, libva1 PACKAGE_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 PACKAGE_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 @@ addons/audioencoder.kodi.builtin.aac/* addons/audioencoder.kodi.builtin.wma/* addons/game.controller.default/* -addons/kodi.adsp/* addons/kodi.audiodecoder/* addons/kodi.game/* addons/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) find_package_handle_standard_args(AML REQUIRED_VARS AML_INCLUDE_DIR) +include(CheckCSourceCompiles) +set(CMAKE_REQUIRED_INCLUDES ${AML_INCLUDE_DIR}) +check_c_source_compiles("#include + + int main() + { + int i = VIDEO_DEC_FORMAT_VP9; + return 0; + } + " AML_HAS_VP9) + if(AML_FOUND) set(AML_INCLUDE_DIRS ${AML_INCLUDE_DIR}) set(AML_DEFINITIONS -DHAS_LIBAMCODEC=1) + if(AML_HAS_VP9) + list(APPEND AML_DEFINITIONS -DHAS_LIBAMCODEC_VP9=1) + endif() if(NOT TARGET AML::AML) 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 @@ # ALSA::ALSA - The Alsa library if(PKG_CONFIG_FOUND) - pkg_check_modules(PC_ALSA alsa QUIET) + pkg_check_modules(PC_ALSA alsa>=1.0.27 QUIET) endif() find_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 @@ # CDIO::CDIO - The cdio library if(PKG_CONFIG_FOUND) - pkg_check_modules(PC_CDIO libcdio libiso9660 QUIET) + pkg_check_modules(PC_CDIO libcdio>=0.78 libiso9660 QUIET) endif() find_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 @@ # # and link Kodi against the cpluff libraries. -if(NOT WIN32) - find_package(EXPAT REQUIRED) +find_package(EXPAT REQUIRED) +if(CORE_SYSTEM_NAME MATCHES windows) + add_subdirectory(${CMAKE_SOURCE_DIR}/lib/cpluff) + set(CPLUFF_LIBRARIES $ ${EXPAT_LIBRARIES}) +else() string(REPLACE ";" " " defines "${CMAKE_C_FLAGS} ${SYSTEM_DEFINES} -I${EXPAT_INCLUDE_DIR}") get_filename_component(expat_dir ${EXPAT_LIBRARY} DIRECTORY) set(ldflags "-L${expat_dir}") @@ -31,7 +34,8 @@ if(NOT WIN32) --host=${ARCH} CFLAGS=${defines} CPPFLAGS=${cppflags} - LDFLAGS=${ldflags}) + LDFLAGS=${ldflags} + BUILD_BYPRODUCTS /lib/libcpluff.a) ExternalProject_Add_Step(libcpluff autoreconf DEPENDEES download update patch DEPENDERS configure @@ -39,24 +43,9 @@ if(NOT WIN32) COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif WORKING_DIRECTORY ) - set(ldflags "${ldflags};-lexpat") - core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/lib/libcpluff.a - system/libcpluff libcpluff extras "${ldflags}") - set(CPLUFF_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/include) - set(CPLUFF_FOUND 1) - mark_as_advanced(CPLUFF_INCLUDE_DIRS CPLUFF_FOUND) -else() - find_path(CPLUFF_INCLUDE_DIR cpluff.h) - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(Cpluff - REQUIRED_VARS CPLUFF_INCLUDE_DIR) - - if(CPLUFF_FOUND) - set(CPLUFF_INCLUDE_DIRS ${CPLUFF_INCLUDE_DIR}) - endif() - mark_as_advanced(CPLUFF_INCLUDE_DIRS CPLUFF_FOUND) - - add_custom_target(libcpluff) + set(CPLUFF_LIBRARIES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/lib/libcpluff.a ${EXPAT_LIBRARIES}) endif() +set(CPLUFF_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/include) +set(CPLUFF_FOUND 1) +mark_as_advanced(CPLUFF_INCLUDE_DIRS CPLUFF_LIBRARIES) set_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) set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR}) set(CURL_LIBRARIES ${CURL_LIBRARY}) - # Check whether OpenSSL inside libcurl is static. - if(UNIX) - if(NOT DEFINED HAS_CURL_STATIC) - get_filename_component(CURL_LIBRARY_DIR ${CURL_LIBRARY} DIRECTORY) - find_soname(CURL REQUIRED) - - if(APPLE) - set(libchecker nm) - set(searchpattern "T [_]?CRYPTO_set_locking_call") - else() - set(libchecker readelf -s) - set(searchpattern "CRYPTO_set_locking_call") - endif() - execute_process( - COMMAND ${libchecker} ${CURL_LIBRARY_DIR}/${CURL_SONAME} - COMMAND grep -Eq ${searchpattern} - RESULT_VARIABLE HAS_CURL_STATIC) - unset(libchecker) - unset(searchpattern) - if(HAS_CURL_STATIC EQUAL 0) - set(HAS_CURL_STATIC TRUE) - else() - set(HAS_CURL_STATIC FALSE) - endif() - set(HAS_CURL_STATIC ${HAS_CURL_STATIC} CACHE INTERNAL - "OpenSSL is statically linked into Curl") - message(STATUS "OpenSSL is statically linked into Curl: ${HAS_CURL_STATIC}") - endif() - endif() - - if(HAS_CURL_STATIC) - set(CURL_DEFINITIONS -DHAS_CURL_STATIC=1) - endif() - if(NOT TARGET Curl::Curl) add_library(Curl::Curl UNKNOWN IMPORTED) 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() # external FFMPEG if(NOT ENABLE_INTERNAL_FFMPEG OR KODI_DEPENDSBUILD) if(FFMPEG_PATH) - set(ENV{PKG_CONFIG_PATH} "${FFMPEG_PATH}/lib/pkgconfig") list(APPEND CMAKE_PREFIX_PATH ${FFMPEG_PATH}) endif() @@ -236,8 +235,6 @@ if(NOT FFMPEG_FOUND) -DCROSSCOMPILING=${CMAKE_CROSSCOMPILING} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} -DOS=${OS} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_AR=${CMAKE_AR}) endif() @@ -253,6 +250,9 @@ if(NOT FFMPEG_FOUND) -DCORE_PLATFORM_NAME=${CORE_PLATFORM_NAME_LC} -DCPU=${CPU} -DENABLE_NEON=${ENABLE_NEON} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DENABLE_CCACHE=${ENABLE_CCACHE} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS} @@ -264,8 +264,12 @@ if(NOT FFMPEG_FOUND) ${CMAKE_SOURCE_DIR}/tools/depends/target/ffmpeg/FindGnuTls.cmake ) + find_program(BASH_COMMAND bash) + if(NOT BASH_COMMAND) + message(FATAL_ERROR "Internal FFmpeg requires bash.") + endif() file(WRITE ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg/ffmpeg-link-wrapper -"#!/bin/bash +"#!${BASH_COMMAND} if [[ $@ == *${APP_NAME_LC}.bin* || $@ == *${APP_NAME_LC}${APP_BINARY_SUFFIX}* || $@ == *${APP_NAME_LC}.so* || $@ == *${APP_NAME_LC}-test* ]] then 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 @@ +# FindLircClient +# ----------- +# Finds the liblirc_client library +# +# This will will define the following variables:: +# +# LIRCCLIENT_FOUND - if false, do not try to link to lirc_client +# LIRCCLIENT_INCLUDE_DIRS - where to find lirc/lirc_client.h +# LIRCCLIENT_LIBRARYS - the library to link against +# LIRCCLIENT_DEFINITIONS - the lirc definitions + +if(PKG_CONFIG_FOUND) + pkg_check_modules(PC_LIRC lirc QUIET) +endif() + +find_path(LIRCCLIENT_INCLUDE_DIR lirc/lirc_client.h PATHS ${PC_LIRC_INCLUDEDIR}) +find_library(LIRCCLIENT_LIBRARY lirc_client PATHS ${PC_LIRC_LIBDIR}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LircClient + REQUIRED_VARS LIRCCLIENT_LIBRARY LIRCCLIENT_INCLUDE_DIR) + +if(LIRCCLIENT_FOUND) + set(LIRCCLIENT_LIBRARIES ${LIRCCLIENT_LIBRARY}) + set(LIRCCLIENT_INCLUDE_DIRS ${LIRCCLIENT_INCLUDE_DIR}) + set(LIRCCLIENT_DEFINITIONS -DHAS_LIRC=1) + + if(NOT TARGET LIRCCLIENT::LIRCCLIENT) + add_library(LIRCCLIENT::LIRCCLIENT UNKNOWN IMPORTED) + set_target_properties(LIRCCLIENT::LIRCCLIENT PROPERTIES + IMPORTED_LOCATION "${LIRCCLIENT_LIBRARYS}" + INTERFACE_INCLUDE_DIRECTORIES "${LIRCCLIENT_INCLUDE_DIRS}") + endif() +endif() + +mark_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 @@ +#.rst: +# FindMariaDBClient +# --------------- +# Finds the MariaDBClient library +# +# This will will define the following variables:: +# +# MARIADBCLIENT_FOUND - system has MariaDBClient +# MARIADBCLIENT_INCLUDE_DIRS - the MariaDBClient include directory +# MARIADBCLIENT_LIBRARIES - the MariaDBClient libraries +# MARIADBCLIENT_DEFINITIONS - the MariaDBClient compile definitions +# +# and the following imported targets:: +# +# MariaDBClient::MariaDBClient - The MariaDBClient library + +# Don't find system wide installed version on Windows +if(WIN32) + set(EXTRA_FIND_ARGS NO_SYSTEM_ENVIRONMENT_PATH) +else() + set(EXTRA_FIND_ARGS) +endif() + +find_path(MARIADBCLIENT_INCLUDE_DIR NAMES mariadb/mysql.h mariadb/server/mysql.h) +find_library(MARIADBCLIENT_LIBRARY_RELEASE NAMES mariadbclient libmariadb + PATH_SUFFIXES mariadb + ${EXTRA_FIND_ARGS}) +find_library(MARIADBCLIENT_LIBRARY_DEBUG NAMES mariadbclient libmariadb + PATH_SUFFIXES mariadb + ${EXTRA_FIND_ARGS}) + +if(MARIADBCLIENT_INCLUDE_DIR AND EXISTS "${MARIADBCLIENT_INCLUDE_DIR}/mariadb/mariadb_version.h") + file(STRINGS "${MARIADBCLIENT_INCLUDE_DIR}/mariadb/mariadb_version.h" mariadb_version_str REGEX "^#define[\t ]+MARIADB_CLIENT_VERSION_STR[\t ]+\".*\".*") + string(REGEX REPLACE "^#define[\t ]+MARIADB_CLIENT_VERSION_STR[\t ]+\"([^\"]+)\".*" "\\1" MARIADBCLIENT_VERSION_STRING "${mariadb_version_str}") + unset(mariadb_version_str) +endif() + +include(SelectLibraryConfigurations) +select_library_configurations(MARIADBCLIENT) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(MariaDBClient + REQUIRED_VARS MARIADBCLIENT_LIBRARY MARIADBCLIENT_INCLUDE_DIR + VERSION_VAR MARIADBCLIENT_VERSION_STRING) + +if(MARIADBCLIENT_FOUND) + set(MARIADBCLIENT_LIBRARIES ${MARIADBCLIENT_LIBRARY}) + set(MARIADBCLIENT_INCLUDE_DIRS ${MARIADBCLIENT_INCLUDE_DIR}) + set(MARIADBCLIENT_DEFINITIONS -DHAS_MARIADB=1) + + if(NOT TARGET MariaDBClient::MariaDBClient) + add_library(MariaDBClient::MariaDBClient UNKNOWN IMPORTED) + if(MARIADBCLIENT_LIBRARY_RELEASE) + set_target_properties(MariaDBClient::MariaDBClient PROPERTIES + IMPORTED_CONFIGURATIONS RELEASE + IMPORTED_LOCATION "${MARIADBCLIENT_LIBRARY_RELEASE}") + endif() + if(MARIADBCLIENT_LIBRARY_DEBUG) + set_target_properties(MariaDBClient::MariaDBClient PROPERTIES + IMPORTED_CONFIGURATIONS DEBUG + IMPORTED_LOCATION "${MARIADBCLIENT_LIBRARY_DEBUG}") + endif() + set_target_properties(MariaDBClient::MariaDBClient PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${MARIADBCLIENT_INCLUDE_DIR}" + INTERFACE_COMPILE_DEFINITIONS HAS_MARIADB=1) + endif() +endif() + +mark_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 @@ # MicroHttpd::MicroHttpd - The MicroHttpd library if(PKG_CONFIG_FOUND) - pkg_check_modules(PC_MICROHTTPD libmicrohttpd>=0.4 QUIET) + pkg_check_modules(PC_MICROHTTPD libmicrohttpd>=0.9.40 QUIET) endif() find_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 PATHS ${PC_MIR_LIBRARIES} ${PC_MIR_LIBRARY_DIRS}) include (FindPackageHandleStandardArgs) -find_package_handle_standard_args (MIR +find_package_handle_standard_args (Mir REQUIRED_VARS MIR_LIBRARY MIR_INCLUDE_DIR) if (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 @@ # SSH::SSH - The SSH library if(PKG_CONFIG_FOUND) - pkg_check_modules(PC_SSH libssh QUIET) + pkg_check_modules(PC_SSH libssh>=0.6 QUIET) endif() find_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 @@ +# FindWaylandProtocols +# -------------------- +# Find wayland-protocols +# +# This will will define the following variables:: +# +# WAYLAND_PROTOCOLS_DIR - directory containing the additional Wayland protocols +# from the wayland-protocols package + +pkg_check_modules(PC_WAYLAND_PROTOCOLS wayland-protocols) +if(PC_WAYLAND_PROTOCOLS_FOUND) + pkg_get_variable(WAYLAND_PROTOCOLS_DIR wayland-protocols pkgdatadir) +endif() + +# Promote to cache variables so all code can access it +set(WAYLAND_PROTOCOLS_DIR ${WAYLAND_PROTOCOLS_DIR} CACHE INTERNAL "") + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(WaylandProtocols + REQUIRED_VARS + PC_WAYLAND_PROTOCOLS_FOUND + WAYLAND_PROTOCOLS_DIR + VERSION_VAR + 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 @@ # FindWaylandpp -# ----------- +# ------------- # Finds the waylandpp library # # This will will define the following variables:: # -# WAYLANDPP_FOUND - the system has Wayland -# WAYLANDPP_INCLUDE_DIRS - the Wayland include directory -# WAYLANDPP_LIBRARIES - the Wayland libraries -# WAYLANDPP_DEFINITIONS - the Wayland definitions - - -if(PKG_CONFIG_FOUND) - pkg_check_modules(PC_WAYLANDPP wayland-client++>=0.1 wayland-egl++ wayland-cursor++ wayland-scanner++ QUIET) - pkg_check_modules(PC_WAYLAND_PROTOCOLS wayland-protocols>=1.7 QUIET) - # TODO: Remove check when CMake minimum version is bumped globally - if(CMAKE_VERSION VERSION_EQUAL 3.4.0 OR CMAKE_VERSION VERSION_GREATER 3.4.0) - if(PC_WAYLANDPP_FOUND) - pkg_get_variable(PC_WAYLANDPP_SCANNER wayland-scanner++ wayland_scannerpp) - endif() - if(PC_WAYLAND_PROTOCOLS_FOUND) - pkg_get_variable(PC_WAYLAND_PROTOCOLS_DIR wayland-protocols pkgdatadir) - endif() - endif() +# WAYLANDPP_FOUND - the system has waylandpp +# WAYLANDPP_INCLUDE_DIRS - the waylandpp include directory +# WAYLANDPP_LIBRARIES - the waylandpp libraries +# WAYLANDPP_DEFINITIONS - the waylandpp definitions +# WAYLANDPP_SCANNER - path to wayland-scanner++ + +pkg_check_modules(WAYLANDPP wayland-client++ wayland-egl++ wayland-cursor++) +pkg_check_modules(PC_WAYLANDPP_SCANNER wayland-scanner++) +if(WAYLANDPP_FOUND) + pkg_get_variable(PC_WAYLANDPP_PKGDATADIR wayland-client++ pkgdatadir) +endif() +if(PC_WAYLANDPP_SCANNER_FOUND) + pkg_get_variable(PC_WAYLANDPP_SCANNER wayland-scanner++ wayland_scannerpp) endif() -find_path(WAYLANDPP_INCLUDE_DIR NAMES wayland-client.hpp - PATHS ${PC_WAYLANDPP_INCLUDE_DIRS}) - -find_library(WAYLANDPP_CLIENT_LIBRARY NAMES wayland-client++ - PATHS ${PC_WAYLANDPP_LIBRARIES} ${PC_WAYLANDPP_LIBRARY_DIRS}) - -find_library(WAYLANDPP_CURSOR_LIBRARY NAMES wayland-cursor++ - PATHS ${PC_WAYLANDPP_LIBRARIES} ${PC_WAYLANDPP_LIBRARY_DIRS}) - -find_library(WAYLANDPP_EGL_LIBRARY NAMES wayland-egl++ - PATHS ${PC_WAYLANDPP_LIBRARIES} ${PC_WAYLANDPP_LIBRARY_DIRS}) - -find_program(WAYLANDPP_SCANNER NAMES wayland-scanner++ - PATHS ${PC_WAYLANDPP_SCANNER}) +# Promote to cache variables so all code can access it +set(WAYLANDPP_PROTOCOLS_DIR "${PC_WAYLANDPP_PKGDATADIR}/protocols" CACHE INTERNAL "") -find_path(WAYLAND_PROTOCOLS_DIR NAMES unstable/xdg-shell/xdg-shell-unstable-v6.xml - PATHS ${PC_WAYLAND_PROTOCOLS_DIR} - DOC "Directory containing additional Wayland protocols") +# wayland-scanner++ is from native/host system in case of cross-compilation, so +# it's ok if we don't find it with pkgconfig +find_program(WAYLANDPP_SCANNER wayland-scanner++ PATHS ${PC_WAYLANDPP_SCANNER}) include (FindPackageHandleStandardArgs) find_package_handle_standard_args (Waylandpp REQUIRED_VARS - WAYLANDPP_INCLUDE_DIR - WAYLANDPP_CLIENT_LIBRARY - WAYLANDPP_CURSOR_LIBRARY - WAYLANDPP_EGL_LIBRARY + WAYLANDPP_FOUND WAYLANDPP_SCANNER - WAYLAND_PROTOCOLS_DIR VERSION_VAR - PC_WAYLANDPP_wayland-client++_VERSION) - -if (WAYLANDPP_FOUND) - set(WAYLANDPP_LIBRARIES ${WAYLANDPP_CLIENT_LIBRARY} ${WAYLANDPP_CURSOR_LIBRARY} ${WAYLANDPP_EGL_LIBRARY}) - set(WAYLANDPP_INCLUDE_DIRS ${PC_WAYLANDPP_INCLUDE_DIRS}) - set(WAYLANDPP_DEFINITIONS -DHAVE_WAYLAND=1) -endif() + WAYLANDPP_wayland-client++_VERSION) -mark_as_advanced (WAYLANDPP_CLIENT_LIBRARY WAYLANDPP_CURSOR_LIBRARY WAYLANDPP_EGL_LIBRARY WAYLANDPP_INCLUDE_DIR) +set(WAYLANDPP_DEFINITIONS -DHAVE_WAYLAND=1) +# Also pass on library directories +set(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 @@ # XKBCOMMON_LIBRARIES - the libxkbcommon libraries # XKBCOMMON_DEFINITIONS - the libxkbcommon definitions - -if(PKG_CONFIG_FOUND) - pkg_check_modules (PC_XKBCOMMON xkbcommon QUIET) -endif() - -find_path(XKBCOMMON_INCLUDE_DIR NAMES xkbcommon/xkbcommon.h - PATHS ${PC_XKBCOMMON_INCLUDE_DIRS}) - -find_library(XKBCOMMON_LIBRARY NAMES xkbcommon - PATHS ${PC_XKBCOMMON_LIBRARIES} ${PC_XKBCOMMON_LIBRARY_DIRS}) +pkg_check_modules (XKBCOMMON xkbcommon) include (FindPackageHandleStandardArgs) -find_package_handle_standard_args (XKBCOMMON +find_package_handle_standard_args (Xkbcommon REQUIRED_VARS - XKBCOMMON_INCLUDE_DIR - XKBCOMMON_LIBRARY) - -if (XKBCOMMON_FOUND) - set(XKBCOMMON_LIBRARIES ${XKBCOMMON_LIBRARY}) - set(XKBCOMMON_INCLUDE_DIRS ${PC_XKBCOMMON_INCLUDE_DIRS}) - set(XKBCOMMON_DEFINITIONS -DHAVE_XKBCOMMON=1) -endif() + XKBCOMMON_FOUND) -mark_as_advanced (XKBCOMMON_LIBRARY XKBCOMMON_INCLUDE_DIR) \ No newline at end of file +set(XKBCOMMON_DEFINITIONS -DHAVE_XKBCOMMON=1) +set(XKBCOMMON_LIBRARIES ${XKBCOMMON_LDFLAGS}) +set(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 @@ -set(PLATFORM_REQUIRED_DEPS EGL Waylandpp LibDRM Xkbcommon) -set(PLATFORM_OPTIONAL_DEPS VAAPI) - -set(WAYLAND_RENDER_SYSTEM "" CACHE STRING "Render system to use with Wayland: \"gl\" or \"gles\"") - -if(WAYLAND_RENDER_SYSTEM STREQUAL "gl") - list(APPEND PLATFORM_REQUIRED_DEPS OpenGl) -elseif(WAYLAND_RENDER_SYSTEM STREQUAL "gles") - list(APPEND PLATFORM_REQUIRED_DEPS OpenGLES) -else() - 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\".") -endif() - -set(PLATFORM_GLOBAL_TARGET_DEPS generate-wayland-extra-protocols) -set(WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}") -# for wayland-extra-protocols.hpp -include_directories("${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}") +include(cmake/platform/linux/wayland.cmake) 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 @@ set(PLATFORM_REQUIRED_DEPS OpenGLES AML EGL) +set(APP_RENDER_SYSTEM gles) +list(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 @@ set(PLATFORM_REQUIRED_DEPS OpenGLES EGL GBM LibDRM) set(PLATFORM_OPTIONAL_DEPS VAAPI) +set(APP_RENDER_SYSTEM gles) +list(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 @@ set(PLATFORM_REQUIRED_DEPS OpenGl EGL Mir LibDRM) set(PLATFORM_OPTIONAL_DEPS VAAPI OpenGLES) +set(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 @@ set(PLATFORM_REQUIRED_DEPS OpenGLES EGL MMAL) +set(APP_RENDER_SYSTEM gles) +list(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 @@ -set(PLATFORM_REQUIRED_DEPS EGL Waylandpp LibDRM Xkbcommon) +set(PLATFORM_REQUIRED_DEPS EGL WaylandProtocols>=1.7 Waylandpp>=0.2.2 LibDRM Xkbcommon>=0.4.1) set(PLATFORM_OPTIONAL_DEPS VAAPI) set(WAYLAND_RENDER_SYSTEM "" CACHE STRING "Render system to use with Wayland: \"gl\" or \"gles\"") if(WAYLAND_RENDER_SYSTEM STREQUAL "gl") list(APPEND PLATFORM_REQUIRED_DEPS OpenGl) + set(APP_RENDER_SYSTEM gl) elseif(WAYLAND_RENDER_SYSTEM STREQUAL "gles") list(APPEND PLATFORM_REQUIRED_DEPS OpenGLES) + set(APP_RENDER_SYSTEM gles) else() 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\".") endif() @@ -14,4 +16,4 @@ endif() set(PLATFORM_GLOBAL_TARGET_DEPS generate-wayland-extra-protocols) set(WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}") # for wayland-extra-protocols.hpp -include_directories("${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}") \ No newline at end of file +include_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 @@ set(PLATFORM_REQUIRED_DEPS OpenGl EGL X XRandR LibDRM) set(PLATFORM_OPTIONAL_DEPS VAAPI VDPAU GLX) +set(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 @@ if(NOT CMAKE_TOOLCHAIN_FILE) message(FATAL_ERROR "CMAKE_TOOLCHAIN_FILE required for android. See ${CMAKE_SOURCE_DIR}/cmake/README.md") -elseif(NOT SDK_PLATFORM) - message(FATAL_ERROR "Toolchain did not define SDK_PLATFORM. Possibly outdated depends.") endif() set(ARCH_DEFINES -DTARGET_POSIX -DTARGET_LINUX -D_LINUX -DTARGET_ANDROID) @@ -34,7 +32,7 @@ else() endif() # Additional SYSTEM_DEFINES -list(APPEND SYSTEM_DEFINES -DHAS_ZEROCONF) +list(APPEND SYSTEM_DEFINES -DHAS_ZEROCONF -DHAS_LINUX_NETWORK) set(ENABLE_X11 OFF CACHE BOOL "" FORCE) set(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() unset(patch) set(package_files strings.xml - activity_main.xml colors.xml searchable.xml AndroidManifest.xml build.gradle - src/Main.java src/Splash.java + src/Main.java src/XBMCBroadcastReceiver.java - src/XBMCImageContentProvider.java src/XBMCInputDeviceListener.java src/XBMCJsonRPC.java - src/XBMCMediaContentProvider.java + src/XBMCMainView.java src/XBMCMediaSession.java src/XBMCRecommendationBuilder.java src/XBMCSearchableActivity.java src/XBMCSettingsContentObserver.java src/XBMCProperties.java src/XBMCVideoView.java + src/XBMCFile.java + src/channels/SyncChannelJobService.java + src/channels/SyncProgramsJobService.java + src/channels/model/XBMCDatabase.java + src/channels/model/Subscription.java + src/channels/util/SharedPreferencesHelper.java + src/channels/util/TvUtil.java src/interfaces/XBMCAudioManagerOnAudioFocusChangeListener.java src/interfaces/XBMCSurfaceTextureOnFrameAvailableListener.java - src/interfaces/XBMCNsdManagerDiscoveryListener.java - src/interfaces/XBMCNsdManagerRegistrationListener.java src/interfaces/XBMCNsdManagerResolveListener.java + src/interfaces/XBMCNsdManagerRegistrationListener.java + src/interfaces/XBMCNsdManagerDiscoveryListener.java + src/interfaces/XBMCMediaDrmOnEventListener.java + src/model/TVEpisode.java + src/model/Movie.java + src/model/TVShow.java + src/model/File.java + src/model/Album.java + src/model/Song.java + src/model/MusicVideo.java + src/model/Media.java + src/content/XBMCFileContentProvider.java + src/content/XBMCMediaContentProvider.java + src/content/XBMCContentProvider.java + src/content/XBMCYTDLContentProvider.java ) foreach(file IN LISTS package_files) 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 DEPENDS_PATH=${DEPENDS_PATH} NDKROOT=${NDKROOT} SDKROOT=${SDKROOT} - SDK_PLATFORM=${SDK_PLATFORM} STRIP=${CMAKE_STRIP} AAPT=${AAPT_EXECUTABLE} 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 @@ # Sadly we cannot extend the 'package' target, as it is a builtin target, see # http://public.kitware.com/Bug/view.php?id=8438 # Thus, we have to add an 'addon-package' target. -add_custom_target(addon-package - COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target package) +get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(_isMultiConfig) + add_custom_target(addon-package DEPENDS PACKAGE) +else() + add_custom_target(addon-package + COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target package) +endif() macro(add_cpack_workaround target version ext) if(NOT PACKAGE_DIR) set(PACKAGE_DIR "${CMAKE_INSTALL_PREFIX}/zips") endif() - add_custom_command(TARGET addon-package PRE_BUILD + add_custom_command(TARGET addon-package POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${PACKAGE_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_PACKAGE_DIRECTORY}/addon-${target}-${version}.${ext} ${PACKAGE_DIR}/${target}-${version}.${ext}) endmacro() @@ -194,7 +199,7 @@ macro (build_addon target prefix libs) endif() string(CONFIGURE "${addon_file}" addon_file_conf @ONLY) - file(GENERATE OUTPUT ${PROJECT_SOURCE_DIR}/${target}/addon.xml CONTENT "${addon_file_conf}") + file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${target}/addon.xml CONTENT "${addon_file_conf}") if(${APP_NAME_UC}_BUILD_DIR) file(GENERATE OUTPUT ${${APP_NAME_UC}_BUILD_DIR}/addons/${target}/addon.xml CONTENT "${addon_file_conf}") endif() @@ -207,7 +212,7 @@ macro (build_addon target prefix libs) file(READ ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml.in settings_file) string(CONFIGURE "${settings_file}" settings_file_conf @ONLY) - file(GENERATE OUTPUT ${PROJECT_SOURCE_DIR}/${target}/resources/settings.xml CONTENT "${settings_file_conf}") + file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${target}/resources/settings.xml CONTENT "${settings_file_conf}") if(${APP_NAME_UC}_BUILD_DIR) file(GENERATE OUTPUT ${${APP_NAME_UC}_BUILD_DIR}/addons/${target}/resources/settings.xml CONTENT "${settings_file_conf}") endif() @@ -230,7 +235,7 @@ macro (build_addon target prefix libs) set(CPACK_COMPONENTS_IGNORE_GROUPS 1) list(APPEND CPACK_COMPONENTS_ALL ${target}-${${prefix}_VERSION}) # Pack files together to create an archive - install(DIRECTORY ${target} DESTINATION ./ + install(DIRECTORY ${target} ${CMAKE_CURRENT_BINARY_DIR}/${target} DESTINATION ./ COMPONENT ${target}-${${prefix}_VERSION} REGEX ".+\\.xml\\.in(clude)?$" EXCLUDE) if(WIN32) @@ -247,21 +252,15 @@ macro (build_addon target prefix libs) endif() endif() - # in case of a VC++ project the installation location contains a $(Configuration) VS variable - # we replace it with ${CMAKE_BUILD_TYPE} (which doesn't cover the case when the build configuration - # is changed within Visual Studio) - string(REPLACE "$(Configuration)" "${CMAKE_BUILD_TYPE}" LIBRARY_LOCATION "${LIBRARY_LOCATION}") - if(${prefix}_SOURCES) # install the generated DLL file install(PROGRAMS ${LIBRARY_LOCATION} DESTINATION ${target} COMPONENT ${target}-${${prefix}_VERSION}) - if(CMAKE_BUILD_TYPE MATCHES Debug) - # for debug builds also install the PDB file - install(FILES $ DESTINATION ${target} - COMPONENT ${target}-${${prefix}_VERSION}) - endif() + # for debug builds also install the PDB file + install(FILES $ DESTINATION ${target} + CONFIGURATIONS Debug RelWithDebInfo + COMPONENT ${target}-${${prefix}_VERSION}) endif() if(${prefix}_CUSTOM_BINARY) install(FILES ${LIBRARY_LOCATION} DESTINATION ${target} RENAME ${LIBRARY_FILENAME}) @@ -325,7 +324,7 @@ macro (build_addon target prefix libs) if (${prefix}_CUSTOM_BINARY) install(FILES ${LIBRARY_LOCATION} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target} RENAME ${LIBRARY_FILENAME}) endif() - install(DIRECTORY ${target} DESTINATION ${CMAKE_INSTALL_DATADIR}/addons + install(DIRECTORY ${target} ${CMAKE_CURRENT_BINARY_DIR}/${target} DESTINATION ${CMAKE_INSTALL_DATADIR}/addons REGEX ".+\\.xml\\.in(clude)?$" EXCLUDE) if(${prefix}_CUSTOM_DATA) 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) endif() endif() +if(PLATFORM_DEFINES) + add_options(ALL_LANGUAGES ALL_BUILDS ${PLATFORM_DEFINES}) +endif() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_options (ALL_LANGUAGES DEBUG "-g" "-D_DEBUG" "-Wall") endif() 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) if(EXISTS ${dir}/flags.txt) set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${dir}/flags.txt) file(STRINGS ${dir}/flags.txt extraflags) - - # replace some custom placeholders - string(REPLACE "@MINGW_TOOLCHAIN_FILE@" "${OUTPUT_DIR}/Toolchain_mingw32.cmake" extraflags "${extraflags}") string(REPLACE " " ";" extraflags ${extraflags}) 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) mark_as_advanced(${depup}_LIBRARIES) endmacro() -# add a required dependency of main application +# split dependency specification to name and version # Arguments: -# dep_list name of find rule for dependency, used uppercased for variable prefix -# also accepts a list of multiple dependencies +# depspec dependency specification that can optionally include a required +# package version +# syntax: [package name], [package name]>=[version] (minimum version), +# or [package name]=[version] (exact version) +# name_outvar variable that should receive the package name +# version_outvar variable that should receive the package version part (>=[version]) # On return: -# dependency added to ${SYSTEM_INCLUDES}, ${DEPLIBS} and ${DEP_DEFINES} +# ${name_outvar} and ${version_outvar} in caller scope are set to respective values. +# ${version_outvar} may be unset if there is no specific version requested. +function(split_dependency_specification depspec name_outvar version_outvar) + if(${depspec} MATCHES "^([^>]*)(>?=[0-9.]+)$") + set(${name_outvar} ${CMAKE_MATCH_1} PARENT_SCOPE) + set(${version_outvar} ${CMAKE_MATCH_2} PARENT_SCOPE) + else() + set(${name_outvar} ${depspec} PARENT_SCOPE) + unset(${version_outvar} PARENT_SCOPE) + endif() +endfunction() + +# helper macro to split version info from req and call find_package +macro(find_package_with_ver package) + set(_find_arguments "${ARGN}") + if("${ARGV1}" MATCHES "^(>)?=([0-9.]+)$") + # We have a version spec, parse it + list(REMOVE_AT _find_arguments 0) + # ">" not present? -> exact match + if(NOT CMAKE_MATCH_1) + list(INSERT _find_arguments 0 "EXACT") + endif() + find_package(${package} ${CMAKE_MATCH_2} ${_find_arguments}) + else() + find_package(${package} ${_find_arguments}) + endif() + unset(_find_arguments) +endmacro() + +# add required dependencies of main application +# Arguments: +# dep_list One or many dependency specifications (see split_dependency_specification) +# for syntax). The dependency name is used uppercased as variable prefix. +# On return: +# dependencies added to ${SYSTEM_INCLUDES}, ${DEPLIBS} and ${DEP_DEFINES} function(core_require_dep) - foreach(dep ${ARGN}) - find_package(${dep} REQUIRED) + foreach(depspec ${ARGN}) + split_dependency_specification(${depspec} dep version) + find_package_with_ver(${dep} ${version} REQUIRED) string(TOUPPER ${dep} depup) list(APPEND SYSTEM_INCLUDES ${${depup}_INCLUDE_DIRS}) list(APPEND DEPLIBS ${${depup}_LIBRARIES}) @@ -355,15 +394,16 @@ function(core_require_dep) endforeach() endfunction() -# add a required dyloaded dependency of main application +# add required dyloaded dependencies of main application # Arguments: -# dep_list name of find rule for dependency, used uppercased for variable prefix -# also accepts a list of multiple dependencies +# dep_list One or many dependency specifications (see split_dependency_specification) +# for syntax). The dependency name is used uppercased as variable prefix. # On return: # dependency added to ${SYSTEM_INCLUDES}, ${dep}_SONAME is set up function(core_require_dyload_dep) - foreach(dep ${ARGN}) - find_package(${dep} REQUIRED) + foreach(depspec ${ARGN}) + split_dependency_specification(${depspec} dep version) + find_package_with_ver(${dep} ${version} REQUIRED) string(TOUPPER ${dep} depup) list(APPEND SYSTEM_INCLUDES ${${depup}_INCLUDE_DIRS}) list(APPEND DEP_DEFINES ${${depup}_DEFINITIONS}) @@ -385,20 +425,21 @@ macro(setup_enable_switch) set(${enable_switch} "AUTO" CACHE STRING "Enable ${depup} support?") endmacro() -# add an optional dependency of main application +# add optional dependencies of main application # Arguments: -# dep_list name of find rule for dependency, used uppercased for variable prefix -# also accepts a list of multiple dependencies +# dep_list One or many dependency specifications (see split_dependency_specification) +# for syntax). The dependency name is used uppercased as variable prefix. # On return: # dependency optionally added to ${SYSTEM_INCLUDES}, ${DEPLIBS} and ${DEP_DEFINES} function(core_optional_dep) - foreach(dep ${ARGN}) + foreach(depspec ${ARGN}) set(_required False) + split_dependency_specification(${depspec} dep version) setup_enable_switch() if(${enable_switch} STREQUAL AUTO) - find_package(${dep}) + find_package_with_ver(${dep} ${version}) elseif(${${enable_switch}}) - find_package(${dep} REQUIRED) + find_package_with_ver(${dep} ${version} REQUIRED) set(_required True) endif() @@ -417,20 +458,21 @@ function(core_optional_dep) set(final_message ${final_message} PARENT_SCOPE) endfunction() -# add an optional dyloaded dependency of main application +# add optional dyloaded dependencies of main application # Arguments: -# dep_list name of find rule for dependency, used uppercased for variable prefix -# also accepts a list of multiple dependencies +# dep_list One or many dependency specifications (see split_dependency_specification) +# for syntax). The dependency name is used uppercased as variable prefix. # On return: # dependency optionally added to ${SYSTEM_INCLUDES}, ${DEP_DEFINES}, ${dep}_SONAME is set up function(core_optional_dyload_dep) - foreach(dep ${ARGN}) + foreach(depspec ${ARGN}) set(_required False) - setup_enable_switch() + split_dependency_specification(${depspec} dep version) + setup_enable_switch() if(${enable_switch} STREQUAL AUTO) - find_package(${dep}) + find_package_with_ver(${dep} ${version}) elseif(${${enable_switch}}) - find_package(${dep} REQUIRED) + find_package_with_ver(${dep} ${version} REQUIRED) set(_required True) endif() @@ -592,6 +634,7 @@ function(core_find_git_rev stamp) else() find_package(Git) if(GIT_FOUND AND EXISTS ${CMAKE_SOURCE_DIR}/.git) + # get tree status i.e. clean working tree vs dirty (uncommited or unstashed changes, etc.) execute_process(COMMAND ${GIT_EXECUTABLE} update-index --ignore-submodules -q --refresh WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) execute_process(COMMAND ${GIT_EXECUTABLE} diff-files --ignore-submodules --quiet -- @@ -602,21 +645,21 @@ function(core_find_git_rev stamp) RESULT_VARIABLE status_code WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) endif() + # get HEAD commit SHA-1 + execute_process(COMMAND ${GIT_EXECUTABLE} log -n 1 --pretty=format:"%h" HEAD + OUTPUT_VARIABLE HASH + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) + string(REPLACE "\"" "" HASH ${HASH}) + if(status_code) - execute_process(COMMAND ${GIT_EXECUTABLE} log -n 1 --pretty=format:"%h-dirty" HEAD - OUTPUT_VARIABLE HASH - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) - string(SUBSTRING ${HASH} 1 13 HASH) - else() - execute_process(COMMAND ${GIT_EXECUTABLE} log -n 1 --pretty=format:"%h" HEAD - OUTPUT_VARIABLE HASH - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) - string(SUBSTRING ${HASH} 1 7 HASH) + string(CONCAT HASH ${HASH} "-dirty") endif() + + # get HEAD commit date execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --pretty=format:"%cd" --date=short HEAD OUTPUT_VARIABLE DATE WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) - string(SUBSTRING ${DATE} 1 10 DATE) + string(REPLACE "\"" "" DATE ${DATE}) string(REPLACE "-" "" DATE ${DATE}) else() 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 @@ +macro(remove_empty_dirs) + list(REMOVE_DUPLICATES DIRECTORIES) + unset(PDIRECTORIES) + foreach(dir IN LISTS DIRECTORIES) + if(EXISTS $ENV{DESTDIR}${dir}) + file(GLOB _res $ENV{DESTDIR}${dir}/*) + list(LENGTH _res _len) + if(_len EQUAL 0 AND EXISTS $ENV{DESTDIR}${dir}) + message(STATUS "Removing empty dir: ${dir}") + execute_process( + COMMAND ${CMAKE_COMMAND} -E remove_directory $ENV{DESTDIR}${dir} + OUTPUT_VARIABLE rm_out + RESULT_VARIABLE rm_retval + ) + if(NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Failed to remove directory: $ENV{DESTDIR}${dir}") + endif() + get_filename_component(_pdir $ENV{DESTDIR}${dir} DIRECTORY) + list(APPEND PDIRECTORIES ${_pdir}) + endif() + endif() + endforeach() + list(LENGTH PDIRECTORIES _plen) + if(_plen GREATER 0) + set(DIRECTORIES ${PDIRECTORIES}) + remove_empty_dirs() + endif() +endmacro() + # Uninstall target set(MANIFEST ${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt) if(EXISTS ${MANIFEST}) file(STRINGS ${MANIFEST} files) foreach(file IN LISTS files) if(EXISTS $ENV{DESTDIR}${file}) + get_filename_component(_dir $ENV{DESTDIR}${file} DIRECTORY) + list(APPEND DIRECTORIES $ENV{DESTDIR}${_dir}) message(STATUS "Uninstalling: ${file}") execute_process( COMMAND ${CMAKE_COMMAND} -E remove $ENV{DESTDIR}${file} @@ -17,6 +48,11 @@ if(EXISTS ${MANIFEST}) message(STATUS "File does not exist: $ENV{DESTDIR}${file}") endif() endforeach(file) + + # delete empty dirs + if(DIRECTORIES) + remove_empty_dirs() + endif() else() message(STATUS "Cannot find install manifest: '${MANIFEST}'") endif() 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() endif() endif() +# Disable ALSA by default +if(NOT ENABLE_ALSA) + option(ENABLE_ALSA "Enable alsa support?" OFF) +endif() + # Additional SYSTEM_DEFINES list(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" set(ENABLE_DVDCSS OFF CACHE BOOL "" FORCE) set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE) -set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "6.0") +set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "9.0") set(CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2") set(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 @@ -set(ARCH_DEFINES -D_LINUX -DTARGET_POSIX -DTARGET_LINUX) -# temp until further cleanup is done -if(CORE_PLATFORM_NAME_LC STREQUAL rbpi) - list(APPEND ARCH_DEFINES -D_ARMEL -DTARGET_RASPBERRY_PI) -endif() +# we always want to use GNU features if available, so set _GNU_SOURCE +set(ARCH_DEFINES -D_LINUX -DTARGET_POSIX -DTARGET_LINUX -D_GNU_SOURCE) set(SYSTEM_DEFINES -D__STDC_CONSTANT_MACROS -D_FILE_DEFINED -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) set(PLATFORM_DIR platform/linux) @@ -21,14 +18,17 @@ else() set(ARCH arm) set(NEON False) set(NEON_FLAGS "-mcpu=arm1176jzf-s -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp") - elseif(CPU MATCHES "cortex-a7" OR CPU MATCHES "cortex-a53") + elseif(CPU MATCHES "cortex-a7") set(ARCH arm) set(NEON True) - set(NEON_FLAGS "-fPIC -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4 -mvectorize-with-neon-quad") + set(NEON_FLAGS "-fPIC -mcpu=cortex-a7") + elseif(CPU MATCHES "cortex-a53") + set(ARCH arm) + set(NEON True) + set(NEON_FLAGS "-fPIC -mcpu=cortex-a53") elseif(CPU MATCHES arm) set(ARCH arm) set(NEON True) - set(NEON_FLAGS "-mfpu=neon -mvectorize-with-neon-quad") elseif(CPU MATCHES aarch64 OR CPU MATCHES arm64) set(ARCH aarch64) set(NEON True) @@ -37,6 +37,16 @@ else() endif() endif() +# temp until further cleanup is done +# add Raspberry Pi 2 and 3 specific flags +if(CORE_PLATFORM_NAME_LC STREQUAL rbpi) + if(CPU MATCHES "cortex-a7") + set(NEON_FLAGS "-fPIC -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4 -mvectorize-with-neon-quad") + elseif(CPU MATCHES "cortex-a53") + set(NEON_FLAGS "-fPIC -mcpu=cortex-a53 -mfloat-abi=hard -mfpu=neon-fp-armv8 -mvectorize-with-neon-quad") + endif() +endif() + if((CMAKE_BUILD_TYPE STREQUAL Release OR CMAKE_BUILD_TYPE STREQUAL MinSizeRel) AND CMAKE_COMPILER_IS_GNUCXX) # Make sure we strip binaries in Release build @@ -84,7 +94,7 @@ set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE") check_symbol_exists("mkostemp" "stdlib.h" HAVE_MKOSTEMP) set(CMAKE_REQUIRED_DEFINITIONS "") if(HAVE_MKOSTEMP) - list(APPEND ARCH_DEFINES "-DHAVE_MKOSTEMP=1" "-D_GNU_SOURCE") + list(APPEND ARCH_DEFINES "-DHAVE_MKOSTEMP=1") endif() # 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() if(CORE_PLATFORM_NAME_LC STREQUAL "wayland") # This cannot go into wayland.cmake since it requires the Wayland dependencies # to already be resolved - set(PROTOCOL_XMLS "${WAYLAND_PROTOCOLS_DIR}/unstable/xdg-shell/xdg-shell-unstable-v6.xml" + set(PROTOCOL_XMLS "${WAYLANDPP_PROTOCOLS_DIR}/presentation-time.xml" + "${WAYLANDPP_PROTOCOLS_DIR}/xdg-shell.xml" + "${WAYLAND_PROTOCOLS_DIR}/unstable/xdg-shell/xdg-shell-unstable-v6.xml" "${WAYLAND_PROTOCOLS_DIR}/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml") add_custom_command(OUTPUT "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.hpp" "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.cpp" 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") # Dummy target for dependencies add_custom_target(generate-wayland-extra-protocols DEPENDS wayland-extra-protocols.hpp) -endif() \ No newline at end of file +endif() 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 @@ +# Minimum SDK version we support +set(VS_MINIMUM_SDK_VERSION 10.0.14393.0) + +if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION VERSION_LESS VS_MINIMUM_SDK_VERSION) + message(FATAL_ERROR "Detected Windows SDK version is ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}.\n" + "Windows SDK ${VS_MINIMUM_SDK_VERSION} or higher is required.\n" + "INFO: Windows SDKs can be installed from the Visual Studio installer.") +endif() + # -------- Architecture settings --------- if(CMAKE_SIZEOF_VOID_P EQUAL 4) @@ -12,6 +21,7 @@ endif() # -------- Paths (mainly for find_package) --------- set(PLATFORM_DIR platform/win32) +set(APP_RENDER_SYSTEM dx11) set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/win32/WinMain.cpp) @@ -31,7 +41,7 @@ set(PYTHON_INCLUDE_DIR ${DEPENDENCIES_DIR}/include/python) add_options(CXX ALL_BUILDS "/wd\"4996\"") set(ARCH_DEFINES -D_WINDOWS -DTARGET_WINDOWS -DTARGET_WINDOWS_DESKTOP -D__SSE__ -D__SSE2__) -set(SYSTEM_DEFINES -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS +set(SYSTEM_DEFINES -DWIN32_LEAN_AND_MEAN -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS -DTAGLIB_STATIC -DNPT_CONFIG_ENABLE_LOGGING -DPLT_HTTP_DEFAULT_USER_AGENT="UPnP/1.0 DLNADOC/1.50 Kodi" -DPLT_HTTP_DEFAULT_SERVER="UPnP/1.0 DLNADOC/1.50 Kodi" @@ -43,7 +53,7 @@ if(${ARCH} STREQUAL win32) endif() # Additional SYSTEM_DEFINES -list(APPEND SYSTEM_DEFINES -DHAS_IRSERVERSUITE -DHAS_WIN32_NETWORK -DHAS_FILESYSTEM_SMB) +list(APPEND SYSTEM_DEFINES -DHAS_WIN32_NETWORK -DHAS_FILESYSTEM_SMB) # Make sure /FS is set for Visual Studio in order to prevent simultaneous access to pdb files. if(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) if(PATCH_FOUND) message(STATUS "patch utility found at ${PATCH_FOUND}") else() - set(PATCH_ARCHIVE_NAME "patch-2.5.9-7-bin-3") + set(PATCH_ARCHIVE_NAME "patch-2.7.6-bin") set(PATCH_ARCHIVE "${PATCH_ARCHIVE_NAME}.zip") set(PATCH_URL "${KODI_MIRROR}/build-deps/win32/${PATCH_ARCHIVE}") set(PATCH_DOWNLOAD ${BUILD_DIR}/download/${PATCH_ARCHIVE}) @@ -28,6 +28,11 @@ else() # copy patch.exe into the output directory file(INSTALL ${PATCH_BINARY_PATH} DESTINATION ${ADDON_DEPENDS_PATH}/bin) + # copy patch depends + file(GLOB PATCH_BINARIES ${PATCH_PATH}/bin/*.dll) + if(NOT "${PATCH_BINARIES}" STREQUAL "") + file(INSTALL ${PATCH_BINARIES} DESTINATION ${ADDON_DEPENDS_PATH}/bin) + endif() # make sure that cmake can find the copied patch.exe 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 @@ +# Minimum SDK version we support +set(VS_MINIMUM_SDK_VERSION 10.0.14393.0) + +if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION VERSION_LESS VS_MINIMUM_SDK_VERSION) + message(FATAL_ERROR "Detected Windows SDK version is ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}.\n" + "Windows SDK ${VS_MINIMUM_SDK_VERSION} or higher is required.\n" + "INFO: Windows SDKs can be installed from the Visual Studio installer.") +endif() + # -------- Architecture settings --------- check_symbol_exists(_X86_ "Windows.h" _X86_) @@ -24,6 +33,7 @@ unset(_ARM_) # -------- Paths (mainly for find_package) --------- set(PLATFORM_DIR platform/win32) +set(APP_RENDER_SYSTEM dx11) set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/win10/main.cpp) # 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 if(NOT SDK_TARGET_ARCH STREQUAL arm) list(APPEND ARCH_DEFINES -D__SSE__ -D__SSE2__) endif() -set(SYSTEM_DEFINES -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS +set(SYSTEM_DEFINES -DWIN32_LEAN_AND_MEAN -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS -DFMT_HEADER_ONLY -DTAGLIB_STATIC -DNPT_CONFIG_ENABLE_LOGGING -DPLT_HTTP_DEFAULT_USER_AGENT="UPnP/1.0 DLNADOC/1.50 Kodi" -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 $<$:-DD3D_DEBUG_INFO>) # Additional SYSTEM_DEFINES -list(APPEND SYSTEM_DEFINES -DHAS_IRSERVERSUITE -DHAS_WIN10_NETWORK) +list(APPEND SYSTEM_DEFINES -DHAS_WIN10_NETWORK) # The /MP option enables /FS by default. set(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) endforeach(_dll DEBUG_DLLS) add_deployment_content_group($(BuildRootPath)/dlls "" *.dll "${DEBUG_DLLS_EXCLUDE}") - add_deployment_content_group($(BuildRootPath)/system system **/* "$(BuildRootPath)/**/*.glsl") + add_deployment_content_group($(BuildRootPath)/system system **/* "$(BuildRootPath)/**/shaders/**") + add_deployment_content_group($(BuildRootPath)/system/shaders system/shaders **/*.fx "") add_deployment_content_group($(BuildRootPath)/media media **/* "") add_deployment_content_group($(BuildRootPath)/userdata userdata **/* "") 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) if(PATCH_FOUND) message(STATUS "patch utility found at ${PATCH_FOUND}") else() - set(PATCH_ARCHIVE_NAME "patch-2.5.9-7-bin-3") + set(PATCH_ARCHIVE_NAME "patch-2.7.6-bin") set(PATCH_ARCHIVE "${PATCH_ARCHIVE_NAME}.zip") set(PATCH_URL "${KODI_MIRROR}/build-deps/win32/${PATCH_ARCHIVE}") set(PATCH_DOWNLOAD ${BUILD_DIR}/download/${PATCH_ARCHIVE}) @@ -28,6 +28,11 @@ else() # copy patch.exe into the output directory file(INSTALL ${PATCH_BINARY_PATH} DESTINATION ${ADDON_DEPENDS_PATH}/bin) + # copy patch depends + file(GLOB PATCH_BINARIES ${PATCH_PATH}/bin/*.dll) + if(NOT "${PATCH_BINARIES}" STREQUAL "") + file(INSTALL ${PATCH_BINARIES} DESTINATION ${ADDON_DEPENDS_PATH}/bin) + endif() # make sure that cmake can find the copied patch.exe 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 @@ xbmc/cores/RetroPlayer/process/android cores/RetroPlayer/process/android -xbmc/platform/linux platform/linux xbmc/input/touch input/touch xbmc/input/touch/generic input/touch/generic -xbmc/network/linux network/linux -xbmc/network/android network/android -xbmc/peripherals/bus/linux peripherals/bus/linux -xbmc/peripherals/bus/android peripherals/bus/android -xbmc/powermanagement/android powermanagement/android -xbmc/storage/android storage/android -xbmc/filesystem/posix filesystem/posix -xbmc/utils/posix utils_posix xbmc/windowing/android windowing/android -xbmc/platform/posix posix -xbmc/platform/android/activity android_activity -xbmc/platform/android/bionic_supplement android_bionicsupplement +xbmc/platform/posix platform/posix +xbmc/platform/posix/filesystem platform/posix/filesystem +xbmc/platform/posix/utils platform/posix/utils +xbmc/platform/linux platform/linux +xbmc/platform/linux/network platform/linux/network +xbmc/platform/linux/peripherals platform/linux/peripherals +xbmc/platform/android/activity platform/android/activity +xbmc/platform/android/bionic_supplement platform/android/bionicsupplement +xbmc/platform/android/filesystem platform/android/filesystem +xbmc/platform/android/network platform/android/network +xbmc/platform/android/peripherals platform/android/peripherals +xbmc/platform/android/powermanagement platform/android/powermanagement +xbmc/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 @@ xbmc/games games xbmc/games/addons games/addons +xbmc/games/addons/input games/addons/input xbmc/games/addons/playback games/addons/playback xbmc/games/addons/savestates games/addons/savestates xbmc/games/controllers games/controllers xbmc/games/controllers/dialogs games/controllers/dialogs xbmc/games/controllers/guicontrols games/controllers/guicontrols +xbmc/games/controllers/types games/controllers/types xbmc/games/controllers/windows games/controllers/windows xbmc/games/dialogs games/dialogs xbmc/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 @@ xbmc/cores/RetroPlayer cores/RetroPlayer +xbmc/cores/RetroPlayer/guibridge cores/RetroPlayer/guibridge xbmc/cores/RetroPlayer/guicontrols cores/RetroPlayer/guicontrols +xbmc/cores/RetroPlayer/guiwindows cores/RetroPlayer/guiwindows xbmc/cores/RetroPlayer/process cores/RetroPlayer/process xbmc/cores/RetroPlayer/rendering cores/RetroPlayer/rendering xbmc/cores/RetroPlayer/rendering/VideoRenderers cores/RetroPlayer/rendering/VideoRenderers xbmc/cores/RetroPlayer/rendering/VideoShaders cores/RetroPlayer/rendering/VideoShaders -xbmc/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 xbmc/dbwrappers dbwrappers xbmc/dialogs dialogs xbmc/favourites favourites -xbmc/guiinfo guiinfo xbmc/guilib guilib +xbmc/guilib/guiinfo guilib_guiinfo xbmc/input input xbmc/input/joysticks input/joysticks xbmc/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 @@ -xbmc/platform/linux platform/linux -xbmc/platform/linux/input platform/linux/input -xbmc/input/touch input/touch -xbmc/input/touch/generic input/touch/generic -xbmc/network/linux network/linux -xbmc/peripherals/bus/linux peripherals/bus/linux -xbmc/powermanagement/linux powermanagement/linux -xbmc/storage/linux storage/linux -xbmc/filesystem/posix filesystem/posix -xbmc/utils/posix utils_posix -xbmc/platform/posix posix -xbmc/freebsd freebsdsupport +xbmc/platform/posix platform/posix +xbmc/platform/posix/filesystem platform/posix/filesystem +xbmc/platform/posix/utils platform/posix/utils +xbmc/platform/linux platform/linux +xbmc/platform/linux/input platform/linux/input +xbmc/platform/linux/network platform/linux/network +xbmc/platform/linux/peripherals platform/linux/peripherals +xbmc/platform/linux/powermanagement platform/linux/powermanagement +xbmc/platform/linux/storage platform/linux/storage +xbmc/input/touch input/touch +xbmc/input/touch/generic input/touch/generic 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 @@ -xbmc/platform/linux platform/linux -xbmc/input/touch input/touch -xbmc/input/touch/generic input/touch/generic -xbmc/network/linux network/linux -xbmc/network/osx network/osx -xbmc/peripherals/bus/osx peripherals/bus/osx -xbmc/powermanagement/osx powermanagement/osx -xbmc/storage/osx storage/osx -xbmc/platform/posix posix -xbmc/platform/darwin platform_darwin -xbmc/platform/darwin/ios platform_ios -xbmc/platform/darwin/ios-common platform_ios-common -xbmc/filesystem/posix filesystem/posix -xbmc/utils/posix utils_posix -xbmc/windowing/osx windowing/osx -xbmc/cores/RetroPlayer/process/ios cores/RetroPlayer/process/ios -xbmc/cores/VideoPlayer/Process/ios cores/VideoPlayer/Process/ios +xbmc/platform/linux platform/linux +xbmc/platform/linux/network platform/linux/network +xbmc/input/touch input/touch +xbmc/input/touch/generic input/touch/generic +xbmc/platform/posix posix +xbmc/platform/posix/filesystem platform/posix/filesystem +xbmc/platform/posix/utils platform/posix/utils +xbmc/platform/darwin platform/darwin +xbmc/platform/darwin/ios platform/ios +xbmc/platform/darwin/ios-common platform/ios-common +xbmc/platform/darwin/osx/network platform/osx/network +xbmc/platform/darwin/osx/peripherals platform/osx/peripherals +xbmc/platform/darwin/osx/powermanagement platform/darwin/osx/powermanagement +xbmc/platform/darwin/osx/storage platform/osx/storage +xbmc/windowing/osx windowing/osx +xbmc/cores/RetroPlayer/process/ios cores/RetroPlayer/process/ios +xbmc/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 @@ -xbmc/platform/linux platform/linux -xbmc/platform/linux/input platform/linux/input -xbmc/input/touch input/touch -xbmc/input/touch/generic input/touch/generic -xbmc/network/linux network/linux -xbmc/peripherals/bus/linux peripherals/bus/linux -xbmc/powermanagement/linux powermanagement/linux -xbmc/storage/linux storage/linux -xbmc/filesystem/posix filesystem/posix -xbmc/utils/posix utils_posix -xbmc/platform/posix posix +xbmc/platform/posix platform/posix +xbmc/platform/posix/filesystem platform/posix/filesystem +xbmc/platform/posix/utils platform/posix/utils +xbmc/platform/linux platform/linux +xbmc/platform/linux/input platform/linux/input +xbmc/platform/linux/network platform/linux/network +xbmc/platform/linux/peripherals platform/linux/peripherals +xbmc/platform/linux/powermanagement platform/linux/powermanagement +xbmc/platform/linux/storage platform/linux/storage +xbmc/input/touch input/touch +xbmc/input/touch/generic input/touch/generic xbmc/cores/RetroPlayer/process/rbpi cores/RetroPlayer/process/rbpi xbmc/cores/VideoPlayer/Process/rbpi cores/VideoPlayer/Process/rbpi -xbmc/windowing/linux windowing/linux +xbmc/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 @@ -xbmc/platform/linux platform/linux -xbmc/network/linux network/linux -xbmc/network/osx network/osx -xbmc/peripherals/bus/osx peripherals/bus/osx -xbmc/powermanagement/osx powermanagement/osx -xbmc/storage/osx storage/osx -xbmc/platform/posix posix -xbmc/platform/darwin platform_darwin -xbmc/platform/darwin/osx platform_osx -xbmc/filesystem/posix filesystem/posix -xbmc/utils/posix utils_posix -xbmc/windowing/osx windowing/osx -xbmc/cores/RetroPlayer/process/osx cores/RetroPlayer/process/osx -xbmc/cores/VideoPlayer/Process/osx cores/VideoPlayer/Process/osx +xbmc/platform/posix posix +xbmc/platform/posix/filesystem platform/posix/filesystem +xbmc/platform/posix/utils platform/posix/utils +xbmc/platform/linux platform/linux +xbmc/platform/linux/network platform/linux/network +xbmc/platform/darwin platform/darwin +xbmc/platform/darwin/osx platform/osx +xbmc/platform/darwin/osx/network platform/osx/network +xbmc/platform/darwin/osx/peripherals platform/osx/peripherals +xbmc/platform/darwin/osx/powermanagement platform/darwin/osx/powermanagement +xbmc/platform/darwin/osx/storage platform/osx/storage +xbmc/windowing/osx windowing/osx +xbmc/cores/RetroPlayer/process/osx cores/RetroPlayer/process/osx +xbmc/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 @@ -xbmc/platform/win32 platform_win32 -xbmc/input/windows input/windows -xbmc/input/touch input/touch -xbmc/input/touch/generic input/touch/generic -xbmc/network/windows network/windows -xbmc/network/mdns network/mdns -xbmc/peripherals/bus/win32 peripherals/bus/win32 -xbmc/powermanagement/windows powermanagement/windows -xbmc/storage/windows storage/windows -xbmc/filesystem/win32 filesystem/win32 -xbmc/utils/win32 utils_win32 -xbmc/rendering/dx rendering_dx -xbmc/threads/platform/win threads_win -xbmc/windowing/windows windowing/windows +xbmc/platform/win32 platform/win32 +xbmc/platform/win32/input platform/win32/input +xbmc/platform/win32/filesystem platform/win32/filesystem +xbmc/platform/win32/network platform/win32/network +xbmc/platform/win32/peripherals platform/win32/peripherals +xbmc/platform/win32/powermanagement platform/win32/powermanagement +xbmc/platform/win32/storage platform/win32/storage +xbmc/platform/win32/utils platform/win32/utils +xbmc/input/touch input/touch +xbmc/input/touch/generic input/touch/generic +xbmc/network/mdns network/mdns +xbmc/rendering/dx rendering/dx +xbmc/threads/platform/win threads/win +xbmc/windowing/windows windowing/windows xbmc/cores/RetroPlayer/process/windows cores/RetroPlayer/process/windows xbmc/cores/RetroPlayer/rendering/VideoShaders/windows cores/RetroPlayer/rendering/VideoShaders/windows xbmc/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 @@ -xbmc/platform/win10 platform_win10 -xbmc/input/windows input/windows -xbmc/input/touch input/touch -xbmc/input/touch/generic input/touch/generic -xbmc/network/win10 network/win10 -xbmc/network/mdns network/mdns -xbmc/peripherals/bus/win10 peripherals/bus/win10 -xbmc/powermanagement/win10 powermanagement/win10 -xbmc/storage/win10 storage/win10 -xbmc/filesystem/win32 filesystem/win32 -xbmc/filesystem/win10 filesystem/win10 -xbmc/utils/win32 utils_win32 -xbmc/rendering/dx rendering_dx -xbmc/threads/platform/win threads_win -xbmc/windowing/win10 windowing/win10 +xbmc/platform/win10 platform/win10 +xbmc/platform/win10/filesystem platform/win10/filesystem +xbmc/platform/win10/network platform/win10/network +xbmc/platform/win10/peripherals platform/win10/peripherals +xbmc/platform/win10/powermanagement platfrom/win10/powermanagement +xbmc/platform/win10/storage platfrom/win10/storage +xbmc/platform/win32/filesystem platform/win32/filesystem +xbmc/platform/win32/utils platform/win32/utils +xbmc/input/touch input/touch +xbmc/input/touch/generic input/touch/generic +xbmc/network/mdns network/mdns +xbmc/rendering/dx rendering/dx +xbmc/threads/platform/win threads/win +xbmc/windowing/win10 windowing/win10 xbmc/cores/VideoPlayer/Process/windows cores/VideoPlayer/Process/windows -- cgit v1.2.3