From 0afb1d4d51973cf52973617c92236d851a039d31 Mon Sep 17 00:00:00 2001 From: manuel Date: Sat, 2 Sep 2017 15:02:54 +0200 Subject: sync with upstream --- cmake/modules/FindCdio.cmake | 17 ++++++-- cmake/modules/FindFFMPEG.cmake | 1 + cmake/modules/FindMySqlClient.cmake | 2 +- cmake/modules/FindRapidJSON.cmake | 42 ++++++++++++++++++++ cmake/modules/FindVAAPI.cmake | 18 ++++++--- cmake/modules/FindWaylandpp.cmake | 64 ++++++++++++++++++++++++++++++ cmake/modules/FindXkbcommon.cmake | 35 ++++++++++++++++ cmake/platform/linux/wayland.cmake | 17 ++++++++ cmake/scripts/android/Install.cmake | 1 + cmake/scripts/common/AddonHelpers.cmake | 1 - cmake/scripts/common/Macros.cmake | 2 +- cmake/scripts/ios/ArchSetup.cmake | 2 +- cmake/scripts/linux/ArchSetup.cmake | 19 +++++++++ cmake/scripts/linux/ExtraTargets.cmake | 14 +++++++ cmake/treedata/common/cores.txt | 1 - cmake/treedata/common/retroplayer.txt | 3 ++ cmake/treedata/linux/subdirs.txt | 2 +- cmake/treedata/optional/common/imx.txt | 1 + cmake/treedata/optional/common/wayland.txt | 2 + 19 files changed, 228 insertions(+), 16 deletions(-) create mode 100644 cmake/modules/FindWaylandpp.cmake create mode 100644 cmake/modules/FindXkbcommon.cmake create mode 100644 cmake/platform/linux/wayland.cmake create mode 100644 cmake/treedata/common/retroplayer.txt create mode 100644 cmake/treedata/optional/common/imx.txt create mode 100644 cmake/treedata/optional/common/wayland.txt (limited to 'cmake') diff --git a/cmake/modules/FindCdio.cmake b/cmake/modules/FindCdio.cmake index 3f0a867..64f4bb8 100644 --- a/cmake/modules/FindCdio.cmake +++ b/cmake/modules/FindCdio.cmake @@ -23,16 +23,25 @@ find_path(CDIO_INCLUDE_DIR NAMES cdio/cdio.h find_library(CDIO_LIBRARY NAMES cdio libcdio PATHS ${CDIO_libcdio_LIBDIR} ${CDIO_libiso9660_LIBDIR}) +if(NOT WIN32) + find_path(ISO9660_INCLUDE_DIR NAMES cdio/iso9660.h + PATHS ${PC_CDIO_libcdio_INCLUDEDIR} + ${PC_CDIO_libiso9660_INCLUDEDIR}) + find_library(ISO9660_LIBRARY NAMES iso9660 + PATHS ${CDIO_libcdio_LIBDIR} ${CDIO_libiso9660_LIBDIR}) + list(APPEND ISO9660_VARS ISO9660_INCLUDE_DIR ISO9660_LIBRARY) +endif() + set(CDIO_VERSION ${PC_CDIO_libcdio_VERSION}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Cdio - REQUIRED_VARS CDIO_LIBRARY CDIO_INCLUDE_DIR + REQUIRED_VARS CDIO_LIBRARY CDIO_INCLUDE_DIR ${ISO9660_VARS} VERSION_VAR CDIO_VERSION) if(CDIO_FOUND) - set(CDIO_LIBRARIES ${CDIO_LIBRARY}) - set(CDIO_INCLUDE_DIRS ${CDIO_INCLUDE_DIR}) + set(CDIO_LIBRARIES ${CDIO_LIBRARY} ${ISO9660_LIBRARY}) + set(CDIO_INCLUDE_DIRS ${CDIO_INCLUDE_DIR} ${ISO9660_INCLUDE_DIR}) if(NOT TARGET CDIO::CDIO) add_library(CDIO::CDIO UNKNOWN IMPORTED) @@ -42,4 +51,4 @@ if(CDIO_FOUND) endif() endif() -mark_as_advanced(CDIO_INCLUDE_DIR CDIO_LIBRARY) +mark_as_advanced(CDIO_INCLUDE_DIR CDIO_LIBRARY ISO9660_INCLUDE_DIR ISO9660_LIBRARY) diff --git a/cmake/modules/FindFFMPEG.cmake b/cmake/modules/FindFFMPEG.cmake index dbeb444..02c8d28 100644 --- a/cmake/modules/FindFFMPEG.cmake +++ b/cmake/modules/FindFFMPEG.cmake @@ -250,6 +250,7 @@ if(NOT FFMPEG_FOUND) -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DFFMPEG_VER=${FFMPEG_VER} -DCORE_SYSTEM_NAME=${CORE_SYSTEM_NAME} + -DCORE_PLATFORM_NAME=${CORE_PLATFORM_NAME_LC} -DCPU=${CPU} -DENABLE_NEON=${ENABLE_NEON} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} diff --git a/cmake/modules/FindMySqlClient.cmake b/cmake/modules/FindMySqlClient.cmake index ceccea3..7b48577 100644 --- a/cmake/modules/FindMySqlClient.cmake +++ b/cmake/modules/FindMySqlClient.cmake @@ -21,7 +21,7 @@ else() set(EXTRA_FIND_ARGS) endif() -find_path(MYSQLCLIENT_INCLUDE_DIR mysql/mysql_time.h) +find_path(MYSQLCLIENT_INCLUDE_DIR NAMES mysql/mysql.h mysql/server/mysql.h) find_library(MYSQLCLIENT_LIBRARY_RELEASE NAMES mysqlclient libmysql PATH_SUFFIXES mysql ${EXTRA_FIND_ARGS}) diff --git a/cmake/modules/FindRapidJSON.cmake b/cmake/modules/FindRapidJSON.cmake index d41985b..3c3dc3f 100644 --- a/cmake/modules/FindRapidJSON.cmake +++ b/cmake/modules/FindRapidJSON.cmake @@ -8,6 +8,47 @@ # RapidJSON_FOUND - system has RapidJSON parser # RapidJSON_INCLUDE_DIRS - the RapidJSON parser include directory # +if(ENABLE_INTERNAL_RapidJSON) + include(ExternalProject) + file(STRINGS ${CMAKE_SOURCE_DIR}/tools/depends/target/rapidjson/Makefile VER REGEX MATCH "^[ ]*VERSION[ ]*=.+$") + string(REGEX REPLACE "^[ ]*VERSION[ ]*=[ ]*" "" RJSON_VER "${VER}") + + # allow user to override the download URL with a local tarball + # needed for offline build envs + if(RapidJSON_URL) + get_filename_component(RapidJSON_URL "${RapidJSON_URL}" ABSOLUTE) + else() + set(RapidJSON_URL http://mirrors.kodi.tv/build-deps/sources/rapidjson-${RJSON_VER}.tar.gz) + endif() + if(VERBOSE) + message(STATUS "RapidJSON_URL: ${RapidJSON_URL}") + endif() + + if(APPLE) + set(EXTRA_ARGS "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}") + endif() + + set(RapidJSON_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/librapidjson.a) + set(RapidJSON_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include) + externalproject_add(rapidjson + URL ${RapidJSON_URL} + DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download + PREFIX ${CORE_BUILD_DIR}/rapidjson + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + "${EXTRA_ARGS}" + PATCH_COMMAND patch -p1 < ${CORE_SOURCE_DIR}/tools/depends/target/rapidjson/0001-remove_custom_cxx_flags.patch + BUILD_BYPRODUCTS ${RapidJSON_LIBRARY}) + set_target_properties(rapidjson PROPERTIES FOLDER "External Projects") + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(rapidjson + REQUIRED_VARS RapidJSON_LIBRARY RapidJSON_INCLUDE_DIR + VERSION_VAR RJSON_VER) + + set(RapidJSON_LIBRARIES ${RapidJSON_LIBRARY}) + set(RapidJSON_INCLUDE_DIRS ${RapidJSON_INCLUDE_DIR}) +else() if(PKG_CONFIG_FOUND) pkg_check_modules(PC_RapidJSON RapidJSON>=1.0.2 QUIET) @@ -38,3 +79,4 @@ endif() mark_as_advanced(RapidJSON_INCLUDE_DIR) +endif() diff --git a/cmake/modules/FindVAAPI.cmake b/cmake/modules/FindVAAPI.cmake index 5b57d23..157cec4 100644 --- a/cmake/modules/FindVAAPI.cmake +++ b/cmake/modules/FindVAAPI.cmake @@ -11,7 +11,7 @@ # VAAPI_DEFINITIONS - the VAAPI definitions if(PKG_CONFIG_FOUND) - pkg_check_modules(PC_VAAPI libva libva-drm libva-x11 QUIET) + pkg_check_modules(PC_VAAPI libva libva-drm libva-wayland libva-x11 QUIET) endif() set(REQUIRED_VARS "VAAPI_libva_LIBRARY" "VAAPI_libva-drm_LIBRARY" "VAAPI_libva_INCLUDE_DIR" "VAAPI_libva-drm_INCLUDE_DIR") @@ -24,7 +24,13 @@ find_path(VAAPI_libva-drm_INCLUDE_DIR va/va_drm.h PATHS ${PC_VAAPI_libva-drm_INCLUDEDIR}) find_library(VAAPI_libva-drm_LIBRARY NAMES va-drm PATHS ${PC_VAAPI_libva-drm_LIBDIR}) - +if(CORE_PLATFORM_NAME_LC STREQUAL "wayland") + find_path(VAAPI_libva-wayland_INCLUDE_DIR va/va_wayland.h + PATHS ${PC_VAAPI_libva-wayland_INCLUDEDIR}) + find_library(VAAPI_libva-wayland_LIBRARY NAMES va-wayland + PATHS ${PC_VAAPI_libva-wayland_LIBDIR}) + list(APPEND REQUIRED_VARS "VAAPI_libva-wayland_INCLUDE_DIR" "VAAPI_libva-wayland_LIBRARY") +endif() if(CORE_PLATFORM_NAME_LC STREQUAL "x11") find_path(VAAPI_libva-x11_INCLUDE_DIR va/va_x11.h PATHS ${PC_VAAPI_libva-x11_INCLUDEDIR}) @@ -51,10 +57,10 @@ find_package_handle_standard_args(VAAPI VERSION_VAR VAAPI_VERSION_STRING) if(VAAPI_FOUND) - set(VAAPI_INCLUDE_DIRS ${VAAPI_INCLUDE_DIR} ${VAAPI_DRM_INCLUDE_DIR} ${VAAPI_X11_INCLUDE_DIR}) - set(VAAPI_LIBRARIES ${VAAPI_libva_LIBRARY} ${VAAPI_libva-drm_LIBRARY} ${VAAPI_libva-x11_LIBRARY}) + set(VAAPI_INCLUDE_DIRS ${VAAPI_INCLUDE_DIR} ${VAAPI_DRM_INCLUDE_DIR} ${VAAPI_WAYLAND_INCLUDE_DIR} ${VAAPI_X11_INCLUDE_DIR}) + set(VAAPI_LIBRARIES ${VAAPI_libva_LIBRARY} ${VAAPI_libva-drm_LIBRARY} ${VAAPI_libva-wayland_LIBRARY} ${VAAPI_libva-x11_LIBRARY}) set(VAAPI_DEFINITIONS -DHAVE_LIBVA=1) endif() -mark_as_advanced(VAAPI_libva_INCLUDE_DIR VAAPI_libva-drm_INCLUDE_DIR VAAPI_libva-x11_INCLUDE_DIR - VAAPI_libva_LIBRARY VAAPI_libva-drm_LIBRARY VAAPI_libva-x11_LIBRARY) +mark_as_advanced(VAAPI_libva_INCLUDE_DIR VAAPI_libva-drm_INCLUDE_DIR VAAPI_libva-wayland_INCLUDE_DIR VAAPI_libva-x11_INCLUDE_DIR + VAAPI_libva_LIBRARY VAAPI_libva-drm_LIBRARY VAAPI_libva-wayland_LIBRARY VAAPI_libva-x11_LIBRARY) diff --git a/cmake/modules/FindWaylandpp.cmake b/cmake/modules/FindWaylandpp.cmake new file mode 100644 index 0000000..8a1cd74 --- /dev/null +++ b/cmake/modules/FindWaylandpp.cmake @@ -0,0 +1,64 @@ +# 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() +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}) + +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") + +include (FindPackageHandleStandardArgs) +find_package_handle_standard_args (Waylandpp + REQUIRED_VARS + WAYLANDPP_INCLUDE_DIR + WAYLANDPP_CLIENT_LIBRARY + WAYLANDPP_CURSOR_LIBRARY + WAYLANDPP_EGL_LIBRARY + 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() + +mark_as_advanced (WAYLANDPP_CLIENT_LIBRARY WAYLANDPP_CURSOR_LIBRARY WAYLANDPP_EGL_LIBRARY WAYLANDPP_INCLUDE_DIR) diff --git a/cmake/modules/FindXkbcommon.cmake b/cmake/modules/FindXkbcommon.cmake new file mode 100644 index 0000000..88c6121 --- /dev/null +++ b/cmake/modules/FindXkbcommon.cmake @@ -0,0 +1,35 @@ +# FindXkbcommon +# ----------- +# Finds the libxkbcommon library +# +# This will will define the following variables:: +# +# XKBCOMMON_FOUND - the system has libxkbcommon +# XKBCOMMON_INCLUDE_DIRS - the libxkbcommon include directory +# 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}) + +include (FindPackageHandleStandardArgs) +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() + +mark_as_advanced (XKBCOMMON_LIBRARY XKBCOMMON_INCLUDE_DIR) \ No newline at end of file diff --git a/cmake/platform/linux/wayland.cmake b/cmake/platform/linux/wayland.cmake new file mode 100644 index 0000000..3934834 --- /dev/null +++ b/cmake/platform/linux/wayland.cmake @@ -0,0 +1,17 @@ +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}") \ No newline at end of file diff --git a/cmake/scripts/android/Install.cmake b/cmake/scripts/android/Install.cmake index b815c30..46181f7 100644 --- a/cmake/scripts/android/Install.cmake +++ b/cmake/scripts/android/Install.cmake @@ -41,6 +41,7 @@ set(package_files strings.xml src/XBMCInputDeviceListener.java src/XBMCJsonRPC.java src/XBMCMediaContentProvider.java + src/XBMCMediaSession.java src/XBMCRecommendationBuilder.java src/XBMCSearchableActivity.java src/XBMCSettingsContentObserver.java diff --git a/cmake/scripts/common/AddonHelpers.cmake b/cmake/scripts/common/AddonHelpers.cmake index abb79ff..2fafe79 100644 --- a/cmake/scripts/common/AddonHelpers.cmake +++ b/cmake/scripts/common/AddonHelpers.cmake @@ -255,7 +255,6 @@ macro (build_addon target prefix libs) if(CMAKE_BUILD_TYPE MATCHES Debug) # for debug builds also install the PDB file - get_filename_component(LIBRARY_DIR ${LIBRARY_LOCATION} DIRECTORY) install(FILES $ DESTINATION ${target} COMPONENT ${target}-${${prefix}_VERSION}) endif() diff --git a/cmake/scripts/common/Macros.cmake b/cmake/scripts/common/Macros.cmake index 09c9c36..9f00bb7 100644 --- a/cmake/scripts/common/Macros.cmake +++ b/cmake/scripts/common/Macros.cmake @@ -72,7 +72,7 @@ function(core_add_library name) add_library(${name} STATIC ${SOURCES} ${HEADERS} ${OTHERS}) set_target_properties(${name} PROPERTIES PREFIX "") set(core_DEPENDS ${name} ${core_DEPENDS} CACHE STRING "" FORCE) - add_dependencies(${name} libcpluff ffmpeg dvdnav crossguid) + add_dependencies(${name} libcpluff ffmpeg dvdnav crossguid ${PLATFORM_GLOBAL_TARGET_DEPS}) set(CORE_LIBRARY ${name} PARENT_SCOPE) # Add precompiled headers to Kodi main libraries diff --git a/cmake/scripts/ios/ArchSetup.cmake b/cmake/scripts/ios/ArchSetup.cmake index 8393faa..be12c49 100644 --- a/cmake/scripts/ios/ArchSetup.cmake +++ b/cmake/scripts/ios/ArchSetup.cmake @@ -2,7 +2,7 @@ if(NOT CMAKE_TOOLCHAIN_FILE) message(FATAL_ERROR "CMAKE_TOOLCHAIN_FILE required for ios. See ${CMAKE_SOURCE_DIR}/cmake/README.md") endif() -set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/XBMCApplication.m) +set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/XBMCApplication.mm) set(ARCH_DEFINES -D_LINUX -DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_IOS) set(SYSTEM_DEFINES -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE diff --git a/cmake/scripts/linux/ArchSetup.cmake b/cmake/scripts/linux/ArchSetup.cmake index bf32fe0..74018d0 100644 --- a/cmake/scripts/linux/ArchSetup.cmake +++ b/cmake/scripts/linux/ArchSetup.cmake @@ -42,9 +42,28 @@ if(CMAKE_BUILD_TYPE STREQUAL Release AND CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s") endif() +if(KODI_DEPENDSBUILD) + # Binaries should be directly runnable from host, so include rpath to depends + set(CMAKE_INSTALL_RPATH "${DEPENDS_PATH}/lib") + set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) +endif() + find_package(CXX11 REQUIRED) include(LDGOLD) +include(CheckIncludeFiles) +check_include_files("linux/memfd.h" HAVE_LINUX_MEMFD) +if(HAVE_LINUX_MEMFD) + list(APPEND ARCH_DEFINES "-DHAVE_LINUX_MEMFD=1") +endif() +include(CheckSymbolExists) +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") +endif() + # Code Coverage if(CMAKE_BUILD_TYPE STREQUAL Coverage) set(COVERAGE_TEST_BINARY ${APP_NAME_LC}-test) diff --git a/cmake/scripts/linux/ExtraTargets.cmake b/cmake/scripts/linux/ExtraTargets.cmake index e89aab6..4753f73 100644 --- a/cmake/scripts/linux/ExtraTargets.cmake +++ b/cmake/scripts/linux/ExtraTargets.cmake @@ -13,3 +13,17 @@ if(ENABLE_EVENTCLIENTS AND BLUETOOTH_FOUND) add_subdirectory(${CMAKE_SOURCE_DIR}/tools/EventClients/Clients/WiiRemote build/WiiRemote) endif() 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" + "${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" + DEPENDS "${WAYLANDPP_SCANNER}" ${PROTOCOL_XMLS} + COMMENT "Generating wayland-protocols C++ wrappers") + + # Dummy target for dependencies + add_custom_target(generate-wayland-extra-protocols DEPENDS wayland-extra-protocols.hpp) +endif() \ No newline at end of file diff --git a/cmake/treedata/common/cores.txt b/cmake/treedata/common/cores.txt index 8d79dd1..d23939d 100644 --- a/cmake/treedata/common/cores.txt +++ b/cmake/treedata/common/cores.txt @@ -6,4 +6,3 @@ xbmc/cores/DllLoader/exports/util cores/dll-loader/exports/util xbmc/cores/ExternalPlayer cores/externalplayer xbmc/cores/paplayer cores/paplayer xbmc/cores/playercorefactory cores/playercorefactory -xbmc/cores/RetroPlayer cores/RetroPlayer diff --git a/cmake/treedata/common/retroplayer.txt b/cmake/treedata/common/retroplayer.txt new file mode 100644 index 0000000..ab18c3c --- /dev/null +++ b/cmake/treedata/common/retroplayer.txt @@ -0,0 +1,3 @@ +xbmc/cores/RetroPlayer cores/RetroPlayer +xbmc/cores/RetroPlayer/guicontrols cores/RetroPlayer/guicontrols +xbmc/cores/RetroPlayer/rendering cores/RetroPlayer/rendering diff --git a/cmake/treedata/linux/subdirs.txt b/cmake/treedata/linux/subdirs.txt index 1ed11f5..e301579 100644 --- a/cmake/treedata/linux/subdirs.txt +++ b/cmake/treedata/linux/subdirs.txt @@ -8,6 +8,6 @@ xbmc/powermanagement/linux powermanagement/linux xbmc/storage/linux storage/linux xbmc/filesystem/posix filesystem/posix xbmc/utils/posix utils_posix -xbmc/windowing/egl windowing/egl xbmc/platform/posix posix xbmc/cores/VideoPlayer/Process/rbpi cores/VideoPlayer/Process/rbpi +xbmc/windowing/linux windowing/linux diff --git a/cmake/treedata/optional/common/imx.txt b/cmake/treedata/optional/common/imx.txt new file mode 100644 index 0000000..8c7e60b --- /dev/null +++ b/cmake/treedata/optional/common/imx.txt @@ -0,0 +1 @@ +xbmc/windowing/egl windowing/egl # IMX diff --git a/cmake/treedata/optional/common/wayland.txt b/cmake/treedata/optional/common/wayland.txt new file mode 100644 index 0000000..3725fc6 --- /dev/null +++ b/cmake/treedata/optional/common/wayland.txt @@ -0,0 +1,2 @@ +xbmc/windowing/wayland windowing/wayland # WAYLANDPP +xbmc/cores/VideoPlayer/Process/wayland cores/VideoPlayer/Process/wayland # WAYLANDPP \ No newline at end of file -- cgit v1.2.3