From 211c1ce8fbb035194700698bc42bca257e5ad113 Mon Sep 17 00:00:00 2001 From: Relintai Date: Wed, 23 Mar 2022 22:07:11 +0100 Subject: [PATCH] Added the tools from broken seals directly to this repo. --- misc/build-containers/.gitignore | 12 ++ misc/build-containers/Dockerfile.android | 18 +++ misc/build-containers/Dockerfile.base | 10 ++ misc/build-containers/Dockerfile.ios | 39 ++++++ misc/build-containers/Dockerfile.javascript | 13 ++ misc/build-containers/Dockerfile.linux | 7 ++ misc/build-containers/Dockerfile.msvc | 29 +++++ misc/build-containers/Dockerfile.osx | 18 +++ misc/build-containers/Dockerfile.windows | 7 ++ misc/build-containers/Dockerfile.xcode | 77 ++++++++++++ misc/build-containers/README.md | 10 ++ misc/build-containers/build_containers.sh | 55 ++++++++ misc/build-containers/files/msvc-fixup.sh | 24 ++++ .../patches/osxcross-pr284-compiler-rt.patch | 118 ++++++++++++++++++ misc/build-containers/upload.sh | 27 ++++ misc/osx/create_editor_app.sh | 12 ++ misc/osx/create_export_templates.sh | 12 ++ misc/osx/lipo.sh | 6 + 18 files changed, 494 insertions(+) create mode 100644 misc/build-containers/.gitignore create mode 100644 misc/build-containers/Dockerfile.android create mode 100644 misc/build-containers/Dockerfile.base create mode 100644 misc/build-containers/Dockerfile.ios create mode 100644 misc/build-containers/Dockerfile.javascript create mode 100644 misc/build-containers/Dockerfile.linux create mode 100644 misc/build-containers/Dockerfile.msvc create mode 100644 misc/build-containers/Dockerfile.osx create mode 100644 misc/build-containers/Dockerfile.windows create mode 100644 misc/build-containers/Dockerfile.xcode create mode 100644 misc/build-containers/README.md create mode 100755 misc/build-containers/build_containers.sh create mode 100755 misc/build-containers/files/msvc-fixup.sh create mode 100644 misc/build-containers/files/patches/osxcross-pr284-compiler-rt.patch create mode 100644 misc/build-containers/upload.sh create mode 100755 misc/osx/create_editor_app.sh create mode 100755 misc/osx/create_export_templates.sh create mode 100755 misc/osx/lipo.sh diff --git a/misc/build-containers/.gitignore b/misc/build-containers/.gitignore new file mode 100644 index 000000000..f9d8f5a5c --- /dev/null +++ b/misc/build-containers/.gitignore @@ -0,0 +1,12 @@ +*.tar +*.tar.gz +*.tar.bz2 +*.tar.xz +*.exe +*.swp +*.dmg +*.zip +*.xip + +files/mono-*/ +logs/ diff --git a/misc/build-containers/Dockerfile.android b/misc/build-containers/Dockerfile.android new file mode 100644 index 000000000..ff8c77a54 --- /dev/null +++ b/misc/build-containers/Dockerfile.android @@ -0,0 +1,18 @@ +ARG img_version +FROM pandemonium-fedora:${img_version} + +ENV ANDROID_SDK_ROOT=/root/sdk +ENV ANDROID_NDK_VERSION=21.4.7075529 +ENV ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION} + +RUN dnf -y install --setopt=install_weak_deps=False \ + gcc gcc-c++ java-11-openjdk-devel ncurses-compat-libs && \ + mkdir -p sdk && cd sdk && \ + export CMDLINETOOLS=commandlinetools-linux-7302050_latest.zip && \ + curl -LO https://dl.google.com/android/repository/${CMDLINETOOLS} && \ + unzip ${CMDLINETOOLS} && \ + rm ${CMDLINETOOLS} && \ + yes | cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" --licenses && \ + cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" "ndk;${ANDROID_NDK_VERSION}" 'cmdline-tools;latest' 'build-tools;30.0.3' 'platforms;android-30' 'cmake;3.18.1' + +CMD /bin/bash diff --git a/misc/build-containers/Dockerfile.base b/misc/build-containers/Dockerfile.base new file mode 100644 index 000000000..6fb326eef --- /dev/null +++ b/misc/build-containers/Dockerfile.base @@ -0,0 +1,10 @@ +FROM fedora:34 + +WORKDIR /root + +RUN dnf -y upgrade --setopt=install_weak_deps=False && \ + dnf -y install --setopt=install_weak_deps=False \ + bash bzip2 curl file findutils git make nano patch pkgconfig python3-pip unzip which xz yasm && \ + pip install scons==4.1.0 + +CMD /bin/bash diff --git a/misc/build-containers/Dockerfile.ios b/misc/build-containers/Dockerfile.ios new file mode 100644 index 000000000..ec100b473 --- /dev/null +++ b/misc/build-containers/Dockerfile.ios @@ -0,0 +1,39 @@ +ARG img_version +FROM pandemonium-osx:${img_version} + +ENV IOS_SDK=14.5 + +RUN dnf -y install --setopt=install_weak_deps=False \ + automake autoconf clang gcc gcc-c++ gcc-objc gcc-objc++ cmake libicu-devel libtool libxml2-devel llvm-devel openssl-devel perl python yasm && \ + git clone --progress https://github.com/tpoechtrager/cctools-port.git && \ + cd /root/cctools-port && \ + git checkout 236a426c1205a3bfcf0dbb2e2faf2296f0a100e5 && \ + # arm64 device + usage_examples/ios_toolchain/build.sh /root/files/iPhoneOS${IOS_SDK}.sdk.tar.xz arm64 && \ + mkdir -p /root/ioscross/arm64 && \ + mv usage_examples/ios_toolchain/target/* /root/ioscross/arm64 && \ + mkdir /root/ioscross/arm64/usr && \ + ln -s /root/ioscross/arm64/bin /root/ioscross/arm64/usr/bin && \ + # arm64 simulator + # Disabled for now as it doesn't work with cctools-port and current LLVM: + # Cf. https://github.com/tpoechtrager/cctools-port/issues/102 + #sed -i 's/miphoneos-version-min/mios-simulator-version-min/g' usage_examples/ios_toolchain/wrapper.c && \ + #usage_examples/ios_toolchain/build.sh /root/files/iPhoneSimulator${IOS_SDK}.sdk.tar.xz arm64 && \ + #mkdir -p /root/ioscross/arm64_sim && \ + #mv usage_examples/ios_toolchain/target/* /root/ioscross/arm64_sim && \ + #mkdir /root/ioscross/arm64_sim/usr && \ + #ln -s /root/ioscross/arm64_sim/bin /root/ioscross/arm64_sim/usr/bin && \ + # x86_64 simulator + sed -i 's#^TRIPLE=.*#TRIPLE="x86_64-apple-darwin11"#' usage_examples/ios_toolchain/build.sh && \ + usage_examples/ios_toolchain/build.sh /root/files/iPhoneSimulator${IOS_SDK}.sdk.tar.xz x86_64 && \ + mkdir -p /root/ioscross/x86_64_sim && \ + mv usage_examples/ios_toolchain/target/* /root/ioscross/x86_64_sim && \ + mkdir /root/ioscross/x86_64_sim/usr && \ + ln -s /root/ioscross/x86_64_sim/bin /root/ioscross/x86_64_sim/usr/bin + + +ENV OSXCROSS_IOS=not_nothing +ENV IOSCROSS_ROOT=/root/ioscross +ENV PATH="/root/ioscross/arm64/bin:/root/ioscross/arm64_sim/bin:/root/ioscross/x86_64_sim/bin:${PATH}" + +CMD /bin/bash diff --git a/misc/build-containers/Dockerfile.javascript b/misc/build-containers/Dockerfile.javascript new file mode 100644 index 000000000..ceddddced --- /dev/null +++ b/misc/build-containers/Dockerfile.javascript @@ -0,0 +1,13 @@ +ARG img_version +FROM pandemonium-fedora:${img_version} + +ENV EMSCRIPTEN_CLASSICAL=2.0.25 + +RUN dnf -y install --setopt=install_weak_deps=False \ + java-openjdk && \ + git clone --branch ${EMSCRIPTEN_CLASSICAL} --progress https://github.com/emscripten-core/emsdk emsdk_${EMSCRIPTEN_CLASSICAL} && \ + emsdk_${EMSCRIPTEN_CLASSICAL}/emsdk install ${EMSCRIPTEN_CLASSICAL} && \ + emsdk_${EMSCRIPTEN_CLASSICAL}/emsdk activate ${EMSCRIPTEN_CLASSICAL} +# echo "source /root/emsdk_${EMSCRIPTEN_CLASSICAL}/emsdk_env.sh" >> /root/.bashrc + +CMD /bin/bash diff --git a/misc/build-containers/Dockerfile.linux b/misc/build-containers/Dockerfile.linux new file mode 100644 index 000000000..9e8618947 --- /dev/null +++ b/misc/build-containers/Dockerfile.linux @@ -0,0 +1,7 @@ +ARG img_version +FROM pandemonium-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + gcc-c++ libxcrypt-compat xorg-x11-server-Xvfb libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel alsa-lib-devel pulseaudio-libs-devel libudev-devel mesa-libGL-devel mesa-libGLU-devel mesa-dri-drivers yasm libstdc++ libstdc++-static + +CMD /bin/bash diff --git a/misc/build-containers/Dockerfile.msvc b/misc/build-containers/Dockerfile.msvc new file mode 100644 index 000000000..2f3aa2be5 --- /dev/null +++ b/misc/build-containers/Dockerfile.msvc @@ -0,0 +1,29 @@ +ARG img_version +FROM pandemonium-fedora:${img_version} + +ENV WINEDEBUG=-all + +RUN dnf -y install --setopt=install_weak_deps=False \ + wine winetricks xorg-x11-server-Xvfb p7zip-plugins findutils && \ + curl -LO https://github.com/GodotBuilder/pandemonium-builds/releases/download/_tools/angle.7z && \ + curl -LO https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64.exe && \ + xvfb-run sh -c "winetricks -q vcrun2017; wineserver -w" ;\ + xvfb-run sh -c "winetricks -q dotnet461; wineserver -w" ;\ + xvfb-run sh -c "wine /root/python-3.7.2-amd64.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0; wineserver -w" ;\ + rm /root/python-3.7.2-amd64.exe && \ + wine python -m pip install --upgrade pip ; wineserver -w ; \ + wine pip install -U setuptools ; wineserver -w ; \ + wine pip install -U wheel ; wineserver -w ; \ + wine pip install scons pywin32 ; wineserver -w ; \ + cd /root/.wine/drive_c && \ + 7z x /root/angle.7z && \ + rm /root/angle.7z && \ + cd "/root/.wine/drive_c/Program Files (x86)" && \ + tar xf /root/files/msvc2017.tar && \ + cd /root && \ + bash /root/files/msvc-fixup.sh && \ + find /root/.wine -name vctip.exe -delete && \ + rm -rf /root/.wine/drive_c/users/root/Temp/* && \ + rm -rf /root/.cache + +CMD /bin/bash diff --git a/misc/build-containers/Dockerfile.osx b/misc/build-containers/Dockerfile.osx new file mode 100644 index 000000000..1031901f7 --- /dev/null +++ b/misc/build-containers/Dockerfile.osx @@ -0,0 +1,18 @@ +ARG img_version +FROM pandemonium-fedora:${img_version} + +#cmake + +RUN dnf -y install --setopt=install_weak_deps=False \ + automake autoconf bzip2-devel clang libicu-devel libtool libxml2-devel llvm-devel openssl-devel yasm cmake && \ + git clone --progress https://github.com/tpoechtrager/osxcross.git && \ + cd /root/osxcross && \ + git checkout 0f87f567dfaf98460244471ad6c0f4311d62079c && \ + ln -s /root/files/MacOSX11.3.sdk.tar.xz /root/osxcross/tarballs && \ + UNATTENDED=1 ./build.sh && \ + ./build_compiler_rt.sh + +ENV OSXCROSS_ROOT=/root/osxcross +ENV PATH="/root/osxcross/target/bin:${PATH}" + +CMD /bin/bash diff --git a/misc/build-containers/Dockerfile.windows b/misc/build-containers/Dockerfile.windows new file mode 100644 index 000000000..a42b35535 --- /dev/null +++ b/misc/build-containers/Dockerfile.windows @@ -0,0 +1,7 @@ +ARG img_version +FROM pandemonium-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + mingw32-gcc mingw32-gcc-c++ mingw32-winpthreads-static mingw64-gcc mingw64-gcc-c++ mingw64-winpthreads-static + +CMD /bin/bash diff --git a/misc/build-containers/Dockerfile.xcode b/misc/build-containers/Dockerfile.xcode new file mode 100644 index 000000000..b4fa4cd7c --- /dev/null +++ b/misc/build-containers/Dockerfile.xcode @@ -0,0 +1,77 @@ +ARG img_version +FROM pandemonium-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + clang xar xar-devel xz-devel cpio && \ + git clone --progress https://github.com/NiklasRosenstein/pbzx && \ + cd pbzx && \ + git checkout 2a4d7c3300c826d918def713a24d25c237c8ed53 && \ + clang -O3 -llzma -lxar -I /usr/local/include pbzx.c -o pbzx + + + +CMD mkdir -p /root/xcode && \ + cd /root/xcode && \ + xar -xf /root/files/Xcode_12.4.xip && \ + /root/pbzx/pbzx -n Content | cpio -i && \ + export OSX_SDK=MacOSX11.1.sdk && \ + cp -r Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk /tmp/${OSX_SDK} && \ + mkdir -p mkdir -p /tmp/${OSX_SDK}/usr/share/man && \ + cp -rf Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man1 \ + Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man3 \ + Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man5 /tmp/${OSX_SDK}/usr/share/man/ && \ + cd /tmp && \ + tar -cJf /root/files/${OSX_SDK}.tar.xz ${OSX_SDK} && \ + rm -rf ${OSX_SDK} && \ + cd /root/xcode && \ + export IOS_SDK=iPhoneOS14.4.sdk && \ + export IOS_SIMULATOR_SDK=iPhoneSimulator14.4.sdk && \ + cp -r Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk /tmp/${IOS_SDK} && \ + mkdir -p /tmp/${IOS_SDK}/usr/include/c++ && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/${IOS_SDK}/usr/include/c++/ && \ + cd /tmp && \ + tar -cJf /root/files/${IOS_SDK}.tar.xz ${IOS_SDK} && \ + rm -rf ${IOS_SDK} && \ + cd /root/xcode && \ + cp -r Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk /tmp/${IOS_SDK} && \ + mkdir -p /tmp/${IOS_SDK}/usr/include/c++ && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/${IOS_SDK}/usr/include/c++/ && \ + cd /tmp && \ + tar -cJf /root/files/${IOS_SIMULATOR_SDK}.tar.xz ${IOS_SDK} && \ + rm -rf ${IOS_SDK} + +#XCODE_SDK=12.5.1 +#OSX_SDK=11.3 +#IOS_SDK=14.5 + +CMD mkdir -p /root/xcode && \ + cd /root/xcode && \ + xar -xf /root/files/Xcode_12.5.1.xip && \ + /root/pbzx/pbzx -n Content | cpio -i && \ + export OSX_SDK=MacOSX11.3.sdk && \ + cp -r Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk /tmp/${OSX_SDK} && \ + mkdir -p /tmp/${OSX_SDK}/usr/include/c++ && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/${OSX_SDK}/usr/include/c++/ && \ + mkdir -p mkdir -p /tmp/${OSX_SDK}/usr/share/man && \ + cp -rf Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man1 \ + Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man3 \ + Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man5 /tmp/${OSX_SDK}/usr/share/man/ && \ + cd /tmp && \ + tar -cJf /root/files/${OSX_SDK}.tar.xz ${OSX_SDK} && \ + rm -rf ${OSX_SDK} && \ + cd /root/xcode && \ + export IOS_SDK=iPhoneOS14.5.sdk && \ + export IOS_SIMULATOR_SDK=iPhoneSimulator14.5.sdk && \ + cp -r Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk /tmp/${IOS_SDK} && \ + mkdir -p /tmp/${IOS_SDK}/usr/include/c++ && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/${IOS_SDK}/usr/include/c++/ && \ + cd /tmp && \ + tar -cJf /root/files/${IOS_SDK}.tar.xz ${IOS_SDK} && \ + rm -rf ${IOS_SDK} && \ + cd /root/xcode && \ + cp -r Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk /tmp/${IOS_SDK} && \ + mkdir -p /tmp/${IOS_SDK}/usr/include/c++ && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/${IOS_SDK}/usr/include/c++/ && \ + cd /tmp && \ + tar -cJf /root/files/${IOS_SIMULATOR_SDK}.tar.xz ${IOS_SDK} && \ + rm -rf ${IOS_SDK} diff --git a/misc/build-containers/README.md b/misc/build-containers/README.md new file mode 100644 index 000000000..8b98f8722 --- /dev/null +++ b/misc/build-containers/README.md @@ -0,0 +1,10 @@ +# Godot engine build containers + +Based on https://github.com/godotengine/build-containers + +This repository contains the Dockerfiles for the official Godot engine builds. These containers should help you build Godot for all platforms supported on any machine that can run Docker containers. + +## Building + +There is a 'build.sh' script included to build the containers themselves. The in-container build scripts will follow shortly. + diff --git a/misc/build-containers/build_containers.sh b/misc/build-containers/build_containers.sh new file mode 100755 index 000000000..7caac4c37 --- /dev/null +++ b/misc/build-containers/build_containers.sh @@ -0,0 +1,55 @@ +#!/bin/bash +set -e + +podman=`which podman || true` + +if [ -z $podman ]; then + echo "podman needs to be in PATH for this script to work." + exit 1 +fi + +files_root=$(pwd)/files +img_version=bs + +mkdir -p logs + +export podman_build="$podman build --build-arg img_version=${img_version}" + +$podman build -v ${files_root}:/root/files -t pandemonium-fedora:${img_version} -f Dockerfile.base . 2>&1 | tee logs/base.log +$podman_build -t pandemonium-linux:${img_version} -f Dockerfile.linux . 2>&1 | tee logs/linux.log +$podman_build -t pandemonium-windows:${img_version} -f Dockerfile.windows --ulimit nofile=65536 . 2>&1 | tee logs/windows.log +$podman_build -t pandemonium-javascript:${img_version} -f Dockerfile.javascript . 2>&1 | tee logs/javascript.log +$podman_build -t pandemonium-android:${img_version} -f Dockerfile.android . 2>&1 | tee logs/android.log + +XCODE_SDK=12.5.1 +OSX_SDK=11.3 +IOS_SDK=14.5 +if [ ! -e files/MacOSX${OSX_SDK}.sdk.tar.xz ] || [ ! -e files/iPhoneOS${IOS_SDK}.sdk.tar.xz ] || [ ! -e files/iPhoneSimulator${IOS_SDK}.sdk.tar.xz ]; then + if [ ! -e files/Xcode_${XCODE_SDK}.xip ]; then + echo "files/Xcode_${XCODE_SDK}.xip is required. It can be downloaded from https://developer.apple.com/download/more/ with a valid apple ID." + exit 1 + fi + + echo "Building OSX and iOS SDK packages. This will take a while" + $podman_build -t pandemonium-xcode-packer:${img_version} -f Dockerfile.xcode -v ${files_root}:/root/files . 2>&1 | tee logs/xcode.log + $podman run -it --rm -v ${files_root}:/root/files pandemonium-xcode-packer:${img_version} 2>&1 | tee logs/xcode_packer.log +fi + +$podman_build -t pandemonium-osx:${img_version} -v ${files_root}:/root/files -f Dockerfile.osx . 2>&1 | tee logs/osx.log +$podman_build -t pandemonium-ios:${img_version} -v ${files_root}:/root/files -f Dockerfile.ios . 2>&1 | tee logs/ios.log + +if [ "${build_msvc}" != "0" ]; then + if [ ! -e files/msvc2017.tar ]; then + echo + echo "files/msvc2017.tar is missing. This file can be created on a Windows 7 or 10 machine by downloading the 'Visual Studio Tools' installer." + echo "here: https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017" + echo "The required components can be installed by running" + echo "vs_buildtools.exe --add Microsoft.VisualStudio.Workload.UniversalBuildTools --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.Windows10SDK.16299.Desktop --add Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP.Native --passive" + echo "after that create a zipfile of C:/Program Files (x86)/Microsoft Visual Studio" + echo "tar -cf msvc2017.tar -C \"c:/Program Files (x86)/ Microsoft Visual Studio\"" + echo + exit 1 + fi + + $podman_build -t pandemonium-msvc:${img_version} -f Dockerfile.msvc -v ${files_root}:/root/files . 2>&1 | tee logs/msvc.log +fi diff --git a/misc/build-containers/files/msvc-fixup.sh b/misc/build-containers/files/msvc-fixup.sh new file mode 100755 index 000000000..95dd7997a --- /dev/null +++ b/misc/build-containers/files/msvc-fixup.sh @@ -0,0 +1,24 @@ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/arm/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x86/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/arm/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x86/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdb140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdb140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbsrv.exe /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbsrv.exe /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/msvcdis140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/arm/ + +pushd /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ SDKs/ +rm -rf ClickOnce\ Bootstrapper/ Portable/ Windows NuGetPackages/ UWPNuGetPackages/ +popd + diff --git a/misc/build-containers/files/patches/osxcross-pr284-compiler-rt.patch b/misc/build-containers/files/patches/osxcross-pr284-compiler-rt.patch new file mode 100644 index 000000000..f38c28338 --- /dev/null +++ b/misc/build-containers/files/patches/osxcross-pr284-compiler-rt.patch @@ -0,0 +1,118 @@ +From b875d7c1360c8ff2077463d7a5a12e1cff1cc683 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= +Date: Mon, 12 Jul 2021 13:34:32 +0200 +Subject: [PATCH] compiler-rt: Add option to automate install process + +Also mention that compiler-rt can be needed to build code using +`__builtin_available()`. + +Fixes #278. +--- + README.COMPILER-RT.md | 4 ++++ + README.md | 3 +++ + build_compiler_rt.sh | 33 ++++++++++++++++++++++++--------- + 3 files changed, 31 insertions(+), 9 deletions(-) + +diff --git a/README.COMPILER-RT.md b/README.COMPILER-RT.md +index b2754dfcf..dced89686 100644 +--- a/README.COMPILER-RT.md ++++ b/README.COMPILER-RT.md +@@ -10,6 +10,10 @@ Ensure you have finished `build.sh`, + + then run: `./build_compiler_rt.sh`. + ++By default, installation steps for compiler-rt will be printed to the terminal ++to run manually, but you can automate the installation process by defining ++`ENABLE_COMPILER_RT_INSTALL`. ++ + You can verify compiler-rt is working by invoking the following command: + + echo "int main(void){return 0;}" | xcrun clang -xc -o/dev/null -v - 2>&1 | \ +diff --git a/README.md b/README.md +index 60d19f917..f32bf626c 100644 +--- a/README.md ++++ b/README.md +@@ -33,6 +33,9 @@ It also includes scripts for optionally building + * the "compiler-rt" runtime library, and + * the `llvm-dsymutil` tool required for debugging. + ++Note: The "compiler-rt" library can be needed to link code that uses the ++`__builtin_available()` runtime version check. ++ + + ### WHAT CAN BE BUILT WITH IT? ### + +diff --git a/build_compiler_rt.sh b/build_compiler_rt.sh +index 8f47262a2..508742cab 100755 +--- a/build_compiler_rt.sh ++++ b/build_compiler_rt.sh +@@ -182,22 +182,39 @@ fi + rm -f $BUILD_DIR/.compiler-rt_build_complete + + ++# Installation. Can be either automated (ENABLE_COMPILER_RT_INSTALL) or will ++# print the commands that the user should run manually. ++ ++function print_or_run() { ++ if [ -z "$ENABLE_COMPILER_RT_INSTALL" ]; then ++ echo "$@" ++ else ++ $@ ++ fi ++} ++ + echo "" + echo "" + echo "" +-echo "Please run the following commands by hand to install compiler-rt:" ++if [ -z "$ENABLE_COMPILER_RT_INSTALL" ]; then ++ echo "Please run the following commands by hand to install compiler-rt:" ++else ++ echo "Installing compiler-rt headers and libraries to the following paths:" ++ echo " ${CLANG_INCLUDE_DIR}" ++ echo " ${CLANG_DARWIN_LIB_DIR}" ++fi + echo "" + +-echo "mkdir -p ${CLANG_INCLUDE_DIR}" +-echo "mkdir -p ${CLANG_DARWIN_LIB_DIR}" +-echo "cp -rv $BUILD_DIR/compiler-rt/compiler-rt/include/sanitizer ${CLANG_INCLUDE_DIR}" ++print_or_run mkdir -p ${CLANG_INCLUDE_DIR} ++print_or_run mkdir -p ${CLANG_DARWIN_LIB_DIR} ++print_or_run cp -rv $BUILD_DIR/compiler-rt/compiler-rt/include/sanitizer ${CLANG_INCLUDE_DIR} + + if [ $USE_CMAKE -eq 1 ]; then + + ### CMAKE ### + +- echo "cp -v $BUILD_DIR/compiler-rt/compiler-rt/build/lib/darwin/*.a ${CLANG_DARWIN_LIB_DIR}" +- echo "cp -v $BUILD_DIR/compiler-rt/compiler-rt/build/lib/darwin/*.dylib ${CLANG_DARWIN_LIB_DIR}" ++ print_or_run cp -v $BUILD_DIR/compiler-rt/compiler-rt/build/lib/darwin/*.a ${CLANG_DARWIN_LIB_DIR} ++ print_or_run cp -v $BUILD_DIR/compiler-rt/compiler-rt/build/lib/darwin/*.dylib ${CLANG_DARWIN_LIB_DIR} + + ### CMAKE END ### + +@@ -209,7 +226,7 @@ else + + function print_install_command() { + if [ -f "$1" ]; then +- echo "cp $PWD/compiler-rt/$1 ${CLANG_DARWIN_LIB_DIR}/$2" ++ print_or_run cp $PWD/compiler-rt/$1 ${CLANG_DARWIN_LIB_DIR}/$2 + fi + } + +@@ -219,14 +236,12 @@ else + print_install_command "cc_kext/libcompiler_rt.a" "libclang_rt.cc_kext.a" + print_install_command "profile_osx/libcompiler_rt.a" "libclang_rt.profile_osx.a" + +- + print_install_command "ubsan_osx_dynamic/libcompiler_rt.dylib" \ + "libclang_rt.ubsan_osx_dynamic.dylib" + + print_install_command "asan_osx_dynamic/libcompiler_rt.dylib" \ + "libclang_rt.asan_osx_dynamic.dylib" + +- + popd &>/dev/null + + ### MAKE END ### diff --git a/misc/build-containers/upload.sh b/misc/build-containers/upload.sh new file mode 100644 index 000000000..a22754090 --- /dev/null +++ b/misc/build-containers/upload.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +set -e + +podman=podman +if ! which $podman; then + podman=docker +fi + +registry=$1 + +if [ -z "${registry}" ]; then + registry=registry.prehensile-tales.com +fi + +$podman push pandemonium-export:latest ${registry}/pandemonium/export +$podman push pandemonium-mono-glue:latest ${registry}/pandemonium/mono-glue +$podman push pandemonium-windows:latest ${registry}/pandemonium/windows +$podman push pandemonium-ubuntu-32:latest ${registry}/pandemonium/ubuntu-32 +$podman push pandemonium-ubuntu-64:latest ${registry}/pandemonium/ubuntu-64 +$podman push pandemonium-javascript:latest ${registry}/pandemonium/javascript +$podman push pandemonium-xcode-packer:latest ${registry}/pandemonium/xcode-packer + +$podman push pandemonium-android:latest ${registry}/pandemonium-private/android +$podman push pandemonium-ios:latest ${registry}/pandemonium-private/ios +$podman push pandemonium-osx:latest ${registry}/pandemonium-private/macosx +$podman push pandemonium-msvc:latest ${registry}/pandemonium-private/uwp diff --git a/misc/osx/create_editor_app.sh b/misc/osx/create_editor_app.sh new file mode 100755 index 000000000..d8bd855d3 --- /dev/null +++ b/misc/osx/create_editor_app.sh @@ -0,0 +1,12 @@ +cd ../../pandemonium_engine/bin/ + +rm -Rf Godot.app +rm -f Godot.app.zip + +cp -r ../misc/dist/osx_tools.app Godot.app +mkdir -p Godot.app/Contents/MacOS +cp pandemonium.osx.opt.tools.universal Godot.app/Contents/MacOS/Godot +chmod +x Godot.app/Contents/MacOS/Godot + +zip -q -r Godot.app.zip Godot.app/* +cd ../../tools/osx/ diff --git a/misc/osx/create_export_templates.sh b/misc/osx/create_export_templates.sh new file mode 100755 index 000000000..3603abf36 --- /dev/null +++ b/misc/osx/create_export_templates.sh @@ -0,0 +1,12 @@ +#templates + +cd ../../pandemonium_engine/bin + +cp -r ../misc/dist/osx_template.app . +mkdir -p osx_template.app/Contents/MacOS +cp pandemonium.osx.opt.universal osx_template.app/Contents/MacOS/pandemonium_osx_release.64 +cp pandemonium.osx.opt.debug.universal osx_template.app/Contents/MacOS/pandemonium_osx_debug.64 +chmod +x osx_template.app/Contents/MacOS/pandemonium_osx* +zip -q -9 -r osx.zip osx_template.app + +cd ../../tools/osx diff --git a/misc/osx/lipo.sh b/misc/osx/lipo.sh new file mode 100755 index 000000000..5a6cbbc9a --- /dev/null +++ b/misc/osx/lipo.sh @@ -0,0 +1,6 @@ +# Tools +lipo -create ../../pandemonium_engine/bin/pandemonium.osx.opt.tools.x86_64 ../../pandemonium_engine/bin/pandemonium.osx.opt.tools.arm64 -output ../../pandemonium_engine/bin/pandemonium.osx.opt.tools.universal + +# Export Templates +lipo -create ../../pandemonium_engine/bin/pandemonium.osx.opt.x86_64 ../../pandemonium_engine/bin/pandemonium.osx.opt.arm64 -output ../../pandemonium_engine/bin/pandemonium.osx.opt.universal +lipo -create ../../pandemonium_engine/bin/pandemonium.osx.opt.debug.x86_64 ../../pandemonium_engine/bin/pandemonium.osx.opt.debug.arm64 -output ../../pandemonium_engine/bin/pandemonium.osx.opt.debug.universal