diff --git a/.ci/build-mac-arm64.sh b/.ci/build-mac-arm64.sh new file mode 100644 index 000000000000..55d247e5c9ca --- /dev/null +++ b/.ci/build-mac-arm64.sh @@ -0,0 +1,64 @@ +#!/bin/sh -ex + +brew install -f --overwrite nasm ninja git p7zip create-dmg ccache pipenv llvm@16 sdl2 glew cmake + +#export MACOSX_DEPLOYMENT_TARGET=12.0 +export CXX=clang++ +export CC=clang + +export BREW_PATH; +BREW_PATH="$(brew --prefix)" +export BREW_BIN="/usr/local/bin" +export BREW_SBIN="/usr/local/sbin" +export CMAKE_EXTRA_OPTS='-DLLVM_TARGETS_TO_BUILD=arm64' + +export WORKDIR; +WORKDIR="$(pwd)" + +# Get Qt +git clone https://github.com/engnr/qt-downloader.git +cd qt-downloader +git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597 +"/opt/homebrew/bin/pipenv" run pip3 install py7zr requests semantic_version lxml +"/opt/homebrew/bin/pipenv" run ./qt-downloader macos desktop 5.15.2 clang_64 --opensource +cd .. + +export Qt5_DIR="$WORKDIR/qt-downloader/5.15.2/clang_64/lib/cmake/Qt5" +export SDL2_DIR="$BREW_PATH/opt/sdl2/lib/cmake/SDL2" + +export PATH="$BREW_PATH/opt/llvm@16/bin:$WORKDIR/qt-downloader/5.15.2/clang_64/bin:$BREW_BIN:$BREW_SBIN:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:$PATH" +export LDFLAGS="-L$BREW_PATH/lib -Wl,-rpath,$BREW_PATH/lib" +export CPPFLAGS="-I$BREW_PATH/include -msse -msse2 -mcx16 -no-pie" +export LIBRARY_PATH="$BREW_PATH/lib" +export LD_LIBRARY_PATH="$BREW_PATH/lib" + +git submodule update --init --recursive --depth 1 + +# 3rdparty fixes +sed -i '' "s/extern const double NSAppKitVersionNumber;/const double NSAppKitVersionNumber = 1343;/g" 3rdparty/hidapi/hidapi/mac/hid.c + +mkdir build && cd build || exit 1 + +"$BREW_PATH/bin/cmake" .. \ + -DUSE_SDL=ON -DUSE_DISCORD_RPC=OFF -DUSE_VULKAN=ON -DUSE_ALSA=OFF -DUSE_PULSE=OFF -DUSE_AUDIOUNIT=ON \ + -DLLVM_CCACHE_BUILD=OFF -DLLVM_BUILD_RUNTIME=OFF -DLLVM_BUILD_TOOLS=OFF \ + -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_TOOLS=OFF \ + -DLLVM_INCLUDE_UTILS=OFF -DLLVM_USE_PERF=OFF -DLLVM_ENABLE_Z3_SOLVER=OFF \ + -DUSE_NATIVE_INSTRUCTIONS=OFF \ + -DUSE_SYSTEM_MVK=OFF \ + $CMAKE_EXTRA_OPTS \ + -DLLVM_TARGET_ARCH=ARM64 -DCMAKE_OSX_ARCHITECTURES=ARM64" \ + -G Ninja + +"$BREW_PATH/bin/ninja"; build_status=$?; + +cd .. + +{ [ "$CI_HAS_ARTIFACTS" = "true" ]; +} && SHOULD_DEPLOY="true" || SHOULD_DEPLOY="false" + +if [ "$build_status" -eq 0 ] && [ "$SHOULD_DEPLOY" = "true" ]; then + .ci/deploy-mac.sh +fi + +/opt/homebrew/bin/brew \ No newline at end of file diff --git a/.cirrus.yml b/.cirrus.yml index 7fa2bf79f64f..ed2e20c914b0 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -132,6 +132,19 @@ macos_task: - chmod +x ".ci/build-mac.sh" - chmod +x ".ci/deploy-mac.sh" - ".ci/build-mac.sh" +macos_task: + timeout_in: 12000m + ccache_cache: + folder: /tmp/ccache_dir + matrix: + - name: Cirrus macOS Arm64 + macos_instance: + image: ghcr.io/cirruslabs/macos-monterey-xcode:14 + mac_script: + - mkdir artifacts + - chmod +x ".ci/build-mac-arm64.sh" + - chmod +x ".ci/deploy-mac.sh" + - ".ci/build-mac-arm64.sh" env: BUILD_ARTIFACTSTAGINGDIRECTORY: ${CIRRUS_WORKING_DIR}/artifacts ARTDIR: ${CIRRUS_WORKING_DIR}/artifacts/