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' - '.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' - '.github/workflows/macos.yml' jobs: build-intel-macos: # use lowest possible macOS running on x86_64 supported by brew to support more users runs-on: macos-13 steps: - uses: actions/checkout@v4 - name: Install deps run: | source ./util/ci/common.sh install_macos_deps - name: Build run: | mkdir build cd build cmake .. \ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 \ -DCMAKE_FIND_FRAMEWORK=LAST \ -DCMAKE_INSTALL_PREFIX=../build/macos/ \ -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE \ -DINSTALL_DEVTEST=TRUE cmake --build . -j$(sysctl -n hw.logicalcpu) make install - name: Test run: | ./build/macos/luanti.app/Contents/MacOS/luanti --run-unittests # 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 cmake .. -DINSTALL_DEVTEST=FALSE cpack -G ZIP -B macos - uses: actions/upload-artifact@v4 with: name: luanti-macos path: ./build/macos/*.zip build-arm-macos-xcode: runs-on: macos-14 steps: - uses: actions/checkout@v4 - name: Install deps run: | source ./util/ci/common.sh install_macos_deps # brew jsoncpp do not include libjsoncpp.a, and if installed header conflict caused build failure brew uninstall jsoncpp - name: Build with Cmake run: | mkdir build cd build cmake .. \ -DCMAKE_OSX_DEPLOYMENT_TARGET=14 \ -DCMAKE_FIND_FRAMEWORK=LAST \ -DCMAKE_INSTALL_PREFIX=../build/macos/ \ -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE \ -DENABLE_SYSTEM_JSONCPP=OFF cmake --build . -j$(sysctl -n hw.logicalcpu) make install - name: Build and Archive with Xcode run: | mkdir build_xcode cd build_xcode ../util/ci/build_xcode.sh - name: Tests 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 ./build_xcode/luanti.xcarchive/Products/Applications/luanti.app/Contents/MacOS/luanti --run-unittests - name: Diff Resources run: | diff -rd ./build/macos/luanti.app/Contents/Resources ./build_xcode/build/Release/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