diff --git a/android-toolchain-ndk-r19c.cmake b/android-toolchain-ndk-r21d.cmake similarity index 85% rename from android-toolchain-ndk-r19c.cmake rename to android-toolchain-ndk-r21d.cmake index 654320f7..08213826 100644 --- a/android-toolchain-ndk-r19c.cmake +++ b/android-toolchain-ndk-r21d.cmake @@ -36,8 +36,9 @@ endif() set(supported_ndks ndk-r19c ndk-r20 # compiler bugs pending, to be fixed in ndk-r21 + ndk-r21d ) -set(ANDROID_TOOLCHAIN_VERSION "ndk-r19c" CACHE STRING +set(ANDROID_TOOLCHAIN_VERSION "ndk-r21d" CACHE STRING "Version of the Android NDK toolchain to be used" ) if(NOT ANDROID_TOOLCHAIN_VERSION IN_LIST supported_ndks) @@ -97,12 +98,24 @@ if(CMAKE_BUILD_TYPE MATCHES Rel) endif() endif() +# Cf. https://developer.android.com/studio/command-line/variables +if(NOT DEFINED ANDROID_SDK_ROOT AND NOT "$ENV{ANDROID_HOME}" STREQUAL "") + message(STATUS "Using ANDROID_SDK_ROOT=ANDROID_HOME=$ENV{ANDROID_HOME}") + set(ANDROID_SDK_ROOT "$ENV{ANDROID_HOME}") +endif() if(NOT DEFINED ANDROID_SDK_ROOT AND NOT "$ENV{ANDROID_SDK_ROOT}" STREQUAL "") + message(STATUS "Using ANDROID_SDK_ROOT=$ENV{ANDROID_SDK_ROOT}") set(ANDROID_SDK_ROOT "$ENV{ANDROID_SDK_ROOT}") endif() +if(NOT DEFINED ANDROID_NDK_ROOT AND NOT "$ENV{ANDROID_NDK_HOME}" STREQUAL "") + message(STATUS "Using ANDROID_NDK_ROOT=ANDROID_NDK_HOME=$ENV{ANDROID_NDK_HOME}") + set(ANDROID_NDK_ROOT "$ENV{ANDROID_NDK_HOME}") +endif() if(NOT DEFINED ANDROID_NDK_ROOT AND NOT "$ENV{ANDROID_NDK_ROOT}" STREQUAL "") + message(STATUS "Using ANDROID_NDK_ROOT=$ENV{ANDROID_NDK_ROOT}") set(ANDROID_NDK_ROOT "$ENV{ANDROID_NDK_ROOT}") endif() + if(NOT "$ENV{ANDROID_PLATFORM}" STREQUAL "") foreach(abi ${supported_abis}) set(system_platform_${abi} "$ENV{ANDROID_PLATFORM}") @@ -112,39 +125,41 @@ elseif(DEFINED ANDROID_PLATFORM) set(system_platform_${abi} "${ANDROID_PLATFORM}") endforeach() endif() + if(NOT DEFINED ANDROID_COMPILE_SDK AND NOT "$ENV{ANDROID_COMPILE_SDK}" STREQUAL "") set(ANDROID_COMPILE_SDK "$ENV{ANDROID_COMPILE_SDK}") else() - set(ANDROID_COMPILE_SDK android-28) + set(ANDROID_COMPILE_SDK android-29) endif() -if(ANDROID_SDK_ROOT AND ANDROID_NDK_ROOT) - set(sdk_host "") # external SDK and NDK -elseif(APPLE AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") - set(sdk_host "darwin") -elseif(UNIX AND NOT APPLE AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") +if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + message(FATAL_ERROR "CMAKE_SYSTEM_PROCESSOR must be x86_64") +elseif(APPLE) + set(sdk_host "mac") +elseif(UNIX) set(sdk_host "linux") -elseif(NOT ANDROID_SDK_ROOT) - message(FATAL_ERROR "ANDROID_SDK_ROOT must be set to an external SDK") -elseif(NOT ANDROID_NDK_ROOT) - message(FATAL_ERROR "ANDROID_NDK_ROOT must be set to an external NDK") +else() + set(sdk_host "windows") endif() +string(REPLACE "mac" "darwin" ndk_host "${sdk_host}") set(android_toolchain_dependencies ) if(NOT ANDROID_SDK_ROOT) - # Download SDK tools, platform, platform tools, and build tools. - set(sdk_tools_version "4333796") - set(sdk_tools_darwin_${sdk_tools_version}_hash SHA256=ecb29358bc0f13d7c2fa0f9290135a5b608e38434aad9bf7067d0252c160853e) - set(sdk_tools_linux_${sdk_tools_version}_hash SHA256=92ffee5a1d98d856634e8b71132e8a95d96c83a63fde1099be3d86df3106def9) - set(build_tools_version "28.0.2") + # Download command line tools, platform tools, platform, and build tools. + set(sdk_tools_version "6609375") + set(sdk_tools_mac_${sdk_tools_version}_hash SHA256=2c3822db1c916655223e5ee8ce0fbf6b73d0b99012045c9dc8eaa6a5736c0c55) + set(sdk_tools_linux_${sdk_tools_version}_hash SHA256=89f308315e041c93a37a79e0627c47f21d5c5edbe5e80ea8dc0aac8a649e0e92) + set(build_tools_version "29.0.2") string(CONCAT sdk_setup_sh [[ # Generated by ]] "${CMAKE_CURRENT_LIST_FILE}\n" [[ -echo y | ./tools/bin/sdkmanager --install "platforms;]] "${ANDROID_COMPILE_SDK}" [[" -echo y | ./tools/bin/sdkmanager --install "platform-tools" -echo y | ./tools/bin/sdkmanager --install "build-tools;]] "${build_tools_version}" [[" -yes | ./tools/bin/sdkmanager --licenses +set -x +echo y | ./cmdline-tools/tools/bin/sdkmanager --update +echo y | ./cmdline-tools/tools/bin/sdkmanager --install "platforms;]] "${ANDROID_COMPILE_SDK}" [[" +echo y | ./cmdline-tools/tools/bin/sdkmanager --install "platform-tools" +echo y | ./cmdline-tools/tools/bin/sdkmanager --install "build-tools;]] "${build_tools_version}" [[" +yes | ./cmdline-tools/tools/bin/sdkmanager --licenses ]] ) set(ANDROID_SDK_INSTALL_ROOT "${PROJECT_BINARY_DIR}/source" CACHE STRING @@ -158,14 +173,14 @@ yes | ./tools/bin/sdkmanager --licenses SOURCE_WRITE sdk_setup.sh sdk_setup_sh SOURCE - DOWNLOAD_NAME android-sdk-tools-${sdk_host}-${sdk_tools_version}.zip - URL https://dl.google.com/android/repository/sdk-tools-${sdk_host}-${sdk_tools_version}.zip + DOWNLOAD_NAME android-commandlinetools-${sdk_host}-${sdk_tools_version}_latest.zip + URL https://dl.google.com/android/repository/commandlinetools-${sdk_host}-${sdk_tools_version}_latest.zip URL_HASH ${sdk_tools_${sdk_host}_${sdk_tools_version}_hash} DOWNLOAD_NO_EXTRACT 1 # We extract manually from within the source directory. PATCH_COMMAND - "${CMAKE_COMMAND}" -E make_directory "${ANDROID_SDK_ROOT}" + "${CMAKE_COMMAND}" -E make_directory "${ANDROID_SDK_ROOT}/cmdline-tools" COMMAND - "${CMAKE_COMMAND}" -E chdir "${ANDROID_SDK_ROOT}" + "${CMAKE_COMMAND}" -E chdir "${ANDROID_SDK_ROOT}/cmdline-tools" "${CMAKE_COMMAND}" -E tar xzf "" COMMAND "${CMAKE_COMMAND}" -E chdir "${ANDROID_SDK_ROOT}" @@ -182,6 +197,8 @@ if(NOT ANDROID_NDK_ROOT) set(ndk_r19c_linux_hash SHA1=fd94d0be6017c6acbd193eb95e09cf4b6f61b834) set(ndk_r20_darwin_hash SHA1=96d5f1c50452596912d1982439c514194b5751e6) set(ndk_r20_linux_hash SHA1=8665fc84a1b1f0d6ab3b5fdd1e30200cc7b9adff) + set(ndk_r21d_darwin_hash SHA1=ef06c9f9d7efd6f243eb3c05ac440562ae29ae12) + set(ndk_r21d_linux_hash SHA1=bcf4023eb8cb6976a4c7cff0a8a8f145f162bf4d) set(ANDROID_NDK_INSTALL_ROOT "${PROJECT_BINARY_DIR}/source" CACHE STRING "The directory where to install the downloaded NDK (i.e. the basedir of ANDROID_NDK_ROOT)" ) @@ -191,8 +208,8 @@ if(NOT ANDROID_NDK_ROOT) VERSION ${version} SOURCE - URL https://dl.google.com/android/repository/android-ndk-${version}-${sdk_host}-x86_64.zip - URL_HASH ${ndk_${version}_${sdk_host}_hash} + URL https://dl.google.com/android/repository/android-ndk-${version}-${ndk_host}-x86_64.zip + URL_HASH ${ndk_${version}_${ndk_host}_hash} DOWNLOAD_NO_EXTRACT 1 # We extract manually from within the source directory. PATCH_COMMAND "${CMAKE_COMMAND}" -E chdir "${ANDROID_NDK_INSTALL_ROOT}" @@ -298,7 +315,7 @@ if(NOT ANDROID_NDK_ROOT) SOURCE android-libcxx-${ANDROID_NDK_VERSION} - USING ANDROID_NDK_ROOT abi sdk_host system_platform_${abi} + USING ANDROID_NDK_ROOT abi ndk_host system_platform_${abi} BUILD [[ CONFIGURE_COMMAND "" BUILD_COMMAND @@ -309,7 +326,7 @@ if(NOT ANDROID_NDK_ROOT) "APP_PLATFORM=${system_platform_${abi}}" "APP_MODULES=c++_shared c++_static" "BIONIC_PATH=/bionic" - "NDK_UNIFIED_SYSROOT_PATH=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/sysroot" + "NDK_UNIFIED_SYSROOT_PATH=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/sysroot" "NDK_PLATFORMS_ROOT=${ANDROID_NDK_ROOT}/platforms" "NDK_TOOLCHAINS_ROOT=/toolchains" "NDK_PROJECT_PATH=null" @@ -361,7 +378,7 @@ foreach(abi ${enabled_abis}) sb_install_dir(install_dir ${system_name}) if(NOT DEFINED ${system_name}_ENV_PATH) - set(${system_name}_ENV_PATH "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin:${toolchain_dir}/bin:$ENV{PATH}" PARENT_SCOPE) + set(${system_name}_ENV_PATH "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin:${toolchain_dir}/bin:$ENV{PATH}" PARENT_SCOPE) endif() if(NOT DEFINED ${system_name}_INSTALL_PREFIX) @@ -404,8 +421,8 @@ set(CMAKE_FIND_ROOT_PATH "]] "${${system_name}_FIND_ROOT_PATH}" [[") list(APPEND CMAKE_FIND_ROOT_PATH "${ANDROID_NDK_ROOT}/platforms/android-${ANDROID_NATIVE_API_LEVEL}/arch-]] ${system_arch_${abi}} [[") set(CMAKE_SYSTEM_LIBRARY_PATH "/usr/lib/${SYSTEM_NAME}") -set(SUPERBUILD_CC "]] "${ANDROID_NDK_ROOT}" [[/toolchains/llvm/prebuilt/]] "${sdk_host}" [[-x86_64/bin/${SYSTEM_NAME}${ANDROID_NATIVE_API_LEVEL}-clang") -set(SUPERBUILD_CXX "]] "${ANDROID_NDK_ROOT}" [[/toolchains/llvm/prebuilt/]] "${sdk_host}" [[-x86_64/bin/${SYSTEM_NAME}${ANDROID_NATIVE_API_LEVEL}-clang++") +set(SUPERBUILD_CC "]] "${ANDROID_NDK_ROOT}" [[/toolchains/llvm/prebuilt/]] "${ndk_host}" [[-x86_64/bin/${SYSTEM_NAME}${ANDROID_NATIVE_API_LEVEL}-clang") +set(SUPERBUILD_CXX "]] "${ANDROID_NDK_ROOT}" [[/toolchains/llvm/prebuilt/]] "${ndk_host}" [[-x86_64/bin/${SYSTEM_NAME}${ANDROID_NATIVE_API_LEVEL}-clang++") # ANDROID_LINKER_FLAGS defines flags for ABI specific linking requirements. # Last not least, this includes the unwinding particularities of 32-bit ARM, # https://android.googlesource.com/platform/ndk/+/master/docs/BuildSystemMaintainers.md#Unwinding @@ -451,7 +468,7 @@ set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "Enable verbose output from Makefile b USING md5 install_dir - sdk_host + ndk_host system_name ${system_name}_INSTALL_PREFIX ANDROID_NDK_ROOT @@ -483,67 +500,67 @@ set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "Enable verbose output from Makefile b $<$:# Add tools with same prefix as compiler COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-ar" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-ar" "${INSTALL_DIR}/bin/${system_name}-ar" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-as" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-as" "${INSTALL_DIR}/bin/${system_name}-as" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-c++filt" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-c++filt" "${INSTALL_DIR}/bin/${system_name}-c++filt" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-dwp" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-dwp" "${INSTALL_DIR}/bin/${system_name}-dwp" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-elfedit" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-elfedit" "${INSTALL_DIR}/bin/${system_name}-gprof" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-ld" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-ld" "${INSTALL_DIR}/bin/${system_name}-ld" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-ld.bfd" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-ld.bfd" "${INSTALL_DIR}/bin/${system_name}-ld.bfd" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-ld.gold" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-ld.gold" "${INSTALL_DIR}/bin/${system_name}-ld.gold" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-nm" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-nm" "${INSTALL_DIR}/bin/${system_name}-nm" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-objcopy" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-objcopy" "${INSTALL_DIR}/bin/${system_name}-objcopy" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-objdump" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-objdump" "${INSTALL_DIR}/bin/${system_name}-objdump" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-ranlib" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-ranlib" "${INSTALL_DIR}/bin/${system_name}-ranlib" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-readelf" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-readelf" "${INSTALL_DIR}/bin/${system_name}-readelf" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-size" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-size" "${INSTALL_DIR}/bin/${system_name}-size" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-strings" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-strings" "${INSTALL_DIR}/bin/${system_name}-strings" COMMAND "${CMAKE_COMMAND}" -E copy_if_different - "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${sdk_host}-x86_64/bin/arm-linux-androideabi-strip" + "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${ndk_host}-x86_64/bin/arm-linux-androideabi-strip" "${INSTALL_DIR}/bin/${system_name}-strip" > ]] diff --git a/bison-3.7.2.cmake b/bison-3.7.2.cmake new file mode 100644 index 00000000..8535c53e --- /dev/null +++ b/bison-3.7.2.cmake @@ -0,0 +1,119 @@ +# This file is part of OpenOrienteering. + +# Copyright 2020 Kai Pastor +# +# Redistribution and use is allowed according to the terms of the BSD license: +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set(version 3.7.2+dfsg) +set(download_hash SHA256=7d9dfcb129e4004915d1099c034184027b21e95ef18bda8adb65457ada217c45) +set(patch_version ${version}-1) +set(patch_hash SHA256=fd0514a4effe94864aa3a51bbb47ed36bc597cbebac83b27722632c0bbb0dc2a) +set(base_url https://snapshot.debian.org/archive/debian/20200907T204912Z/pool/main/b/bison/) + +option(USE_SYSTEM_BISON "Use the system Bison if possible" ON) + +set(test_system_bison [[ + if(${USE_SYSTEM_BISON}) + enable_language(C) + # Doxygen 1.8.x needs at least Bison 2.7 + find_package(BISON 2.7 QUIET) + string(FIND "${BISON_EXECUTABLE}" "${CMAKE_STAGING_PREFIX}/" staging_prefix_start) + if(BISON_EXECUTABLE AND NOT staging_prefix_start EQUAL 0) + message(STATUS "Found ${SYSTEM_NAME} Bison: ${BISON_EXECUTABLE} (${BISON_VERSION})") + set(BUILD_CONDITION 0) + endif() + if(BISON_VERSION AND BISON_VERSION VERSION_LESS 2.7) + message(WARNING "Ignoring ${SYSTEM_NAME} Bison (< 2.7)") + set(BUILD_CONDITION 1) + endif() + endif() +]]) + +set(bison_texi [[ +@setfilename bison.info +]]) + +superbuild_package( + NAME bison-patches + VERSION ${patch_version} + + SOURCE + URL ${base_url}bison_${patch_version}.debian.tar.xz + URL_HASH ${patch_hash} +) + +superbuild_package( + NAME bison + VERSION ${patch_version} + DEPENDS + source:bison-patches-${patch_version} + + SOURCE_WRITE + bison.texi bison_texi + SOURCE + URL ${base_url}bison_${version}.orig.tar.xz + URL_HASH ${download_hash} + PATCH_COMMAND + "${CMAKE_COMMAND}" + -Dpackage=bison-patches-${patch_version} + -P "${APPLY_PATCHES_SERIES}" + # Fix the issues resulting from Debian DFSG tarball and patching + COMMAND + "${CMAKE_COMMAND}" + -E copy bison.texi doc/bison.texi + COMMAND + touch -r doc/local.mk doc/bison.texi + COMMAND + touch -r doc/local.mk examples/c/lexcalc/local.mk + COMMAND + touch -r doc/local.mk examples/local.mk + + USING USE_SYSTEM_BISON patch_version + BUILD_CONDITION ${test_system_bison} + BUILD [[ + CONFIGURE_COMMAND + "${SOURCE_DIR}/configure" + "--prefix=${CMAKE_INSTALL_PREFIX}" + $<$: + --host=${SUPERBUILD_TOOLCHAIN_TRIPLET} + > + --enable-relocatable + --disable-nls + --disable-silent-rules + "CC=${SUPERBUILD_CC}" + "CXX=${SUPERBUILD_CXX}" + "CPPFLAGS=${SUPERBUILD_CPPFLAGS}" + "CFLAGS=${SUPERBUILD_CFLAGS}" + "CXXFLAGS=${SUPERBUILD_CXXFLAGS}" + "LDFLAGS=${SUPERBUILD_LDFLAGS}" + INSTALL_COMMAND + "$(MAKE)" install "DESTDIR=${DESTDIR}${INSTALL_DIR}" + COMMAND + "${CMAKE_COMMAND}" -E copy + "/../bison-patches-${patch_version}/copyright" + "${DESTDIR}${CMAKE_STAGING_PREFIX}/share/doc/copyright/bison-${patch_version}.txt" + ]] +) diff --git a/ci/build.yml b/ci/build.yml index 99722577..7a0bb5e8 100644 --- a/ci/build.yml +++ b/ci/build.yml @@ -57,9 +57,6 @@ steps: -DCMAKE_BUILD_TYPE=Release -DSUPERBUILD_DOWNLOAD_DIR=$(Build.SourcesDirectory)/download -DUSE_SYSTEM_PCRE2=FALSE - -DMapper_GIT_QT_VERSION=5.12 - -DMapper_GIT_LICENSING_PROVIDER=superbuild - -DMapper_GIT_ENABLE_POSITIONING=ON -DMapper_GIT_ENABLE_INSTALL=OFF -Ddefault_INSTALL_DIR= -Ddefault_INSTALL_PREFIX=$(SUPERBUILD_INSTALL_DIR) diff --git a/ci/setup-msys2.yml b/ci/setup-msys2.yml index da17ff4f..373cc2a1 100644 --- a/ci/setup-msys2.yml +++ b/ci/setup-msys2.yml @@ -94,6 +94,19 @@ steps: condition: not(variables['openorienteering.superbuild.msysBuildId']) displayName: 'Install MSYS2 MinGW packages for OpenOrienteering Superbuild' +- script: | + set PATH=%SUPERBUILD_INSTALL_DIR_NATIVE%\usr\bin;%WINDIR%\system32;%WINDIR%;%WINDIR%\system32\wbem + pacman --noconfirm -S --needed ^ + mingw-w64-%MSYSTEM_CARCH%-wintab-sdk ^ + 2>error.log + if errorlevel 1 ( + type error.log 1>&2 + exit /b 1 + ) else ( + type error.log + ) + displayName: 'Install mingw-w64-wintab-sdk' + - script: | set PATH=%SUPERBUILD_INSTALL_DIR_NATIVE%\usr\bin;%WINDIR%\system32;%WINDIR%;%WINDIR%\system32\wbem pacman --noconfirm -Scc diff --git a/doxygen-1.8.13.cmake b/doxygen-1.8.20.cmake similarity index 62% rename from doxygen-1.8.13.cmake rename to doxygen-1.8.20.cmake index 790f492f..e1876dbb 100644 --- a/doxygen-1.8.13.cmake +++ b/doxygen-1.8.20.cmake @@ -27,11 +27,11 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -set(version 1.8.13) -set(download_hash SHA256=af667887bd7a87dc0dbf9ac8d86c96b552dfb8ca9c790ed1cbffaa6131573f6b) -set(patch_version ${version}-10) -set(patch_hash SHA256=e4fb3fa4266998c4192dcdbb1efb563360f1f009d9a80d445721d526de4f9482) -set(base_url https://snapshot.debian.org/archive/debian/20180312T232337Z/pool/main/d/doxygen/) +set(version 1.8.20) +set(download_hash SHA256=3dbdf8814d6e68233d5149239cb1f0b40b4e7b32eef2fd53de8828fedd7aca15) +set(patch_version ${version}-1) +set(patch_hash SHA256=16271cdae86fcda19f5078442e49148db48f087c046da517641230408b2702ae) +set(base_url https://snapshot.debian.org/archive/debian/20200914T084139Z/pool/main/d/doxygen/) option(USE_SYSTEM_DOXYGEN "Use the system DOXYGEN if possible" ON) @@ -45,50 +45,15 @@ set(test_system_doxygen [[ endif() endif() if(CMAKE_C_COMPILER_ID MATCHES "Clang") - set(extra_flags "-Wno-tautological-constant-out-of-range-compare -Wno-deprecated-declarations" PARENT_SCOPE) + set(extra_flags "-Wno-return-type -Wno-tautological-constant-out-of-range-compare" PARENT_SCOPE) elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU") - set(extra_flags "-Wno-return-type -Wno-deprecated" PARENT_SCOPE) + set(extra_flags "-Wno-return-type -Wno-write-strings" PARENT_SCOPE) else() set(extra_flags "" PARENT_SCOPE) endif() ]]) -# Fix mingw64 builds -# https://github.com/msys2/MINGW-packages/blob/b99b3d396d8d3dfcee41548d1b96729464bde4e5/mingw-w64-doxygen/fix-casts.patch -set(fix-casts_patch [[ ---- doxygen-1.8.6/qtools/qcstring.cpp.orig 2013-05-19 19:12:31.000000000 +0400 -+++ doxygen-1.8.6/qtools/qcstring.cpp 2014-04-04 06:54:07.313800000 +0400 -@@ -476,7 +476,7 @@ - if ( to > first && *(to-1) == 0x20 ) - to--; - *to = '\0'; -- result.resize( (int)((long)to - (long)result.data()) + 1 ); -+ result.resize( (int)(reinterpret_cast(to) - reinterpret_cast(result.data())) + 1 ); - return result; - } - -@@ -717,7 +717,7 @@ - int res; - uchar c; - if ( !s1 || !s2 ) -- return s1 == s2 ? 0 : (int)((long)s2 - (long)s1); -+ return s1 == s2 ? 0 : (int)(reinterpret_cast(s2) - reinterpret_cast(s1)); - for ( ; !(res = (c=tolower(*s1)) - tolower(*s2)); s1++, s2++ ) - if ( !c ) // strings are equal - break; -@@ -731,7 +731,7 @@ - int res; - uchar c; - if ( !s1 || !s2 ) -- return (int)((long)s2 - (long)s1); -+ return (int)(reinterpret_cast(s2) - reinterpret_cast(s1)); - for ( ; len--; s1++, s2++ ) { - if ( (res = (c=tolower(*s1)) - tolower(*s2)) ) - return res; -]]) - - superbuild_package( NAME doxygen-patches VERSION ${patch_version} @@ -103,33 +68,36 @@ superbuild_package( VERSION ${patch_version} DEPENDS source:doxygen-patches-${patch_version} + host:bison libiconv zlib SOURCE URL ${base_url}doxygen_${version}.orig.tar.gz URL_HASH ${download_hash} - PATCH_COMMAND - patch -p1 -i fix-casts.patch + "${CMAKE_COMMAND}" + -Dpackage=doxygen-patches-${patch_version} + -P "${APPLY_PATCHES_SERIES}" COMMAND - sed -i -e "/set.ICONV_DIR/d" CMakeLists.txt + sed -e "/set.YACC_FLAGS/ s/set.*/set(YACC_FLAGS -Wno-deprecated)/" -i -- + CMakeLists.txt COMMAND - sed -i -e "/bigobj/d" CMakeLists.txt + sed -e "/BISON_EXECUTABLE/ s/ -o / -Wno-deprecated -o /" -i -- + CMakeLists.txt COMMAND - sed -i -e "s/mmacosx-version-min=10.5/mmacosx-version-min=10.11/" CMakeLists.txt - - SOURCE_WRITE - fix-casts.patch fix-casts_patch + sed -e "/set.PROJECT_WARNINGS/ s/set.*/set(PROJECT_WARNINGS )/" -i -- + cmake/CompilerWarnings.cmake USING USE_SYSTEM_DOXYGEN patch_version extra_flags BUILD_CONDITION ${test_system_doxygen} BUILD [[ CMAKE_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" + "-DCMAKE_BUILD_TYPE=Release" "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} ${extra_flags}" "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} ${extra_flags}" - -Denglish_only=1 + -Denglish_only=1 INSTALL_COMMAND "${CMAKE_COMMAND}" --build . --target install/strip/fast COMMAND diff --git a/libwebp-1.1.0.cmake b/libwebp-1.1.0.cmake index 8ec8488e..47805946 100644 --- a/libwebp-1.1.0.cmake +++ b/libwebp-1.1.0.cmake @@ -43,6 +43,13 @@ set(test_system_libwebp [[ set(BUILD_CONDITION 0) endif() endif() + if(CMAKE_C_COMPILER_ID MATCHES "Clang") + set(extra_flags "-Wno-unused-command-line-argument" PARENT_SCOPE) + elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU") + set(extra_flags "" PARENT_SCOPE) + else() + set(extra_flags "" PARENT_SCOPE) + endif() ]]) superbuild_package( @@ -58,17 +65,19 @@ superbuild_package( URL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${version}.tar.gz URL_HASH ${download_hash} - USING USE_SYSTEM_LIBWEBP patch_version + USING USE_SYSTEM_LIBWEBP patch_version extra_flags BUILD_CONDITION ${test_system_libwebp} BUILD [[ CMAKE_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" "-DCMAKE_BUILD_TYPE:STRING=$" + "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} ${extra_flags}" + "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} ${extra_flags}" -DBUILD_SHARED_LIBS=ON -DWEBP_BUILD_ANIM_UTILS=OFF -DWEBP_BUILD_CWEBP=OFF -DWEBP_BUILD_DWEBP=OFF - -DWEBP_BUILD_GIF2WEBP=OFF + -DWEBP_BUILD_GIF2WEBP=ON # Required for libwebpmux, which is required for qtimageformats -DWEBP_BUILD_IMG2WEBP=OFF -DWEBP_BUILD_VWEBP=OFF -DWEBP_BUILD_WEBPINFO=OFF diff --git a/openorienteering-mapper-git.cmake b/openorienteering-mapper-git.cmake index 52c216ad..947f5f00 100644 --- a/openorienteering-mapper-git.cmake +++ b/openorienteering-mapper-git.cmake @@ -1,6 +1,6 @@ # This file is part of OpenOrienteering. -# Copyright 2016-2019 Kai Pastor +# Copyright 2016-2020 Kai Pastor # # Redistribution and use is allowed according to the terms of the BSD license: # @@ -35,8 +35,8 @@ endif() set(Mapper_GIT_TAGS "master;dev" CACHE STRING "Mapper (git): The git branch names, commit IDs and tags") set(Mapper_GIT_LICENSING_PROVIDER "superbuild" CACHE STRING "Mapper (git): Provider for 3rd-party licensing information") -set(Mapper_GIT_QT_VERSION 5.12 CACHE STRING "Mapper (git): Qt version") -option(Mapper_GIT_ENABLE_POSITIONING "Mapper: Enable positioning" OFF) +set(Mapper_GIT_QT_VERSION 5.15 CACHE STRING "Mapper (git): Qt version") +option(Mapper_GIT_ENABLE_POSITIONING "Mapper: Enable positioning" ON) option(Mapper_GIT_MANUAL_PDF "Mapper (git): Provide the manual as PDF file (needs pdflatex)" OFF) set(Mapper_GIT_GDAL_DATA_DIR "NOTFOUND" CACHE STRING "Mapper (git): GDAL data directory") option(Mapper_GIT_ENABLE_INSTALL "Mapper (git): Enable installation step" ON) diff --git a/qt-5.15.1.cmake b/qt-5.15.1.cmake new file mode 100644 index 00000000..5cd77cc9 --- /dev/null +++ b/qt-5.15.1.cmake @@ -0,0 +1,811 @@ +# This file is part of OpenOrienteering. + +# Copyright 2016-2020 Kai Pastor +# +# Redistribution and use is allowed according to the terms of the BSD license: +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Common defaults, modules may deviate. +set(short_version 5.15) +set(version 5.15.1) + +option(USE_SYSTEM_QT "Use the system Qt if possible" ON) + +string(CONFIGURE [[ + if("${module}" MATCHES "Android" AND NOT ANDROID) + set(BUILD_CONDITION 0) + elseif(ANDROID AND "${module}" STREQUAL "Qt5SerialPort") + set(BUILD_CONDITION 0) + elseif(USE_SYSTEM_QT) + find_package(Qt5Core @version@ CONFIG QUIET + NO_CMAKE_FIND_ROOT_PATH + NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + if(Qt5Core_VERSION) + find_package(${module} ${Qt5Core_VERSION} CONFIG EXACT + NO_CMAKE_FIND_ROOT_PATH + NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + find_package(${module} ${Qt5Core_VERSION_MAJOR}.${Qt5Core_VERSION_MINOR} CONFIG + NO_CMAKE_FIND_ROOT_PATH + NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH + ) + string(FIND "${${module}_INCLUDE_DIRS}" "${CMAKE_STAGING_PREFIX}/" staging_prefix_start) + if(${module}_VERSION AND NOT staging_prefix_start EQUAL 0) + message(STATUS "Found ${SYSTEM_NAME} ${module}: ${${module}_VERSION}") + set(BUILD_CONDITION 0) + else() + message(STATUS "Found ${SYSTEM_NAME} Qt5Core ${Qt5Core_VERSION}, but no matching ${module}") + endif() + endif() + endif() + if(DEFINED ENV{HOST_PREFIX}) + set(HOST_PREFIX "$ENV{HOST_PREFIX}" PARENT_SCOPE) + else() + set(HOST_PREFIX "${TOOLCHAIN_DIR}" PARENT_SCOPE) + endif() +]] use_system_qt @ONLY) + + + +# OpenOrienteering modifications + +set(qt_openorienteering_version ${version}-1) +set(qt_openorienteering "qt-${short_version}-openorienteering-${qt_openorienteering_version}") +superbuild_package( + NAME qt-${short_version}-openorienteering + VERSION ${qt_openorienteering_version} + + SOURCE + URL https://github.com/OpenOrienteering/superbuild/archive/qt-${short_version}-openorienteering_${qt_openorienteering_version}.tar.gz + URL_HASH SHA256=8fd04999d18948c9b6cbb455baa10701d515ef3497fb856f472cf297abcce177 +) + + + +# qtbase +# qtbase-opensource-src from Debian lacks src/3rdparty/gradle/gradle/wrapper/gradle-wrapper.jar + +set(module Qt5Core) +set(qtbase_version ${version}) +set(qtbase_download_hash SHA256=33960404d579675b7210de103ed06a72613bfc4305443e278e2d32a3eb1f3d8c) +set(qtbase_patch_version ${qtbase_version}+dfsg-1) +set(qtbase_patch_hash SHA256=dd93864111f57b1ffe23d3c62fd2a0d8aa5efdb47ae617ae5546be4bf3f07edd) +set(qtbase_base_url https://snapshot.debian.org/archive/debian/20200910T144906Z/pool/main/q/qtbase-opensource-src/) + +superbuild_package( + NAME qtbase + VERSION ${short_version} + DEPENDS + qtbase-everywhere-src-${qtbase_patch_version} +) + +superbuild_package( + NAME qtbase-opensource-src-patches + VERSION ${qtbase_patch_version} + + SOURCE + URL ${qtbase_base_url}qtbase-opensource-src_${qtbase_patch_version}.debian.tar.xz + URL_HASH ${qtbase_patch_hash} + + PATCH_COMMAND + sed -e "/gnukfreebsd\\|armv4/d" -i -- patches/series +) + +superbuild_package( + NAME qtbase-everywhere-src + VERSION ${qtbase_patch_version} + DEPENDS + source:${qt_openorienteering} + source:qtbase-opensource-src-patches-${qtbase_patch_version} + freetype + libjpeg-turbo + libpng + pcre2 + sqlite3 + zlib + + SOURCE + URL https://download.qt.io/archive/qt/${short_version}/${qtbase_version}/submodules/qtbase-everywhere-src-${qtbase_version}.tar.xz + URL_HASH ${qtbase_download_hash} + + PATCH_COMMAND + "${CMAKE_COMMAND}" + -Dpackage=qtbase-opensource-src-patches-${qtbase_patch_version} + -P "${APPLY_PATCHES_SERIES}" + COMMAND + "${CMAKE_COMMAND}" + -Dpackage=${qt_openorienteering}/qtbase + -P "${APPLY_PATCHES_SERIES}" + # Don't accidently used bundled copies + COMMAND + "${CMAKE_COMMAND}" -E remove_directory src/3rdparty/angle # excluded by -opengl desktop + COMMAND + "${CMAKE_COMMAND}" -E remove_directory src/3rdparty/dbus-ifaces # excluded by -no-dbus + COMMAND + "${CMAKE_COMMAND}" -E remove_directory src/3rdparty/libjpeg # excluded by -system-libjpeg + COMMAND + "${CMAKE_COMMAND}" -E remove_directory src/3rdparty/libpng # excluded by -system-libpng + COMMAND + "${CMAKE_COMMAND}" -E remove_directory src/3rdparty/pcre # excluded by -system-pcre + COMMAND + "${CMAKE_COMMAND}" -E remove_directory src/3rdparty/sqlite # excluded by -system-sqlite, -no-sql-sqlite + COMMAND + "${CMAKE_COMMAND}" -E remove_directory src/3rdparty/wasm # for WebAssembly platform + COMMAND + "${CMAKE_COMMAND}" -E remove_directory src/3rdparty/xcb # requires -qt-xcb + COMMAND + "${CMAKE_COMMAND}" -E remove_directory src/3rdparty/zlib # excluded by -system-zlib + + USING + USE_SYSTEM_QT + module + default + crosscompiling + windows + android + macos + qt_openorienteering + qtbase_version + BUILD_CONDITION ${use_system_qt} + BUILD [[ + CONFIGURE_COMMAND + $<@crosscompiling@: + COMMAND + # Cf. qtbase configure "SYSTEM_VARIABLES" + "${CMAKE_COMMAND}" -E env + --unset=AR + --unset=RANLIB + --unset=STRIP + --unset=OBJDUMP + --unset=LD + --unset=CC + --unset=CXX + --unset=CFLAGS + --unset=CXXFLAGS + --unset=LDFLAGS + # fall through + > + "${SOURCE_DIR}/configure" + -opensource + -confirm-license + $<$:-debug>$<$>:-release $<$:-force-debug-info>> + -shared + -optimized-tools + $<@macos@:-no-framework> + -gui + -widgets + -system-libjpeg + -system-libpng + -system-pcre + -system-sqlite + -system-zlib + -no-sql-db2 + -no-sql-ibase + -no-sql-mysql + -no-sql-oci + -no-sql-odbc + -no-sql-psql + -sql-sqlite + -no-sql-sqlite2 + -no-sql-tds + -no-openssl + -no-directfb + -no-linuxfb + $<$: + -no-dbus + > + -nomake examples + -nomake tests + -nomake tools + -system-proxies + -no-glib + -prefix "${CMAKE_INSTALL_PREFIX}" + -archdatadir "${CMAKE_INSTALL_PREFIX}/lib/qt5" + -datadir "${CMAKE_INSTALL_PREFIX}/share/qt5" + -examplesdir "${CMAKE_INSTALL_PREFIX}/share/qt5/examples" + -headerdir "${CMAKE_INSTALL_PREFIX}/include/qt5" + -libdir "${CMAKE_INSTALL_PREFIX}/lib" + -extprefix "${CMAKE_STAGING_PREFIX}" + $<$: + -no-pkg-config + -platform win32-g++ + -opengl desktop + > + $<@crosscompiling@: + -no-pkg-config + -hostprefix "${HOST_PREFIX}" + #-hostdatadir "${HOST_PREFIX}/share/qt5" + $<@windows@: + -device-option CROSS_COMPILE=${SUPERBUILD_TOOLCHAIN_TRIPLET}- + -xplatform win32-g++ + -opengl desktop + -no-feature-systemtrayicon # Workaround missing ChangeWindowMessageFilterEx symbol + -no-feature-tabletevent # No wintab.h on some MinGW + > + $<@android@: + $<$: + -xplatform android-g++ + >$<$: + -xplatform android-clang + -disable-rpath + > + -android-ndk "${ANDROID_NDK_ROOT}" + -android-sdk "${ANDROID_SDK_ROOT}" + -android-arch "${ANDROID_ABI}" + -android-ndk-platform "${ANDROID_PLATFORM}" + $<$:-no-avx -no-avx2 -no-avx512 -no-sse4.1 -no-sse4.2> + $<$:-no-avx -no-avx2 -no-avx512> + > + > + -I "${CMAKE_STAGING_PREFIX}/include" + -L "${CMAKE_STAGING_PREFIX}/lib" + INSTALL_COMMAND + "$(MAKE)" install INSTALL_ROOT=${DESTDIR} + $<@android@: + # androiddeployqt QTBUG-73141 + COMMAND + "${CMAKE_COMMAND}" -E create_symlink + "${CMAKE_STAGING_PREFIX}/lib/qt5/plugins" + "${CMAKE_STAGING_PREFIX}/plugins" + > + COMMAND + "${CMAKE_COMMAND}" -E copy + "/../${qt_openorienteering}/qtbase/copyright" + "${DESTDIR}${CMAKE_STAGING_PREFIX}/share/doc/copyright/qtbase-${qtbase_version}.txt" + ]] +) + + + +# qtandroidextras, directly from upstream (not in Debian) + +set(module Qt5AndroidExtras) +set(qtandroidextras_version ${version}) +set(qtandroidextras_download_hash SHA256=c1e64d7278f38d99a672265feb8ba5f3edcc9377e816d055a4150f2c44dc58ed) +set(qtandroidextras_url https://download.qt.io/archive/qt/${short_version}/${qtandroidextras_version}/submodules/qtandroidextras-everywhere-src-${qtandroidextras_version}.tar.xz) + +superbuild_package( + NAME qtandroidextras + VERSION ${short_version} + DEPENDS qtandroidextras-everywhere-src-${qtandroidextras_version} +) + +superbuild_package( + NAME qtandroidextras-everywhere-src + VERSION ${qtandroidextras_version} + DEPENDS + source:${qt_openorienteering} + qtbase-${short_version} + + SOURCE + URL ${qtandroidextras_url} + URL_HASH ${qtandroidextras_download_hash} + + USING + USE_SYSTEM_QT + module + qmake + qt_openorienteering + qtandroidextras_version + BUILD_CONDITION ${use_system_qt} + BUILD [[ + CONFIGURE_COMMAND + "@qmake@" "${SOURCE_DIR}" + INSTALL_COMMAND + "$(MAKE)" install INSTALL_ROOT=${DESTDIR} + COMMAND + "${CMAKE_COMMAND}" -E copy + "/../${qt_openorienteering}/qtandroidextras/copyright" + "${DESTDIR}${CMAKE_STAGING_PREFIX}/share/doc/copyright/qtandroidextras-${qtandroidextras_version}.txt" + ]] +) + + + +# qtimageformats + +set(module Qt5Gui) +set(qtimageformats_version 5.15.1) +set(qtimageformats_download_hash SHA256=75e72b4c11df97af3ff64ed26df16864ce1220a1cc730e49074ab9d72f658568) +set(qtimageformats_patch_version ${qtimageformats_version}-1) +set(qtimageformats_patch_hash SHA256=8c0d588299addf1e5f1c6af2c208881892530efd05058e9d8cb06d235934f64d) +set(qtimageformats_base_url https://snapshot.debian.org/archive/debian/20200913T204208Z/pool/main/q/qtimageformats-opensource-src/) + +superbuild_package( + NAME qtimageformats + VERSION ${short_version} + DEPENDS qtimageformats-opensource-src-${qtimageformats_patch_version} +) + +superbuild_package( + NAME qtimageformats-opensource-src-patches + VERSION ${qtimageformats_patch_version} + + SOURCE + URL ${qtimageformats_base_url}qtimageformats-opensource-src_${qtimageformats_patch_version}.debian.tar.xz + URL_HASH ${qtimageformats_patch_hash} +) + +superbuild_package( + NAME qtimageformats-opensource-src + VERSION ${qtimageformats_patch_version} + DEPENDS + source:${qt_openorienteering} + source:qtimageformats-opensource-src-patches-${qtimageformats_patch_version} + qtbase-${short_version} + libwebp + tiff + + SOURCE + URL ${qtimageformats_base_url}qtimageformats-opensource-src_${qtimageformats_version}.orig.tar.xz + URL_HASH ${qtimageformats_download_hash} + + PATCH_COMMAND + "${CMAKE_COMMAND}" + -Dpackage=qtimageformats-opensource-src-patches-${qtimageformats_patch_version} + -P "${APPLY_PATCHES_SERIES}" + # Don't accidently used bundled copies + COMMAND + "${CMAKE_COMMAND}" -E remove_directory src/3rdparty/libtiff + + USING + USE_SYSTEM_QT + module + qmake + qt_openorienteering + qtimageformats_version + BUILD_CONDITION ${use_system_qt} + BUILD [[ + CONFIGURE_COMMAND + "@qmake@" "${SOURCE_DIR}" -- + -no-jasper + -no-mng + -system-tiff + -system-webp + INSTALL_COMMAND + "$(MAKE)" install INSTALL_ROOT=${DESTDIR} + COMMAND + "${CMAKE_COMMAND}" -E copy + "/../${qt_openorienteering}/qtimageformats/copyright" + "${DESTDIR}${CMAKE_STAGING_PREFIX}/share/doc/copyright/qtimageformats-${qtimageformats_version}.txt" + ]] +) + + + +# qtlocation + +set(module Qt5Location) +set(qtlocation_version ${version}+dfsg) +set(qtlocation_download_hash SHA256=afb8dc6b99a6f54152686df085ad8752b2c39d1e89d891af0b5f5eaeeb4d6987) +set(qtlocation_patch_version ${qtlocation_version}-1) +set(qtlocation_patch_hash SHA256=26695c4d8097419669d6b495ca48676d84b50ae08c68fdc1ff8d4e48cacfc7a3) +set(qtlocation_base_url https://snapshot.debian.org/archive/debian/20200911T205121Z/pool/main/q/qtlocation-opensource-src/) + +superbuild_package( + NAME qtlocation + VERSION ${short_version} + DEPENDS qtlocation-opensource-src-${qtlocation_patch_version} +) + +superbuild_package( + NAME qtlocation-opensource-src-patches + VERSION ${qtlocation_patch_version} + + SOURCE + URL ${qtlocation_base_url}qtlocation-opensource-src_${qtlocation_patch_version}.debian.tar.xz + URL_HASH ${qtlocation_patch_hash} +) + +superbuild_package( + NAME qtlocation-opensource-src + VERSION ${qtlocation_patch_version} + DEPENDS + source:${qt_openorienteering} + source:qtlocation-opensource-src-patches-${qtlocation_patch_version} + qtbase-${short_version} + qtserialport-${short_version} + + SOURCE + URL ${qtlocation_base_url}qtlocation-opensource-src_${qtlocation_version}.orig.tar.xz + URL_HASH ${qtlocation_download_hash} + + PATCH_COMMAND + "${CMAKE_COMMAND}" + -Dpackage=qtlocation-opensource-src-patches-${qtlocation_patch_version} + -P "${APPLY_PATCHES_SERIES}" + + USING + USE_SYSTEM_QT + module + qmake + qt_openorienteering + qtlocation_version + BUILD_CONDITION ${use_system_qt} + BUILD [[ + CONFIGURE_COMMAND + "@qmake@" "${SOURCE_DIR}" + INSTALL_COMMAND + "$(MAKE)" install INSTALL_ROOT=${DESTDIR} + COMMAND + "${CMAKE_COMMAND}" -E copy + "/../${qt_openorienteering}/qtlocation/copyright" + "${DESTDIR}${CMAKE_STAGING_PREFIX}/share/doc/copyright/qtlocation-${qtlocation_version}.txt" + ]] +) + + + +# qtsensors + +set(module Qt5Sensors) +set(qtsensors_version ${version}) +set(qtsensors_download_hash SHA256=8096b9ffe737434f9564432048f622f6be795619da4e1ed362ce26dddb2cea00) +set(qtsensors_patch_version ${qtsensors_version}-1) +set(qtsensors_patch_hash SHA256=336c3968441d92c225a106c606d6c157a3cedfe209e58dcb326f6d36a906fc38) +set(qtsensors_base_url https://snapshot.debian.org/archive/debian/20200911T205121Z/pool/main/q/qtsensors-opensource-src/) + +superbuild_package( + NAME qtsensors + VERSION ${short_version} + DEPENDS qtsensors-opensource-src-${qtsensors_patch_version} +) + +superbuild_package( + NAME qtsensors-opensource-src-patches + VERSION ${qtsensors_patch_version} + + SOURCE + URL ${qtsensors_base_url}qtsensors-opensource-src_${qtsensors_patch_version}.debian.tar.xz + URL_HASH ${qtsensors_patch_hash} +) + +superbuild_package( + NAME qtsensors-opensource-src + VERSION ${qtsensors_patch_version} + DEPENDS + source:${qt_openorienteering} + source:qtsensors-opensource-src-patches-${qtsensors_patch_version} + qtbase-${short_version} + + SOURCE + URL ${qtsensors_base_url}qtsensors-opensource-src_${qtsensors_version}.orig.tar.xz + URL_HASH ${qtsensors_download_hash} + + PATCH_COMMAND + "${CMAKE_COMMAND}" + -Dpackage=qtsensors-opensource-src-patches-${qtsensors_patch_version} + -P "${APPLY_PATCHES_SERIES}" + + USING + USE_SYSTEM_QT + module + qmake + qt_openorienteering + qtsensors_version + BUILD_CONDITION ${use_system_qt} + BUILD [[ + CONFIGURE_COMMAND + "@qmake@" "${SOURCE_DIR}" + INSTALL_COMMAND + "$(MAKE)" install INSTALL_ROOT=${DESTDIR} + COMMAND + "${CMAKE_COMMAND}" -E copy + "/../${qt_openorienteering}/qtsensors/copyright" + "${DESTDIR}${CMAKE_STAGING_PREFIX}/share/doc/copyright/qtsensors-${qtsensors_version}.txt" + ]] +) + + + +# qtserialport + +set(module Qt5SerialPort) +set(qtserialport_version 5.14.2) +set(qtserialport_download_hash SHA256=a6d977dd723ad4d3368b5163691405b8852f809974a96ec54103494e834aea21) +set(qtserialport_patch_version ${qtserialport_version}-2) +set(qtserialport_patch_hash SHA256=7ce6102edf72aee96a1e7386cad058fed1387e72e3bbb8d3d4d2b6a836ef2c48) +set(qtserialport_base_url https://snapshot.debian.org/archive/debian/20200624T145103Z/pool/main/q/qtserialport-opensource-src/) + +superbuild_package( + NAME qtserialport + VERSION ${short_version} + DEPENDS qtserialport-opensource-src-${qtserialport_patch_version} +) + +superbuild_package( + NAME qtserialport-opensource-src-patches + VERSION ${qtserialport_patch_version} + + SOURCE + URL ${qtserialport_base_url}qtserialport-opensource-src_${qtserialport_patch_version}.debian.tar.xz + URL_HASH ${qtserialport_patch_hash} +) + +superbuild_package( + NAME qtserialport-opensource-src + VERSION ${qtserialport_patch_version} + DEPENDS + source:${qt_openorienteering} + source:qtserialport-opensource-src-patches-${qtserialport_patch_version} + qtbase-${short_version} + + SOURCE + URL ${qtserialport_base_url}qtserialport-opensource-src_${qtserialport_version}.orig.tar.xz + URL_HASH ${qtserialport_download_hash} + + PATCH_COMMAND + "${CMAKE_COMMAND}" + -Dpackage=qtserialport-opensource-src-patches-${qtserialport_patch_version} + -P "${APPLY_PATCHES_SERIES}" + + USING + USE_SYSTEM_QT + module + qmake + qt_openorienteering + qtserialport_version + BUILD_CONDITION ${use_system_qt} + BUILD [[ + CONFIGURE_COMMAND + "@qmake@" "${SOURCE_DIR}" + INSTALL_COMMAND + "$(MAKE)" install INSTALL_ROOT=${DESTDIR} + COMMAND + "${CMAKE_COMMAND}" -E copy + "/../${qt_openorienteering}/qtserialport/copyright" + "${DESTDIR}${CMAKE_STAGING_PREFIX}/share/doc/copyright/qtserialport-${qtserialport_version}.txt" + ]] +) + + + +# qttools + +set(module Qt5LinguistTools) +set(qttools_version ${version}) +set(qttools_download_hash SHA256=c98ee5f0f980bf68cbf0c94d62434816a92441733de50bd9adbe9b9055f03498) +set(qttools_patch_version ${qttools_version}-1) +set(qttools_patch_hash SHA256=bfcba47e8c4c439830cb32542d053a9567c57a24cfc6c1210db68d9e3a2e5c0b) +set(qttools_base_url https://snapshot.debian.org/archive/debian/20200914T205536Z/pool/main/q/qttools-opensource-src/) + +superbuild_package( + NAME qttools + VERSION ${short_version} + DEPENDS qttools-opensource-src-${qttools_patch_version} +) + +superbuild_package( + NAME qttools-opensource-src-patches + VERSION ${qttools_patch_version} + + SOURCE + URL ${qttools_base_url}qttools-opensource-src_${qttools_patch_version}.debian.tar.xz + URL_HASH ${qttools_patch_hash} +) + +superbuild_package( + NAME qttools-opensource-src + VERSION ${qttools_patch_version} + DEPENDS + source:${qt_openorienteering} + source:qttools-opensource-src-patches-${qttools_patch_version} + qtbase-${short_version} + + SOURCE + URL ${qttools_base_url}qttools-opensource-src_${qttools_version}.orig.tar.xz + URL_HASH ${qttools_download_hash} + + PATCH_COMMAND + "${CMAKE_COMMAND}" + -Dpackage=qttools-opensource-src-patches-${qttools_patch_version} + -P "${APPLY_PATCHES_SERIES}" + + USING + USE_SYSTEM_QT + module + qmake + qt_openorienteering + qttools_version + BUILD_CONDITION ${use_system_qt} + BUILD [[ + CONFIGURE_COMMAND + "@qmake@" "${SOURCE_DIR}" + COMMAND + "${CMAKE_COMMAND}" -E make_directory src/linguist + COMMAND + "${CMAKE_COMMAND}" -E chdir src/linguist "@qmake@" "${SOURCE_DIR}/src/linguist" + $<$>:COMMAND + COMMAND + "${CMAKE_COMMAND}" -E make_directory src/assistant + COMMAND + "${CMAKE_COMMAND}" -E chdir src/assistant "@qmake@" "${SOURCE_DIR}/src/assistant" + > + BUILD_COMMAND + "$(MAKE)" -C src/linguist + $<$>:COMMAND + "$(MAKE)" -C src/assistant + sub-assistant-make_first + sub-qcollectiongenerator-make_first + sub-qhelpgenerator-make_first + > + INSTALL_COMMAND + "$(MAKE)" -C src/linguist + install + INSTALL_ROOT=${DESTDIR} + $<$>:COMMAND + "$(MAKE)" -C src/assistant + sub-assistant-install_subtargets + sub-qcollectiongenerator-install_subtargets + sub-qhelpgenerator-install_subtargets + INSTALL_ROOT=${DESTDIR} + > + COMMAND + "${CMAKE_COMMAND}" -E copy + "/../${qt_openorienteering}/qttools/copyright" + "${DESTDIR}${CMAKE_STAGING_PREFIX}/share/doc/copyright/qttools-${qttools_version}.txt" + ]] +) + + + +# qttranslations + +set(module Qt5Core) # Can't find qttranslations via CMake. +set(qttranslations_version ${version}) +set(qttranslations_download_hash SHA256=46e0c0e3a511fbcc803a4146204062e47f6ed43b34d98a3c27372a03b8746bd8) +set(qttranslations_patch_version ${qttranslations_version}-1) +set(qttranslations_patch_hash SHA256=aca5d19297d33aa3db2bea53db47860d09196b3e520c4952282d0800a91e9ec1) +set(qttranslations_base_url https://snapshot.debian.org/archive/debian/20200916T084220Z/pool/main/q/qttranslations-opensource-src/) + +superbuild_package( + NAME qttranslations + VERSION ${short_version} + DEPENDS qttranslations-opensource-src-${qttranslations_patch_version} +) + +superbuild_package( + NAME qttranslations-opensource-src-patches + VERSION ${qttranslations_patch_version} + + SOURCE + URL ${qttranslations_base_url}qttranslations-opensource-src_${qttranslations_patch_version}.debian.tar.xz + URL_HASH ${qttranslations_patch_hash} +) + +superbuild_package( + NAME qttranslations-opensource-src + VERSION ${qttranslations_patch_version} + DEPENDS + source:${qt_openorienteering} + source:qttranslations-opensource-src-patches-${qttranslations_patch_version} + qtbase-${short_version} + qttools-${short_version} + + SOURCE + URL ${qttranslations_base_url}qttranslations-opensource-src_${qttranslations_version}.orig.tar.xz + URL_HASH ${qttranslations_download_hash} + + PATCH_COMMAND + "${CMAKE_COMMAND}" + -Dpackage=qttranslations-opensource-src-patches-${qttranslations_patch_version} + -P "${APPLY_PATCHES_SERIES}" + + USING + USE_SYSTEM_QT + module + qmake + qt_openorienteering + qttranslations_version + BUILD_CONDITION ${use_system_qt} + BUILD [[ + CONFIGURE_COMMAND + "@qmake@" "${SOURCE_DIR}" + INSTALL_COMMAND + "$(MAKE)" install INSTALL_ROOT=${DESTDIR} + COMMAND + "${CMAKE_COMMAND}" -E copy + "/../${qt_openorienteering}/qttranslations/copyright" + "${DESTDIR}${CMAKE_STAGING_PREFIX}/share/doc/copyright/qttranslations-${qttranslations_version}.txt" + ]] +) + + + +# All + +superbuild_package( + NAME qt + VERSION ${version} + DEPENDS + qtandroidextras-${short_version} + qtbase-${short_version} + qtimageformats-${short_version} + qtlocation-${short_version} + qtsensors-${short_version} + qttools-${short_version} + qttranslations-${short_version} +) + + + +# Attribution maintenance, in git + +find_package(Git QUIET) +find_package(PythonInterp 3 QUIET) +if(GIT_EXECUTABLE AND PYTHONINTERP_FOUND) + superbuild_package( + NAME qt-${short_version}-openorienteering + VERSION git + DEPENDS + qttools-opensource-src-${qttools_patch_version} # for qtattributionsscanner + source:qtandroidextras-everywhere-src-${qtandroidextras_version} + source:qtbase-everywhere-src-${qtbase_patch_version} + source:qtimageformats-opensource-src-${qtimageformats_patch_version} + source:qtlocation-opensource-src-${qtlocation_patch_version} + source:qtsensors-opensource-src-${qtsensors_patch_version} + source:qtserialport-opensource-src-${qtserialport_patch_version} + source:qttools-opensource-src-${qttools_patch_version} + source:qttranslations-opensource-src-${qttranslations_patch_version} + + SOURCE + GIT_REPOSITORY https://github.com/OpenOrienteering/superbuild.git + GIT_TAG qt-${short_version}-openorienteering + + USING + patch_version + PYTHON_EXECUTABLE + qtandroidextras_version + qtbase_patch_version + qtimageformats_patch_version + qtlocation_patch_version + qtsensors_patch_version + qtserialport_patch_version + qttools_patch_version + qttranslations_patch_version + BUILD [[ + CMAKE_ARGS + "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" + "-DVERSION=${patch_version}" + "-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}" + "-Dqtandroidextras=qtandroidextras-everywhere-src-${qtandroidextras_version}" + "-Dqtbase=qtbase-everywhere-src-${qtbase_patch_version}" + "-Dqtimageformats=qtimageformats-opensource-src-${qtimageformats_patch_version}" + "-Dqtlocation=qtlocation-opensource-src-${qtlocation_patch_version}" + "-Dqtsensors=qtsensors-opensource-src-${qtsensors_patch_version}" + "-Dqtserialport=qtserialport-opensource-src-${qtserialport_patch_version}" + "-Dqttools=qttools-opensource-src-${qttools_patch_version}" + "-Dqttranslations=qttranslations-opensource-src-${qttranslations_patch_version}" + BUILD_COMMAND + "${CMAKE_COMMAND}" --build . --target update-copyright + BUILD_ALWAYS 1 + INSTALL_COMMAND "" + ]] + ) +endif()