From 4830f27a40323fe859dc166337a2b861877b7121 Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 1 Jan 2018 13:40:09 +0100 Subject: sync with upstream --- cmake/modules/FindAlsa.cmake | 2 +- cmake/modules/FindAvahi.cmake | 6 +- cmake/modules/FindBluray.cmake | 5 + cmake/modules/FindCurl.cmake | 2 +- cmake/modules/FindD3DX11Effects.cmake | 27 ++- cmake/modules/FindDBus.cmake | 4 +- cmake/modules/FindEGL.cmake | 8 +- cmake/modules/FindFFMPEG.cmake | 18 +- cmake/modules/FindFmt.cmake | 46 ++++ cmake/modules/FindIMX.cmake | 38 ---- cmake/modules/FindIconv.cmake | 44 ++++ cmake/modules/FindJsonSchemaBuilder.cmake | 2 +- cmake/modules/FindLibDvd.cmake | 357 ++++++++++++++++-------------- cmake/modules/FindMDNS.cmake | 8 +- cmake/modules/FindMicroHttpd.cmake | 2 +- cmake/modules/FindMySqlClient.cmake | 4 +- cmake/modules/FindNFS.cmake | 4 +- cmake/modules/FindOpenGLES.cmake | 26 ++- cmake/modules/FindOpenGLES3.cmake | 24 -- cmake/modules/FindOpenGl.cmake | 2 +- cmake/modules/FindPlist.cmake | 4 +- cmake/modules/FindPulseAudio.cmake | 14 +- cmake/modules/FindRapidJSON.cmake | 6 +- cmake/modules/FindSSE.cmake | 45 +++- cmake/modules/FindSSH.cmake | 4 +- cmake/modules/FindShairplay.cmake | 4 +- cmake/modules/FindSmbClient.cmake | 4 +- cmake/modules/FindSndio.cmake | 4 +- cmake/modules/FindTexturePacker.cmake | 2 +- 29 files changed, 422 insertions(+), 294 deletions(-) delete mode 100644 cmake/modules/FindIMX.cmake create mode 100644 cmake/modules/FindIconv.cmake delete mode 100644 cmake/modules/FindOpenGLES3.cmake (limited to 'cmake/modules') diff --git a/cmake/modules/FindAlsa.cmake b/cmake/modules/FindAlsa.cmake index c99f509..bed4faa 100644 --- a/cmake/modules/FindAlsa.cmake +++ b/cmake/modules/FindAlsa.cmake @@ -33,7 +33,7 @@ find_package_handle_standard_args(Alsa if(ALSA_FOUND) set(ALSA_INCLUDE_DIRS "") # Don't want these added as 'timer.h' is a dangerous file set(ALSA_LIBRARIES ${ALSA_LIBRARY}) - set(ALSA_DEFINITIONS -DHAVE_ALSA=1 -DUSE_ALSA=1) + set(ALSA_DEFINITIONS -DHAS_ALSA=1) if(NOT TARGET ALSA::ALSA) add_library(ALSA::ALSA UNKNOWN IMPORTED) diff --git a/cmake/modules/FindAvahi.cmake b/cmake/modules/FindAvahi.cmake index 77c3e4d..068b292 100644 --- a/cmake/modules/FindAvahi.cmake +++ b/cmake/modules/FindAvahi.cmake @@ -40,21 +40,21 @@ if(AVAHI_FOUND) ${AVAHI_COMMON_INCLUDE_DIR}) set(AVAHI_LIBRARIES ${AVAHI_CLIENT_LIBRARY} ${AVAHI_COMMON_LIBRARY}) - set(AVAHI_DEFINITIONS -DHAVE_LIBAVAHI_CLIENT=1 -DHAVE_LIBAVAHI_COMMON=1) + set(AVAHI_DEFINITIONS -DHAS_AVAHI=1 -DHAS_ZEROCONF=1) if(NOT TARGET Avahi::Avahi) add_library(Avahi::Avahi UNKNOWN IMPORTED) set_target_properties(Avahi::Avahi PROPERTIES IMPORTED_LOCATION "${AVAHI_CLIENT_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${AVAHI_CLIENT_INCLUDE_DIR}" - INTERFACE_COMPILE_DEFINITIONS HAVE_LIBAVAHI_CLIENT=1) + INTERFACE_COMPILE_DEFINITIONS HAS_AVAHI=1) endif() if(NOT TARGET Avahi::AvahiCommon) add_library(Avahi::AvahiCommon UNKNOWN IMPORTED) set_target_properties(Avahi::AvahiCommon PROPERTIES IMPORTED_LOCATION "${AVAHI_COMMON_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${AVAHI_COMMON_INCLUDE_DIR}" - INTERFACE_COMPILE_DEFINITIONS HAVE_LIBAVAHI_COMMON=1 + INTERFACE_COMPILE_DEFINITIONS HAS_AVAHI=1 INTERFACE_LINK_LIBRARIES Avahi::Avahi) endif() endif() diff --git a/cmake/modules/FindBluray.cmake b/cmake/modules/FindBluray.cmake index 010fdf1..3c29f54 100644 --- a/cmake/modules/FindBluray.cmake +++ b/cmake/modules/FindBluray.cmake @@ -50,6 +50,11 @@ if(BLURAY_FOUND) set(BLURAY_INCLUDE_DIRS ${BLURAY_INCLUDE_DIR}) set(BLURAY_DEFINITIONS -DHAVE_LIBBLURAY=1) + # todo: improve syntax + if (NOT CORE_PLATFORM_NAME_LC STREQUAL windowsstore) + list(APPEND BLURAY_DEFINITIONS -DHAVE_LIBBLURAY_BDJ=1) + endif() + if(NOT TARGET Bluray::Bluray) add_library(Bluray::Bluray UNKNOWN IMPORTED) if(BLURAY_LIBRARY) diff --git a/cmake/modules/FindCurl.cmake b/cmake/modules/FindCurl.cmake index ed4d81f..d0759a6 100644 --- a/cmake/modules/FindCurl.cmake +++ b/cmake/modules/FindCurl.cmake @@ -20,7 +20,7 @@ endif() find_path(CURL_INCLUDE_DIR NAMES curl/curl.h PATHS ${PC_CURL_INCLUDEDIR}) -find_library(CURL_LIBRARY NAMES curl libcurl +find_library(CURL_LIBRARY NAMES curl libcurl libcurl_imp PATHS ${PC_CURL_LIBDIR}) set(CURL_VERSION ${PC_CURL_VERSION}) diff --git a/cmake/modules/FindD3DX11Effects.cmake b/cmake/modules/FindD3DX11Effects.cmake index 3fdf7d7..9b1eb15 100644 --- a/cmake/modules/FindD3DX11Effects.cmake +++ b/cmake/modules/FindD3DX11Effects.cmake @@ -4,23 +4,26 @@ # D3DCOMPILER_DLL - Path to the Direct3D Compiler # FXC - Path to the DirectX Effects Compiler (FXC) -find_file(D3DCOMPILER_DLL - NAMES d3dcompiler_47.dll d3dcompiler_46.dll - PATHS - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;InstallationFolder]/Redist/D3D/${SDK_TARGET_ARCH}" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v8.1;InstallationFolder]/Redist/D3D/${SDK_TARGET_ARCH}" - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v8.0;InstallationFolder]/Redist/D3D/${SDK_TARGET_ARCH}" - "$ENV{WindowsSdkDir}Redist/d3d/${SDK_TARGET_ARCH}" - NO_DEFAULT_PATH) -if(NOT D3DCOMPILER_DLL) - message(WARNING "Could NOT find Direct3D Compiler") +if(NOT CORE_SYSTEM_NAME STREQUAL windowsstore) + find_file(D3DCOMPILER_DLL + NAMES d3dcompiler_47.dll d3dcompiler_46.dll + PATHS + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;InstallationFolder]/Redist/D3D/${SDK_TARGET_ARCH}" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v8.1;InstallationFolder]/Redist/D3D/${SDK_TARGET_ARCH}" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v8.0;InstallationFolder]/Redist/D3D/${SDK_TARGET_ARCH}" + "$ENV{WindowsSdkDir}Redist/d3d/${SDK_TARGET_ARCH}" + NO_DEFAULT_PATH) + if(NOT D3DCOMPILER_DLL) + message(WARNING "Could NOT find Direct3D Compiler") + endif() + mark_as_advanced(D3DCOMPILER_DLL) + copy_file_to_buildtree(${D3DCOMPILER_DLL} DIRECTORY .) endif() -mark_as_advanced(D3DCOMPILER_DLL) -copy_file_to_buildtree(${D3DCOMPILER_DLL} DIRECTORY .) find_program(FXC fxc PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;InstallationFolder]/bin/x86" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;InstallationFolder]/bin/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v10.0;ProductVersion].0/x86" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v8.1;InstallationFolder]/bin/x86" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Microsoft SDKs\\Windows\\v8.0;InstallationFolder]/bin/x86" "$ENV{WindowsSdkDir}bin/x86") diff --git a/cmake/modules/FindDBus.cmake b/cmake/modules/FindDBus.cmake index 2d64af4..9ea4f8f 100644 --- a/cmake/modules/FindDBus.cmake +++ b/cmake/modules/FindDBus.cmake @@ -38,14 +38,14 @@ find_package_handle_standard_args(DBus if(DBUS_FOUND) set(DBUS_LIBRARIES ${DBUS_LIBRARY}) set(DBUS_INCLUDE_DIRS ${DBUS_INCLUDE_DIR} ${DBUS_ARCH_INCLUDE_DIR}) - set(DBUS_DEFINITIONS -DHAVE_DBUS=1) + set(DBUS_DEFINITIONS -DHAS_DBUS=1) if(NOT TARGET DBus::DBus) add_library(DBus::DBus UNKNOWN IMPORTED) set_target_properties(DBus::DBus PROPERTIES IMPORTED_LOCATION "${DBUS_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${DBUS_INCLUDE_DIR}" - INTERFACE_COMPILE_DEFINITIONS HAVE_DBUS=1) + INTERFACE_COMPILE_DEFINITIONS HAS_DBUS=1) endif() endif() diff --git a/cmake/modules/FindEGL.cmake b/cmake/modules/FindEGL.cmake index 93fa530..331ac39 100644 --- a/cmake/modules/FindEGL.cmake +++ b/cmake/modules/FindEGL.cmake @@ -14,14 +14,18 @@ # # EGL::EGL - The EGL library +if(CORE_PLATFORM_NAME_LC STREQUAL rbpi) + set(_brcmprefix brcm) +endif() + if(PKG_CONFIG_FOUND) - pkg_check_modules(PC_EGL egl QUIET) + pkg_check_modules(PC_EGL ${_brcmprefix}egl QUIET) endif() find_path(EGL_INCLUDE_DIR EGL/egl.h PATHS ${PC_EGL_INCLUDEDIR}) -find_library(EGL_LIBRARY NAMES EGL egl +find_library(EGL_LIBRARY NAMES ${_brcmprefix}EGL egl PATHS ${PC_EGL_LIBDIR}) set(EGL_VERSION ${PC_EGL_VERSION}) diff --git a/cmake/modules/FindFFMPEG.cmake b/cmake/modules/FindFFMPEG.cmake index 02c8d28..689cf28 100644 --- a/cmake/modules/FindFFMPEG.cmake +++ b/cmake/modules/FindFFMPEG.cmake @@ -33,14 +33,14 @@ # # required ffmpeg library versions -set(REQUIRED_FFMPEG_VERSION 3.3) -set(_avcodec_ver ">=57.89.100") -set(_avfilter_ver ">=6.82.100") -set(_avformat_ver ">=57.71.100") -set(_avutil_ver ">=55.58.100") -set(_swscale_ver ">=4.6.100") -set(_swresample_ver ">=2.7.100") -set(_postproc_ver ">=54.5.100") +set(REQUIRED_FFMPEG_VERSION 3.4) +set(_avcodec_ver ">=57.107.100") +set(_avfilter_ver ">=6.107.100") +set(_avformat_ver ">=57.83.100") +set(_avutil_ver ">=55.78.100") +set(_swscale_ver ">=4.8.100") +set(_swresample_ver ">=2.9.100") +set(_postproc_ver ">=54.7.100") # Allows building with external ffmpeg not found in system paths, @@ -266,7 +266,7 @@ if(NOT FFMPEG_FOUND) file(WRITE ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg/ffmpeg-link-wrapper "#!/bin/bash -if [[ $@ == *${APP_NAME_LC}.bin* || $@ == *${APP_NAME_LC}.so* || $@ == *${APP_NAME_LC}-test* ]] +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` avcodec=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libavformat` diff --git a/cmake/modules/FindFmt.cmake b/cmake/modules/FindFmt.cmake index 5473ed5..5e47509 100644 --- a/cmake/modules/FindFmt.cmake +++ b/cmake/modules/FindFmt.cmake @@ -12,6 +12,50 @@ # # Fmt::Fmt - The Fmt library +if(ENABLE_INTERNAL_FMT) + include(ExternalProject) + file(STRINGS ${CMAKE_SOURCE_DIR}/tools/depends/target/libfmt/Makefile VER REGEX "^[ ]*VERSION[ ]*=.+$") + string(REGEX REPLACE "^[ ]*VERSION[ ]*=[ ]*" "" FMT_VERSION "${VER}") + + # allow user to override the download URL with a local tarball + # needed for offline build envs + if(FMT_URL) + get_filename_component(FMT_URL "${FMT_URL}" ABSOLUTE) + else() + set(FMT_URL http://mirrors.kodi.tv/build-deps/sources/fmt-${FMT_VERSION}.tar.gz) + endif() + if(VERBOSE) + message(STATUS "FMT_URL: ${FMT_URL}") + endif() + + if(APPLE) + set(EXTRA_ARGS "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}") + endif() + + set(FMT_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/libfmt.a) + set(FMT_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include) + externalproject_add(fmt + URL ${FMT_URL} + DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download + PREFIX ${CORE_BUILD_DIR}/fmt + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + -DFMT_DOC=OFF + -DFMT_TEST=OFF + "${EXTRA_ARGS}" + BUILD_BYPRODUCTS ${FMT_LIBRARY}) + set_target_properties(fmt PROPERTIES FOLDER "External Projects") + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(Fmt + REQUIRED_VARS FMT_LIBRARY FMT_INCLUDE_DIR + VERSION_VAR FMT_VERSION) + + set(FMT_LIBRARIES ${FMT_LIBRARY}) + set(FMT_INCLUDE_DIRS ${FMT_INCLUDE_DIR}) + +else() + if(CORE_SYSTEM_NAME STREQUAL windows OR CORE_SYSTEM_NAME STREQUAL windowsstore) # TODO: fix windows fmt package to include fmt-config.cmake and fmt-config-version.cmake set(FMT_VERSION 3.0.1) @@ -55,3 +99,5 @@ if(FMT_FOUND) endif() mark_as_advanced(FMT_INCLUDE_DIR FMT_LIBRARY) + +endif() diff --git a/cmake/modules/FindIMX.cmake b/cmake/modules/FindIMX.cmake deleted file mode 100644 index 3689579..0000000 --- a/cmake/modules/FindIMX.cmake +++ /dev/null @@ -1,38 +0,0 @@ -#.rst: -# FindIMX -# ------- -# Finds the IMX codec -# -# This will will define the following variables:: -# -# IMX_FOUND - system has IMX -# IMX_INCLUDE_DIRS - the IMX include directory -# IMX_DEFINITIONS - the IMX definitions -# IMX_LIBRARIES - the IMX libraries - -if(PKG_CONFIG_FOUND) - pkg_check_modules(IMX fslvpuwrap QUIET) -endif() - -find_path(IMX_INCLUDE_DIR NAMES vpu_wrapper.h - PATH_SUFFIXES imx-mm/vpu - PATHS ${PC_IMX_INCLUDEDIR}) - -find_library(FSLVPUWRAP_LIBRARY NAMES fslvpuwrap - PATHS ${PC_IMX_LIBDIR}) -find_library(VPU_LIBRARY NAMES vpu - PATHS ${PC_IMX_LIBDIR}) -find_library(G2D_LIBRARY NAMES g2d - PATHS ${PC_IMX_LIBDIR}) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(IMX - REQUIRED_VARS IMX_INCLUDE_DIR FSLVPUWRAP_LIBRARY VPU_LIBRARY G2D_LIBRARY) - -if(IMX_FOUND) - set(IMX_INCLUDE_DIRS ${IMX_INCLUDE_DIR}) - set(IMX_LIBRARIES ${FSLVPUWRAP_LIBRARY} ${VPU_LIBRARY} ${G2D_LIBRARY}) - set(IMX_DEFINITIONS -DHAS_IMXVPU=1 -DLINUX -DEGL_API_FB) -endif() - -mark_as_advanced(IMX_INCLUDE_DIR FSLVPUWRAP_LIBRARY VPU_LIBRARY G2D_LIBRARY) diff --git a/cmake/modules/FindIconv.cmake b/cmake/modules/FindIconv.cmake new file mode 100644 index 0000000..8ee01fb --- /dev/null +++ b/cmake/modules/FindIconv.cmake @@ -0,0 +1,44 @@ +#.rst: +# FindICONV +# -------- +# Finds the ICONV library +# +# This will will define the following variables:: +# +# ICONV_FOUND - system has ICONV +# ICONV_INCLUDE_DIRS - the ICONV include directory +# ICONV_LIBRARIES - the ICONV libraries +# +# and the following imported targets:: +# +# ICONV::ICONV - The ICONV library + +find_path(ICONV_INCLUDE_DIR NAMES iconv.h) + +find_library(ICONV_LIBRARY NAMES iconv libiconv c) + +set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY}) +check_function_exists(iconv HAVE_ICONV_FUNCTION) +if(NOT HAVE_ICONV_FUNCTION) + check_function_exists(libiconv HAVE_LIBICONV_FUNCTION2) + set(HAVE_ICONV_FUNCTION ${HAVE_LIBICONV_FUNCTION2}) + unset(HAVE_LIBICONV_FUNCTION2) +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Iconv + REQUIRED_VARS ICONV_LIBRARY ICONV_INCLUDE_DIR HAVE_ICONV_FUNCTION) + +if(ICONV_FOUND) + set(ICONV_LIBRARIES ${ICONV_LIBRARY}) + set(ICONV_INCLUDE_DIRS ${ICONV_INCLUDE_DIR}) + + if(NOT TARGET ICONV::ICONV) + add_library(ICONV::ICONV UNKNOWN IMPORTED) + set_target_properties(ICONV::ICONV PROPERTIES + IMPORTED_LOCATION "${ICONV_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${ICONV_INCLUDE_DIR}") + endif() +endif() + +mark_as_advanced(ICONV_INCLUDE_DIR ICONV_LIBRARY HAVE_ICONV_FUNCTION) diff --git a/cmake/modules/FindJsonSchemaBuilder.cmake b/cmake/modules/FindJsonSchemaBuilder.cmake index 9a31dd5..14aa2f5 100644 --- a/cmake/modules/FindJsonSchemaBuilder.cmake +++ b/cmake/modules/FindJsonSchemaBuilder.cmake @@ -12,7 +12,7 @@ if(NOT TARGET JsonSchemaBuilder::JsonSchemaBuilder) add_executable(JsonSchemaBuilder::JsonSchemaBuilder IMPORTED GLOBAL) if(CORE_SYSTEM_NAME STREQUAL windows OR CORE_SYSTEM_NAME STREQUAL windowsstore) set_target_properties(JsonSchemaBuilder::JsonSchemaBuilder PROPERTIES - IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/project/BuildDependencies/bin/json-rpc/JsonSchemaBuilder") + IMPORTED_LOCATION "${DEPENDENCIES_DIR}/bin/json-rpc/JsonSchemaBuilder") else() set_target_properties(JsonSchemaBuilder::JsonSchemaBuilder PROPERTIES IMPORTED_LOCATION "${NATIVEPREFIX}/bin/JsonSchemaBuilder") diff --git a/cmake/modules/FindLibDvd.cmake b/cmake/modules/FindLibDvd.cmake index 86af89c..5c72826 100644 --- a/cmake/modules/FindLibDvd.cmake +++ b/cmake/modules/FindLibDvd.cmake @@ -1,133 +1,146 @@ -if(NOT WIN32) - if(KODI_DEPENDSBUILD) - set(_dvdlibs dvdread dvdnav) - set(_handlevars LIBDVD_INCLUDE_DIRS DVDREAD_LIBRARY DVDNAV_LIBRARY) - if(ENABLE_DVDCSS) - list(APPEND _dvdlibs libdvdcss) - list(APPEND _handlevars DVDCSS_LIBRARY) - endif() +if(KODI_DEPENDSBUILD) + set(_dvdlibs dvdread dvdnav) + set(_handlevars LIBDVD_INCLUDE_DIRS DVDREAD_LIBRARY DVDNAV_LIBRARY) + if(ENABLE_DVDCSS) + list(APPEND _dvdlibs libdvdcss) + list(APPEND _handlevars DVDCSS_LIBRARY) + endif() - if(PKG_CONFIG_FOUND) - pkg_check_modules(PC_DVD ${_dvdlibs} QUIET) - endif() - - find_path(LIBDVD_INCLUDE_DIRS dvdnav/dvdnav.h PATHS ${PC_DVD_INCLUDE_DIRS}) - find_library(DVDREAD_LIBRARY NAMES dvdread libdvdread PATHS ${PC_DVD_dvdread_LIBDIR}) - find_library(DVDNAV_LIBRARY NAMES dvdnav libdvdnav PATHS ${PC_DVD_dvdnav_LIBDIR}) + if(PKG_CONFIG_FOUND) + pkg_check_modules(PC_DVD ${_dvdlibs} QUIET) + endif() + + find_path(LIBDVD_INCLUDE_DIRS dvdnav/dvdnav.h PATHS ${PC_DVD_INCLUDE_DIRS}) + find_library(DVDREAD_LIBRARY NAMES dvdread libdvdread PATHS ${PC_DVD_dvdread_LIBDIR}) + find_library(DVDNAV_LIBRARY NAMES dvdnav libdvdnav PATHS ${PC_DVD_dvdnav_LIBDIR}) + if(ENABLE_DVDCSS) + find_library(DVDCSS_LIBRARY NAMES dvdcss libdvdcss PATHS ${PC_DVD_libdvdcss_LIBDIR}) + endif() + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(LibDvd REQUIRED_VARS ${_handlevars}) + if(LIBDVD_FOUND) + add_library(dvdnav UNKNOWN IMPORTED) + set_target_properties(dvdnav PROPERTIES + FOLDER "External Projects" + IMPORTED_LOCATION "${DVDNAV_LIBRARY}") + + add_library(dvdread UNKNOWN IMPORTED) + set_target_properties(dvdread PROPERTIES + FOLDER "External Projects" + IMPORTED_LOCATION "${DVDREAD_LIBRARY}") + add_library(dvdcss UNKNOWN IMPORTED) + set_target_properties(dvdcss PROPERTIES + FOLDER "External Projects" + IMPORTED_LOCATION "${DVDCSS_LIBRARY}") + + set(_linklibs ${DVDREAD_LIBRARY}) if(ENABLE_DVDCSS) - find_library(DVDCSS_LIBRARY NAMES dvdcss libdvdcss PATHS ${PC_DVD_libdvdcss_LIBDIR}) + list(APPEND _linklibs ${DVDCSS_LIBRARY}) endif() - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(LibDvd REQUIRED_VARS ${_handlevars}) - if(LIBDVD_FOUND) - add_library(dvdnav UNKNOWN IMPORTED) - set_target_properties(dvdnav PROPERTIES - FOLDER "External Projects" - IMPORTED_LOCATION "${DVDNAV_LIBRARY}") - - add_library(dvdread UNKNOWN IMPORTED) - set_target_properties(dvdread PROPERTIES - FOLDER "External Projects" - IMPORTED_LOCATION "${DVDREAD_LIBRARY}") - add_library(dvdcss UNKNOWN IMPORTED) - set_target_properties(dvdcss PROPERTIES - FOLDER "External Projects" - IMPORTED_LOCATION "${DVDCSS_LIBRARY}") - - set(_linklibs ${DVDREAD_LIBRARY}) - if(ENABLE_DVDCSS) - list(APPEND _linklibs ${DVDCSS_LIBRARY}) - endif() - core_link_library(${DVDNAV_LIBRARY} system/players/VideoPlayer/libdvdnav dvdnav archives "${_linklibs}") - set(LIBDVD_LIBRARIES ${DVDNAV_LIBRARY}) - mark_as_advanced(LIBDVD_INCLUDE_DIRS LIBDVD_LIBRARIES) + core_link_library(${DVDNAV_LIBRARY} system/players/VideoPlayer/libdvdnav dvdnav archives "${_linklibs}") + set(LIBDVD_LIBRARIES ${DVDNAV_LIBRARY}) + mark_as_advanced(LIBDVD_INCLUDE_DIRS LIBDVD_LIBRARIES) + endif() +else() + set(dvdlibs libdvdread libdvdnav) + if(ENABLE_DVDCSS) + list(APPEND dvdlibs libdvdcss) + endif() + set(DEPENDS_TARGETS_DIR ${CMAKE_SOURCE_DIR}/tools/depends/target) + foreach(dvdlib ${dvdlibs}) + file(GLOB VERSION_FILE ${DEPENDS_TARGETS_DIR}/${dvdlib}/DVD*-VERSION) + file(STRINGS ${VERSION_FILE} VER) + string(REGEX MATCH "VERSION=[^ ]*$.*" ${dvdlib}_VER "${VER}") + list(GET ${dvdlib}_VER 0 ${dvdlib}_VER) + string(SUBSTRING "${${dvdlib}_VER}" 8 -1 ${dvdlib}_VER) + string(REGEX MATCH "BASE_URL=([^ ]*)" ${dvdlib}_BASE_URL "${VER}") + list(GET ${dvdlib}_BASE_URL 0 ${dvdlib}_BASE_URL) + string(SUBSTRING "${${dvdlib}_BASE_URL}" 9 -1 ${dvdlib}_BASE_URL) + string(TOUPPER ${dvdlib} DVDLIB) + + # allow user to override the download URL with a local tarball + # needed for offline build envs + # allow upper and lowercase var name + if(${dvdlib}_URL) + set(${DVDLIB}_URL ${${dvdlib}_URL}) endif() - else() - set(dvdlibs libdvdread libdvdnav) - if(ENABLE_DVDCSS) - list(APPEND dvdlibs libdvdcss) + if(${DVDLIB}_URL) + get_filename_component(${DVDLIB}_URL "${${DVDLIB}_URL}" ABSOLUTE) + else() + set(${DVDLIB}_URL ${${dvdlib}_BASE_URL}/archive/${${dvdlib}_VER}.tar.gz) endif() - foreach(dvdlib ${dvdlibs}) - file(GLOB VERSION_FILE ${CMAKE_SOURCE_DIR}/tools/depends/target/${dvdlib}/DVD*-VERSION) - file(STRINGS ${VERSION_FILE} VER) - string(REGEX MATCH "VERSION=[^ ]*$.*" ${dvdlib}_VER "${VER}") - list(GET ${dvdlib}_VER 0 ${dvdlib}_VER) - string(SUBSTRING "${${dvdlib}_VER}" 8 -1 ${dvdlib}_VER) - string(REGEX MATCH "BASE_URL=([^ ]*)" ${dvdlib}_BASE_URL "${VER}") - list(GET ${dvdlib}_BASE_URL 0 ${dvdlib}_BASE_URL) - string(SUBSTRING "${${dvdlib}_BASE_URL}" 9 -1 ${dvdlib}_BASE_URL) - string(TOUPPER ${dvdlib} DVDLIB) - - # allow user to override the download URL with a local tarball - # needed for offline build envs - # allow upper and lowercase var name - if(${dvdlib}_URL) - set(${DVDLIB}_URL ${${dvdlib}_URL}) - endif() - if(${DVDLIB}_URL) - get_filename_component(${DVDLIB}_URL "${${DVDLIB}_URL}" ABSOLUTE) - else() - set(${DVDLIB}_URL ${${dvdlib}_BASE_URL}/archive/${${dvdlib}_VER}.tar.gz) - endif() - if(VERBOSE) - message(STATUS "${DVDLIB}_URL: ${${DVDLIB}_URL}") - endif() - endforeach() - - set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include") - if(CMAKE_CROSSCOMPILING) - set(EXTRA_FLAGS "CC=${CMAKE_C_COMPILER}") + if(VERBOSE) + message(STATUS "${DVDLIB}_URL: ${${DVDLIB}_URL}") endif() + endforeach() - if(APPLE) - set(CMAKE_LD_FLAGS "-framework IOKit -framework CoreFoundation") - endif() + set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include") + if(CMAKE_CROSSCOMPILING) + set(EXTRA_FLAGS "CC=${CMAKE_C_COMPILER}") + endif() + + if(APPLE) + set(CMAKE_LD_FLAGS "-framework IOKit -framework CoreFoundation") + endif() - set(HOST_ARCH ${ARCH}) - if(CORE_SYSTEM_NAME STREQUAL android) - if(ARCH STREQUAL arm) - set(HOST_ARCH arm-linux-androideabi) - elseif(ARCH STREQUAL aarch64) - set(HOST_ARCH aarch64-linux-android) - elseif(ARCH STREQUAL i486-linux) - set(HOST_ARCH i686-linux-android) - endif() + set(HOST_ARCH ${ARCH}) + if(CORE_SYSTEM_NAME STREQUAL android) + if(ARCH STREQUAL arm) + set(HOST_ARCH arm-linux-androideabi) + elseif(ARCH STREQUAL aarch64) + set(HOST_ARCH aarch64-linux-android) + elseif(ARCH STREQUAL i486-linux) + set(HOST_ARCH i686-linux-android) endif() + elseif(CORE_SYSTEM_NAME STREQUAL windowsstore) + set(LIBDVD_ADDITIONAL_ARGS "-DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}" "-DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}") + endif() - if(ENABLE_DVDCSS) + if(ENABLE_DVDCSS) + if(NOT CORE_SYSTEM_NAME MATCHES windows) set(DVDCSS_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdcss.a) ExternalProject_Add(dvdcss URL ${LIBDVDCSS_URL} - DOWNLOAD_NAME libdvdcss-${libdvdcss_VER}.tar.gz - DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download - PREFIX ${CORE_BUILD_DIR}/libdvd - CONFIGURE_COMMAND ac_cv_path_GIT= /configure - --target=${HOST_ARCH} - --host=${HOST_ARCH} - --disable-doc - --enable-static - --disable-shared - --with-pic - --prefix= - --libdir=/lib - "${EXTRA_FLAGS}" - "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}" - "LDFLAGS=${CMAKE_LD_FLAGS}" - BUILD_BYPRODUCTS ${DVDCSS_LIBRARY}) + DOWNLOAD_NAME libdvdcss-${libdvdcss_VER}.tar.gz + DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download + PREFIX ${CORE_BUILD_DIR}/libdvd + CONFIGURE_COMMAND ac_cv_path_GIT= /configure + --target=${HOST_ARCH} + --host=${HOST_ARCH} + --disable-doc + --enable-static + --disable-shared + --with-pic + --prefix= + --libdir=/lib + "${EXTRA_FLAGS}" + "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}" + "LDFLAGS=${CMAKE_LD_FLAGS}" + BUILD_BYPRODUCTS ${DVDCSS_LIBRARY}) ExternalProject_Add_Step(dvdcss autoreconf DEPENDEES download update patch DEPENDERS configure COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif WORKING_DIRECTORY ) - - set_target_properties(dvdcss PROPERTIES FOLDER "External Projects") + else() + ExternalProject_Add(dvdcss + URL ${LIBDVDCSS_URL} + DOWNLOAD_DIR ${CMAKE_SOURCE_DIR}/project/BuildDependencies/downloads + DOWNLOAD_NAME libdvdcss-${libdvdcss_VER}.tar.gz + CMAKE_ARGS + ${LIBDVD_ADDITIONAL_ARGS} + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd + ) endif() + set_target_properties(dvdcss PROPERTIES FOLDER "External Projects") + endif() - set(DVDREAD_CFLAGS "-D_XBMC -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include") - if(ENABLE_DVDCSS) - set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -DHAVE_DVDCSS_DVDCSS_H") - endif() + set(DVDREAD_CFLAGS "-D_XBMC -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include") + if(ENABLE_DVDCSS) + set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -DHAVE_DVDCSS_DVDCSS_H") + endif() + if(NOT CORE_SYSTEM_NAME MATCHES windows) set(DVDREAD_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.a) ExternalProject_Add(dvdread URL ${LIBDVDREAD_URL} DOWNLOAD_NAME libdvdread-${libdvdread_VER}.tar.gz @@ -146,74 +159,90 @@ if(NOT WIN32) "LDFLAGS=${CMAKE_LD_FLAGS}" BUILD_BYPRODUCTS ${DVDREAD_LIBRARY}) ExternalProject_Add_Step(dvdread autoreconf - DEPENDEES download update patch - DEPENDERS configure - COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif - WORKING_DIRECTORY ) - if(ENABLE_DVDCSS) - add_dependencies(dvdread dvdcss) - endif() + DEPENDEES download update patch + DEPENDERS configure + COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif + WORKING_DIRECTORY ) + else() + ExternalProject_Add(dvdread + URL ${LIBDVDREAD_URL} + DOWNLOAD_DIR ${CMAKE_SOURCE_DIR}/project/BuildDependencies/downloads + DOWNLOAD_NAME libdvdread-${libdvdread_VER}.tar.gz + CMAKE_ARGS + ${LIBDVD_ADDITIONAL_ARGS} + -DCMAKE_PREFIX_PATH:PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd + ) + endif() + if(ENABLE_DVDCSS) + add_dependencies(dvdread dvdcss) + endif() - set_target_properties(dvdread PROPERTIES FOLDER "External Projects") + set_target_properties(dvdread PROPERTIES FOLDER "External Projects") - if(ENABLE_DVDCSS) - set(DVDNAV_LIBS -ldvdcss) - endif() + if(ENABLE_DVDCSS) + set(DVDNAV_LIBS -ldvdcss) + endif() + if(NOT CORE_SYSTEM_NAME MATCHES windows) set(DVDNAV_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdnav.a) ExternalProject_Add(dvdnav URL ${LIBDVDNAV_URL} - DOWNLOAD_NAME libdvdnav-${libdvdnav_VER}.tar.gz - DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download - PREFIX ${CORE_BUILD_DIR}/libdvd - CONFIGURE_COMMAND ac_cv_path_GIT= /configure - --target=${HOST_ARCH} - --host=${HOST_ARCH} - --enable-static - --disable-shared - --with-pic - --prefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd - --libdir=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib - "${EXTRA_FLAGS}" - "LDFLAGS=${CMAKE_LD_FLAGS} -L${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib" - "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}" - "DVDREAD_CFLAGS=${DVDREAD_CFLAGS}" - "DVDREAD_LIBS=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.la" - "LIBS=${DVDNAV_LIBS}" - BUILD_BYPRODUCTS ${DVDNAV_LIBRARY}) + DOWNLOAD_NAME libdvdnav-${libdvdnav_VER}.tar.gz + DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download + PREFIX ${CORE_BUILD_DIR}/libdvd + CONFIGURE_COMMAND ac_cv_path_GIT= /configure + --target=${HOST_ARCH} + --host=${HOST_ARCH} + --enable-static + --disable-shared + --with-pic + --prefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd + --libdir=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib + "${EXTRA_FLAGS}" + "LDFLAGS=${CMAKE_LD_FLAGS} -L${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib" + "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}" + "DVDREAD_CFLAGS=${DVDREAD_CFLAGS}" + "DVDREAD_LIBS=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.la" + "LIBS=${DVDNAV_LIBS}" + BUILD_BYPRODUCTS ${DVDNAV_LIBRARY}) ExternalProject_Add_Step(dvdnav autoreconf DEPENDEES download update patch DEPENDERS configure COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif WORKING_DIRECTORY ) - add_dependencies(dvdnav dvdread) - set_target_properties(dvdnav PROPERTIES FOLDER "External Projects") + else() + set(DVDNAV_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdnav.lib) + ExternalProject_Add(dvdnav + URL ${LIBDVDNAV_URL} + DOWNLOAD_DIR ${CMAKE_SOURCE_DIR}/project/BuildDependencies/downloads + DOWNLOAD_NAME libdvdnav-${libdvdnav_VER}.tar.gz + CMAKE_ARGS + ${LIBDVD_ADDITIONAL_ARGS} + -DCMAKE_PREFIX_PATH:PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd + ) + endif() + add_dependencies(dvdnav dvdread) + set_target_properties(dvdnav PROPERTIES FOLDER "External Projects") - set(_dvdlibs ${DVDREAD_LIBRARY} ${DVDCSS_LIBRARY}) + set(_dvdlibs ${DVDREAD_LIBRARY} ${DVDCSS_LIBRARY}) + if(NOT CORE_SYSTEM_NAME MATCHES windows) # link a shared dvdnav library that includes the whole archives of dvdread and dvdcss as well # the quotes around _dvdlibs are on purpose, since we want to pass a list to the function that will be unpacked automatically core_link_library(${DVDNAV_LIBRARY} system/players/VideoPlayer/libdvdnav dvdnav archives "${_dvdlibs}") - - set(LIBDVD_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include) - set(LIBDVD_LIBRARIES ${DVDNAV_LIBRARY} ${DVDREAD_LIBRARY}) - if(ENABLE_DVDCSS) - list(APPEND LIBDVD_LIBRARIES ${DVDCSS_LIBRARY}) - endif() - set(LIBDVD_LIBRARIES ${LIBDVD_LIBRARIES} CACHE STRING "libdvd libraries" FORCE) - set(LIBDVD_FOUND 1 CACHE BOOL "libdvd found" FORCE) + else() + set(LIBDVD_TARGET_DIR .) + if(CORE_SYSTEM_NAME STREQUAL windowsstore) + set(LIBDVD_TARGET_DIR dlls) endif() -else() - # Dynamically loaded on Windows - find_path(LIBDVD_INCLUDE_DIR dvdcss/dvdcss.h) - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(LibDvd REQUIRED_VARS LIBDVD_INCLUDE_DIR) - - if(LIBDVD_FOUND) - set(LIBDVD_INCLUDE_DIRS ${LIBDVD_INCLUDE_DIR}) - - add_custom_target(dvdnav) - set_target_properties(dvdnav PROPERTIES FOLDER "External Projects") + copy_file_to_buildtree(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/bin/libdvdnav.dll DIRECTORY ${LIBDVD_TARGET_DIR}) endif() - mark_as_advanced(LIBDVD_INCLUDE_DIR) -endif() + set(LIBDVD_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include) + set(LIBDVD_LIBRARIES ${DVDNAV_LIBRARY} ${DVDREAD_LIBRARY}) + if(ENABLE_DVDCSS) + list(APPEND LIBDVD_LIBRARIES ${DVDCSS_LIBRARY}) + endif() + set(LIBDVD_LIBRARIES ${LIBDVD_LIBRARIES} CACHE STRING "libdvd libraries" FORCE) + set(LIBDVD_FOUND 1 CACHE BOOL "libdvd found" FORCE) +endif() \ No newline at end of file diff --git a/cmake/modules/FindMDNS.cmake b/cmake/modules/FindMDNS.cmake index c001f7b..9294708 100644 --- a/cmake/modules/FindMDNS.cmake +++ b/cmake/modules/FindMDNS.cmake @@ -26,9 +26,9 @@ find_package_handle_standard_args(MDNS if(MDNS_FOUND) set(MDNS_INCLUDE_DIRS ${MDNS_INCLUDE_DIR}) set(MDNS_LIBRARIES ${MDNS_LIBRARY}) - set(MDNS_DEFINITIONS -DHAVE_LIBMDNS=1) + set(MDNS_DEFINITIONS -DHAS_MDNS=1 -DHAS_ZEROCONF=1) if(MDNS_EMBEDDED_INCLUDE_DIR) - list(APPEND MDNS_DEFINITIONS -DHAVE_LIBMDNSEMBEDDED=1) + list(APPEND MDNS_DEFINITIONS -DHAS_MDNS_EMBEDDED=1) endif() if(NOT TARGET MDNS::MDNS) @@ -36,10 +36,10 @@ if(MDNS_FOUND) set_target_properties(MDNS::MDNS PROPERTIES IMPORTED_LOCATION "${MDNS_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${MDNS_INCLUDE_DIR}" - INTERFACE_COMPILE_DEFINITIONS HAVE_LIBMDNS=1) + INTERFACE_COMPILE_DEFINITIONS HAS_MDNS=1) if(MDNS_EMBEDDED_INCLUDE_DIR) set_target_properties(MDNS::MDNS PROPERTIES - INTERFACE_COMPILE_DEFINITIONS HAVE_LIBMDNSEMBEDDED=1) + INTERFACE_COMPILE_DEFINITIONS HAS_MDNS_EMBEDDED=1) endif() endif() endif() diff --git a/cmake/modules/FindMicroHttpd.cmake b/cmake/modules/FindMicroHttpd.cmake index 8eecbc4..232f8e5 100644 --- a/cmake/modules/FindMicroHttpd.cmake +++ b/cmake/modules/FindMicroHttpd.cmake @@ -33,7 +33,7 @@ find_package_handle_standard_args(MicroHttpd if(MICROHTTPD_FOUND) set(MICROHTTPD_LIBRARIES ${MICROHTTPD_LIBRARY}) set(MICROHTTPD_INCLUDE_DIRS ${MICROHTTPD_INCLUDE_DIR}) - set(MICROHTTPD_DEFINITIONS -DHAVE_LIBMICROHTTPD=1) + set(MICROHTTPD_DEFINITIONS -DHAS_WEB_SERVER=1 -DHAS_WEB_INTERFACE=1) if(KODI_DEPENDSBUILD AND NOT WIN32) find_library(GCRYPT_LIBRARY gcrypt) diff --git a/cmake/modules/FindMySqlClient.cmake b/cmake/modules/FindMySqlClient.cmake index 7b48577..50db582 100644 --- a/cmake/modules/FindMySqlClient.cmake +++ b/cmake/modules/FindMySqlClient.cmake @@ -46,7 +46,7 @@ find_package_handle_standard_args(MySqlClient if(MYSQLCLIENT_FOUND) set(MYSQLCLIENT_LIBRARIES ${MYSQLCLIENT_LIBRARY}) set(MYSQLCLIENT_INCLUDE_DIRS ${MYSQLCLIENT_INCLUDE_DIR}) - set(MYSQLCLIENT_DEFINITIONS -DHAVE_MYSQL=1) + set(MYSQLCLIENT_DEFINITIONS -DHAS_MYSQL=1) if(NOT TARGET MySqlClient::MySqlClient) add_library(MySqlClient::MySqlClient UNKNOWN IMPORTED) @@ -62,7 +62,7 @@ if(MYSQLCLIENT_FOUND) endif() set_target_properties(MySqlClient::MySqlClient PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MYSQLCLIENT_INCLUDE_DIR}" - INTERFACE_COMPILE_DEFINITIONS HAVE_MYSQL=1) + INTERFACE_COMPILE_DEFINITIONS HAS_MYSQL=1) endif() endif() diff --git a/cmake/modules/FindNFS.cmake b/cmake/modules/FindNFS.cmake index 646ee33..b304bf3 100644 --- a/cmake/modules/FindNFS.cmake +++ b/cmake/modules/FindNFS.cmake @@ -41,7 +41,7 @@ endif() if(NFS_FOUND) set(NFS_LIBRARIES ${NFS_LIBRARY}) set(NFS_INCLUDE_DIRS ${NFS_INCLUDE_DIR}) - set(NFS_DEFINITIONS -DHAVE_LIBNFS=1) + set(NFS_DEFINITIONS -DHAS_FILESYSTEM_NFS=1) if(NOT TARGET NFS::NFS) add_library(NFS::NFS UNKNOWN IMPORTED) @@ -51,7 +51,7 @@ if(NFS_FOUND) endif() set_target_properties(NFS::NFS PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${NFS_INCLUDE_DIR}" - INTERFACE_COMPILE_DEFINITIONS HAVE_LIBNFS=1) + INTERFACE_COMPILE_DEFINITIONS HAS_FILESYSTEM_NFS=1) endif() endif() diff --git a/cmake/modules/FindOpenGLES.cmake b/cmake/modules/FindOpenGLES.cmake index 4333a69..fac21bc 100644 --- a/cmake/modules/FindOpenGLES.cmake +++ b/cmake/modules/FindOpenGLES.cmake @@ -10,14 +10,18 @@ # OPENGLES_LIBRARIES - the OpenGLES libraries # OPENGLES_DEFINITIONS - the OpenGLES definitions +if(CORE_PLATFORM_NAME_LC STREQUAL rbpi) + set(_brcmprefix brcm) +endif() + if(PKG_CONFIG_FOUND) - pkg_check_modules(PC_OPENGLES glesv2 QUIET) + pkg_check_modules(PC_OPENGLES ${_brcmprefix}glesv2 QUIET) endif() if(NOT CORE_SYSTEM_NAME STREQUAL ios) find_path(OPENGLES_INCLUDE_DIR GLES2/gl2.h PATHS ${PC_OPENGLES_INCLUDEDIR}) - find_library(OPENGLES_gl_LIBRARY NAMES GLESv2 + find_library(OPENGLES_gl_LIBRARY NAMES ${_brcmprefix}GLESv2 PATHS ${PC_OPENGLES_LIBDIR}) else() find_library(OPENGLES_gl_LIBRARY NAMES OpenGLES @@ -27,14 +31,24 @@ else() set(OPENGLES_INCLUDE_DIR ${OPENGLES_gl_LIBRARY}/Headers) endif() +find_path(OPENGLES3_INCLUDE_DIR GLES3/gl3.h) + include(FindPackageHandleStandardArgs) find_package_handle_standard_args(OpenGLES REQUIRED_VARS OPENGLES_gl_LIBRARY OPENGLES_INCLUDE_DIR) +find_path(OPENGLES3_INCLUDE_DIR GLES3/gl3.h + PATHS ${PC_OPENGLES_INCLUDEDIR}) + if(OPENGLES_FOUND) - set(OPENGLES_INCLUDE_DIRS ${OPENGLES_INCLUDE_DIR}) set(OPENGLES_LIBRARIES ${OPENGLES_gl_LIBRARY}) - set(OPENGLES_DEFINITIONS -DHAVE_LIBGLESV2) + if(OPENGLES3_INCLUDE_DIR) + set(OPENGLES_INCLUDE_DIRS ${OPENGLES_INCLUDE_DIR} ${OPENGLES3_INCLUDE_DIR}) + set(OPENGLES_DEFINITIONS -DHAS_GLES=3) + mark_as_advanced(OPENGLES_INCLUDE_DIR OPENGLES3_INCLUDE_DIR OPENGLES_gl_LIBRARY) + else() + set(OPENGLES_INCLUDE_DIRS ${OPENGLES_INCLUDE_DIR}) + set(OPENGLES_DEFINITIONS -DHAS_GLES=2) + mark_as_advanced(OPENGLES_INCLUDE_DIR OPENGLES_gl_LIBRARY) + endif() endif() - -mark_as_advanced(OPENGLES_INCLUDE_DIR OPENGLES_gl_LIBRARY) diff --git a/cmake/modules/FindOpenGLES3.cmake b/cmake/modules/FindOpenGLES3.cmake deleted file mode 100644 index 394328d..0000000 --- a/cmake/modules/FindOpenGLES3.cmake +++ /dev/null @@ -1,24 +0,0 @@ -#.rst: -# FindOpenGLES3 -# ------------ -# Finds the OpenGLES3 library -# -# This will will define the following variables:: -# -# OPENGLES3_FOUND - system has OpenGLES3 -# OPENGLES3_INCLUDE_DIRS - the OpenGLES3 include directory -# OPENGLES3_DEFINITIONS - the OpenGLES3 definitions - - -find_path(OPENGLES3_INCLUDE_DIR GLES3/gl3.h) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(OpenGLES3 - REQUIRED_VARS OPENGLES3_INCLUDE_DIR) - -if(OPENGLES3_FOUND) - set(OPENGLES3_INCLUDE_DIRS ${OPENGLES3_INCLUDE_DIR}) - set(OPENGLES3_DEFINITIONS -DHAVE_LIBGLESV3) -endif() - -mark_as_advanced(OPENGLES3_INCLUDE_DIR) diff --git a/cmake/modules/FindOpenGl.cmake b/cmake/modules/FindOpenGl.cmake index b8cff79..af1c433 100644 --- a/cmake/modules/FindOpenGl.cmake +++ b/cmake/modules/FindOpenGl.cmake @@ -37,7 +37,7 @@ find_package_handle_standard_args(OpenGl if(OPENGL_FOUND) set(OPENGL_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR}) set(OPENGL_LIBRARIES ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY}) - set(OPENGL_DEFINITIONS -DHAVE_LIBGL=1) + set(OPENGL_DEFINITIONS -DHAS_GL=1) endif() mark_as_advanced(OPENGL_INCLUDE_DIR OPENGL_gl_LIBRARY OPENGL_glu_LIBRARY) diff --git a/cmake/modules/FindPlist.cmake b/cmake/modules/FindPlist.cmake index 862da46..0664c10 100644 --- a/cmake/modules/FindPlist.cmake +++ b/cmake/modules/FindPlist.cmake @@ -41,7 +41,7 @@ endif() if(PLIST_FOUND) set(PLIST_LIBRARIES ${PLIST_LIBRARY}) set(PLIST_INCLUDE_DIRS ${PLIST_INCLUDE_DIR}) - set(PLIST_DEFINITIONS -DHAVE_LIBPLIST=1) + set(PLIST_DEFINITIONS -DHAS_AIRPLAY=1) if(NOT TARGET Plist::Plist) add_library(Plist::Plist UNKNOWN IMPORTED) @@ -51,7 +51,7 @@ if(PLIST_FOUND) endif() set_target_properties(Plist::Plist PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${PLIST_INCLUDE_DIR}" - INTERFACE_COMPILE_DEFINITIONS HAVE_LIBPLIST=1) + INTERFACE_COMPILE_DEFINITIONS HAS_AIRPLAY=1) endif() endif() diff --git a/cmake/modules/FindPulseAudio.cmake b/cmake/modules/FindPulseAudio.cmake index 5761005..2ef7910 100644 --- a/cmake/modules/FindPulseAudio.cmake +++ b/cmake/modules/FindPulseAudio.cmake @@ -21,14 +21,18 @@ endif() if(PKG_CONFIG_FOUND) pkg_check_modules(PC_PULSEAUDIO libpulse>=${PulseAudio_FIND_VERSION} QUIET) pkg_check_modules(PC_PULSEAUDIO_MAINLOOP libpulse-mainloop-glib QUIET) + pkg_check_modules(PC_PULSEAUDIO_SIMPLE libpulse-simple QUIET) endif() -find_path(PULSEAUDIO_INCLUDE_DIR NAMES pulse/pulseaudio.h +find_path(PULSEAUDIO_INCLUDE_DIR NAMES pulse/pulseaudio.h pulse/simple.h PATHS ${PC_PULSEAUDIO_INCLUDEDIR} ${PC_PULSEAUDIO_INCLUDE_DIRS}) find_library(PULSEAUDIO_LIBRARY NAMES pulse libpulse PATHS ${PC_PULSEAUDIO_LIBDIR} ${PC_PULSEAUDIO_LIBRARY_DIRS}) +find_library(PULSEAUDIO_SIMPLE_LIBRARY NAMES pulse-simple libpulse-simple + PATHS ${PC_PULSEAUDIO_LIBDIR} ${PC_PULSEAUDIO_LIBRARY_DIRS}) + find_library(PULSEAUDIO_MAINLOOP_LIBRARY NAMES pulse-mainloop pulse-mainloop-glib libpulse-mainloop-glib PATHS ${PC_PULSEAUDIO_LIBDIR} ${PC_PULSEAUDIO_LIBRARY_DIRS}) @@ -42,13 +46,13 @@ endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(PulseAudio - REQUIRED_VARS PULSEAUDIO_LIBRARY PULSEAUDIO_MAINLOOP_LIBRARY PULSEAUDIO_INCLUDE_DIR + REQUIRED_VARS PULSEAUDIO_LIBRARY PULSEAUDIO_MAINLOOP_LIBRARY PULSEAUDIO_SIMPLE_LIBRARY PULSEAUDIO_INCLUDE_DIR VERSION_VAR PULSEAUDIO_VERSION_STRING) if(PULSEAUDIO_FOUND) set(PULSEAUDIO_INCLUDE_DIRS ${PULSEAUDIO_INCLUDE_DIR}) - set(PULSEAUDIO_LIBRARIES ${PULSEAUDIO_LIBRARY} ${PULSEAUDIO_MAINLOOP_LIBRARY}) - set(PULSEAUDIO_DEFINITIONS -DHAVE_LIBPULSE=1) + set(PULSEAUDIO_LIBRARIES ${PULSEAUDIO_LIBRARY} ${PULSEAUDIO_MAINLOOP_LIBRARY} ${PULSEAUDIO_SIMPLE_LIBRARY}) + set(PULSEAUDIO_DEFINITIONS -DHAS_PULSEAUDIO=1) if(NOT TARGET PulseAudio::PulseAudioMainloop) add_library(PulseAudio::PulseAudioMainloop UNKNOWN IMPORTED) @@ -65,4 +69,4 @@ if(PULSEAUDIO_FOUND) endif() endif() -mark_as_advanced(PULSEAUDIO_INCLUDE_DIR PULSEAUDIO_LIBRARY PULSEAUDIO_MAINLOOP_LIBRARY) +mark_as_advanced(PULSEAUDIO_INCLUDE_DIR PULSEAUDIO_LIBRARY PULSEAUDIO_MAINLOOP_LIBRARY PULSEAUDIO_SIMPLE_LIBRARY) diff --git a/cmake/modules/FindRapidJSON.cmake b/cmake/modules/FindRapidJSON.cmake index 3c3dc3f..a21ed0b 100644 --- a/cmake/modules/FindRapidJSON.cmake +++ b/cmake/modules/FindRapidJSON.cmake @@ -10,7 +10,7 @@ # if(ENABLE_INTERNAL_RapidJSON) include(ExternalProject) - file(STRINGS ${CMAKE_SOURCE_DIR}/tools/depends/target/rapidjson/Makefile VER REGEX MATCH "^[ ]*VERSION[ ]*=.+$") + file(STRINGS ${CMAKE_SOURCE_DIR}/tools/depends/target/rapidjson/Makefile VER REGEX "^[ ]*VERSION[ ]*=.+$") string(REGEX REPLACE "^[ ]*VERSION[ ]*=[ ]*" "" RJSON_VER "${VER}") # allow user to override the download URL with a local tarball @@ -36,6 +36,10 @@ if(ENABLE_INTERNAL_RapidJSON) PREFIX ${CORE_BUILD_DIR}/rapidjson CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + -DRAPIDJSON_BUILD_DOC=OFF + -DRAPIDJSON_BUILD_EXAMPLES=OFF + -DRAPIDJSON_BUILD_TESTS=OFF + -DRAPIDJSON_BUILD_THIRDPARTY_GTEST=OFF "${EXTRA_ARGS}" PATCH_COMMAND patch -p1 < ${CORE_SOURCE_DIR}/tools/depends/target/rapidjson/0001-remove_custom_cxx_flags.patch BUILD_BYPRODUCTS ${RapidJSON_LIBRARY}) diff --git a/cmake/modules/FindSSE.cmake b/cmake/modules/FindSSE.cmake index d001b03..b860dca 100644 --- a/cmake/modules/FindSSE.cmake +++ b/cmake/modules/FindSSE.cmake @@ -40,6 +40,41 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux") string(COMPARE EQUAL "avx2" "${_SSE_THERE}" _AVX2_TRUE) CHECK_CXX_ACCEPTS_FLAG("-mavx2" _AVX2_OK) endif() +elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + if(CPU MATCHES "amd64" OR CPU MATCHES "i.86") + exec_program(cat ARGS "/var/run/dmesg.boot | grep Features" OUTPUT_VARIABLE CPUINFO) + + string(REGEX REPLACE "^.*(SSE).*$" "\\1" _SSE_THERE ${CPUINFO}) + string(COMPARE EQUAL "SSE" "${_SSE_THERE}" _SSE_TRUE) + CHECK_CXX_ACCEPTS_FLAG("-msse" _SSE_OK) + + string(REGEX REPLACE "^.*(SSE2).*$" "\\1" _SSE_THERE ${CPUINFO}) + string(COMPARE EQUAL "SSE2" "${_SSE_THERE}" _SSE2_TRUE) + CHECK_CXX_ACCEPTS_FLAG("-msse2" _SSE2_OK) + + string(REGEX REPLACE "^.*(SSE3).*$" "\\1" _SSE_THERE ${CPUINFO}) + string(COMPARE EQUAL "SSE3" "${_SSE_THERE}" _SSE3_TRUE) + CHECK_CXX_ACCEPTS_FLAG("-msse3" _SSE3_OK) + + string(REGEX REPLACE "^.*(SSSE3).*$" "\\1" _SSE_THERE ${CPUINFO}) + string(COMPARE EQUAL "SSSE3" "${_SSE_THERE}" _SSSE3_TRUE) + CHECK_CXX_ACCEPTS_FLAG("-mssse3" _SSSE3_OK) + + string(REGEX REPLACE "^.*(SSE4.1).*$" "\\1" _SSE_THERE ${CPUINFO}) + string(COMPARE EQUAL "SSE4.1" "${_SSE_THERE}" _SSE41_TRUE) + CHECK_CXX_ACCEPTS_FLAG("-msse4.1" _SSE41_OK) + string(REGEX REPLACE "^.*(SSE4.2).*$" "\\1" _SSE_THERE ${CPUINFO}) + string(COMPARE EQUAL "SSE4.2" "${_SSE_THERE}" _SSE42_TRUE) + CHECK_CXX_ACCEPTS_FLAG("-msse4.2" _SSE42_OK) + + string(REGEX REPLACE "^.*(AVX).*$" "\\1" _SSE_THERE ${CPUINFO}) + string(COMPARE EQUAL "AVX" "${_SSE_THERE}" _AVX_TRUE) + CHECK_CXX_ACCEPTS_FLAG("-mavx" _AVX_OK) + + string(REGEX REPLACE "^.*(AVX2).*$" "\\1" _SSE_THERE ${CPUINFO}) + string(COMPARE EQUAL "AVX2" "${_SSE_THERE}" _AVX2_TRUE) + CHECK_CXX_ACCEPTS_FLAG("-mavx2" _AVX2_OK) + endif() elseif(CMAKE_SYSTEM_NAME MATCHES "Android") if(CPU MATCHES "x86_64" OR CPU MATCHES "i.86") set(_SSE_TRUE TRUE) @@ -94,10 +129,12 @@ elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin") endif() elseif(CMAKE_SYSTEM_NAME MATCHES "Windows") # TODO - set(_SSE_TRUE true) - set(_SSE_OK true) - set(_SSE2_TRUE true) - set(_SSE2_OK true) + if(ARCH STREQUAL win32 OR ARCH STREQUAL x64) + set(_SSE_TRUE true) + set(_SSE_OK true) + set(_SSE2_TRUE true) + set(_SSE2_OK true) + endif() endif() include(FindPackageHandleStandardArgs) diff --git a/cmake/modules/FindSSH.cmake b/cmake/modules/FindSSH.cmake index 538c699..ee65210 100644 --- a/cmake/modules/FindSSH.cmake +++ b/cmake/modules/FindSSH.cmake @@ -33,14 +33,14 @@ find_package_handle_standard_args(SSH if(SSH_FOUND) set(SSH_LIBRARIES ${SSH_LIBRARY}) set(SSH_INCLUDE_DIRS ${SSH_INCLUDE_DIR}) - set(SSH_DEFINITIONS -DHAVE_LIBSSH=1) + set(SSH_DEFINITIONS -DHAS_FILESYSTEM_SFTP=1) if(NOT TARGET SSH::SSH) add_library(SSH::SSH UNKNOWN IMPORTED) set_target_properties(SSH::SSH PROPERTIES IMPORTED_LOCATION "${SSH_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${SSH_INCLUDE_DIR}" - INTERFACE_COMPILE_DEFINITIONS HAVE_LIBSSH=1) + INTERFACE_COMPILE_DEFINITIONS HAS_FILESYSTEM_SFTP=1) endif() endif() diff --git a/cmake/modules/FindShairplay.cmake b/cmake/modules/FindShairplay.cmake index 87d3107..699fb7a 100644 --- a/cmake/modules/FindShairplay.cmake +++ b/cmake/modules/FindShairplay.cmake @@ -46,7 +46,7 @@ endif() if(SHAIRPLAY_FOUND) set(SHAIRPLAY_LIBRARIES ${SHAIRPLAY_LIBRARY}) set(SHAIRPLAY_INCLUDE_DIRS ${SHAIRPLAY_INCLUDE_DIR}) - set(SHAIRPLAY_DEFINITIONS -DHAVE_LIBSHAIRPLAY=1) + set(SHAIRPLAY_DEFINITIONS -DHAS_AIRTUNES=1) if(NOT TARGET Shairplay::Shairplay) add_library(Shairplay::Shairplay UNKNOWN IMPORTED) @@ -56,7 +56,7 @@ if(SHAIRPLAY_FOUND) endif() set_target_properties(Shairplay::Shairplay PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SHAIRPLAY_INCLUDE_DIR}" - INTERFACE_COMPILE_DEFINITIONS HAVE_LIBSHAIRPLAY=1) + INTERFACE_COMPILE_DEFINITIONS HAS_AIRTUNES=1) endif() endif() diff --git a/cmake/modules/FindSmbClient.cmake b/cmake/modules/FindSmbClient.cmake index 6455cce..9a8b197 100644 --- a/cmake/modules/FindSmbClient.cmake +++ b/cmake/modules/FindSmbClient.cmake @@ -33,14 +33,14 @@ find_package_handle_standard_args(SmbClient if(SMBCLIENT_FOUND) set(SMBCLIENT_LIBRARIES ${SMBCLIENT_LIBRARY}) set(SMBCLIENT_INCLUDE_DIRS ${SMBCLIENT_INCLUDE_DIR}) - set(SMBCLIENT_DEFINITIONS -DHAVE_LIBSMBCLIENT=1) + set(SMBCLIENT_DEFINITIONS -DHAS_FILESYSTEM_SMB=1) if(NOT TARGET SmbClient::SmbClient) add_library(SmbClient::SmbClient UNKNOWN IMPORTED) set_target_properties(SmbClient::SmbClient PROPERTIES IMPORTED_LOCATION "${SMBCLIENT_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${SMBCLIENT_INCLUDE_DIR}" - INTERFACE_COMPILE_DEFINITIONS HAVE_LIBSMBCLIENT=1) + INTERFACE_COMPILE_DEFINITIONS HAS_FILESYSTEM_SMB=1) endif() endif() diff --git a/cmake/modules/FindSndio.cmake b/cmake/modules/FindSndio.cmake index 3dd53d9..5f08acd 100644 --- a/cmake/modules/FindSndio.cmake +++ b/cmake/modules/FindSndio.cmake @@ -25,7 +25,7 @@ find_package_handle_standard_args(Sndio if(SNDIO_FOUND) set(SNDIO_INCLUDE_DIRS ${SNDIO_INCLUDE_DIR}) set(SNDIO_LIBRARIES ${SNDIO_LIBRARY}) - set(SNDIO_DEFINITIONS -DHAVE_SNDIO=1) + set(SNDIO_DEFINITIONS -DHAS_SNDIO=1) if(NOT TARGET Sndio::Sndio) add_library(Sndio::Sndio UNKNOWN IMPORTED) @@ -33,7 +33,7 @@ if(SNDIO_FOUND) IMPORTED_LOCATION "${SNDIO_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${SNDIO_INCLUDE_DIR}") set_target_properties(Sndio::Sndio PROPERTIES - INTERFACE_COMPILE_DEFINITIONS -DHAVE_SNDIO=1) + INTERFACE_COMPILE_DEFINITIONS -DHAS_SNDIO=1) endif() endif() diff --git a/cmake/modules/FindTexturePacker.cmake b/cmake/modules/FindTexturePacker.cmake index aa6fd3a..874a8f6 100644 --- a/cmake/modules/FindTexturePacker.cmake +++ b/cmake/modules/FindTexturePacker.cmake @@ -19,7 +19,7 @@ if(NOT TARGET TexturePacker::TexturePacker) elseif(WIN32) add_executable(TexturePacker::TexturePacker IMPORTED GLOBAL) set_target_properties(TexturePacker::TexturePacker PROPERTIES - IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/tools/TexturePacker/TexturePacker.exe") + IMPORTED_LOCATION "${DEPENDENCIES_DIR}/tools/TexturePacker/TexturePacker.exe") else() if(WITH_TEXTUREPACKER) get_filename_component(_tppath ${WITH_TEXTUREPACKER} ABSOLUTE) -- cgit v1.2.3