name: macos # build on c/cpp changes or workflow changes on: push: paths: - 'lib/**.[ch]' - 'lib/**.cpp' - 'src/**.[ch]' - 'src/**.cpp' - 'irr/**.[ch]' - 'irr/**.cpp' - 'irr/**.mm' # Objective-C(++) - '**/CMakeLists.txt' - 'cmake/Modules/**' - 'po/**.po' - 'util/ci/**' - '.github/workflows/macos.yml' pull_request: paths: - 'lib/**.[ch]' - 'lib/**.cpp' - 'src/**.[ch]' - 'src/**.cpp' - 'irr/**.[ch]' - 'irr/**.cpp' - 'irr/**.mm' # Objective-C(++) - '**/CMakeLists.txt' - 'cmake/Modules/**' - 'po/**.po' - 'util/ci/**' - '.github/workflows/macos.yml' jobs: build-older-macos: strategy: matrix: osver: [11.3] xcodever: [16.2] arch: ["x86_64"] build_type: ["Debug"] xcode: ["no"] include: - osver: 11.3 xcodever: 16.2 arch: "x86_64" build_type: "Debug" xcode: "no" - osver: 11.3 xcodever: 16.2 arch: "arm64" build_type: "Release" xcode: "yes" runs-on: macos-15 steps: - uses: actions/checkout@v4 - name: Prepare environment run: | echo "REPDIR=$(pwd)" >> $GITHUB_ENV echo "osver=${{matrix.osver}}" >> $GITHUB_ENV echo "xcodever=${{matrix.xcodever}}" >> $GITHUB_ENV echo "arch=${{matrix.arch}}" >> $GITHUB_ENV echo "build_type=${{matrix.build_type}}" >> $GITHUB_ENV - name: Install deps run: | mkdir downloads source ./util/ci/common.sh source ./util/ci/macos_sdk.sh install_macos_precompiled_deps $osver $arch install_macos_sdk $osver "$xcodever" downloads - name: Build with GNU Make run: | mkdir build cd build export DEPS_DIR=/Users/Shared/macos${osver}_${arch}_deps export USE_XCODE=no ../util/ci/build_macos.sh - name: Build and Archive with Xcode if: ${{matrix.xcode == 'yes'}} run: | mkdir build_xcode cd build_xcode export DEPS_DIR=/Users/Shared/macos${osver}_${arch}_deps export USE_XCODE=yes ../util/ci/build_macos.sh - name: Test GNU Make build run: | mkdir -p "${HOME}/Library/Application Support/minetest/games/" ln -s "${PWD}/games/devtest" "${HOME}/Library/Application Support/minetest/games/" ./build/macos/luanti.app/Contents/MacOS/luanti --run-unittests - name: Test XCode build if: ${{matrix.xcode == 'yes'}} run: | ./build_xcode/build/${build_type}/luanti.app/Contents/MacOS/luanti --run-unittests ./build_xcode/luanti.xcarchive/Products/Applications/luanti.app/Contents/MacOS/luanti --run-unittests - name: Diff Resources if: ${{matrix.xcode == 'yes'}} run: | diff -rd ./build/macos/luanti.app/Contents/Resources ./build_xcode/build/${build_type}/luanti.app/Contents/Resources || exit 1 diff -rd ./build/macos/luanti.app/Contents/Resources ./build_xcode/luanti.xcarchive/Products/Applications/luanti.app/Contents/Resources || exit 1 # Zipping the built .app preserves permissions on the contained files, # which the GitHub artifact pipeline would otherwise strip away. - name: CPack run: | cd build rm -rf macos cpack -G ZIP -B macos - name: Upload uses: actions/upload-artifact@v4 with: name: luanti-macos${{matrix.osver}}_${{matrix.arch}} path: ./build/macos/*.zip