From 513d2cae3ee4de860d4b1a1b866ba19601583ab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20B=C3=A1lint=20Misius?= Date: Tue, 23 Aug 2022 11:14:06 +0200 Subject: [PATCH] Update tpt-libs Also restructure meson.build and the ghactions workflow a bit, and enable -ffunction-sections and -fdata-sections. Note that starcatcher uploads have not been tested and most likely don't work. --- .github/build.sh | 390 +++++++------ .github/get-type.py | 27 - .github/invoke-vcvarsall.bat | 7 - .github/macaa64-ghactions.ini | 10 +- .github/prepare.py | 86 +++ .github/starcatcher-check.sh | 5 - .github/starcatcher-publish.sh | 7 +- .github/starcatcher-release.sh | 4 +- .github/vs-env.sh | 28 + .github/workflows/build.yaml | 288 +++------ android/build-apk.py | 4 +- android/cross/{arm64-v8a.ini => aarch64.ini} | 0 android/cross/{armeabi-v7a.ini => arm.ini} | 0 android/meson.build | 93 +++ cross-examples/android.ini | 6 +- cross-examples/macaa64.ini | 10 +- meson.build | 550 ++++++++---------- meson_options.txt | 29 +- resources/meson.build | 2 +- src/Config.template.h | 1 - src/client/Client.cpp | 3 +- src/client/GameSave.cpp | 1 + src/client/http/Request.h | 35 +- src/client/http/RequestManager.cpp | 4 +- src/client/http/meson.build | 2 +- src/config/powder/meson.build | 6 +- src/gui/font/FontEditor.cpp | 4 +- src/gui/preview/PreviewModel.cpp | 3 +- src/gui/update/UpdateActivity.cpp | 3 +- src/lua/LegacyLuaAPI.cpp | 4 +- src/lua/LuaScriptInterface.cpp | 3 +- src/lua/meson.build | 2 +- src/meson.build | 2 +- ...d-bionic-static-debug-v20220901212941.wrap | 6 + ...bionic-static-release-v20220901212941.wrap | 6 + ...in-macos-static-debug-v20220901212941.wrap | 6 + ...-macos-static-release-v20220901212941.wrap | 6 + ...lt-arm-and-gcc-static-v20220414193335.wrap | 6 - ...d-bionic-static-debug-v20220901212941.wrap | 6 + ...bionic-static-release-v20220901212941.wrap | 6 + ...-arm64-and-gcc-static-v20220414193335.wrap | 6 - ...-arm64-mac-gcc-static-v20220414193335.wrap | 6 - ...t-i686-and-gcc-static-v20220414193335.wrap | 6 - ...i686-win-msvc-dynamic-v20220414193335.wrap | 6 - ...-i686-win-msvc-static-v20220414193335.wrap | 6 - ...d-bionic-static-debug-v20220901212941.wrap | 6 + ...bionic-static-release-v20220901212941.wrap | 6 + ...ws-msvc-dynamic-debug-v20220901212941.wrap | 6 + ...-msvc-dynamic-release-v20220901212941.wrap | 6 + ...ows-msvc-static-debug-v20220901212941.wrap | 6 + ...s-msvc-static-release-v20220901212941.wrap | 6 + ...x86_64-and-gcc-static-v20220414193335.wrap | 6 - ...d-bionic-static-debug-v20220901212941.wrap | 6 + ...bionic-static-release-v20220901212941.wrap | 6 + ...in-macos-static-debug-v20220901212941.wrap | 6 + ...-macos-static-release-v20220901212941.wrap | 6 + ...x86_64-lin-gcc-static-v20220414193335.wrap | 6 - ...inux-gnu-static-debug-v20220901212941.wrap | 6 + ...ux-gnu-static-release-v20220901212941.wrap | 6 + ...x86_64-mac-gcc-static-v20220414193335.wrap | 6 - ..._64-win-mingw-dynamic-v20220414193335.wrap | 6 - ...6_64-win-mingw-static-v20220414193335.wrap | 6 - ...6_64-win-msvc-dynamic-v20220414193335.wrap | 6 - ...86_64-win-msvc-static-v20220414193335.wrap | 6 - ...s-mingw-dynamic-debug-v20220901212941.wrap | 6 + ...mingw-dynamic-release-v20220901212941.wrap | 6 + ...ws-mingw-static-debug-v20220901212941.wrap | 6 + ...-mingw-static-release-v20220901212941.wrap | 6 + ...ws-msvc-dynamic-debug-v20220901212941.wrap | 6 + ...-msvc-dynamic-release-v20220901212941.wrap | 6 + ...ows-msvc-static-debug-v20220901212941.wrap | 6 + ...s-msvc-static-release-v20220901212941.wrap | 6 + subprojects/update-wraps.sh | 19 + 73 files changed, 971 insertions(+), 901 deletions(-) delete mode 100644 .github/get-type.py delete mode 100644 .github/invoke-vcvarsall.bat create mode 100755 .github/prepare.py delete mode 100755 .github/starcatcher-check.sh create mode 100644 .github/vs-env.sh rename android/cross/{arm64-v8a.ini => aarch64.ini} (100%) rename android/cross/{armeabi-v7a.ini => arm.ini} (100%) create mode 100644 subprojects/tpt-libs-prebuilt-aarch64-android-bionic-static-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-aarch64-android-bionic-static-release-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-aarch64-darwin-macos-static-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-aarch64-darwin-macos-static-release-v20220901212941.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-arm-and-gcc-static-v20220414193335.wrap create mode 100644 subprojects/tpt-libs-prebuilt-arm-android-bionic-static-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-arm-android-bionic-static-release-v20220901212941.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-arm64-and-gcc-static-v20220414193335.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-arm64-mac-gcc-static-v20220414193335.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-i686-and-gcc-static-v20220414193335.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-i686-win-msvc-dynamic-v20220414193335.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-i686-win-msvc-static-v20220414193335.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86-android-bionic-static-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86-android-bionic-static-release-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86-windows-msvc-dynamic-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86-windows-msvc-dynamic-release-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86-windows-msvc-static-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86-windows-msvc-static-release-v20220901212941.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-x86_64-and-gcc-static-v20220414193335.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-android-bionic-static-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-android-bionic-static-release-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-darwin-macos-static-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-darwin-macos-static-release-v20220901212941.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-x86_64-lin-gcc-static-v20220414193335.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-linux-gnu-static-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-linux-gnu-static-release-v20220901212941.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-x86_64-mac-gcc-static-v20220414193335.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-x86_64-win-mingw-dynamic-v20220414193335.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-x86_64-win-mingw-static-v20220414193335.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-x86_64-win-msvc-dynamic-v20220414193335.wrap delete mode 100644 subprojects/tpt-libs-prebuilt-x86_64-win-msvc-static-v20220414193335.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-release-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-static-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-static-release-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-release-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-static-debug-v20220901212941.wrap create mode 100644 subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-static-release-v20220901212941.wrap create mode 100755 subprojects/update-wraps.sh diff --git a/.github/build.sh b/.github/build.sh index a36f2bc24..6d6b63a4c 100755 --- a/.github/build.sh +++ b/.github/build.sh @@ -1,234 +1,298 @@ -#!/bin/bash +#!/usr/bin/env bash set -euo pipefail IFS=$'\n\t' -if [ -z "${PLATFORM_SHORT-}" ]; then - >&2 echo "PLATFORM_SHORT not set (lin, mac, win, and)" +if [[ -z ${BSH_BUILD_PLATFORM-} ]]; then + >&2 echo "BSH_BUILD_PLATFORM not set" exit 1 fi -if [ -z "${MACHINE_SHORT-}" ]; then - >&2 echo "MACHINE_SHORT not set (x86_64, i686, arm64, arm)" +if [[ -z ${BSH_HOST_ARCH-} ]]; then + >&2 echo "BSH_HOST_ARCH not set" exit 1 fi -if [ -z "${TOOLSET_SHORT-}" ]; then - >&2 echo "TOOLSET_SHORT not set (gcc, clang, mingw)" +if [[ -z ${BSH_HOST_PLATFORM-} ]]; then + >&2 echo "BSH_HOST_PLATFORM not set" exit 1 fi -if [ -z "${STATIC_DYNAMIC-}" ]; then - >&2 echo "STATIC_DYNAMIC not set (static, dynamic)" +if [[ -z ${BSH_HOST_LIBC-} ]]; then + >&2 echo "BSH_HOST_LIBC not set" exit 1 fi -if [ -z "${RELNAME-}" ]; then - >&2 echo "RELNAME not set" +if [[ -z ${BSH_STATIC_DYNAMIC-} ]]; then + >&2 echo "BSH_STATIC_DYNAMIC not set" exit 1 fi -if [ -z "${RELTYPE-}" ]; then - >&2 echo "RELTYPE not set" +if [[ -z ${BSH_DEBUG_RELEASE-} ]]; then + >&2 echo "BSH_DEBUG_RELEASE not set" exit 1 fi -if [ -z "${MOD_ID-}" ]; then +if [[ -z ${RELEASE_NAME-} ]]; then + >&2 echo "RELEASE_NAME not set" + exit 1 +fi +if [[ -z ${RELEASE_TYPE-} ]]; then + >&2 echo "RELEASE_TYPE not set" + exit 1 +fi +if [[ -z ${MOD_ID-} ]]; then >&2 echo "MOD_ID not set" exit 1 fi - -if [ -z "${build_sh_init-}" ]; then - if [ $TOOLSET_SHORT == "msvc" ]; then - for i in C:/Program\ Files*/Microsoft\ Visual\ Studio/**/**/VC/Auxiliary/Build/vcvarsall.bat; do - vcvarsall_path=$i - done - if [ $MACHINE_SHORT == "x86_64" ]; then - x64_x86=x64 - else - x64_x86=x86 - fi - cat << BUILD_INIT_BAT > .github/build_init.bat -@echo off -call "${vcvarsall_path}" ${x64_x86} -bash -c 'build_sh_init=1 ./.github/build.sh' -BUILD_INIT_BAT - ./.github/build_init.bat - else - build_sh_init=1 ./.github/build.sh - fi - exit 0 +if [[ -z ${ASSET_PATH-} ]]; then + >&2 echo "ASSET_PATH not set" + exit 1 +fi +if [[ -z ${SEPARATE_DEBUG-} ]]; then + >&2 echo "SEPARATE_DEBUG not set" + exit 1 +fi +if [[ -z ${DEBUG_ASSET_PATH-} ]]; then + >&2 echo "DEBUG_ASSET_PATH not set" + exit 1 fi -if [ -d build ]; then +case $BSH_HOST_ARCH-$BSH_HOST_PLATFORM-$BSH_HOST_LIBC-$BSH_STATIC_DYNAMIC in +x86_64-linux-gnu-static) ;; +x86_64-linux-gnu-dynamic) ;; +x86_64-windows-mingw-static) ;; +x86_64-windows-mingw-dynamic) ;; +x86_64-windows-msvc-static) ;; +x86_64-windows-msvc-dynamic) ;; +x86-windows-msvc-static) ;; +x86-windows-msvc-dynamic) ;; +x86_64-darwin-macos-static) ;; +x86_64-darwin-macos-dynamic) ;; +aarch64-darwin-macos-static) ;; +aarch64-darwin-macos-dynamic) ;; +x86-android-bionic-static) ;; +x86_64-android-bionic-static) ;; +arm-android-bionic-static) ;; +aarch64-android-bionic-static) ;; +*) >&2 echo "configuration $BSH_HOST_ARCH-$BSH_HOST_PLATFORM-$BSH_HOST_LIBC-$BSH_STATIC_DYNAMIC is not supported" && exit 1;; +esac + +if [[ $BSH_HOST_PLATFORM == android ]]; then + android_platform=android-30 + if [[ -z "${JAVA_HOME_8_X64-}" ]]; then + >&2 echo "JAVA_HOME_8_X64 not set" + exit 1 + fi + if [[ -z "${ANDROID_SDK_ROOT-}" ]]; then + >&2 echo "ANDROID_SDK_ROOT not set" + exit 1 + fi + if [[ -z "${ANDROID_NDK_LATEST_HOME-}" ]]; then + >&2 echo "ANDROID_NDK_LATEST_HOME not set" + exit 1 + fi +fi + +if [[ $BSH_HOST_PLATFORM-$BSH_HOST_LIBC == windows-msvc ]]; then + case $BSH_HOST_ARCH in + x86_64) vs_env_arch=x64;; + x86) vs_env_arch=x86;; + esac + . ./.github/vs-env.sh $vs_env_arch +elif [[ $BSH_HOST_PLATFORM == darwin ]]; then + # may need export SDKROOT=$(xcrun --show-sdk-path --sdk macosx11.1) + CC=clang + CXX=clang++ + if [[ $BSH_HOST_ARCH == aarch64 ]]; then + export MACOSX_DEPLOYMENT_TARGET=11.0 + CC+=" -arch arm64" + CXX+=" -arch arm64" + else + export MACOSX_DEPLOYMENT_TARGET=10.9 + CC+=" -arch x86_64" + CXX+=" -arch x86_64" + fi + export CC + export CXX +elif [[ $BSH_HOST_PLATFORM == android ]]; then + case $BSH_HOST_ARCH in + x86_64) android_toolchain_prefix=x86_64-linux-android ; android_system_version=21; android_arch_abi=x86_64 ;; + x86) android_toolchain_prefix=i686-linux-android ; android_system_version=19; android_arch_abi=x86 ;; + aarch64) android_toolchain_prefix=aarch64-linux-android ; android_system_version=21; android_arch_abi=arm64-v8a ;; + arm) android_toolchain_prefix=armv7a-linux-androideabi; android_system_version=19; android_arch_abi=armeabi-v7a;; + esac + android_toolchain_dir=$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64 + CC=$android_toolchain_dir/bin/$android_toolchain_prefix$android_system_version-clang + CXX=$android_toolchain_dir/bin/$android_toolchain_prefix$android_system_version-clang++ + LD=$android_toolchain_dir/bin/$android_toolchain_prefix-ld + AR=$android_toolchain_dir/bin/llvm-ar + echo $AR + CC+=" -fPIC" + CXX+=" -fPIC" + LD+=" -fPIC" + export CC + export CXX + export LD + export AR +else + export CC=gcc + export CXX=g++ +fi + +if [[ -d build ]]; then rm -r build fi -other_flags=$'\t-Dmod_id=' -other_flags+=$MOD_ID -bin_suffix= -bin_prefix= -static_flag= -if [ $STATIC_DYNAMIC == "static" ]; then - static_flag=-Dstatic=prebuilt - if [ $PLATFORM_SHORT == "win" ]; then - other_flags+=$'\t-Db_vscrt=static_from_buildtype' +meson_configure=meson +if [[ $BSH_DEBUG_RELEASE == release ]]; then + meson_configure+=$'\t'-Dbuildtype=debugoptimized +fi +meson_configure+=$'\t'-Db_strip=false +meson_configure+=$'\t'-Db_pie=false +if [[ $BSH_HOST_PLATFORM-$BSH_HOST_LIBC != windows-msvc ]]; then + meson_configure+=$'\t'-Dc_args=[\'-ffunction-sections\',\'-fdata-sections\'] + meson_configure+=$'\t'-Dcpp_args=[\'-ffunction-sections\',\'-fdata-sections\'] + if [[ $BSH_HOST_PLATFORM == darwin ]]; then + meson_configure+=$'\t'-Dc_link_args=[\'-Wl,-dead_strip\'] + meson_configure+=$'\t'-Dcpp_link_args=[\'-Wl,-dead_strip\'] + else + meson_configure+=$'\t'-Dc_link_args=[\'-Wl,--gc-sections\'] + meson_configure+=$'\t'-Dcpp_link_args=[\'-Wl,--gc-sections\'] fi fi -if [ $PLATFORM_SHORT == "lin" ]; then - # We use gcc on lin; sadly, gcc + lto + libstdc++ + pthread = undefined reference to - # pthread_create, thanks to weak symbols in libstdc++.so (or something). See - # https://gcc.gnu.org/legacy-ml/gcc-help/2017-03/msg00081.html - other_flags+=$'\t-Db_asneeded=false\t-Dcpp_link_args=-Wl,--no-as-needed' - if [ $STATIC_DYNAMIC == "static" ] && [ $TOOLSET_SHORT == "gcc" ]; then - other_flags+=$'\t-Dbuild_render=true\t-Dbuild_font=true' +meson_configure+=$'\t'-Dworkaround_gcc_no_pie=true +meson_configure+=$'\t'-Db_staticpic=false +meson_configure+=$'\t'-Dinstall_check=true +meson_configure+=$'\t'-Dmod_id=$MOD_ID +if [[ $BSH_HOST_ARCH-$BSH_HOST_PLATFORM-$BSH_HOST_LIBC-$BSH_STATIC_DYNAMIC == x86_64-linux-gnu-static ]]; then + meson_configure+=$'\t'-Dbuild_render=true + meson_configure+=$'\t'-Dbuild_font=true +fi +if [[ $BSH_STATIC_DYNAMIC == static ]]; then + meson_configure+=$'\t'-Dstatic=prebuilt + if [[ $BSH_HOST_PLATFORM == windows ]]; then + meson_configure+=$'\t'-Db_vscrt=static_from_buildtype fi fi -if [ $TOOLSET_SHORT == "mingw" ]; then - bin_suffix=$bin_suffix.exe +stable_or_beta=no +if [[ $RELEASE_TYPE == beta ]]; then + meson_configure+=$'\t'-Dbeta=true + stable_or_beta=yes fi -if [ $PLATFORM_SHORT == "and" ]; then - bin_suffix=$bin_suffix.apk +if [[ $RELEASE_TYPE == stable ]]; then + stable_or_beta=yes fi -stable_or_beta="n" -if [ "$RELTYPE" == "beta" ]; then - other_flags+=$'\t-Dbeta=true' - stable_or_beta="y" +if [[ $RELEASE_TYPE == snapshot ]]; then + meson_configure+=$'\t'-Dsnapshot=true + meson_configure+=$'\t'-Dsnapshot_id=$(echo $RELEASE_NAME | cut -d '-' -f 2) # $RELEASE_NAME is snapshot-X fi -if [ "$RELTYPE" == "stable" ]; then - stable_or_beta="y" -fi -if [ "$RELTYPE" == "snapshot" ]; then - other_flags+=$'\t-Dsnapshot=true\t-Dsnapshot_id=' - other_flags+=`echo $RELNAME | cut -d '-' -f 2` # $RELNAME is snapshot-X -fi -if [ "$RELTYPE" == "snapshot" ] && [ "$MOD_ID" != "0" ]; then +if [[ $RELEASE_TYPE == snapshot ]] && [[ $MOD_ID != 0 ]]; then >&2 echo "mods and snapshots do not mix" exit 1 fi -if [ "$stable_or_beta" == "y" ] && [ "$MOD_ID" != "0" ]; then +if [[ $stable_or_beta == yes ]] && [[ $MOD_ID != 0 ]]; then # mods and snapshots both check their snapshot_id against whatever version starcatcher.us/TPT has - other_flags+=$'\t-Dsnapshot_id=' - other_flags+=`echo $RELNAME | cut -d '.' -f 3` # $RELNAME is vX.Y.Z + meson_configure+=$'\t'-Dsnapshot_id=$(echo $RELEASE_NAME | cut -d '.' -f 3) # $RELEASE_NAME is vX.Y.Z fi -if [ "$RELTYPE" == "snapshot" ] || [ "$MOD_ID" != "0" ]; then - other_flags+=$'\t-Dupdate_server=starcatcher.us/TPT' +if [[ $RELEASE_TYPE == snapshot ]] || [[ $MOD_ID != 0 ]]; then + meson_configure+=$'\t'-Dupdate_server=starcatcher.us/TPT fi -if [ "$RELTYPE" != "dev" ]; then - other_flags+=$'\t-Dignore_updates=false' +if [[ $RELEASE_TYPE != dev ]]; then + meson_configure+=$'\t'-Dignore_updates=false fi -lto_flag=-Db_lto=true -if [ $TOOLSET_SHORT == "mingw" ]; then - # This simply doesn't work with MinGW. I have no idea why and I also don't care. - lto_flag= - if [ $PLATFORM_SHORT == "lin" ]; then - other_flags+=$'\t--cross-file=.github/mingw-ghactions.ini' +if [[ $BSH_HOST_PLATFORM-$BSH_HOST_LIBC == windows-mingw ]]; then + if [[ $BSH_HOST_PLATFORM == linux ]]; then + meson_configure+=$'\t'--cross-file=.github/mingw-ghactions.ini + fi +else + # LTO simply doesn't work with MinGW. I have no idea why and I also don't care. + meson_configure+=$'\t'-Db_lto=true +fi +if [[ $BSH_HOST_PLATFORM == darwin ]]; then + export MACOSX_DEPLOYMENT_TARGET=10.9 + if [[ $BSH_HOST_ARCH == aarch64 ]]; then + export MACOSX_DEPLOYMENT_TARGET=11.0 + meson_configure+=$'\t'--cross-file=.github/macaa64-ghactions.ini fi fi -if [ $PLATFORM_SHORT == "mac" ]; then - macosx_version_min=10.9 - if [ $MACHINE_SHORT == "arm64" ]; then - macosx_version_min=10.15 - other_flags+=$'\t--cross-file=.github/macaa64-ghactions.ini' - fi - export CFLAGS=-mmacosx-version-min=$macosx_version_min - export CXXFLAGS=-mmacosx-version-min=$macosx_version_min - export LDFLAGS=-mmacosx-version-min=$macosx_version_min -fi -powder_bin=${bin_prefix}powder$bin_suffix -if [ "$RELTYPE" == "tptlibsdev" ]; then - if [ -z "${GITHUB_REPOSITORY_OWNER-}" ]; then - >&2 echo "GITHUB_REPOSITORY_OWNER not set (whose tpt-libs to clone?)" +if [[ $RELEASE_TYPE == tptlibsdev ]] && ([[ $BSH_HOST_PLATFORM == windows ]] || [[ $BSH_STATIC_DYNAMIC == static ]]); then + if [[ -z "${GITHUB_REPOSITORY_OWNER-}" ]]; then + >&2 echo "GITHUB_REPOSITORY_OWNER not set" exit 1 fi - tptlibsbranch=`echo $RELNAME | cut -d '-' -f 2-` # $RELNAME is tptlibsdev-BRANCH - if [ ! -d tpt-libs ]; then - git clone https://github.com/$GITHUB_REPOSITORY_OWNER/tpt-libs --branch $tptlibsbranch - fi - cd tpt-libs - quad=$MACHINE_SHORT-$PLATFORM_SHORT-$TOOLSET_SHORT-$STATIC_DYNAMIC - if [ ! -d patches/$quad ]; then - cd .. - echo "no prebuilt libraries for this configuration" > $powder_bin + if [[ "$BSH_HOST_ARCH-$BSH_HOST_PLATFORM-$BSH_HOST_LIBC-$BSH_STATIC_DYNAMIC $BSH_BUILD_PLATFORM" == "x86_64-windows-mingw-dynamic linux" ]]; then + >&2 echo "this configuration is not supported in tptlibsdev mode" + touch $ASSET_PATH exit 0 fi + tptlibsbranch=$(echo $RELEASE_NAME | cut -d '-' -f 2-) # $RELEASE_NAME is tptlibsdev-BRANCH + if [[ ! -d build-tpt-libs/tpt-libs ]]; then + mkdir -p build-tpt-libs + cd build-tpt-libs + git clone https://github.com/$GITHUB_REPOSITORY_OWNER/tpt-libs --branch $tptlibsbranch --depth 1 + cd .. + fi tpt_libs_vtag=v00000000000000 - if [ ! -f .ok ]; then - VTAG=$tpt_libs_vtag ./build.sh + if [[ ! -f build-tpt-libs/tpt-libs/.ok ]]; then + cd build-tpt-libs/tpt-libs + BSH_VTAG=$tpt_libs_vtag ./build.sh touch .ok - cd ../subprojects - if [ -d tpt-libs-prebuilt-$quad-$tpt_libs_vtag ]; then - rm -r tpt-libs-prebuilt-$quad-$tpt_libs_vtag - fi - 7z x ../tpt-libs/temp/libraries.zip + cd ../../subprojects + for i in tpt-libs-prebuilt-*; do + if [[ -d $i ]]; then + rm -r $i + fi + done + 7z x ../build-tpt-libs/tpt-libs/temp/libraries.zip + cd .. fi - cd .. - other_flags+=$'\t-Dtpt_libs_vtag=' - other_flags+=$tpt_libs_vtag + meson_configure+=$'\t'-Dtpt_libs_vtag=$tpt_libs_vtag fi -if [ $PLATFORM_SHORT == "and" ]; then - ANDROIDPLATFORM=android-30 # this should come from tpt-libs, see https://github.com/The-Powder-Toy/tpt-libs/issues/2 - other_flags+=$'\t--cross-file=' - if [ $MACHINE_SHORT == "x86_64" ]; then - other_flags+=android/cross/x86_64.ini - fi - if [ $MACHINE_SHORT == "i686" ]; then - other_flags+=android/cross/x86.ini - fi - if [ $MACHINE_SHORT == "arm64" ]; then - other_flags+=android/cross/arm64-v8a.ini - fi - if [ $MACHINE_SHORT == "arm" ]; then - other_flags+=android/cross/armeabi-v7a.ini - fi - if [ -z "${JAVA_HOME_8_X64-}" ]; then - >&2 echo "JAVA_HOME_8_X64 not set (where is your java sdk?)" - exit 1 - fi - if [ -z "${ANDROID_SDK_ROOT-}" ]; then - >&2 echo "ANDROID_SDK_ROOT not set (where is your android sdk?)" - exit 1 - fi - if [ -z "${ANDROID_NDK_LATEST_HOME-}" ]; then - >&2 echo "ANDROID_NDK_LATEST_HOME not set (where is your android ndk?)" - exit 1 - fi +if [[ $BSH_HOST_PLATFORM == android ]]; then + android_platform=android-30 + meson_configure+=$'\t'--cross-file=android/cross/$BSH_HOST_ARCH.ini cat << ANDROID_INI > .github/android-ghactions.ini [constants] andriod_ndk_toolchain_bin = '$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin' andriod_sdk_build_tools = '$ANDROID_SDK_ROOT/build-tools/32.0.0' [properties] -android_platform_jar = '$ANDROID_SDK_ROOT/platforms/$ANDROIDPLATFORM/android.jar' +# android_ndk_toolchain_prefix comes from the correct cross-file in ./android/cross +android_ndk_toolchain_prefix = android_ndk_toolchain_prefix +android_platform = '$android_platform' +android_platform_jar = '$ANDROID_SDK_ROOT/platforms/' + android_platform + '/android.jar' +java_runtime_jar = '$JAVA_HOME_8_X64/jre/lib/rt.jar' [binaries] # android_ndk_toolchain_prefix comes from the correct cross-file in ./android/cross c = andriod_ndk_toolchain_bin / (android_ndk_toolchain_prefix + 'clang') cpp = andriod_ndk_toolchain_bin / (android_ndk_toolchain_prefix + 'clang++') strip = andriod_ndk_toolchain_bin / 'llvm-strip' +javac = '$JAVA_HOME_8_X64/bin/javac' +jar = '$JAVA_HOME_8_X64/bin/jar' d8 = andriod_sdk_build_tools / 'd8' aapt = andriod_sdk_build_tools / 'aapt' aapt2 = andriod_sdk_build_tools / 'aapt2' zipalign = andriod_sdk_build_tools / 'zipalign' apksigner = andriod_sdk_build_tools / 'apksigner' ANDROID_INI - other_flags+=$'\t--cross-file=.github/android-ghactions.ini' - cat << JDK_INI > .github/jdk.ini -[properties] -java_runtime_jar = '$JAVA_HOME_8_X64/jre/lib/rt.jar' - -[binaries] -javac = '$JAVA_HOME_8_X64/bin/javac' -jar = '$JAVA_HOME_8_X64/bin/jar' -JDK_INI - other_flags+=$'\t--cross-file=.github/jdk.ini' - other_flags+=$'\t-Dhttp=false' + meson_configure+=$'\t'--cross-file=.github/android-ghactions.ini + meson_configure+=$'\t'-Dhttp=false fi -meson -Dbuildtype=release -Db_pie=false -Dworkaround_gcc_no_pie=true -Db_staticpic=false $lto_flag $static_flag -Dinstall_check=true $other_flags build +$meson_configure build cd build -ninja -if [ $PLATFORM_SHORT == "and" ]; then - $ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip libpowder.so -elif [ $PLATFORM_SHORT != "win" ]; then - strip $powder_bin +ninja -v +strip=strip +objcopy=objcopy +strip_target=$ASSET_PATH +if [[ $BSH_HOST_PLATFORM == android ]]; then + strip=$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-$strip + objcopy=$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-$objcopy + strip_target=libpowder.so fi -if [ $PLATFORM_SHORT == "and" ]; then +if [[ $SEPARATE_DEBUG == yes ]] && [[ $BSH_HOST_PLATFORM-$BSH_HOST_LIBC != windows-msvc ]]; then + $objcopy --only-keep-debug $strip_target $DEBUG_ASSET_PATH + $strip --strip-debug --strip-unneeded $strip_target + $objcopy --add-gnu-debuglink $DEBUG_ASSET_PATH $strip_target +fi +if [[ $BSH_HOST_PLATFORM == android ]]; then $JAVA_HOME_8_X64/bin/keytool -genkeypair -keystore keystore.jks -alias androidkey -validity 10000 -keyalg RSA -keysize 2048 -keypass bagelsbagels -storepass bagelsbagels -dname "CN=nobody" - meson configure -Dandroid_keystore=`readlink -f keystore.jks` - ANDROID_KEYSTORE_PASS=bagelsbagels ninja powder.apk + meson configure -Dandroid_keystore=$(realpath keystore.jks) + ANDROID_KEYSTORE_PASS=bagelsbagels ninja android/powder.apk + mv android/powder.apk powder.apk fi -cp $powder_bin .. diff --git a/.github/get-type.py b/.github/get-type.py deleted file mode 100644 index bb110d100..000000000 --- a/.github/get-type.py +++ /dev/null @@ -1,27 +0,0 @@ -import re -import sys - -ref = sys.argv[1] - -match_stable = re.fullmatch(r'refs/tags/v([0-9]+)\.([0-9]+)\.([0-9]+)', ref) -match_beta = re.fullmatch(r'refs/tags/v([0-9]+)\.([0-9]+)\.([0-9]+)b', ref) -match_tptlibsdev = re.fullmatch(r'refs/heads/tptlibsdev-(.*)', ref) -match_snapshot = re.fullmatch(r'refs/tags/snapshot-([0-9]+)', ref) -if match_stable: - print('::set-output name=TYPE::stable') - print('::set-output name=NAME::v%s.%s.%s' % (match_stable.group(1), match_stable.group(2), match_stable.group(3))) -elif match_beta: - print('::set-output name=TYPE::beta') - print('::set-output name=NAME::v%s.%s.%sb' % (match_beta.group(1), match_beta.group(2), match_beta.group(3))) -elif match_snapshot: - print('::set-output name=TYPE::snapshot') - print('::set-output name=NAME::snapshot-%s' % match_snapshot.group(1)) -elif match_tptlibsdev: - print('::set-output name=TYPE::tptlibsdev') - print('::set-output name=NAME::tptlibsdev-%s' % match_tptlibsdev.group(1)) -else: - print('::set-output name=TYPE::dev') - print('::set-output name=NAME::dev') - -with open('.github/mod_id.txt') as f: - print('::set-output name=MOD_ID::' + f.read()) diff --git a/.github/invoke-vcvarsall.bat b/.github/invoke-vcvarsall.bat deleted file mode 100644 index c3d0e741a..000000000 --- a/.github/invoke-vcvarsall.bat +++ /dev/null @@ -1,7 +0,0 @@ -@echo off - -call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86 -echo ::set-env name=PATH::%PATH% -echo ::set-env name=CC::cl -echo ::set-env name=CXX::cl -exit diff --git a/.github/macaa64-ghactions.ini b/.github/macaa64-ghactions.ini index d23de75d5..a3b49975b 100644 --- a/.github/macaa64-ghactions.ini +++ b/.github/macaa64-ghactions.ini @@ -1,12 +1,6 @@ -[built-in options] -c_args = [ '-arch', 'arm64' ] -cpp_args = [ '-arch', 'arm64' ] -c_link_args = [ '-arch', 'arm64' ] -cpp_link_args = [ '-arch', 'arm64' ] - [binaries] -c = 'clang' -cpp = 'clang++' +c = [ 'clang', '-arch', 'arm64' ] +cpp = [ 'clang++', '-arch', 'arm64' ] strip = 'strip' [host_machine] diff --git a/.github/prepare.py b/.github/prepare.py new file mode 100755 index 000000000..4d079de96 --- /dev/null +++ b/.github/prepare.py @@ -0,0 +1,86 @@ +import datetime +import json +import os +import re +import sys + +ref = os.getenv('GITHUB_REF') +publish_hostport = os.getenv('PUBLISH_HOSTPORT') + +match_stable = re.fullmatch(r'refs/tags/v([0-9]+)\.([0-9]+)\.([0-9]+)', ref) +match_beta = re.fullmatch(r'refs/tags/v([0-9]+)\.([0-9]+)\.([0-9]+)b', ref) +match_snapshot = re.fullmatch(r'refs/tags/snapshot-([0-9]+)', ref) +match_tptlibsdev = re.fullmatch(r'refs/heads/tptlibsdev-(.*)', ref) +if match_stable: + release_type = 'stable' + release_name = 'v%s.%s.%s' % (match_stable.group(1), match_stable.group(2), match_stable.group(3)) +elif match_beta: + release_type = 'beta' + release_name = 'v%s.%s.%sb' % (match_beta.group(1), match_beta.group(2), match_beta.group(3)) +elif match_snapshot: + release_type = 'snapshot' + release_name = 'snapshot-%s' % match_snapshot.group(1) +elif match_tptlibsdev: + release_type = 'tptlibsdev' + release_name = 'tptlibsdev-%s' % match_tptlibsdev.group(1) +else: + release_type = 'dev' + release_name = 'dev' + +print('::set-output name=release_type::' + release_type) +print('::set-output name=release_name::' + release_name) + +with open('.github/mod_id.txt') as f: + print('::set-output name=mod_id::' + f.read()) + +configurations = [] +for bsh_host_arch, bsh_host_platform, bsh_host_libc, bsh_static_dynamic, bsh_build_platform, runs_on, package_suffix, publish, artifact, debug_suffix, starcatcher_name in [ + ( 'x86_64', 'linux', 'gnu', 'static', 'linux', 'ubuntu-18.04', '', True, True, '.dbg', '' ), + ( 'x86_64', 'linux', 'gnu', 'dynamic', 'linux', 'ubuntu-18.04', '', False, False, None, '' ), +# ubuntu-20.04 doesn't have windows TLS headers somehow and I haven't yet figured out how to get them +# ( 'x86_64', 'windows', 'mingw', 'static', 'linux', 'ubuntu-20.04', '', False, True, '.dbg', '' ), + ( 'x86_64', 'windows', 'mingw', 'dynamic', 'linux', 'ubuntu-20.04', '', False, False, None, '' ), + ( 'x86_64', 'windows', 'mingw', 'static', 'windows', 'windows-2019', '.exe', False, True, '.dbg', '' ), + ( 'x86_64', 'windows', 'mingw', 'dynamic', 'windows', 'windows-2019', '.exe', False, False, None, '' ), + ( 'x86_64', 'windows', 'msvc', 'static', 'windows', 'windows-2019', '.exe', True, True, '.pdb', '' ), + ( 'x86_64', 'windows', 'msvc', 'dynamic', 'windows', 'windows-2019', '.exe', False, False, None, '' ), + ( 'x86', 'windows', 'msvc', 'static', 'windows', 'windows-2019', '.exe', True, True, '.pdb', '' ), + ( 'x86', 'windows', 'msvc', 'dynamic', 'windows', 'windows-2019', '.exe', False, False, None, '' ), +# I have no idea how to separate debug info on macos + ( 'x86_64', 'darwin', 'macos', 'static', 'darwin', 'macos-11.0', '', True, True, None, '' ), + ( 'x86_64', 'darwin', 'macos', 'dynamic', 'darwin', 'macos-11.0', '', False, False, None, '' ), + ( 'aarch64', 'darwin', 'macos', 'static', 'darwin', 'macos-11.0', '', True, True, None, '' ), +# macos-11.0 is x86_64 and I haven't yet figured out how to get homebrew to install aarch64 libs on x86_64 +# ( 'aarch64', 'darwin', 'macos', 'dynamic', 'darwin', 'macos-11.0', '', False, False, None, '' ), + ( 'x86', 'android', 'bionic', 'static', 'linux', 'ubuntu-18.04', '.apk', True, True, '.dbg', '' ), + ( 'x86_64', 'android', 'bionic', 'static', 'linux', 'ubuntu-18.04', '.apk', True, True, '.dbg', '' ), + ( 'arm', 'android', 'bionic', 'static', 'linux', 'ubuntu-18.04', '.apk', True, True, '.dbg', '' ), + ( 'aarch64', 'android', 'bionic', 'static', 'linux', 'ubuntu-18.04', '.apk', True, True, '.dbg', '' ), +]: + separate_debug = True + if not debug_suffix: + debug_suffix = '' + separate_debug = False + for debug_release in [ 'debug', 'release' ]: + configurations.append({ + 'bsh_build_platform': bsh_build_platform, + 'bsh_host_arch': bsh_host_arch, + 'bsh_host_platform': bsh_host_platform, + 'bsh_host_libc': bsh_host_libc, + 'bsh_static_dynamic': bsh_static_dynamic, + 'bsh_debug_release': debug_release, + 'runs_on': runs_on, + 'package_suffix': package_suffix, + 'publish': publish and 'yes' or 'no', + 'artifact': artifact and 'yes' or 'no', + 'separate_debug': separate_debug and 'yes' or 'no', + 'asset_path': f'powder{package_suffix}', + 'asset_name': f'powder-{release_name}-{bsh_host_arch}-{bsh_host_platform}-{bsh_host_libc}{package_suffix}', + 'debug_asset_path': f'powder{debug_suffix}', + 'debug_asset_name': f'powder-{release_name}-{bsh_host_arch}-{bsh_host_platform}-{bsh_host_libc}{debug_suffix}', + 'starcatcher_name': starcatcher_name, + }) + +print('::set-output name=matrix::' + json.dumps({ 'include': configurations })) +print('::set-output name=do_release::' + (ref.startswith('refs/tags/v') and 'yes' or 'no')) +print('::set-output name=do_publish::' + ((publish_hostport and (match_stable or match_beta or match_snapshot)) and 'yes' or 'no')) diff --git a/.github/starcatcher-check.sh b/.github/starcatcher-check.sh deleted file mode 100755 index 1905c827f..000000000 --- a/.github/starcatcher-check.sh +++ /dev/null @@ -1,5 +0,0 @@ -if [ ! -z "$STARCATCHER_PUBLISH_HOSTPORT" ]; then - echo ::set-output name=can_publish::yes -else - echo ::set-output name=can_publish::no -fi diff --git a/.github/starcatcher-publish.sh b/.github/starcatcher-publish.sh index 59c61313c..19e733bfc 100755 --- a/.github/starcatcher-publish.sh +++ b/.github/starcatcher-publish.sh @@ -1,5 +1,4 @@ -#!/bin/sh +#!/usr/bin/env bash -cd "$STARCATCHER_PUBLISH_FILENAME" -mv "$1" "$STARCATCHER_PUBLISH_FILENAME" -LFTP_PASSWORD=$STARCATCHER_PUBLISH_PASSWORD lftp -c "open --user '$STARCATCHER_PUBLISH_USERNAME' --env-password -e 'set ftp:ssl-protect-data true; set ssl:verify-certificate false; put \"$STARCATCHER_PUBLISH_FILENAME\";' ftp://$STARCATCHER_PUBLISH_HOSTPORT" +cp "$ASSET_PATH" "$PUBLISH_FILENAME" +LFTP_PASSWORD=$PUBLISH_PASSWORD lftp -c "open --user '$PUBLISH_USERNAME' --env-password -e 'set ftp:ssl-protect-data true; set ssl:verify-certificate false; put \"$PUBLISH_FILENAME\";' ftp://$PUBLISH_HOSTPORT" diff --git a/.github/starcatcher-release.sh b/.github/starcatcher-release.sh index 92f7f69ca..7e99bf78a 100755 --- a/.github/starcatcher-release.sh +++ b/.github/starcatcher-release.sh @@ -1,6 +1,6 @@ -#!/bin/sh +#!/usr/bin/env bash -curl $1 > perform_release +curl "https://starcatcher.us/TPT/perform-release.lua?mod=$MOD_ID&type=$RELEASE_TYPE&name=$RELEASE_NAME&commit=$GITHUB_SHA" > perform_release if ! grep "Release complete" < perform_release > /dev/null; then cat perform_release exit 1 diff --git a/.github/vs-env.sh b/.github/vs-env.sh new file mode 100644 index 000000000..01d5e9402 --- /dev/null +++ b/.github/vs-env.sh @@ -0,0 +1,28 @@ +set -euo pipefail +IFS=$'\t\n' + +IFS=$'\t\n\r' +for i in $("$(env | grep '^ProgramFiles(x86)=' | cut -d = -f 2-)/Microsoft Visual Studio/Installer/vswhere.exe" \ + -sort \ + -prerelease \ + -requiresAny \ + -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 \ + -requires Microsoft.VisualStudio.Workload.WDExpress \ + -products \* \ + -utf8 \ + -property installationPath); do + if ! [ -z ${2-} ]; then + if ! echo $i | grep $2 >/dev/null; then + continue + fi + fi + vs_install_dir=$i + break +done +IFS=$'\t\n' + +for i in $(MSYS_NO_PATHCONV=1 cmd /c "$vs_install_dir\\VC\\Auxiliary\\Build\\vcvarsall.bat" $1 \& env \& exit /b); do + set +e + export "$i" 2>/dev/null + set -e +done diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 71df05fcc..9c49886ab 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -13,248 +13,118 @@ on: - '*' jobs: - release: + prepare: runs-on: ubuntu-latest outputs: - upload_url: ${{ steps.create_release.outputs.upload_url }} - can_publish: ${{ steps.starcatcher_check.outputs.can_publish }} + release_upload_url: ${{ steps.create_release.outputs.upload_url }} + do_release: ${{ steps.prepare.outputs.do_release }} + matrix: ${{ steps.prepare.outputs.matrix }} + release_type: ${{ steps.prepare.outputs.release_type }} + release_name: ${{ steps.prepare.outputs.release_name }} + mod_id: ${{ steps.prepare.outputs.mod_id }} + do_publish: ${{ steps.prepare.outputs.do_publish }} steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: '3.10' - - id: get_type - run: python3 ./.github/get-type.py ${{ github.ref }} - - id: create_release - if: steps.get_type.outputs.TYPE != 'dev' + - id: prepare + run: python ./.github/prepare.py + env: + PUBLISH_HOSTPORT: ${{ secrets.STARCATCHER_PUBLISH_HOSTPORT }} + GITHUB_REF: ${{ github.ref }} + - if: steps.prepare.outputs.do_release == 'yes' + id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} - release_name: ${{ steps.get_type.outputs.NAME }} + release_name: ${{ steps.prepare.outputs.release_name }} draft: true prerelease: false - - id: starcatcher_check - if: steps.get_type.outputs.TYPE != 'dev' - run: bash -c './.github/starcatcher-check.sh' - env: - STARCATCHER_PUBLISH_HOSTPORT: ${{ secrets.STARCATCHER_PUBLISH_HOSTPORT }} build: - runs-on: ${{ matrix.os }} - needs: [release] + runs-on: ${{ matrix.runs_on }} + needs: [prepare] strategy: fail-fast: false - matrix: -# | x86_64 | i686 | arm64 | arm -# | lin | mac | win | and | lin | mac | win | and | lin | mac | win | and | lin | mac | win | and -# ---------------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------ -# gcc | | | NO | | NO | NO | NO | | NO | | NO | | NO | NO | NO | -# static msvc | NO | NO | | NO | NO | NO | | NO | NO | NO | NO | NO | NO | NO | NO | NO -# mingw | | NO | | NO | NO | NO | NO | NO | NO | NO | NO | NO | NO | NO | NO | NO -# gcc | | | NO | NO | NO | NO | NO | NO | NO |NO [1]| NO | NO | NO | NO | NO | NO -# dynamic msvc | NO | NO | | NO | NO | NO | | NO | NO | NO | NO | NO | NO | NO | NO | NO -# mingw | | NO | | NO | NO | NO | NO | NO | NO | NO | NO | NO | NO | NO | NO | NO -# -# [1] This is only required for development on ARM Macs. We have no access to such devices, so someone will -# have to help us figure out how to get dynamic libraries. -# -# Please keep this matrix in sync with the other one in this file, see the ### blocks. -# The only difference should be that the second matrix has all mingw cells disabled; we don't publish mingw builds on starcatcher. -######################################################### -############# BEGIN BLOCK FOR COPYING BELOW ############# -######################################################### - machine_short: [x86_64, i686, arm64, arm] - platform_short: [lin, mac, win, and] - toolset_short: [gcc, msvc, mingw] - static_dynamic: [static, dynamic] - exclude: - - toolset_short: mingw - machine_short: i686 # remove this line after copying the matrix below - - toolset_short: mingw # remove this line after copying the matrix below - platform_short: mac # remove this line after copying the matrix below - - machine_short: i686 - platform_short: lin - - machine_short: i686 - platform_short: mac - - toolset_short: msvc - platform_short: lin - - toolset_short: msvc - platform_short: mac - - toolset_short: gcc - platform_short: win - - platform_short: lin - machine_short: arm64 - - platform_short: win - machine_short: arm64 - - platform_short: mac # see [1] - static_dynamic: dynamic - machine_short: arm64 - - platform_short: and - static_dynamic: dynamic - - platform_short: and - toolset_short: msvc - - platform_short: and - toolset_short: mingw - - platform_short: lin - machine_short: arm - - platform_short: win - machine_short: arm - - platform_short: mac - machine_short: arm -######################################################### -############## END BLOCK FOR COPYING BELOW ############## -######################################################### - include: - - platform_short: lin - os: ubuntu-18.04 - prefix: '' - suffix: '' - - platform_short: mac - os: macos-11.0 - prefix: '' - suffix: '' - - platform_short: win - os: windows-2019 - prefix: '' - suffix: '.exe' - - platform_short: lin - toolset_short: mingw - os: ubuntu-20.04 - prefix: '' - suffix: '.exe' - - platform_short: and - os: ubuntu-18.04 - prefix: '' - suffix: '.apk' + matrix: ${{ fromJSON(needs.prepare.outputs.matrix) }} steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: '3.10' - - id: get_type - run: python3 ./.github/get-type.py ${{ github.ref }} - - if: matrix.platform_short == 'lin' && matrix.toolset_short == 'mingw' - run: sudo apt update && sudo apt install g++-mingw-w64-x86-64 - - if: matrix.platform_short == 'mac' - run: brew install pkg-config coreutils - - if: matrix.platform_short == 'mac' && matrix.static_dynamic != 'static' + - run: python -m pip install meson ninja + - if: matrix.bsh_build_platform == 'darwin' + run: brew install pkg-config coreutils binutils bash + - if: matrix.bsh_build_platform == 'darwin' && matrix.bsh_static_dynamic != 'static' run: brew install luajit curl fftw zlib sdl2 - - if: matrix.platform_short == 'lin' && matrix.static_dynamic != 'static' + - if: matrix.bsh_build_platform == 'linux' && matrix.bsh_host_libc == 'mingw' + run: sudo apt update && sudo apt install g++-mingw-w64-x86-64 + - if: matrix.bsh_build_platform == 'linux' && matrix.bsh_static_dynamic != 'static' run: sudo apt update && sudo apt install libluajit-5.1-dev libcurl4-openssl-dev libfftw3-dev zlib1g-dev libsdl2-dev - - run: python3 -m pip install meson ninja + - if: matrix.bsh_build_platform == 'linux' && matrix.bsh_static_dynamic == 'static' + run: sudo apt update && sudo apt install libc6-dev libc6-dev-i386 - run: bash -c './.github/build.sh' env: - PLATFORM_SHORT: ${{ matrix.platform_short }} - MACHINE_SHORT: ${{ matrix.machine_short }} - TOOLSET_SHORT: ${{ matrix.toolset_short }} - STATIC_DYNAMIC: ${{ matrix.static_dynamic }} - RELNAME: ${{ steps.get_type.outputs.NAME }} - RELTYPE: ${{ steps.get_type.outputs.TYPE }} - MOD_ID: ${{ steps.get_type.outputs.MOD_ID }} - - uses: actions/upload-release-asset@v1 - if: steps.get_type.outputs.TYPE != 'dev' && matrix.static_dynamic == 'static' + BSH_HOST_ARCH: ${{ matrix.bsh_host_arch }} + BSH_HOST_PLATFORM: ${{ matrix.bsh_host_platform }} + BSH_HOST_LIBC: ${{ matrix.bsh_host_libc }} + BSH_STATIC_DYNAMIC: ${{ matrix.bsh_static_dynamic }} + BSH_BUILD_PLATFORM: ${{ matrix.bsh_build_platform }} + BSH_DEBUG_RELEASE: ${{ matrix.bsh_debug_release }} + RELEASE_NAME: ${{ needs.prepare.outputs.release_name }} + RELEASE_TYPE: ${{ needs.prepare.outputs.release_type }} + MOD_ID: ${{ needs.prepare.outputs.mod_id }} + ASSET_PATH: ${{ matrix.asset_path }} + DEBUG_ASSET_PATH: ${{ matrix.debug_asset_path }} + SEPARATE_DEBUG: ${{ matrix.separate_debug }} + - uses: actions/upload-release-asset@v1 # TODO-NTL: ship licenses + if: needs.prepare.outputs.do_release == 'yes' && matrix.publish == 'yes' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ needs.release.outputs.upload_url }} - asset_path: ${{ matrix.prefix }}powder${{ matrix.suffix }} - asset_name: ${{ matrix.prefix }}powder-${{ steps.get_type.outputs.NAME }}-${{ matrix.machine_short }}-${{ matrix.platform_short }}-${{ matrix.toolset_short }}-${{ matrix.static_dynamic }}${{ matrix.suffix }} - asset_content_type: application/zip - - uses: actions/upload-artifact@v2 - if: matrix.static_dynamic == 'static' - with: - path: ${{ matrix.prefix }}powder${{ matrix.suffix }} - name: ${{ matrix.prefix }}powder-${{ steps.get_type.outputs.NAME }}-${{ matrix.machine_short }}-${{ matrix.platform_short }}-${{ matrix.toolset_short }}-${{ matrix.static_dynamic }}${{ matrix.suffix }} - starcatcher-publish: - runs-on: ubuntu-latest - needs: [build, release] - if: needs.release.outputs.can_publish == 'yes' && startsWith(github.ref, 'refs/tags/') # not a perfect match but get-type.py takes care of this in job build - strategy: - fail-fast: false - matrix: -######################################################### -############# BEGIN BLOCK COPIED FROM ABOVE ############# -######################################################### - machine_short: [x86_64, i686, arm64, arm] - platform_short: [lin, mac, win, and] - toolset_short: [gcc, msvc, mingw] - static_dynamic: [static, dynamic] - exclude: - - toolset_short: mingw - - machine_short: i686 - platform_short: lin - - machine_short: i686 - platform_short: mac - - toolset_short: msvc - platform_short: lin - - toolset_short: msvc - platform_short: mac - - toolset_short: gcc - platform_short: win - - platform_short: lin - machine_short: arm64 - - platform_short: win - machine_short: arm64 - - platform_short: mac # see [1] - static_dynamic: dynamic - machine_short: arm64 - - platform_short: and - static_dynamic: dynamic - - platform_short: and - toolset_short: msvc - - platform_short: and - toolset_short: mingw - - platform_short: lin - machine_short: arm - - platform_short: win - machine_short: arm - - platform_short: mac - machine_short: arm -######################################################### -############## END BLOCK COPIED FROM ABOVE ############## -######################################################### - - static_dynamic: dynamic - include: - - platform_short: lin - prefix: '' - suffix: '' - - platform_short: mac - prefix: '' - suffix: '' - - platform_short: win - prefix: '' - suffix: '.exe' - - platform_short: and - prefix: '' - suffix: '.apk' - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: '3.10' - - id: get_type - run: python3 ./.github/get-type.py ${{ github.ref }} - - uses: actions/download-artifact@v1 - with: - name: ${{ matrix.prefix }}powder-${{ steps.get_type.outputs.NAME }}-${{ matrix.machine_short }}-${{ matrix.platform_short }}-${{ matrix.toolset_short }}-${{ matrix.static_dynamic }}${{ matrix.suffix }} - - run: sudo apt update && sudo apt install lftp - - if: steps.get_type.outputs.TYPE != 'dev' && matrix.static_dynamic == 'static' - run: bash -c './.github/starcatcher-publish.sh ${{ matrix.prefix }}powder${{ matrix.suffix }}' + upload_url: ${{ needs.prepare.outputs.release_upload_url }} + asset_path: build/${{ matrix.asset_path }} + asset_name: ${{ matrix.asset_name }} + - uses: actions/upload-release-asset@v1 + if: needs.prepare.outputs.do_release == 'yes' && matrix.publish == 'yes' && matrix.separate_debug == 'yes' env: - STARCATCHER_PUBLISH_HOSTPORT: ${{ secrets.STARCATCHER_PUBLISH_HOSTPORT }} - STARCATCHER_PUBLISH_USERNAME: ${{ secrets.STARCATCHER_PUBLISH_USERNAME }} - STARCATCHER_PUBLISH_PASSWORD: ${{ secrets.STARCATCHER_PUBLISH_PASSWORD }} - STARCATCHER_PUBLISH_FILENAME: ${{ matrix.prefix }}powder-${{ steps.get_type.outputs.NAME }}-${{ matrix.machine_short }}-${{ matrix.platform_short }}-${{ matrix.toolset_short }}-${{ matrix.static_dynamic }}${{ matrix.suffix }} - starcatcher-release: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.prepare.outputs.release_upload_url }} + asset_path: build/${{ matrix.debug_asset_path }} + asset_name: ${{ matrix.debug_asset_name }} + - uses: actions/upload-artifact@v2 + if: matrix.artifact == 'yes' + with: + path: build/${{ matrix.asset_path }} + name: ${{ matrix.asset_name }} + - uses: actions/upload-artifact@v2 + if: matrix.artifact == 'yes' && matrix.separate_debug == 'yes' + with: + path: build/${{ matrix.debug_asset_path }} + name: ${{ matrix.debug_asset_name }} + - if: needs.prepare.outputs.do_publish == 'yes' && matrix.publish == 'yes' + run: sudo apt update && sudo apt install lftp && bash -c './.github/starcatcher-publish.sh + env: + ASSET_PATH: build/${{ matrix.asset_path }} + PUBLISH_HOSTPORT: ${{ secrets.STARCATCHER_PUBLISH_HOSTPORT }} + PUBLISH_USERNAME: ${{ secrets.STARCATCHER_PUBLISH_USERNAME }} + PUBLISH_PASSWORD: ${{ secrets.STARCATCHER_PUBLISH_PASSWORD }} + PUBLISH_FILENAME: ${{ matrix.starcatcher_name }} + publish: runs-on: ubuntu-latest - needs: [starcatcher-publish, release] - if: needs.release.outputs.can_publish == 'yes' && startsWith(github.ref, 'refs/tags/') # not a perfect match but get-type.py takes care of this in job build + needs: [build, prepare] + if: needs.prepare.outputs.do_publish == 'yes' steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: '3.10' - - id: get_type - run: python3 ./.github/get-type.py ${{ github.ref }} - - run: ./.github/starcatcher-release.sh "https://starcatcher.us/TPT/perform-release.lua?mod=${{ steps.get_type.outputs.MOD_ID }}&type=${{ steps.get_type.outputs.TYPE }}&name=${{ steps.get_type.outputs.NAME }}&commit=${{ github.sha }}" + - run: ./.github/starcatcher-release.sh + env: + RELEASE_NAME: ${{ needs.prepare.outputs.release_name }} + RELEASE_TYPE: ${{ needs.prepare.outputs.release_type }} + MOD_ID: ${{ needs.prepare.outputs.mod_id }} + GITHUB_SHA: ${{ github.sha }} diff --git a/android/build-apk.py b/android/build-apk.py index 099b84b06..0d75e2d2e 100644 --- a/android/build-apk.py +++ b/android/build-apk.py @@ -23,11 +23,11 @@ import sys *resources, ) = sys.argv -if tpt_arch == 'i686': +if tpt_arch == 'x86': android_arch = 'x86' if tpt_arch == 'arm': android_arch = 'armeabi-v7a' -if tpt_arch == 'arm64': +if tpt_arch == 'aarch64': android_arch = 'arm64-v8a' if tpt_arch == 'x86_64': android_arch = 'x86_64' diff --git a/android/cross/arm64-v8a.ini b/android/cross/aarch64.ini similarity index 100% rename from android/cross/arm64-v8a.ini rename to android/cross/aarch64.ini diff --git a/android/cross/armeabi-v7a.ini b/android/cross/arm.ini similarity index 100% rename from android/cross/armeabi-v7a.ini rename to android/cross/arm.ini diff --git a/android/meson.build b/android/meson.build index b3d138084..b17b767a7 100644 --- a/android/meson.build +++ b/android/meson.build @@ -4,3 +4,96 @@ powder_jar_sources = files( ) subdir('res') + +python3 = find_program('python3') +android_platform_jar = meson.get_external_property('android_platform_jar') +java_runtime_jar = meson.get_external_property('java_runtime_jar') +android_keystore = get_option('android_keystore') +sdl_jar = tpt_libs.get_variable('sdl_jar') +powder_jar = custom_target( + 'powder-jar', + output: 'powder.jar', + command: [ + python3, + files('powder-jar.py'), + find_program('javac'), + find_program('jar'), + meson.current_source_dir(), + meson.project_build_root(), + '@PRIVATE_DIR@', + '@OUTPUT@', + android_platform_jar, + java_runtime_jar, + sdl_jar, + is_debug ? 'debug' : 'release', + powder_jar_sources, + ], +) +unaligned_apk = custom_target( + 'build-apk', + output: 'powder.unaligned.apk', + input: powder_sha, + command: [ + python3, + files('build-apk.py'), + find_program('d8'), + find_program('aapt'), + find_program('aapt2'), + meson.current_source_dir(), + meson.project_build_root(), + '@PRIVATE_DIR@', + '@OUTPUT@', + '@INPUT@', + android_platform_jar, + sdl_jar, + powder_jar, + host_arch, + is_debug ? 'debug' : 'release', + android_manifest_xml, + android_resources, + ], +) +unsigned_apk = custom_target( + 'align-apk', + output: 'powder.unsigned.apk', + input: unaligned_apk, + command: [ + python3, + files('align-apk.py'), + find_program('zipalign'), + meson.project_build_root(), + '@OUTPUT@', + '@INPUT@', + ], +) +signed_apk = custom_target( + 'sign-apk', + output: 'powder.apk', + input: unsigned_apk, + command: [ + python3, + files('sign-apk.py'), + find_program('apksigner'), + meson.project_build_root(), + '@OUTPUT@', + '@INPUT@', + android_keystore, + get_option('android_keyalias'), + ], +) +adb = find_program('adb', required: false) +if adb.found() + install_apk = custom_target( + 'install-apk', + input: signed_apk, + output: 'install-apk', + command: [ python3, files('install-apk.py'), adb, meson.project_build_root(), '@OUTPUT@', '@INPUT@' ], + ) + custom_target( + 'run-apk', + input: [ signed_apk, install_apk ], + build_always_stale: true, + output: 'run-apk', + command: [ python3, files('run-apk.py'), adb, meson.project_build_root(), '@OUTPUT@', '@INPUT0@' ], + ) +endif diff --git a/cross-examples/android.ini b/cross-examples/android.ini index 93b31e970..a93d31231 100644 --- a/cross-examples/android.ini +++ b/cross-examples/android.ini @@ -3,11 +3,13 @@ andriod_ndk_toolchain_bin = '/opt/android-sdk/ndk-bundle/toolchains/llvm/prebuil [properties] # only needed if you want to run the custom target powder_apk (powder.apk) -android_platform_jar = '/opt/android-sdk/platforms/android-30/android.jar' +# android_ndk_toolchain_prefix comes from the correct cross-file in ./android/cross +android_ndk_toolchain_prefix = android_ndk_toolchain_prefix +android_platform = 'android-30' +android_platform_jar = '/opt/android-sdk/platforms/' + android_platform + '/android.jar' java_runtime_jar = '/usr/lib/jvm/java-8-openjdk/jre/lib/rt.jar' [binaries] -# android_ndk_toolchain_prefix comes from the correct cross-file in ./android/cross c = andriod_ndk_toolchain_bin / (android_ndk_toolchain_prefix + 'clang') # c = [ 'ccache', andriod_ndk_toolchain_bin / (android_ndk_toolchain_prefix + 'clang') ] cpp = andriod_ndk_toolchain_bin / (android_ndk_toolchain_prefix + 'clang++') diff --git a/cross-examples/macaa64.ini b/cross-examples/macaa64.ini index 77970d454..a3b49975b 100644 --- a/cross-examples/macaa64.ini +++ b/cross-examples/macaa64.ini @@ -1,12 +1,6 @@ -[built-in options] -c_args = [ '-arch', 'arm64', '-mmacosx-version-min=10.15' ] -cpp_args = [ '-arch', 'arm64', '-mmacosx-version-min=10.15' ] -c_link_args = [ '-arch', 'arm64', '-mmacosx-version-min=10.15' ] -cpp_link_args = [ '-arch', 'arm64', '-mmacosx-version-min=10.15' ] - [binaries] -c = 'clang' -cpp = 'clang++' +c = [ 'clang', '-arch', 'arm64' ] +cpp = [ 'clang++', '-arch', 'arm64' ] strip = 'strip' [host_machine] diff --git a/meson.build b/meson.build index 2cd1da71a..a8a67dc7f 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,17 @@ -project('the-powder-toy', [ 'c', 'cpp' ], version: 'the.cake.is.a.lie', default_options: [ - 'cpp_std=c++17', - 'build.cpp_std=c++17', # used when cross-compiling -]) +project( + 'the-powder-toy', + [ 'c', 'cpp' ], + version: 'the.cake.is.a.lie', + default_options: [ + 'c_std=c99', + 'cpp_std=c++17', + 'cpp_rtti=false', + 'build.c_std=c99', # used by to_array + 'build.cpp_std=c++17', # used by to_array + 'build.cpp_rtti=false', # used by to_array + ], + meson_version: '>=0.61.0', +) to_array = generator( executable('toarray', sources: 'data/ToArray.cpp', native: true), @@ -10,182 +20,165 @@ to_array = generator( ) c_compiler = meson.get_compiler('c') -copt_x86 = false -copt_64bit = false -copt_msvc = false + +is_x86 = host_machine.cpu_family() in [ 'x86', 'x86_64' ] +is_64bit = host_machine.cpu_family() in [ 'aarch64', 'x86_64' ] +is_msvc = c_compiler.get_id() in [ 'msvc' ] + +host_arch = host_machine.cpu_family() +host_platform = host_machine.system() +# educated guesses follow, PRs welcome if c_compiler.get_id() in [ 'msvc' ] - copt_compiler = 'msvc' - copt_msvc = true -elif c_compiler.get_id() in [ 'gcc', 'clang' ] - copt_compiler = 'gcc' -else - warning('unsupported compiler: ' + c_compiler.get_id() + '; you are on your own') - copt_compiler = 'gcc' -endif -if host_machine.cpu_family() in [ 'x86_64' ] - copt_architecture = 'x86_64' - copt_x86 = true - copt_64bit = true -elif host_machine.cpu_family() in [ 'x86' ] - copt_architecture = 'i686' - copt_x86 = true -elif host_machine.cpu_family() in [ 'aarch64' ] - copt_architecture = 'arm64' - copt_64bit = true -elif host_machine.cpu_family() in [ 'arm' ] - copt_architecture = 'arm' -else - warning('unsupported architecture: ' + host_machine.cpu_family() + '; you are on your own') - copt_architecture = 'i686' -endif -if host_machine.system() in [ 'linux', 'freebsd' ] - copt_platform = 'lin' -elif host_machine.system() in [ 'windows' ] - copt_platform = 'win' -elif host_machine.system() in [ 'darwin' ] - copt_platform = 'mac' -elif host_machine.system() in [ 'android' ] - copt_platform = 'and' -else - warning('unsupported platform: ' + host_machine.system() + '; you are on your own') - copt_platform = 'lin' -endif -uopt_static = get_option('static') -use_tpt_libs = 'no' -if uopt_static == 'system' - if copt_platform == 'win' - error('no way to find static system libraries on windows') + host_libc = 'msvc' +elif c_compiler.get_id() in [ 'gcc' ] and host_platform == 'windows' + host_libc = 'mingw' + if get_option('b_lto') + warning('mingw does not like static + lto') endif -elif uopt_static == 'prebuilt' - use_tpt_libs = 'static' -elif copt_platform == 'win' - use_tpt_libs = 'dynamic' -elif copt_platform == 'and' - use_tpt_libs = 'static' +elif host_platform in [ 'darwin' ] + host_libc = 'macos' +elif host_platform in [ 'android' ] + host_platform = 'android' + host_libc = 'bionic' +else + host_libc = 'gnu' +endif + +static_variant = get_option('static') +if static_variant != 'prebuilt' and host_platform == 'android' + warning('only prebuilt libs are supported for android') + static_variant = 'prebuilt' +endif +if static_variant == 'system' and host_platform == 'windows' + warning('no way to find system libs on windows') + static_variant = 'prebuilt' +endif + +is_static = static_variant != 'none' +is_debug = get_option('optimization') in [ '0', 'g' ] + +tpt_libs_static = 'none' +if static_variant == 'prebuilt' + tpt_libs_static = 'static' +endif +if static_variant == 'none' and host_platform == 'windows' + tpt_libs_static = 'dynamic' +endif +tpt_libs_debug = is_debug ? 'debug' : 'release' +tpt_libs_variant = '@0@-@1@-@2@-@3@'.format(host_arch, host_platform, host_libc, tpt_libs_static) +tpt_libs_vtag = get_option('tpt_libs_vtag') +if tpt_libs_vtag == '' + tpt_libs_vtag = 'v20220901212941' +endif +if tpt_libs_static != 'none' + if tpt_libs_variant not in [ + 'x86_64-linux-gnu-static', + 'x86_64-windows-mingw-static', + 'x86_64-windows-mingw-dynamic', + 'x86_64-windows-msvc-static', + 'x86_64-windows-msvc-dynamic', + 'x86-windows-msvc-static', + 'x86-windows-msvc-dynamic', + 'x86_64-darwin-macos-static', + 'aarch64-darwin-macos-static', + 'x86-android-bionic-static', + 'x86_64-android-bionic-static', + 'arm-android-bionic-static', + 'aarch64-android-bionic-static', + ] + error('no prebuilt @0@ libraries are currently provided'.format(tpt_libs_variant)) + endif + tpt_libs = subproject('tpt-libs-prebuilt-@0@-@1@-@2@'.format(tpt_libs_variant, tpt_libs_debug, tpt_libs_vtag)) endif conf_data = configuration_data() conf_data.set('CURL_STATICLIB', false) conf_data.set('ZLIB_WINAPI', false) -if get_option('ogli') or get_option('oglr') - error('OpenGL features are currently unavailable') +x86_sse_level_str = get_option('x86_sse') +if x86_sse_level_str == 'auto' + x86_sse_level = 20 + if not is_x86 or not is_64bit or host_platform == 'darwin' + x86_sse_level = 0 + endif +elif x86_sse_level_str == 'sse3' + x86_sse_level = 30 +elif x86_sse_level_str == 'sse2' + x86_sse_level = 20 +elif x86_sse_level_str == 'sse' + x86_sse_level = 10 +elif x86_sse_level_str == 'none' + x86_sse_level = 0 endif -tpt_libs_vtag = get_option('tpt_libs_vtag') -if tpt_libs_vtag == '' - tpt_libs_vtag = 'v20220414193335' +lua_variant = get_option('lua') +if lua_variant == 'auto' + lua_variant = 'luajit' + # TODO: sometimes luajit is not available endif -if use_tpt_libs != 'no' - nope = false - if copt_architecture == 'i686' and not copt_msvc - nope = true +# TODO: check UNICODE on windows +if lua_variant == 'none' + lua_dep = [] +elif lua_variant == 'lua5.1' or lua_variant == 'lua5.2' + lua_dep = dependency(lua_variant + '-c++', static: is_static, required: false) + if not lua_dep.found() + lua_dep = dependency(lua_variant, static: is_static) + warning('your system @0@ might not be compatible with C++'.format(lua_variant)) endif - if copt_architecture == 'x86_64' and (copt_platform == 'lin' or copt_platform == 'mac') and copt_compiler != 'gcc' - nope = true - endif - if copt_architecture == 'arm64' and copt_platform != 'mac' - nope = true - endif - if copt_platform == 'and' - nope = false - endif - quad_compiler = copt_compiler - if copt_platform == 'win' and copt_compiler == 'gcc' - quad_compiler = 'mingw' - if get_option('b_lto') - error('mingw does not like static + lto, you will have to disable this error if you want to proceed') - endif - endif - if nope - error('no prebuilt @0@-@1@-@2@-@3@ libraries are currently provided'.format(copt_architecture, copt_platform, quad_compiler, use_tpt_libs)) - endif - tpt_libs = subproject('tpt-libs-prebuilt-@0@-@1@-@2@-@3@-@4@'.format(copt_architecture, copt_platform, quad_compiler, use_tpt_libs, tpt_libs_vtag)) +elif lua_variant == 'luajit' + lua_dep = dependency('luajit', static: is_static) endif -uopt_native = get_option('native') -uopt_x86_sse = get_option('x86_sse') -if uopt_x86_sse == 'auto' - uopt_x86_sse_level = 20 -elif uopt_x86_sse == 'sse3' - uopt_x86_sse_level = 30 -elif uopt_x86_sse == 'sse2' - uopt_x86_sse_level = 20 -elif uopt_x86_sse == 'sse' - uopt_x86_sse_level = 10 -elif uopt_x86_sse == 'none' - uopt_x86_sse_level = 0 +enable_http = get_option('http') +if host_platform == 'android' + enable_http = false endif -if not copt_x86 or uopt_native - uopt_x86_sse_level = 0 +if host_platform == 'android' + android_ndk_toolchain_prefix = meson.get_external_property('android_ndk_toolchain_prefix') + android_platform = meson.get_external_property('android_platform') + tpt_libs_android_toolchain_prefix = tpt_libs.get_variable('android_toolchain_prefix') + tpt_libs_android_system_version = tpt_libs.get_variable('android_system_version') + tpt_libs_android_platform = tpt_libs.get_variable('android_platform') + if '@0@@1@-'.format(tpt_libs_android_toolchain_prefix, tpt_libs_android_system_version) != android_ndk_toolchain_prefix + error('tpt-libs android toolchain mismatch') + endif + if tpt_libs_android_platform != android_platform + error('tpt-libs android platform mismatch') + endif endif +curl_dep = enable_http ? dependency('libcurl', static: is_static) : [] -uopt_lua = get_option('lua') -if copt_platform == 'and' and uopt_lua == 'luajit' - message('LuaJIT is not supported on Android') - uopt_lua = 'lua5.2' -endif -if uopt_lua == 'luajit' - lua_opt_dep = [ use_tpt_libs != 'no' ? tpt_libs.get_variable('luajit_dep') : dependency('luajit', static: uopt_static == 'system') ] -elif uopt_lua == 'lua5.2' - lua_opt_dep = [ use_tpt_libs != 'no' ? tpt_libs.get_variable('lua52_dep') : dependency('lua5.2', static: uopt_static == 'system') ] -elif uopt_lua == 'lua5.1' - lua_opt_dep = [ use_tpt_libs != 'no' ? tpt_libs.get_variable('lua51_dep') : dependency('lua5.1', static: uopt_static == 'system') ] -else - lua_opt_dep = [] -endif - -uopt_http = get_option('http') -if uopt_http and copt_platform != 'and' - curl_opt_dep = [ use_tpt_libs != 'no' ? tpt_libs.get_variable('libcurl_dep') : dependency('libcurl', static: uopt_static == 'system') ] -else - curl_opt_dep = [] -endif - -uopt_fftw = get_option('gravfft') -if uopt_fftw - fftw_opt_dep = [ use_tpt_libs != 'no' ? tpt_libs.get_variable('fftw_dep') : dependency('fftw3f', static: uopt_static == 'system') ] -else - fftw_opt_dep = [] -endif +enable_gravfft = get_option('gravfft') +fftw_dep = enable_gravfft ? dependency('fftw3f', static: is_static) : [] threads_dep = dependency('threads') -zlib_dep = use_tpt_libs != 'no' ? tpt_libs.get_variable('zlib_dep') : dependency('zlib', static: uopt_static == 'system') -sdl2_dep = use_tpt_libs != 'no' ? tpt_libs.get_variable('sdl2_dep') : dependency('sdl2', static: uopt_static == 'system') -sdl2main_dep = use_tpt_libs != 'no' ? tpt_libs.get_variable('sdl2main_dep') : [] +zlib_dep = dependency('zlib', static: is_static) +sdl2_dep = dependency('sdl2', static: is_static) # TODO: check UNICODE on windows project_link_args = [] project_c_args = [] project_cpp_args = [] -if copt_msvc - if uopt_x86_sse_level >= 30 - message('SSE3 configured to be enabled but unavailable in msvc') - uopt_x86_sse_level = 20 +if is_msvc + if x86_sse_level >= 30 + warning('SSE3 configured to be enabled but unavailable in msvc') + x86_sse_level = 20 endif - if uopt_native - message('local machine optimization configured to be enabled but unavailable in msvc') - uopt_native = false + if is_64bit and x86_sse_level > 0 + warning('SSE explicitly configured but unavailable in msvc targeting 64-bit machines') + x86_sse_level = 0 endif args_msvc = [ '/GS', - '-D_SCL_SECURE_NO_WARNINGS', - '-DUNICODE', - '-D_UNICODE', + '/D_SCL_SECURE_NO_WARNINGS', + '/DUNICODE', + '/D_UNICODE', ] - if copt_64bit - message('SSE explicitly configured but unavailable in msvc targeting 64-bit machines') - else - if uopt_x86_sse_level >= 20 - args_msvc += [ '/arch:SSE2' ] - elif uopt_x86_sse_level >= 10 - args_msvc += [ '/arch:SSE' ] - endif + if x86_sse_level >= 20 + args_msvc += [ '/arch:SSE2' ] + elif x86_sse_level >= 10 + args_msvc += [ '/arch:SSE' ] endif - if get_option('debug') - project_link_args += [ - '/NODEFAULTLIB:MSVCRT', - ] - else + if not is_debug args_msvc += [ '/Oy-', '/fp:fast', @@ -198,40 +191,28 @@ if copt_msvc project_c_args += args_msvc project_cpp_args += args_msvc else - args_ccomp = [ '-Wno-unused-result' ] - if copt_platform == 'mac' - if uopt_x86_sse_level >= 0 - message('SSE level explicitly configured but unavailable on macosx') - uopt_x86_sse_level = 0 - endif - if uopt_native - message('local machine optimization configured to be enabled but unavailable on macosx') - uopt_native = false - endif - else - if uopt_x86_sse_level >= 30 - args_ccomp += [ '-msse3' ] - endif - if uopt_x86_sse_level >= 20 - args_ccomp += [ '-msse2' ] - endif - if uopt_x86_sse_level >= 10 - args_ccomp += [ '-msse' ] - endif - if uopt_native - args_ccomp += [ '-march=native' ] - endif + args_ccomp = [] + if host_platform == 'darwin' and x86_sse_level > 0 + message('SSE level explicitly configured but unavailable on macosx') + x86_sse_level = 0 endif - if copt_platform == 'win' + if x86_sse_level >= 30 + args_ccomp += [ '-msse3' ] + elif x86_sse_level >= 20 + args_ccomp += [ '-msse2' ] + elif x86_sse_level >= 10 + args_ccomp += [ '-msse' ] + endif + if host_platform == 'windows' args_ccomp += [ '-DUNICODE', '-D_UNICODE', ] - if uopt_static != 'none' and copt_platform != 'and' + if is_static and host_platform != 'android' project_link_args += [ '-static', '-static-libgcc', '-static-libstdc++' ] endif endif - if not get_option('debug') + if not is_debug args_ccomp += [ '-ftree-vectorize', '-funsafe-math-optimizations', @@ -239,18 +220,23 @@ else '-fomit-frame-pointer', ] endif - if copt_platform == 'mac' and uopt_static == 'prebuilt' - args_ccomp += [ '-mmacosx-version-min=10.9' ] - project_link_args += [ '-mmacosx-version-min=10.9' ] + if host_platform == 'darwin' + if host_arch == 'aarch64' + macosx_version_min = [ '-mmacosx-version-min=11.0' ] + else + macosx_version_min = [ '-mmacosx-version-min=10.9' ] + endif + args_ccomp += macosx_version_min + project_link_args += macosx_version_min endif - if copt_platform == 'and' - if not copt_64bit + if host_platform == 'android' + if not is_64bit args_ccomp += [ '-U_FILE_OFFSET_BITS' ] endif project_link_args += [ '-static-libstdc++' ] else if not get_option('b_pie') and get_option('workaround_gcc_no_pie') # nice one, meson - if copt_architecture != 'arm64' # no position independent executable for arm64 + if host_arch != 'aarch64' # no position independent executable for aarch64 if c_compiler.get_id() in [ 'clang' ] project_link_args += [ '-Wl,-no_pie' ] else @@ -259,33 +245,53 @@ else endif endif endif - project_c_args += args_ccomp - project_cpp_args += args_ccomp + [ '-Wno-invalid-offsetof' ] + project_c_args += args_ccomp + [ + '-Wno-implicit-fallthrough', + '-Wno-missing-field-initializers', + '-Wno-unused-result', + '-Wno-unused-parameter', + ] + project_cpp_args += args_ccomp + [ + '-Wno-invalid-offsetof', + '-Wno-unused-result', + '-Wno-missing-field-initializers', + '-Wno-unused-parameter', + ] endif -if copt_platform == 'win' - other_dep = tpt_libs.get_variable('other_dep') +if host_platform == 'windows' args_ccomp_win = [ '-D_WIN32_WINNT=0x0501' ] project_c_args += args_ccomp_win project_cpp_args += args_ccomp_win windows_mod = import('windows') - if uopt_static != 'none' + if is_static conf_data.set('CURL_STATICLIB', true) - if copt_architecture == 'x86_64' + if host_arch == 'x86_64' conf_data.set('ZLIB_WINAPI', true) endif else - foreach input_and_output : tpt_libs.get_variable('config_dlls') - configure_file(input: input_and_output[0], output: input_and_output[1], copy: true) + foreach input_output_condition : tpt_libs.get_variable('config_dlls') + dll_input = input_output_condition[0] + dll_output = input_output_condition[1] + dll_condition = input_output_condition[2] + do_copy = false + if dll_condition == 'all' + do_copy = true + elif dll_condition == 'lua=' + lua_variant + do_copy = true + endif + if do_copy + configure_file(input: dll_input, output: dll_output, copy: true) + endif endforeach endif -elif copt_platform == 'lin' - if uopt_static != 'none' +elif host_platform == 'linux' + if is_static project_link_args += [ '-static-libgcc', '-static-libstdc++' ] endif endif -if copt_platform == 'mac' and uopt_lua == 'luajit' and copt_architecture != 'arm64' +if host_platform == 'darwin' and lua_variant == 'luajit' and host_arch != 'aarch64' project_link_args += [ '-pagezero_size', '10000', '-image_base', '100000000', @@ -294,40 +300,39 @@ endif project_inc = include_directories([ 'src', 'data', 'resources' ]) -if copt_platform == 'win' - copt_identplatform = copt_64bit ? 'WIN64' : 'WIN32' -elif copt_platform == 'lin' - copt_identplatform = copt_64bit ? 'LIN64' : 'LIN32' -elif copt_platform == 'mac' - copt_identplatform = copt_architecture == 'arm64' ? 'MACOSARM' : 'MACOSX' +if host_platform == 'windows' + ident_platform = is_64bit ? 'WIN64' : 'WIN32' +elif host_platform == 'linux' + ident_platform = is_64bit ? 'LIN64' : 'LIN32' +elif host_platform == 'darwin' + ident_platform = host_arch == 'aarch64' ? 'MACOSARM' : 'MACOSX' else - copt_identplatform = 'UNKNOWN' + ident_platform = 'UNKNOWN' endif -conf_data.set('LIN', copt_platform == 'lin') -conf_data.set('AND', copt_platform == 'and') -conf_data.set('WIN', copt_platform == 'win') -conf_data.set('MACOSX', copt_platform == 'mac') -conf_data.set('X86', copt_x86) -conf_data.set('X86_SSE3', uopt_x86_sse_level >= 30) -conf_data.set('X86_SSE2', uopt_x86_sse_level >= 20) -conf_data.set('X86_SSE', uopt_x86_sse_level >= 10) -conf_data.set('NATIVE', uopt_native) -conf_data.set('_64BIT', copt_64bit) -conf_data.set('OGLI', get_option('ogli')) -conf_data.set('OGLR', get_option('oglr')) -conf_data.set('PIX32OGL', get_option('ogli')) +conf_data.set('LIN', host_platform == 'linux') +conf_data.set('AND', host_platform == 'android') +conf_data.set('WIN', host_platform == 'windows') +conf_data.set('MACOSX', host_platform == 'darwin') +conf_data.set('X86', is_x86) +conf_data.set('X86_SSE3', x86_sse_level >= 30) +conf_data.set('X86_SSE2', x86_sse_level >= 20) +conf_data.set('X86_SSE', x86_sse_level >= 10) +conf_data.set('_64BIT', is_64bit) +conf_data.set('OGLI', false) +conf_data.set('OGLR', false) +conf_data.set('PIX32OGL', false) conf_data.set('BETA', get_option('beta')) conf_data.set('NO_INSTALL_CHECK', not get_option('install_check')) conf_data.set('IGNORE_UPDATES', get_option('ignore_updates')) conf_data.set('MOD_ID', get_option('mod_id')) -conf_data.set('DEBUG', get_option('debug')) +conf_data.set('DEBUG', is_debug) conf_data.set('SNAPSHOT', get_option('snapshot')) conf_data.set('SNAPSHOT_ID', get_option('snapshot_id')) conf_data.set('SERVER', '"' + get_option('server') + '"') conf_data.set('STATICSERVER', '"' + get_option('static_server') + '"') -conf_data.set('IDENT_PLATFORM', '"' + copt_identplatform + '"') -conf_data.set('IDENT', '"@0@-@1@-@2@"'.format(copt_architecture, copt_platform, copt_compiler).to_upper()) +conf_data.set('IDENT_PLATFORM', '"' + ident_platform + '"') +conf_data.set('IDENT', '"@0@-@1@-@2@"'.format(host_arch, host_platform, host_libc).to_upper()) if get_option('update_server') != '' conf_data.set('UPDATESERVER', '"' + get_option('update_server') + '"') @@ -346,16 +351,11 @@ if get_option('build_powder') threads_dep, zlib_dep, sdl2_dep, - sdl2main_dep, - lua_opt_dep, - curl_opt_dep, - fftw_opt_dep, + lua_dep, + curl_dep, + fftw_dep, ] - if copt_platform == 'win' - powder_deps += other_dep - endif - if copt_platform == 'and' - subdir('android') + if host_platform == 'android' powder_sha = shared_library( 'powder', sources: powder_files, @@ -365,97 +365,7 @@ if get_option('build_powder') link_args: project_link_args, dependencies: powder_deps, ) - python3 = find_program('python3') - android_platform_jar = meson.get_external_property('android_platform_jar') - java_runtime_jar = meson.get_external_property('java_runtime_jar') - android_keystore = get_option('android_keystore') - sdl_jar = tpt_libs.get_variable('sdl_jar') - powder_jar = custom_target( - 'powder-jar', - output: 'powder.jar', - command: [ - python3, - files('android/powder-jar.py'), - find_program('javac'), - find_program('jar'), - meson.current_source_dir(), - meson.current_build_dir(), - '@PRIVATE_DIR@', - '@OUTPUT@', - android_platform_jar, - java_runtime_jar, - sdl_jar, - get_option('debug') ? 'debug' : 'release', - powder_jar_sources, - ], - ) - unaligned_apk = custom_target( - 'build-apk', - output: 'powder.unaligned.apk', - input: powder_sha, - command: [ - python3, - files('android/build-apk.py'), - find_program('d8'), - find_program('aapt'), - find_program('aapt2'), - meson.current_source_dir(), - meson.current_build_dir(), - '@PRIVATE_DIR@', - '@OUTPUT@', - '@INPUT@', - android_platform_jar, - sdl_jar, - powder_jar, - copt_architecture, - get_option('debug') ? 'debug' : 'release', - android_manifest_xml, - android_resources, - ], - ) - unsigned_apk = custom_target( - 'align-apk', - output: 'powder.unsigned.apk', - input: unaligned_apk, - command: [ - python3, - files('android/align-apk.py'), - find_program('zipalign'), - meson.current_build_dir(), - '@OUTPUT@', - '@INPUT@', - ], - ) - signed_apk = custom_target( - 'sign-apk', - output: 'powder.apk', - input: unsigned_apk, - command: [ - python3, - files('android/sign-apk.py'), - find_program('apksigner'), - meson.current_build_dir(), - '@OUTPUT@', - '@INPUT@', - android_keystore, - get_option('android_keyalias'), - ], - ) - adb = find_program('adb', required: false) - if adb.found() - install_apk = custom_target( - 'install-apk', - input: signed_apk, - output: 'install-apk', - command: [ python3, files('android/install-apk.py'), adb, meson.current_build_dir(), '@OUTPUT@', '@INPUT@' ], - ) - custom_target( - 'run-apk', - input: [ signed_apk, install_apk ], - output: 'run-apk', - command: [ python3, files('android/run-apk.py'), adb, meson.current_build_dir(), '@OUTPUT@', '@INPUT0@' ], - ) - endif + subdir('android') else executable( 'powder', @@ -463,7 +373,7 @@ if get_option('build_powder') include_directories: [ project_inc, powder_inc ], c_args: project_c_args, cpp_args: project_cpp_args, - gui_app: not get_option('debug'), + win_subsystem: is_debug ? 'console' : 'windows', link_args: project_link_args, dependencies: powder_deps, ) @@ -491,11 +401,7 @@ if get_option('build_font') threads_dep, zlib_dep, sdl2_dep, - sdl2main_dep, ] - if copt_platform == 'win' - font_deps += other_dep - endif executable( 'font', sources: font_files, diff --git a/meson_options.txt b/meson_options.txt index db0ad617f..33b50e9d8 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -58,17 +58,10 @@ option( option( 'lua', type: 'combo', - choices: [ 'none', 'lua5.1', 'lua5.2', 'luajit' ], - value: 'luajit', + choices: [ 'none', 'lua5.1', 'lua5.2', 'luajit', 'auto' ], + value: 'auto', description: 'Lua library to use' ) -option( - 'ssl', - type: 'combo', - choices: [ 'openssl' ], - value: 'openssl', - description: 'SSL library to use' -) option( 'x86_sse', type: 'combo', @@ -76,24 +69,6 @@ option( value: 'auto', description: 'Enable SSE (available only on x86)' ) -option( - 'native', - type: 'boolean', - value: false, - description: 'Build with optimizations specific to the local machine, may not run on other machines, overrides \'x86_sse\'' -) -option( - 'ogli', - type: 'boolean', - value: false, - description: 'Enable OpenGL interface rendering (currently defunct)' -) -option( - 'oglr', - type: 'boolean', - value: false, - description: 'Enable OpenGL particle rendering (currently defunct)' -) option( 'build_powder', type: 'boolean', diff --git a/resources/meson.build b/resources/meson.build index e7d8fb57f..54e7007e2 100644 --- a/resources/meson.build +++ b/resources/meson.build @@ -3,7 +3,7 @@ resources_files += files( 'document.ico', ) -if copt_platform == 'win' +if host_platform == 'windows' powder_files += windows_mod.compile_resources( 'powder-res.rc', depend_files: [ resources_files, 'resource.h' ], diff --git a/src/Config.template.h b/src/Config.template.h index 1e161cccd..667a9106a 100644 --- a/src/Config.template.h +++ b/src/Config.template.h @@ -15,7 +15,6 @@ #mesondefine IGNORE_UPDATES #mesondefine LIN #mesondefine AND -#mesondefine NATIVE #mesondefine NO_INSTALL_CHECK #mesondefine OGLI #mesondefine OGLR diff --git a/src/client/Client.cpp b/src/client/Client.cpp index 275ca8cb1..22eb83047 100644 --- a/src/client/Client.cpp +++ b/src/client/Client.cpp @@ -1,5 +1,7 @@ #include "Client.h" +#include "client/http/Request.h" // includes curl.h, needs to come first to silence a warning on windows + #include #include #include @@ -45,7 +47,6 @@ # include "lua/LuaScriptInterface.h" #endif -#include "client/http/Request.h" #include "client/http/RequestManager.h" #include "gui/preview/Comment.h" diff --git a/src/client/GameSave.cpp b/src/client/GameSave.cpp index 752f52fc7..bad1c62be 100644 --- a/src/client/GameSave.cpp +++ b/src/client/GameSave.cpp @@ -2619,6 +2619,7 @@ char * GameSave::serialiseOPS(unsigned int & dataLength) bson_append_string(&b, "releaseType", IDENT_RELTYPE); bson_append_string(&b, "platform", IDENT_PLATFORM); bson_append_string(&b, "builtType", IDENT_BUILD); + bson_append_string(&b, "ident", IDENT); bson_append_finish_object(&b); if (gravityMode == 3) { diff --git a/src/client/http/Request.h b/src/client/http/Request.h index 6c705ce25..26139bd87 100644 --- a/src/client/http/Request.h +++ b/src/client/http/Request.h @@ -2,27 +2,24 @@ #define REQUEST_H #include "Config.h" -#include "Config.h" +#ifndef NOHTTP +# include +# include "common/tpt-minmax.h" // for MSVC, ensures windows.h doesn't cause compile errors by defining min/max +# include +# include +# if defined(CURL_AT_LEAST_VERSION) && CURL_AT_LEAST_VERSION(7, 55, 0) +# define REQUEST_USE_CURL_OFFSET_T +# endif +# if defined(CURL_AT_LEAST_VERSION) && CURL_AT_LEAST_VERSION(7, 56, 0) +# define REQUEST_USE_CURL_MIMEPOST +# endif +# if defined(CURL_AT_LEAST_VERSION) && CURL_AT_LEAST_VERSION(7, 61, 0) +# define REQUEST_USE_CURL_TLSV13CL +# endif +#endif + #include #include "common/String.h" -#ifndef NOHTTP -#include "common/tpt-minmax.h" // for MSVC, ensures windows.h doesn't cause compile errors by defining min/max -#include -#include -#include - -#if defined(CURL_AT_LEAST_VERSION) && CURL_AT_LEAST_VERSION(7, 55, 0) -# define REQUEST_USE_CURL_OFFSET_T -#endif - -#if defined(CURL_AT_LEAST_VERSION) && CURL_AT_LEAST_VERSION(7, 56, 0) -# define REQUEST_USE_CURL_MIMEPOST -#endif - -#if defined(CURL_AT_LEAST_VERSION) && CURL_AT_LEAST_VERSION(7, 61, 0) -# define REQUEST_USE_CURL_TLSV13CL -#endif -#endif namespace http { diff --git a/src/client/http/RequestManager.cpp b/src/client/http/RequestManager.cpp index b39d7aa6b..e74cf3111 100644 --- a/src/client/http/RequestManager.cpp +++ b/src/client/http/RequestManager.cpp @@ -1,11 +1,9 @@ #ifndef NOHTTP +#include "Request.h" // includes curl.h, needs to come first to silence a warning on windows #include "RequestManager.h" #include -#include "Request.h" -#include "Config.h" - const int curl_multi_wait_timeout_ms = 100; const long curl_max_host_connections = 6; diff --git a/src/client/http/meson.build b/src/client/http/meson.build index 17236eb6b..a383fdb6f 100644 --- a/src/client/http/meson.build +++ b/src/client/http/meson.build @@ -8,7 +8,7 @@ client_files += files( 'ThumbnailRequest.cpp', ) -if uopt_http +if enable_http client_files += files( 'RequestManager.cpp', ) diff --git a/src/config/powder/meson.build b/src/config/powder/meson.build index cb03fac4e..3fbc8cb55 100644 --- a/src/config/powder/meson.build +++ b/src/config/powder/meson.build @@ -1,9 +1,9 @@ powder_conf_data = conf_data powder_conf_data.set('FONTEDITOR', false) powder_conf_data.set('RENDERER', false) -powder_conf_data.set('LUACONSOLE', uopt_lua != 'none') -powder_conf_data.set('NOHTTP', not uopt_http) -powder_conf_data.set('GRAVFFT', uopt_fftw) +powder_conf_data.set('LUACONSOLE', lua_variant != 'none') +powder_conf_data.set('NOHTTP', not enable_http) +powder_conf_data.set('GRAVFFT', enable_gravfft) configure_file( input: config_template, output: 'Config.h', diff --git a/src/gui/font/FontEditor.cpp b/src/gui/font/FontEditor.cpp index 0a45d0480..3db802402 100644 --- a/src/gui/font/FontEditor.cpp +++ b/src/gui/font/FontEditor.cpp @@ -186,8 +186,8 @@ void FontEditor::PackData( fontPtrs.clear(); fontRanges.clear(); bool first = true; - String::value_type rangeStart; - String::value_type prev; + String::value_type rangeStart = 0; + String::value_type prev = 0; for(std::map::const_iterator it = fontWidths.begin(); it != fontWidths.end(); it++) { String::value_type ch = it->first; diff --git a/src/gui/preview/PreviewModel.cpp b/src/gui/preview/PreviewModel.cpp index ac594da7d..21d68cef3 100644 --- a/src/gui/preview/PreviewModel.cpp +++ b/src/gui/preview/PreviewModel.cpp @@ -1,3 +1,5 @@ +#include "client/http/Request.h" // includes curl.h, needs to come first to silence a warning on windows + #include "PreviewModel.h" #include @@ -8,7 +10,6 @@ #include "client/Client.h" #include "client/GameSave.h" #include "client/SaveInfo.h" -#include "client/http/Request.h" #include "gui/dialogues/ErrorMessage.h" #include "gui/preview/Comment.h" diff --git a/src/gui/update/UpdateActivity.cpp b/src/gui/update/UpdateActivity.cpp index 183c9194c..7ef463b89 100644 --- a/src/gui/update/UpdateActivity.cpp +++ b/src/gui/update/UpdateActivity.cpp @@ -1,6 +1,7 @@ +#include "client/http/Request.h" // includes curl.h, needs to come first to silence a warning on windows + #include "UpdateActivity.h" -#include "client/http/Request.h" #include "bzip2/bzlib.h" #include "Config.h" diff --git a/src/lua/LegacyLuaAPI.cpp b/src/lua/LegacyLuaAPI.cpp index 305981449..906f40eb8 100644 --- a/src/lua/LegacyLuaAPI.cpp +++ b/src/lua/LegacyLuaAPI.cpp @@ -1,5 +1,8 @@ #include "Config.h" #ifdef LUACONSOLE + +#include "client/http/Request.h" // includes curl.h, needs to come first to silence a warning on windows + #include #include #include @@ -20,7 +23,6 @@ #include "simulation/Simulation.h" #include "simulation/SimulationData.h" -#include "client/http/Request.h" #include "gui/dialogues/ConfirmPrompt.h" #include "gui/dialogues/ErrorMessage.h" #include "gui/dialogues/InformationMessage.h" diff --git a/src/lua/LuaScriptInterface.cpp b/src/lua/LuaScriptInterface.cpp index 2d809ca48..e47201697 100644 --- a/src/lua/LuaScriptInterface.cpp +++ b/src/lua/LuaScriptInterface.cpp @@ -1,6 +1,8 @@ #include "Config.h" #ifdef LUACONSOLE +#include "client/http/Request.h" // includes curl.h, needs to come first to silence a warning on windows + #include "LuaScriptInterface.h" #include @@ -40,7 +42,6 @@ #include "simulation/ToolClasses.h" #include "simulation/SaveRenderer.h" -#include "client/http/Request.h" #include "gui/interface/Window.h" #include "gui/interface/Engine.h" #include "gui/game/GameView.h" diff --git a/src/lua/meson.build b/src/lua/meson.build index 62d208b07..d3ccf57ba 100644 --- a/src/lua/meson.build +++ b/src/lua/meson.build @@ -13,7 +13,7 @@ luaconsole_files = files( 'LuaTextbox.cpp', 'LuaWindow.cpp', ) -if uopt_http +if enable_http luaconsole_files += files( 'LuaTCPSocket.cpp', ) diff --git a/src/meson.build b/src/meson.build index b5e4e724f..c522332be 100644 --- a/src/meson.build +++ b/src/meson.build @@ -33,7 +33,7 @@ subdir('debug') subdir('graphics') subdir('gui') subdir('json') -if uopt_lua != 'none' +if lua_variant != 'none' subdir('lua') endif subdir('resampler') diff --git a/subprojects/tpt-libs-prebuilt-aarch64-android-bionic-static-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-aarch64-android-bionic-static-debug-v20220901212941.wrap new file mode 100644 index 000000000..c640fe84d --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-aarch64-android-bionic-static-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-aarch64-android-bionic-static-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-aarch64-android-bionic-static-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-aarch64-android-bionic-static-debug-v20220901212941.zip +source_hash = 5d6d201b0872883996d0f4b68eafd4711cef223666558689f4a92ddb733fc49c diff --git a/subprojects/tpt-libs-prebuilt-aarch64-android-bionic-static-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-aarch64-android-bionic-static-release-v20220901212941.wrap new file mode 100644 index 000000000..a5797944d --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-aarch64-android-bionic-static-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-aarch64-android-bionic-static-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-aarch64-android-bionic-static-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-aarch64-android-bionic-static-release-v20220901212941.zip +source_hash = 2e2ee7a9a54da1e7c0dc0d2b11975ebf0e037c9a97d8295eea1ea244917344a8 diff --git a/subprojects/tpt-libs-prebuilt-aarch64-darwin-macos-static-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-aarch64-darwin-macos-static-debug-v20220901212941.wrap new file mode 100644 index 000000000..87097b713 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-aarch64-darwin-macos-static-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-aarch64-darwin-macos-static-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-aarch64-darwin-macos-static-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-aarch64-darwin-macos-static-debug-v20220901212941.zip +source_hash = 27e540962ee324d8c49f927bff0b0fdd9e7e196eeeb9b7652217f9f2d7d64efa diff --git a/subprojects/tpt-libs-prebuilt-aarch64-darwin-macos-static-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-aarch64-darwin-macos-static-release-v20220901212941.wrap new file mode 100644 index 000000000..b7c3006e6 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-aarch64-darwin-macos-static-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-aarch64-darwin-macos-static-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-aarch64-darwin-macos-static-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-aarch64-darwin-macos-static-release-v20220901212941.zip +source_hash = c910019bbcb765236a0e26faa0e4974000411f0ca4b470d529efeb7c4c8cd008 diff --git a/subprojects/tpt-libs-prebuilt-arm-and-gcc-static-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-arm-and-gcc-static-v20220414193335.wrap deleted file mode 100644 index 19af9d92e..000000000 --- a/subprojects/tpt-libs-prebuilt-arm-and-gcc-static-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-arm-and-gcc-static-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-arm-and-gcc-static-v20220414193335.zip -source_filename = tpt-libs-prebuilt-arm-and-gcc-static-v20220414193335.zip -source_hash = 226a1b2ece17c329649d3031f6c8b893f4ce08f91323728b11aa7bbdfb581c6e diff --git a/subprojects/tpt-libs-prebuilt-arm-android-bionic-static-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-arm-android-bionic-static-debug-v20220901212941.wrap new file mode 100644 index 000000000..4d81798c7 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-arm-android-bionic-static-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-arm-android-bionic-static-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-arm-android-bionic-static-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-arm-android-bionic-static-debug-v20220901212941.zip +source_hash = 0cfde7e1afe53ed13e6ab2863ac521eaa22abb78087c7a9d0f86d9e68e2ba365 diff --git a/subprojects/tpt-libs-prebuilt-arm-android-bionic-static-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-arm-android-bionic-static-release-v20220901212941.wrap new file mode 100644 index 000000000..ae5db1b3a --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-arm-android-bionic-static-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-arm-android-bionic-static-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-arm-android-bionic-static-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-arm-android-bionic-static-release-v20220901212941.zip +source_hash = 77287c4f15480951978dbaa360e9921a2398cceae916658b3810b42f3e538cd1 diff --git a/subprojects/tpt-libs-prebuilt-arm64-and-gcc-static-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-arm64-and-gcc-static-v20220414193335.wrap deleted file mode 100644 index 677bac9ca..000000000 --- a/subprojects/tpt-libs-prebuilt-arm64-and-gcc-static-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-arm64-and-gcc-static-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-arm64-and-gcc-static-v20220414193335.zip -source_filename = tpt-libs-prebuilt-arm64-and-gcc-static-v20220414193335.zip -source_hash = 31b9ee7abc07a13972ad346a86db1fb6e850046d4427b60eb312796c99f6069b diff --git a/subprojects/tpt-libs-prebuilt-arm64-mac-gcc-static-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-arm64-mac-gcc-static-v20220414193335.wrap deleted file mode 100644 index 260ec07c2..000000000 --- a/subprojects/tpt-libs-prebuilt-arm64-mac-gcc-static-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-arm64-mac-gcc-static-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-arm64-mac-gcc-static-v20220414193335.zip -source_filename = tpt-libs-prebuilt-arm64-mac-gcc-static-v20220414193335.zip -source_hash = f904875f5d4d5ae6182a21603b768451049d19d5a7d2081907785166aba5af89 diff --git a/subprojects/tpt-libs-prebuilt-i686-and-gcc-static-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-i686-and-gcc-static-v20220414193335.wrap deleted file mode 100644 index 2ec3e5f69..000000000 --- a/subprojects/tpt-libs-prebuilt-i686-and-gcc-static-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-i686-and-gcc-static-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-i686-and-gcc-static-v20220414193335.zip -source_filename = tpt-libs-prebuilt-i686-and-gcc-static-v20220414193335.zip -source_hash = 469c8d4d3b4be42fc51232c89c8729286c98008fc84e6cd29417d3799a77b339 diff --git a/subprojects/tpt-libs-prebuilt-i686-win-msvc-dynamic-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-i686-win-msvc-dynamic-v20220414193335.wrap deleted file mode 100644 index 9a296a688..000000000 --- a/subprojects/tpt-libs-prebuilt-i686-win-msvc-dynamic-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-i686-win-msvc-dynamic-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-i686-win-msvc-dynamic-v20220414193335.zip -source_filename = tpt-libs-prebuilt-i686-win-msvc-dynamic-v20220414193335.zip -source_hash = 16c7818b6e2d95eb22c0a72a57c3f35ba26268615d5b7d9c9cac072fcacc156b diff --git a/subprojects/tpt-libs-prebuilt-i686-win-msvc-static-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-i686-win-msvc-static-v20220414193335.wrap deleted file mode 100644 index 9e729ad47..000000000 --- a/subprojects/tpt-libs-prebuilt-i686-win-msvc-static-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-i686-win-msvc-static-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-i686-win-msvc-static-v20220414193335.zip -source_filename = tpt-libs-prebuilt-i686-win-msvc-static-v20220414193335.zip -source_hash = 49d93a611fee0dc2fde4e55ccd08b4ea8599a1ee295053bab790b42616d9fed5 diff --git a/subprojects/tpt-libs-prebuilt-x86-android-bionic-static-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86-android-bionic-static-debug-v20220901212941.wrap new file mode 100644 index 000000000..e3286f6b5 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86-android-bionic-static-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86-android-bionic-static-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86-android-bionic-static-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86-android-bionic-static-debug-v20220901212941.zip +source_hash = ee8496f3bbabe58f98959081913b63da099195ace0e09c0451f7410c4db42373 diff --git a/subprojects/tpt-libs-prebuilt-x86-android-bionic-static-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86-android-bionic-static-release-v20220901212941.wrap new file mode 100644 index 000000000..d72550881 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86-android-bionic-static-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86-android-bionic-static-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86-android-bionic-static-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86-android-bionic-static-release-v20220901212941.zip +source_hash = b1fefbb0255203e5276034e64f25d0775003077619528a8bdfd1ffcb603c4c10 diff --git a/subprojects/tpt-libs-prebuilt-x86-windows-msvc-dynamic-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86-windows-msvc-dynamic-debug-v20220901212941.wrap new file mode 100644 index 000000000..2aafd8be1 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86-windows-msvc-dynamic-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86-windows-msvc-dynamic-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86-windows-msvc-dynamic-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86-windows-msvc-dynamic-debug-v20220901212941.zip +source_hash = 0faf7eacc8189e7b1b5e881c4c30989ae54224d8b8d75b17b488bb7f5facbc94 diff --git a/subprojects/tpt-libs-prebuilt-x86-windows-msvc-dynamic-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86-windows-msvc-dynamic-release-v20220901212941.wrap new file mode 100644 index 000000000..d1ea22d34 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86-windows-msvc-dynamic-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86-windows-msvc-dynamic-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86-windows-msvc-dynamic-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86-windows-msvc-dynamic-release-v20220901212941.zip +source_hash = 21c04cc1d3e9212d6728eb20a16084f093aed9d1de47cd8fadfdd277189b7462 diff --git a/subprojects/tpt-libs-prebuilt-x86-windows-msvc-static-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86-windows-msvc-static-debug-v20220901212941.wrap new file mode 100644 index 000000000..01014e250 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86-windows-msvc-static-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86-windows-msvc-static-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86-windows-msvc-static-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86-windows-msvc-static-debug-v20220901212941.zip +source_hash = fb307b0c2e007fc6cdf7e1ec3f30868cb2e458b62b1519ccf122a9747f94cc19 diff --git a/subprojects/tpt-libs-prebuilt-x86-windows-msvc-static-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86-windows-msvc-static-release-v20220901212941.wrap new file mode 100644 index 000000000..3d8d0029a --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86-windows-msvc-static-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86-windows-msvc-static-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86-windows-msvc-static-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86-windows-msvc-static-release-v20220901212941.zip +source_hash = 06d3c3d2f259ddadbdec6222d210a5cb6da5fc8679aee52eda324a189f1b60bc diff --git a/subprojects/tpt-libs-prebuilt-x86_64-and-gcc-static-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-x86_64-and-gcc-static-v20220414193335.wrap deleted file mode 100644 index ff4adc487..000000000 --- a/subprojects/tpt-libs-prebuilt-x86_64-and-gcc-static-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-x86_64-and-gcc-static-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-x86_64-and-gcc-static-v20220414193335.zip -source_filename = tpt-libs-prebuilt-x86_64-and-gcc-static-v20220414193335.zip -source_hash = 81c216cd0e12b0bfa1a29ec31553a431e53aee2c2f94e6dd69337dc949bf4957 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-android-bionic-static-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-android-bionic-static-debug-v20220901212941.wrap new file mode 100644 index 000000000..203c32371 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-android-bionic-static-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-android-bionic-static-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-android-bionic-static-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-android-bionic-static-debug-v20220901212941.zip +source_hash = 554ac18bf9c062bb886f04fc83263979c674c2d55915e7e66e0fd951e955d77b diff --git a/subprojects/tpt-libs-prebuilt-x86_64-android-bionic-static-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-android-bionic-static-release-v20220901212941.wrap new file mode 100644 index 000000000..4acc7a615 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-android-bionic-static-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-android-bionic-static-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-android-bionic-static-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-android-bionic-static-release-v20220901212941.zip +source_hash = 5e2bbc2defec6e22c9a42179ed33b0589e47cc7c310cca291ec3e823a1f5ea5d diff --git a/subprojects/tpt-libs-prebuilt-x86_64-darwin-macos-static-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-darwin-macos-static-debug-v20220901212941.wrap new file mode 100644 index 000000000..13197907b --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-darwin-macos-static-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-darwin-macos-static-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-darwin-macos-static-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-darwin-macos-static-debug-v20220901212941.zip +source_hash = 1dd115e9e86b068eaf62deb3b4ee6fdd39e1e3fd1a45e4e0526115429c30258b diff --git a/subprojects/tpt-libs-prebuilt-x86_64-darwin-macos-static-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-darwin-macos-static-release-v20220901212941.wrap new file mode 100644 index 000000000..943e726a3 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-darwin-macos-static-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-darwin-macos-static-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-darwin-macos-static-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-darwin-macos-static-release-v20220901212941.zip +source_hash = 5951d2605e78c83ebf79f65a929d4dac0295e0fee58c3af8488eced1e578321b diff --git a/subprojects/tpt-libs-prebuilt-x86_64-lin-gcc-static-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-x86_64-lin-gcc-static-v20220414193335.wrap deleted file mode 100644 index f621110c6..000000000 --- a/subprojects/tpt-libs-prebuilt-x86_64-lin-gcc-static-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-x86_64-lin-gcc-static-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-x86_64-lin-gcc-static-v20220414193335.zip -source_filename = tpt-libs-prebuilt-x86_64-lin-gcc-static-v20220414193335.zip -source_hash = db4736e6633cedf3b920d311f137b877b3d9f4fae868076425c826217722a693 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-linux-gnu-static-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-linux-gnu-static-debug-v20220901212941.wrap new file mode 100644 index 000000000..18e29abdc --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-linux-gnu-static-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-linux-gnu-static-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-linux-gnu-static-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-linux-gnu-static-debug-v20220901212941.zip +source_hash = 750d9abb4b257e0f5702e3904150f9521e44ecd97a0f8af4a9262b90f4bad4da diff --git a/subprojects/tpt-libs-prebuilt-x86_64-linux-gnu-static-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-linux-gnu-static-release-v20220901212941.wrap new file mode 100644 index 000000000..5eb58750d --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-linux-gnu-static-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-linux-gnu-static-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-linux-gnu-static-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-linux-gnu-static-release-v20220901212941.zip +source_hash = 0466d7309f1b9989e3ae74e67560bddb7b0a24a914b4da8901396ce8fadd80e9 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-mac-gcc-static-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-x86_64-mac-gcc-static-v20220414193335.wrap deleted file mode 100644 index 54d198f3e..000000000 --- a/subprojects/tpt-libs-prebuilt-x86_64-mac-gcc-static-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-x86_64-mac-gcc-static-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-x86_64-mac-gcc-static-v20220414193335.zip -source_filename = tpt-libs-prebuilt-x86_64-mac-gcc-static-v20220414193335.zip -source_hash = 92cf4a7e9260a7706af6de681bcb422e7cdf002d8fd699f6bf41248c5a0e8561 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-win-mingw-dynamic-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-x86_64-win-mingw-dynamic-v20220414193335.wrap deleted file mode 100644 index b5d2e7fe6..000000000 --- a/subprojects/tpt-libs-prebuilt-x86_64-win-mingw-dynamic-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-x86_64-win-mingw-dynamic-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-x86_64-win-mingw-dynamic-v20220414193335.zip -source_filename = tpt-libs-prebuilt-x86_64-win-mingw-dynamic-v20220414193335.zip -source_hash = c72b41274254728e1513ec07ecec574efb8138645aaa691bf7b3df7fe8e13ed7 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-win-mingw-static-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-x86_64-win-mingw-static-v20220414193335.wrap deleted file mode 100644 index 6c71df378..000000000 --- a/subprojects/tpt-libs-prebuilt-x86_64-win-mingw-static-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-x86_64-win-mingw-static-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-x86_64-win-mingw-static-v20220414193335.zip -source_filename = tpt-libs-prebuilt-x86_64-win-mingw-static-v20220414193335.zip -source_hash = 6fac58359250d7e7c8625be12f2ff05c2d8d530d37527b1171ffef9316db0c59 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-win-msvc-dynamic-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-x86_64-win-msvc-dynamic-v20220414193335.wrap deleted file mode 100644 index 6aa635e54..000000000 --- a/subprojects/tpt-libs-prebuilt-x86_64-win-msvc-dynamic-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-x86_64-win-msvc-dynamic-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-x86_64-win-msvc-dynamic-v20220414193335.zip -source_filename = tpt-libs-prebuilt-x86_64-win-msvc-dynamic-v20220414193335.zip -source_hash = 5eb84fa27e5b7eaa153143096c72878ee26aa1e00c43ce283882f7dcc47b73a2 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-win-msvc-static-v20220414193335.wrap b/subprojects/tpt-libs-prebuilt-x86_64-win-msvc-static-v20220414193335.wrap deleted file mode 100644 index 42ff413ee..000000000 --- a/subprojects/tpt-libs-prebuilt-x86_64-win-msvc-static-v20220414193335.wrap +++ /dev/null @@ -1,6 +0,0 @@ -[wrap-file] -directory = tpt-libs-prebuilt-x86_64-win-msvc-static-v20220414193335 - -source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220414193335/tpt-libs-prebuilt-x86_64-win-msvc-static-v20220414193335.zip -source_filename = tpt-libs-prebuilt-x86_64-win-msvc-static-v20220414193335.zip -source_hash = 32f71cf6c750e0c312777538ca094a8577b4d9d27dc68e8d406aa991d1440db1 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-debug-v20220901212941.wrap new file mode 100644 index 000000000..577f55826 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-debug-v20220901212941.zip +source_hash = 0c680924335e0a9dc1e9479195b764244a6f441eee4dffaf460375baf106b21d diff --git a/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-release-v20220901212941.wrap new file mode 100644 index 000000000..8e44dde4f --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-windows-mingw-dynamic-release-v20220901212941.zip +source_hash = 48f91167a78c7744d9cf00f79b046583268c4b9132b870560bbcf35a8d590191 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-static-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-static-debug-v20220901212941.wrap new file mode 100644 index 000000000..3d4a3e225 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-static-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-windows-mingw-static-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-windows-mingw-static-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-windows-mingw-static-debug-v20220901212941.zip +source_hash = 55efb0c7b45d398ee29777ff32223191a850783e0215ddcdd60c1d8dc94d7128 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-static-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-static-release-v20220901212941.wrap new file mode 100644 index 000000000..2435d50f1 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-windows-mingw-static-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-windows-mingw-static-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-windows-mingw-static-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-windows-mingw-static-release-v20220901212941.zip +source_hash = 34b1b9096fb16e41c0c6f0f8cf291b333d46cda72bdbdf1009eb4fdfbc6695f6 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-debug-v20220901212941.wrap new file mode 100644 index 000000000..a4f06893f --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-debug-v20220901212941.zip +source_hash = 6089faf76116a86c46014ec82e3922d155f3e56cef1dee70b4a311f822bc8325 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-release-v20220901212941.wrap new file mode 100644 index 000000000..2c7f40070 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-windows-msvc-dynamic-release-v20220901212941.zip +source_hash = ba3193ac2baca305a00dda577f1ddefc3209aa9bccfa197961a360a4de1b9b35 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-static-debug-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-static-debug-v20220901212941.wrap new file mode 100644 index 000000000..a3066b866 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-static-debug-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-windows-msvc-static-debug-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-windows-msvc-static-debug-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-windows-msvc-static-debug-v20220901212941.zip +source_hash = 4cd79adda8a6dd7707c2b9a55f1e9d6ffa40f1bba4d68026460046d160f5a2b1 diff --git a/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-static-release-v20220901212941.wrap b/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-static-release-v20220901212941.wrap new file mode 100644 index 000000000..0bed5ba28 --- /dev/null +++ b/subprojects/tpt-libs-prebuilt-x86_64-windows-msvc-static-release-v20220901212941.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory = tpt-libs-prebuilt-x86_64-windows-msvc-static-release-v20220901212941 + +source_url = https://github.com/The-Powder-Toy/tpt-libs/releases/download/v20220901212941/tpt-libs-prebuilt-x86_64-windows-msvc-static-release-v20220901212941.zip +source_filename = tpt-libs-prebuilt-x86_64-windows-msvc-static-release-v20220901212941.zip +source_hash = afa4b34d61c7ddbd6a2345beec10c107e6462fe6cafecf9e630e34d33b2ca91b diff --git a/subprojects/update-wraps.sh b/subprojects/update-wraps.sh new file mode 100755 index 000000000..720ee7f9e --- /dev/null +++ b/subprojects/update-wraps.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -euo pipefail +shopt -s globstar +IFS=$'\n\t' + +owner=$1 +repo=$2 +tag=$3 + +set +e +rm *.wrap > /dev/null 2>&1 +set -e +for wrap in $(curl -sL "https://api.github.com/repos/$owner/$repo/releases/tags/$tag" | jq -r '.assets[].browser_download_url | select(endswith("wrap"))'); do + echo $wrap + curl -sLO $wrap +done + +sed -i "s|tpt_libs_vtag = '[^']*'|tpt_libs_vtag = '$tag'|g" ../meson.build