Hello community, here is the log from the commit of package extra-cmake-modules for openSUSE:Factory checked in at 2020-10-12 13:53:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/extra-cmake-modules (Old) and /work/SRC/openSUSE:Factory/.extra-cmake-modules.new.3486 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "extra-cmake-modules" Mon Oct 12 13:53:17 2020 rev:82 rq:840790 version:5.75.0 Changes: -------- --- /work/SRC/openSUSE:Factory/extra-cmake-modules/extra-cmake-modules.changes 2020-09-18 14:37:23.595787763 +0200 +++ /work/SRC/openSUSE:Factory/.extra-cmake-modules.new.3486/extra-cmake-modules.changes 2020-10-12 13:55:05.682111057 +0200 @@ -1,0 +2,9 @@ +Mon Oct 5 08:32:49 UTC 2020 - Christophe Giboudeaux <christo...@krop.fr> + +- Update to 5.75.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/kde-frameworks-5.75.0 +- Too many changes to list here. + +------------------------------------------------------------------- Old: ---- extra-cmake-modules-5.74.0.tar.xz extra-cmake-modules-5.74.0.tar.xz.sig New: ---- extra-cmake-modules-5.75.0.tar.xz extra-cmake-modules-5.75.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ extra-cmake-modules.spec ++++++ --- /var/tmp/diff_new_pack.GbV0Lx/_old 2020-10-12 13:55:06.210111271 +0200 +++ /var/tmp/diff_new_pack.GbV0Lx/_new 2020-10-12 13:55:06.214111273 +0200 @@ -16,7 +16,7 @@ # -%define _tar_path 5.74 +%define _tar_path 5.75 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) @@ -29,7 +29,7 @@ # Only needed for the package signature condition %bcond_without lang Name: extra-cmake-modules -Version: 5.74.0 +Version: 5.75.0 Release: 0 Summary: CMake modules License: BSD-3-Clause ++++++ extra-cmake-modules-5.74.0.tar.xz -> extra-cmake-modules-5.75.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/CMakeLists.txt new/extra-cmake-modules-5.75.0/CMakeLists.txt --- old/extra-cmake-modules-5.74.0/CMakeLists.txt 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/CMakeLists.txt 2020-10-01 14:34:06.000000000 +0200 @@ -11,7 +11,7 @@ # Preliminary setup # -set(VERSION "5.74.0") # handled by release scripts +set(VERSION "5.75.0") # handled by release scripts if (POLICY CMP0048) cmake_policy(SET CMP0048 NEW) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/docs/module/ECMCheckOutboundLicense.rst new/extra-cmake-modules-5.75.0/docs/module/ECMCheckOutboundLicense.rst --- old/extra-cmake-modules-5.74.0/docs/module/ECMCheckOutboundLicense.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/docs/module/ECMCheckOutboundLicense.rst 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1 @@ +.. ecm-module:: ../../modules/ECMCheckOutboundLicense.cmake diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/find-modules/FindKF5.cmake new/extra-cmake-modules-5.75.0/find-modules/FindKF5.cmake --- old/extra-cmake-modules-5.74.0/find-modules/FindKF5.cmake 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/find-modules/FindKF5.cmake 2020-10-01 14:34:06.000000000 +0200 @@ -54,7 +54,7 @@ ${_exact_arg} ${_quiet_arg} CONFIG ) - # CMake >= 3.17 wants to be explictly told we are fine with name mismatch here + # CMake >= 3.17 wants to be explicitly told we are fine with name mismatch here set(_name_mismatched_arg) if(NOT CMAKE_VERSION VERSION_LESS 3.17) set(_name_mismatched_arg NAME_MISMATCHED) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/find-modules/FindReuseTool.cmake new/extra-cmake-modules-5.75.0/find-modules/FindReuseTool.cmake --- old/extra-cmake-modules-5.74.0/find-modules/FindReuseTool.cmake 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/find-modules/FindReuseTool.cmake 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,23 @@ +# WARNING: FOR ECM-INTERNAL USE ONLY, DO NOT USE IN OWN PROJECTS +# THIS FILE MIGHT DISAPPEAR IN FUTURE VERSIONS OF ECM. + +# Finds the REUSE Tool by FSFE: https://github.com/fsfe/reuse-tool +# +# REUSE_TOOL_FOUND - True if REUSE tool is found. +# REUSE_TOOL_EXECUTABLE - Path to executable + +#============================================================================= +# SPDX-FileCopyrightText: 2020 Andreas Cord-Landwehr <cordlandw...@kde.org> +# +# SPDX-License-Identifier: BSD-3-Clause +#============================================================================= + +find_program(REUSETOOL_EXECUTABLE NAMES reuse) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ReuseTool + FOUND_VAR + REUSETOOL_FOUND + REQUIRED_VARS + REUSE_TOOL_EXECUTABLE +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/kde-modules/KDECMakeSettings.cmake new/extra-cmake-modules-5.75.0/kde-modules/KDECMakeSettings.cmake --- old/extra-cmake-modules-5.74.0/kde-modules/KDECMakeSettings.cmake 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/kde-modules/KDECMakeSettings.cmake 2020-10-01 14:34:06.000000000 +0200 @@ -300,7 +300,7 @@ WORKING_DIRECTORY "${dir}") if(exitCode EQUAL 0) - string(REGEX MATCHALL ".+[:\\/]([-A-Za-z0-9]+)(.git)?\\s*" "" ${giturl}) + string(REGEX MATCHALL ".+kde\\.org[:\\/]([-A-Za-z0-9\\/]+)(.git)?\\s*" "" ${giturl}) set(${reponame} ${CMAKE_MATCH_1}) endif() @@ -325,7 +325,7 @@ _repository_name(_reponame "${CMAKE_SOURCE_DIR}") set(releaseme_clone_commands - COMMAND git clone --depth 1 https://anongit.kde.org/releaseme.git + COMMAND git clone --depth 1 https://invent.kde.org/sdk/releaseme.git ) add_custom_command( OUTPUT "${CMAKE_BINARY_DIR}/releaseme" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/modules/CheckAtomic.cmake new/extra-cmake-modules-5.75.0/modules/CheckAtomic.cmake --- old/extra-cmake-modules-5.74.0/modules/CheckAtomic.cmake 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/modules/CheckAtomic.cmake 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,96 @@ +#.rst: +# CheckAtomic +# ----------- +# +# Check if the compiler supports std:atomic out of the box or if libatomic is +# needed for atomic support. If it is needed libatomicis added to +# CMAKE_REQUIRED_LIBRARIES. So after running CheckAtomic you can use +# std:atomic. +# +# Since 5.75.0. + +#============================================================================= +# SPDX-FileCopyrightText: 2003-2018 University of Illinois at Urbana-Champaign. +# +# SPDX-License-Identifier: BSD-3-Clause +#============================================================================= + +include(CheckCXXSourceCompiles) +include(CheckLibraryExists) + +# Sometimes linking against libatomic is required for atomic ops, if +# the platform doesn't support lock-free atomics. + +function(check_working_cxx_atomics varname) + set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11") + check_cxx_source_compiles(" + #include <atomic> + std::atomic<int> x; + std::atomic<short> y; + std::atomic<char> z; + int main() { + ++z; + ++y; + return ++x; + } + " ${varname}) + set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS}) +endfunction() + +function(check_working_cxx_atomics64 varname) + set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) + set(CMAKE_REQUIRED_FLAGS "-std=c++11 ${CMAKE_REQUIRED_FLAGS}") + check_cxx_source_compiles(" + #include <atomic> + #include <cstdint> + std::atomic<uint64_t> x (0); + int main() { + uint64_t i = x.load(std::memory_order_relaxed); + return 0; + } + " ${varname}) + set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS}) +endfunction() + +# Check for (non-64-bit) atomic operations. +if(MSVC) + set(HAVE_CXX_ATOMICS_WITHOUT_LIB True) +elseif(LLVM_COMPILER_IS_GCC_COMPATIBLE) + # First check if atomics work without the library. + check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB) + # If not, check if the library exists, and atomics work with it. + if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB) + check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC) + if(HAVE_LIBATOMIC) + list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic") + check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITH_LIB) + if (NOT HAVE_CXX_ATOMICS_WITH_LIB) + message(FATAL_ERROR "Host compiler must support std::atomic!") + endif() + else() + message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.") + endif() + endif() +endif() + +# Check for 64 bit atomic operations. +if(MSVC) + set(HAVE_CXX_ATOMICS64_WITHOUT_LIB True) +elseif(LLVM_COMPILER_IS_GCC_COMPATIBLE) + # First check if atomics work without the library. + check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB) + # If not, check if the library exists, and atomics work with it. + if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB) + check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64) + if(HAVE_CXX_LIBATOMICS64) + list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic") + check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITH_LIB) + if (NOT HAVE_CXX_ATOMICS64_WITH_LIB) + message(FATAL_ERROR "Host compiler must support 64-bit std::atomic!") + endif() + else() + message(FATAL_ERROR "Host compiler appears to require libatomic for 64-bit operations, but cannot find it.") + endif() + endif() +endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/modules/ECMCheckOutboundLicense.cmake new/extra-cmake-modules-5.75.0/modules/ECMCheckOutboundLicense.cmake --- old/extra-cmake-modules-5.74.0/modules/ECMCheckOutboundLicense.cmake 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/modules/ECMCheckOutboundLicense.cmake 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,156 @@ +#.rst: +# ECMCheckOutboundLicense +# ----------------------- +# +# Assert that source file licenses are compatible with a desired outbound license +# of a compiled binary artifact (e.g., library, plugin or application). +# +# This module provides the ``ecm_check_outbound_license`` function that +# generates unit tests for checking the compatibility of license statements. +# The license statements in all tested files are required to be added by using +# the SPDX marker ``SPDX-License-Identifier``. +# +# During the CMake configuration of the project, a temporary license bill of +# materials (BOM) in SPDX format is generated by calling the REUSE tool +# (see <https://reuse.software>). That BOM is parsed and license computations +# based on an internal compatibility matrix are performed. +# +# Preconditions for using this module: +# * All tested input source files must contain the SPDX-License-Identifier tag. +# * Python3 must be available. +# * The REUSE tool must be available, which generates the bill-of-materials +# by running ``reuse spdx`` on the tested directory. +# +# When this module is included, a ``SKIP_LICENSE_TESTS`` option is added (default +# OFF). Turning this option on skips the generation of license tests, which might +# be convenient if licenses shall not be tested in all build configurations. +# +# :: +# +# ecm_check_outbound_license(LICENSES <outbound-licenses> +# FILES <source-files> +# [TEST_NAME <name>] +# [WILL_FAIL]) +# +# This method adds a custom unit test to ensure the specified outbound license to be +# compatible with the specified license headers. Note that a convenient way is to use +# the CMake GLOB command of the FILE function. +# +# ``LICENSES`` : List of one or multiple outbound license regarding which the compatibility +# of the source code files shall be tested. Currently, the following values +# are supported (values are SPDX registry identifiers): +# * MIT +# * BSD-2-Clause +# * BSD-3-Clause +# * LGPL-2.0-only +# * LGPL-2.1-only +# * LGPL-3.0-only +# * GPL-2.0-only +# * GPL-3.0-only +# +# ``FILES:`` : List of source files that contain valid SPDX-License-Identifier markers. +# The paths can be relative to the CMake file that generates the test case +# or be absolute paths. +# +# ``TEST_NAME`` : Optional parameter that defines the name of the generated test case. +# If no name is defined, the relative path to the test directory with appended +# license name is used. Every test has ``licensecheck_`` as prefix. +# +# ``WILL_FAIL`` : Optional parameter that inverts the test result. This parameter is usually only +# used for tests of the module. +# +# Since 5.75.0 + +#============================================================================= +# SPDX-FileCopyrightText: 2020 Andreas Cord-Landwehr <cordlandw...@kde.org> +# SPDX-License-Identifier: BSD-3-Clause + +include(FeatureSummary) + +option(SKIP_LICENSE_TESTS "Skip outbound license tests" OFF) + +find_package(Python3) +set_package_properties(Python3 PROPERTIES + PURPOSE "Required to run tests of module ECMCheckOutboundLicense" + TYPE OPTIONAL +) + +find_package(ReuseTool) +set_package_properties(ReuseTool PROPERTIES + PURPOSE "Required to run tests of module ECMCheckOutboundLicense" + TYPE OPTIONAL +) + +if (NOT SKIP_LICENSE_TESTS AND NOT REUSETOOL_FOUND) + add_feature_info(SPDX_LICENSE_TESTING FALSE "Automatic license testing based on SPDX definitions (requires reuse tool)") + message(WARNING "Reuse tool not found, skipping test generation") +else() + add_feature_info(SPDX_LICENSE_TESTING TRUE "Automatic license testing based on SPDX definitions (requires reuse tool)") +endif() + +set(SPDX_BOM_OUTPUT "${CMAKE_BINARY_DIR}/spdx.txt") + +# test fixture for generating SPDX bill of materials +if(SKIP_LICENSE_TESTS OR NOT REUSETOOL_FOUND) + message(STATUS "Skipping execution of outbound license tests.") +else() + add_test( + NAME generate_spdx_bom + COMMAND reuse spdx -o ${SPDX_BOM_OUTPUT} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + set_tests_properties(generate_spdx_bom PROPERTIES FIXTURES_SETUP SPDX_BOM) +endif() + +function(ecm_check_outbound_license) + if(SKIP_LICENSE_TESTS OR NOT REUSETOOL_FOUND) + return() + endif() + + set(_options WILL_FAIL) + set(_oneValueArgs TEST_NAME) + set(_multiValueArgs LICENSES FILES) + cmake_parse_arguments(ARG "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN} ) + + if(NOT ARG_LICENSES) + message(FATAL_ERROR "No LICENSES argument given to ecm_check_outbound_license") + endif() + + if(NOT ARG_FILES) + message(WARNING "No FILES argument given to ecm_check_outbound_license") + return() + endif() + + if(NOT ARG_TEST_NAME) + # compute test name based on licensecheck_<relative-path>_<licence> if not name given + string(REPLACE "${CMAKE_SOURCE_DIR}/" "" TEMP_TEST_NAME "${CMAKE_CURRENT_SOURCE_DIR}_${ARG_LICENSE}") + string(MAKE_C_IDENTIFIER ${TEMP_TEST_NAME} ARG_TEST_NAME) + endif() + + # generate file with list of relative file paths + string(REPLACE "${CMAKE_BINARY_DIR}/" "" RELATIVE_PREFIX_PATH ${CMAKE_CURRENT_BINARY_DIR}) + set(OUTPUT_FILE ${CMAKE_BINARY_DIR}/licensecheck_${ARG_TEST_NAME}.txt) + message(STATUS "Generate test input file: ${OUTPUT_FILE}") + file(REMOVE ${OUTPUT_FILE}) + foreach(_file ${ARG_FILES}) + # check script expects files to start with "./", which must be relative to CMAKE_SOURCE_DIR + if (IS_ABSOLUTE ${_file}) + string(REPLACE ${CMAKE_SOURCE_DIR} "." TEMPORARY_PATH ${_file}) + file(APPEND ${OUTPUT_FILE} "${TEMPORARY_PATH}\n") + else() + file(APPEND ${OUTPUT_FILE} "./${RELATIVE_PREFIX_PATH}/${_file}\n") + endif() + endforeach() + + file(COPY ${ECM_MODULE_DIR}/check-outbound-license.py DESTINATION ${CMAKE_BINARY_DIR}) + + foreach(_license ${ARG_LICENSES}) + string(MAKE_C_IDENTIFIER ${_license} LICENSE_ID) + add_test( + NAME licensecheck_${ARG_TEST_NAME}_${LICENSE_ID} + COMMAND python3 ${CMAKE_BINARY_DIR}/check-outbound-license.py -l ${_license} -s ${SPDX_BOM_OUTPUT} -i ${OUTPUT_FILE} + ) + set_tests_properties(licensecheck_${ARG_TEST_NAME}_${LICENSE_ID} PROPERTIES FIXTURES_REQUIRED SPDX_BOM) + set_tests_properties(licensecheck_${ARG_TEST_NAME}_${LICENSE_ID} PROPERTIES WILL_FAIL ${ARG_WILL_FAIL}) + endforeach() +endfunction() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/modules/ECMGenerateDBusServiceFile.cmake new/extra-cmake-modules-5.75.0/modules/ECMGenerateDBusServiceFile.cmake --- old/extra-cmake-modules-5.74.0/modules/ECMGenerateDBusServiceFile.cmake 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/modules/ECMGenerateDBusServiceFile.cmake 2020-10-01 14:34:06.000000000 +0200 @@ -12,10 +12,11 @@ # EXECUTABLE <executable> # [SYSTEMD_SERVICE <systemd service>] # DESTINATION <install_path> +# [RENAME <dbus service filename>] # ) # # A D-Bus service file ``<service name>.service`` will be generated and installed -# in the relevant D-Bus config location. +# in the relevant D-Bus config location. This filename can be customized with RENAME. # # ``<executable>`` must be an absolute path to the installed service executable. When using it with # ``KDEInstallDirs`` it needs to be the ``_FULL_`` variant of the path variable. @@ -43,12 +44,14 @@ # EXECUTABLE ${KDE_INSTALL_FULL_BINDIR}/kded5 # SYSTEMD_SERVICE plasma-kded.service # DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR} +# RENAME org.kde.daemon.service # ) # # Since 5.73.0. #============================================================================= # SPDX-FileCopyrightText: 2020 Kai Uwe Broulik <k...@broulik.de> +# SPDX-FileCopyrightText: 2020 Henri Chain <henri.ch...@enioka.com> # # SPDX-License-Identifier: BSD-3-Clause @@ -56,7 +59,7 @@ function(ecm_generate_dbus_service_file) set(options) - set(oneValueArgs EXECUTABLE NAME SYSTEMD_SERVICE DESTINATION) + set(oneValueArgs EXECUTABLE NAME SYSTEMD_SERVICE DESTINATION RENAME) set(multiValueArgs) cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -95,5 +98,9 @@ file(APPEND ${_service_file} "SystemdService=${ARG_SYSTEMD_SERVICE}\n") endif() - install(FILES ${_service_file} DESTINATION ${ARG_DESTINATION}) + if (ARG_RENAME) + install(FILES ${_service_file} DESTINATION ${ARG_DESTINATION} RENAME ${ARG_RENAME}) + else() + install(FILES ${_service_file} DESTINATION ${ARG_DESTINATION}) + endif() endfunction() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/modules/check-outbound-license.py new/extra-cmake-modules-5.75.0/modules/check-outbound-license.py --- old/extra-cmake-modules-5.74.0/modules/check-outbound-license.py 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/modules/check-outbound-license.py 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,139 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2020 Andreas Cord-Landwehr <cordlandw...@kde.org> +# SPDX-License-Identifier: BSD-3-Clause + +# key : outbound license identifier +# values : list of acceptable licenses that are compatible with outbound license +compatibilityMatrix = { + "MIT": [ + "CC0-1.0", + "MIT"], + "BSD-2-Clause": [ + "CC0-1.0", + "MIT", + "BSD-2-Clause"], + "BSD-3-Clause": [ + "CC0-1.0", + "MIT", + "BSD-2-Clause", + "BSD-3-Clause"], + "LGPL-2.0-only": [ + "CC0-1.0", + "LGPL-2.0-only", + "LGPL-2.0-or-later", + "MIT", + "BSD-2-Clause", + "BSD-3-Clause", + "bzip2-1.0.6"], + "LGPL-2.1-only": [ + "CC0-1.0", + "LGPL-2.0-or-later", + "LGPL-2.1-only", + "LGPL-2.1-or-later", + "MIT", + "BSD-2-Clause", + "BSD-3-Clause", + "bzip2-1.0.6"], + "LGPL-3.0-only": [ + "CC0-1.0", + "LGPL-2.0-or-later", + "LGPL-2.1-or-later", + "LGPL-3.0-only", + "LGPL-3.0-or-later", + "MIT", + "BSD-2-Clause", + "BSD-3-Clause", + "bzip2-1.0.6"], + "GPL-2.0-only": [ + "CC0-1.0", + "LGPL-2.0-only", + "LGPL-2.1-only", + "LGPL-2.0-or-later", + "LGPL-2.1-or-later", + "GPL-2.0-only", + "GPL-2.0-or-later", + "MIT", + "BSD-2-Clause", + "BSD-3-Clause", + "bzip2-1.0.6"], + "GPL-3.0-only": [ + "CC0-1.0", + "LGPL-2.0-or-later", + "LGPL-2.1-or-later", + "LGPL-3.0-only", + "LGPL-3.0-or-later", + "GPL-2.0-or-later", + "GPL-3.0-only", + "GPL-3.0-or-later", + "MIT", + "BSD-2-Clause", + "BSD-3-Clause", + "bzip2-1.0.6"] +} + +def check_outbound_license(license, files, spdxDictionary): + """ + Asserts that the list of source files @p files, when combined into + a library or executable, can be delivered under the combined license @p license . + """ + print("Checking Target License: " + license) + if not license in compatibilityMatrix: + print("Error: unknown license selected") + return False + + allLicensesAreCompatible = True + + for sourceFile in files: + compatible = False + sourceFileStripped = sourceFile.strip() + for fileLicense in spdxDictionary[sourceFileStripped]: + if fileLicense in compatibilityMatrix[license]: + compatible = True + print("OK " + sourceFileStripped + " : " + fileLicense) + if not compatible: + allLicensesAreCompatible = False + print("-- " + sourceFileStripped + " : ( " + ", ".join([str(i) for i in spdxDictionary[sourceFileStripped]]) + " )") + return allLicensesAreCompatible + +if __name__ == '__main__': + print("Parsing SPDX BOM file") + import sys + import argparse + + # parse commands + parser = argparse.ArgumentParser() + parser.add_argument("-l", "--license", help="set outbound license to test") + parser.add_argument("-s", "--spdx", help="spdx bill-of-materials file") + parser.add_argument("-i", "--input", help="input file with list of source files to test") + args = parser.parse_args() + + # TODO check if required arguments are present and give meaningful feedback + + # collect name and licenses from SPDX blocks + spdxDictionary = {} + fileName = "" + licenses = [] + f = open(args.spdx, "r") + for line in f: + if line.startswith("FileName:"): + # strip "FileName: " + # thus name expected to start with "./", which is relative to CMAKE_SOURCE_DIR + fileName = line[10:].strip() + if line.startswith("LicenseInfoInFile:"): + licenses.append(line[19:].strip()) + if line == '' or line == "\n": + spdxDictionary[fileName] = licenses + fileName = "" + licenses = [] + f.close(); + + # read file with list of test files + f = open(args.input, "r") + testfiles = f.readlines() + f.close() + + if check_outbound_license(args.license, testfiles, spdxDictionary) == True: + sys.exit(0); + + # in any other case, return error code + sys.exit(1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/CMakeLists.txt new/extra-cmake-modules-5.75.0/tests/CMakeLists.txt --- old/extra-cmake-modules-5.74.0/tests/CMakeLists.txt 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/tests/CMakeLists.txt 2020-10-01 14:34:06.000000000 +0200 @@ -60,6 +60,11 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/find-modules) +# enforce finding of ReuseTool in parent scope of module, beause +# only here the module path can point into the source directory +find_package(ReuseTool) +add_subdirectory(ECMCheckOutboundLicenseTest) + # Skip if PyQt not available find_file(SIP_Qt5Core_Mod_FILE NAMES QtCoremod.sip diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/CMakeLists.txt new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/CMakeLists.txt --- old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/CMakeLists.txt 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,88 @@ +set(ECM_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../modules) +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../modules) +include(ECMCheckOutboundLicense) + +# check relative and absolute input paths +ecm_check_outbound_license( +LICENSES LGPL-2.1-only +TEST_NAME absolute-path-handling +FILES + testdata/BSD-2-Clause.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/testdata/LGPL-2.1-or-later.cpp +) + +# check test case generation wihout TEST_NAME statement +ecm_check_outbound_license( +LICENSES LGPL-2.1-only +FILES + testdata/BSD-2-Clause.cpp +) + +# check multi license case +ecm_check_outbound_license( +LICENSES LGPL-2.1-only GPL-3.0-only +TEST_NAME multiple-licenses +FILES + testdata/BSD-2-Clause.cpp +) + + +# check for valid LGPL-2.1-only +ecm_check_outbound_license( +LICENSES LGPL-2.1-only +TEST_NAME valid-LGPL-2.1-only +FILES + testdata/BSD-2-Clause.cpp + testdata/LGPL-2.1-or-later.cpp +) + +# check for valid LGPL-3.0-only +ecm_check_outbound_license( +LICENSES LGPL-3.0-only +TEST_NAME valid-LGPL-3.0-only +FILES + testdata/BSD-2-Clause.cpp + testdata/LGPL-2.1-or-later.cpp + testdata/LGPL-3.0-only.cpp +) + +# check for valid GPL-2.0-only +ecm_check_outbound_license( +LICENSES GPL-2.0-only +TEST_NAME valid-GPL-2.0-only +FILES + testdata/BSD-2-Clause.cpp + testdata/LGPL-2.1-or-later.cpp + testdata/GPL-2.0-only.cpp +) + +# check for valid GPL-3.0-only +ecm_check_outbound_license( +LICENSES GPL-3.0-only +TEST_NAME valid-GPL-3.0-only +FILES + testdata/BSD-2-Clause.cpp + testdata/LGPL-2.1-or-later.cpp + testdata/LGPL-3.0-only.cpp + testdata/GPL-3.0-only.cpp +) + +# check for invalid GPL-3.0-only +ecm_check_outbound_license( +LICENSES LGPL-2.1-only +TEST_NAME invalid-LGPL-2.1-only +FILES + testdata/LGPL-2.0-only.cpp + testdata/GPL-3.0-only.cpp +WILL_FAIL +) + +# check for invalid GPL-3.0-only +ecm_check_outbound_license( +LICENSES GPL-3.0-only +TEST_NAME invalid-GPL-3.0-only +FILES + testdata/GPL-2.0-only.cpp + testdata/GPL-3.0-only.cpp +WILL_FAIL +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/BSD-2-Clause.cpp new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/BSD-2-Clause.cpp --- old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/BSD-2-Clause.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/BSD-2-Clause.cpp 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,6 @@ +/* + SPDX-FileCopyrightText: 2020 Jane Doe <nom...@example.com> + SPDX-License-Identifier: BSD-2-Clause +*/ + +// nothing in here, it is only a test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-2.0-only.cpp new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-2.0-only.cpp --- old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-2.0-only.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-2.0-only.cpp 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,6 @@ +/* + SPDX-FileCopyrightText: 2020 John Doe <nom...@example.com> + SPDX-License-Identifier: GPL-2.0-only +*/ + +// nothing in here, it is only a test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-2.0-or-later.cpp new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-2.0-or-later.cpp --- old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-2.0-or-later.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-2.0-or-later.cpp 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,6 @@ +/* + SPDX-FileCopyrightText: 2020 John Doe <nom...@example.com> + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +// nothing in here, it is only a test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-3.0-only.cpp new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-3.0-only.cpp --- old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-3.0-only.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/GPL-3.0-only.cpp 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,6 @@ +/* + SPDX-FileCopyrightText: 2020 John Doe <nom...@example.com> + SPDX-License-Identifier: GPL-3.0-only +*/ + +// nothing in here, it is only a test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/LGPL-2.1-or-later.cpp new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/LGPL-2.1-or-later.cpp --- old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/LGPL-2.1-or-later.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/LGPL-2.1-or-later.cpp 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,6 @@ +/* + SPDX-FileCopyrightText: 2020 John Doe <nom...@example.com> + SPDX-License-Identifier: LGPL-2.1-or-later +*/ + +// nothing in here, it is only a test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/LGPL-3.0-only.cpp new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/LGPL-3.0-only.cpp --- old/extra-cmake-modules-5.74.0/tests/ECMCheckOutboundLicenseTest/testdata/LGPL-3.0-only.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/tests/ECMCheckOutboundLicenseTest/testdata/LGPL-3.0-only.cpp 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,6 @@ +/* + SPDX-FileCopyrightText: 2020 Jane Doe <nom...@example.com> + SPDX-License-Identifier: LGPL-3.0-only +*/ + +// nothing in here, it is only a test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/CMakeLists.txt new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/CMakeLists.txt --- old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/CMakeLists.txt 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/CMakeLists.txt 2020-10-01 14:34:06.000000000 +0200 @@ -19,6 +19,7 @@ EXECUTABLE /usr/bin/kded5 SYSTEMD_SERVICE plasma-kded.service DESTINATION ${CMAKE_INSTALL_PREFIX}/test + RENAME org.kde.kded5.withSystemD.renamed.service ) # this will be run by CTest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/check_tree.cmake.in new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/check_tree.cmake.in --- old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/check_tree.cmake.in 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/check_tree.cmake.in 2020-10-01 14:34:06.000000000 +0200 @@ -1,4 +1,9 @@ -set(EXPECTED "@CMAKE_CURRENT_SOURCE_DIR@/expected") +if (WIN32) + set(EXPECTED "@CMAKE_CURRENT_SOURCE_DIR@/windowsexpected") +else () + set(EXPECTED "@CMAKE_CURRENT_SOURCE_DIR@/expected") +endif (WIN32) + set(ACTUAL "@CMAKE_INSTALL_PREFIX@") # Compares files in two directories, emits a fatal error if the top level files are different diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/expected/org.kde.kded5.withSystemD.renamed.service new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/expected/org.kde.kded5.withSystemD.renamed.service --- old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/expected/org.kde.kded5.withSystemD.renamed.service 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/expected/org.kde.kded5.withSystemD.renamed.service 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=org.kde.kded5.withSystemD +Exec=/usr/bin/kded5 +SystemdService=plasma-kded.service diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/expected/org.kde.kded5.withSystemD.service new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/expected/org.kde.kded5.withSystemD.service --- old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/expected/org.kde.kded5.withSystemD.service 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/expected/org.kde.kded5.withSystemD.service 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -[D-BUS Service] -Name=org.kde.kded5.withSystemD -Exec=/usr/bin/kded5 -SystemdService=plasma-kded.service diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/windowsexpected/org.kde.kded5.service new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/windowsexpected/org.kde.kded5.service --- old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/windowsexpected/org.kde.kded5.service 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/windowsexpected/org.kde.kded5.service 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.kde.kded5 +Exec=kded5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/windowsexpected/org.kde.kded5.withSystemD.renamed.service new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/windowsexpected/org.kde.kded5.withSystemD.renamed.service --- old/extra-cmake-modules-5.74.0/tests/ECMGenerateDBusServiceFileTest/windowsexpected/org.kde.kded5.withSystemD.renamed.service 1970-01-01 01:00:00.000000000 +0100 +++ new/extra-cmake-modules-5.75.0/tests/ECMGenerateDBusServiceFileTest/windowsexpected/org.kde.kded5.withSystemD.renamed.service 2020-10-01 14:34:06.000000000 +0200 @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=org.kde.kded5.withSystemD +Exec=kded5 +SystemdService=plasma-kded.service diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/ExecuteCoreModules/CMakeLists.txt new/extra-cmake-modules-5.75.0/tests/ExecuteCoreModules/CMakeLists.txt --- old/extra-cmake-modules-5.74.0/tests/ExecuteCoreModules/CMakeLists.txt 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/tests/ExecuteCoreModules/CMakeLists.txt 2020-10-01 14:34:06.000000000 +0200 @@ -4,6 +4,7 @@ file(GLOB all_core_modules "${CMAKE_CURRENT_SOURCE_DIR}/../../modules/*cmake") set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../modules) +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../find-modules) foreach(module ${all_core_modules}) message(STATUS "module: ${module}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/tests/KDEFetchTranslations/CMakeLists.txt new/extra-cmake-modules-5.75.0/tests/KDEFetchTranslations/CMakeLists.txt --- old/extra-cmake-modules-5.74.0/tests/KDEFetchTranslations/CMakeLists.txt 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/tests/KDEFetchTranslations/CMakeLists.txt 2020-10-01 14:34:06.000000000 +0200 @@ -18,8 +18,8 @@ endforeach() _repository_name(name "${CMAKE_CURRENT_SOURCE_DIR}/../../") -if (NOT ${name} STREQUAL "extra-cmake-modules") - message(FATAL_ERROR "Wrong repository name: ${name}, should be 'extra-cmake-modules'") +if (NOT ${name} STREQUAL "frameworks/extra-cmake-modules") + message(FATAL_ERROR "Wrong repository name: ${name}, should be 'frameworks/extra-cmake-modules'") endif() add_executable(dummy ../ExecuteKDEModules/main.c) ecm_mark_nongui_executable(dummy) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/toolchain/Android.cmake new/extra-cmake-modules-5.75.0/toolchain/Android.cmake --- old/extra-cmake-modules-5.74.0/toolchain/Android.cmake 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/toolchain/Android.cmake 2020-10-01 14:34:06.000000000 +0200 @@ -45,8 +45,12 @@ # ``ANDROID_ABI`` # The ABI to use. See the ``sources/cxx-stl/gnu-libstdc++/*/libs`` # directories in the NDK. Default: ``armeabi-v7a``. +# ``ANDROID_SDK_COMPILE_API`` +# The platform API level to compile against. May be different from the NDK +# target. Default: newest installed version (e.g. android-30). # ``ANDROID_SDK_BUILD_TOOLS_REVISION`` -# The build tools version to use. Default: ``21.1.1``. +# The build tools version to use. +# Default: newest installed version (e.g. ``30.0.2``). # ``ANDROID_EXTRA_LIBS`` # The ";"-separated list of full paths to libs to include in resulting APK. # @@ -137,9 +141,18 @@ set(ANDROID_SDK_ROOT "$ENV{ANDROID_SDK_ROOT}" CACHE PATH "Android SDK path") +file(GLOB platforms LIST_DIRECTORIES TRUE RELATIVE ${ANDROID_SDK_ROOT}/platforms ${ANDROID_SDK_ROOT}/platforms/*) +list(SORT platforms COMPARE NATURAL) +list(GET platforms -1 _default_platform) +set(ANDROID_SDK_COMPILE_API "${_default_platform}" CACHE STRING "Android API Level") +if(ANDROID_SDK_COMPILE_API MATCHES "^android-([0-9]+)$") + set(ANDROID_SDK_COMPILE_API ${CMAKE_MATCH_1}) +endif() + file(GLOB build-tools LIST_DIRECTORIES TRUE RELATIVE ${ANDROID_SDK_ROOT}/build-tools ${ANDROID_SDK_ROOT}/build-tools/*) -list(GET build-tools 0 _default_sdk) -set(ANDROID_SDK_BUILD_TOOLS_REVISION "${_default_sdk}" CACHE STRING "Android API Level") +list(SORT build-tools COMPARE NATURAL) +list(GET build-tools -1 _default_sdk) +set(ANDROID_SDK_BUILD_TOOLS_REVISION "${_default_sdk}" CACHE STRING "Android Build Tools version") set(CMAKE_SYSTEM_VERSION ${CMAKE_ANDROID_API}) set(CMAKE_SYSTEM_NAME Android) @@ -147,11 +160,40 @@ set(CMAKE_ANDROID_STL_TYPE c++_shared) endif() +# Workaround link failure at FindThreads in CXX-only mode, +# armv7 really doesn't like mixing PIC/PIE code. +# Since we only have to care about a single compiler, +# hard-code the values here. +if (NOT TARGET Threads::Threads) + set(Threads_FOUND TRUE) + set(CMAKE_THREAD_LIBS_INIT "-pthread") + add_library(Threads::Threads INTERFACE IMPORTED) + set_property(TARGET Threads::Threads PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread") + set_property(TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES "-pthread") +endif() + # let the Android NDK toolchain file do the actual work set(ANDROID_PLATFORM "android-${CMAKE_ANDROID_API}") set(ANDROID_STL ${CMAKE_ANDROID_STL_TYPE}) include(${CMAKE_ANDROID_NDK}/build/cmake/android.toolchain.cmake REQUIRED) +## HACK: Remove when we can depend on NDK r22 +# Workaround issue https://github.com/android/ndk/issues/929 +if(ANDROID_NDK_MAJOR VERSION_LESS 22) + unset(CMAKE_SYSROOT) + set(ANDROID_SYSROOT_PREFIX "${ANDROID_TOOLCHAIN_ROOT}/sysroot/usr") + + list(APPEND CMAKE_SYSTEM_INCLUDE_PATH + "${ANDROID_SYSROOT_PREFIX}/include/${CMAKE_LIBRARY_ARCHITECTURE}") + list(APPEND CMAKE_SYSTEM_INCLUDE_PATH "${ANDROID_SYSROOT_PREFIX}/include") + + # Prepend in reverse order + list(PREPEND CMAKE_SYSTEM_LIBRARY_PATH + "${ANDROID_SYSROOT_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}") + list(PREPEND CMAKE_SYSTEM_LIBRARY_PATH + "${ANDROID_SYSROOT_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}/${ANDROID_PLATFORM_LEVEL}") +endif() + # these aren't set yet at this point by the Android toolchain, but without # those the find_package() call in ECMAndroidDeployQt will fail set(CMAKE_FIND_LIBRARY_PREFIXES "lib") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/toolchain/ECMAndroidDeployQt.cmake new/extra-cmake-modules-5.75.0/toolchain/ECMAndroidDeployQt.cmake --- old/extra-cmake-modules-5.74.0/toolchain/ECMAndroidDeployQt.cmake 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/toolchain/ECMAndroidDeployQt.cmake 2020-10-01 14:34:06.000000000 +0200 @@ -78,8 +78,11 @@ COMMAND cmake -E copy "$<TARGET_FILE:${QTANDROID_EXPORTED_TARGET}>" "${EXECUTABLE_DESTINATION_PATH}" COMMAND LANG=C cmake "-DTARGET=$<TARGET_FILE:${QTANDROID_EXPORTED_TARGET}>" -P ${_CMAKE_ANDROID_DIR}/hasMainSymbol.cmake COMMAND LANG=C cmake -DINPUT_FILE="${QTANDROID_EXPORTED_TARGET}-deployment.json.in2" -DOUTPUT_FILE="${QTANDROID_EXPORTED_TARGET}-deployment.json" "-DTARGET=$<TARGET_FILE:${QTANDROID_EXPORTED_TARGET}>" "-DOUTPUT_DIR=$<TARGET_FILE_DIR:${QTANDROID_EXPORTED_TARGET}>" "-DEXPORT_DIR=${CMAKE_INSTALL_PREFIX}" "-DECM_ADDITIONAL_FIND_ROOT_PATH=\"${ECM_ADDITIONAL_FIND_ROOT_PATH}\"" "-DANDROID_EXTRA_LIBS=\"${ANDROID_EXTRA_LIBS}\"" -P ${_CMAKE_ANDROID_DIR}/specifydependencies.cmake - COMMAND $<TARGET_FILE_DIR:Qt5::qmake>/androiddeployqt --gradle --input "${QTANDROID_EXPORTED_TARGET}-deployment.json" --apk "${ANDROID_APK_OUTPUT_DIR}/${QTANDROID_EXPORTED_TARGET}-${CMAKE_ANDROID_ARCH_ABI}.apk" --output "${EXPORT_DIR}" --deployment bundled ${arguments} + COMMAND $<TARGET_FILE_DIR:Qt5::qmake>/androiddeployqt --gradle --input "${QTANDROID_EXPORTED_TARGET}-deployment.json" --apk "${ANDROID_APK_OUTPUT_DIR}/${QTANDROID_EXPORTED_TARGET}-${CMAKE_ANDROID_ARCH_ABI}.apk" --output "${EXPORT_DIR}" --android-platform android-${ANDROID_SDK_COMPILE_API} --deployment bundled ${arguments} ) + # --android-platform above is only available as a command line option + # This specifies the actual version of the SDK files to use, and + # can be different from both the NDK target and the Java API target. add_custom_target(install-apk-${QTANDROID_EXPORTED_TARGET} COMMAND adb install -r "${ANDROID_APK_OUTPUT_DIR}/${QTANDROID_EXPORTED_TARGET}-${CMAKE_ANDROID_ARCH_ABI}.apk" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/toolchain/deployment-file-qt514.json.in new/extra-cmake-modules-5.75.0/toolchain/deployment-file-qt514.json.in --- old/extra-cmake-modules-5.74.0/toolchain/deployment-file-qt514.json.in 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/toolchain/deployment-file-qt514.json.in 2020-10-01 14:34:06.000000000 +0200 @@ -11,8 +11,10 @@ ##EXTRALIBS## ##EXTRAPLUGINS## "android-package-source-directory": "$<TARGET_PROPERTY:create-apk-${QTANDROID_EXPORTED_TARGET},ANDROID_APK_DIR>", - "stdcpp-path": "@CMAKE_SYSROOT@/usr/lib", + "stdcpp-path": "@ANDROID_SYSROOT_PREFIX@/lib", "sdkBuildToolsRevision": "@ANDROID_SDK_BUILD_TOOLS_REVISION@", + "android-min-sdk-version": "@ANDROID_API_LEVEL@", + "android-target-sdk-version": "@ANDROID_SDK_COMPILE_API@", "extraPrefixDirs": [ @EXTRA_PREFIX_DIRS@ ], "architectures": { "@CMAKE_ANDROID_ARCH_ABI@": "@ECM_ANDROID_STL_ARCH@" } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/extra-cmake-modules-5.74.0/toolchain/deployment-file.json.in new/extra-cmake-modules-5.75.0/toolchain/deployment-file.json.in --- old/extra-cmake-modules-5.74.0/toolchain/deployment-file.json.in 2020-08-30 12:20:31.000000000 +0200 +++ new/extra-cmake-modules-5.75.0/toolchain/deployment-file.json.in 2020-10-01 14:34:06.000000000 +0200 @@ -15,5 +15,7 @@ "android-package-source-directory": "$<TARGET_PROPERTY:create-apk-${QTANDROID_EXPORTED_TARGET},ANDROID_APK_DIR>", "stdcpp-path":##CMAKE_CXX_STANDARD_LIBRARIES##, "sdkBuildToolsRevision": "@ANDROID_SDK_BUILD_TOOLS_REVISION@", + "android-min-sdk-version": "@ANDROID_API_LEVEL@", + "android-target-sdk-version": "@ANDROID_SDK_COMPILE_API@", "extraPrefixDirs": [ @EXTRA_PREFIX_DIRS@ ] }