Merge pull request #106 from savaughn/app-support #289
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Bundle MacOS (x64 and arm64) | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
jobs: | |
build_macos_x64: | |
# if: false # This workflow is disabled | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
arch: [x64] | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Build pksav | |
run: | | |
cd deps/pksav/ | |
mkdir build | |
cd build | |
cmake .. -DPKSAV_STATIC=ON -DPKSAV_ENABLE_TESTS=OFF -DPKSAV_ENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Release | |
cmake --build . --config "Release" | |
- name: Build raylib | |
run: | | |
cd deps/raylib/src/ | |
make PLATFORM=PLATFORM_DESKTOP | |
- name: Build Project | |
run: | | |
brew install cppcheck | |
make CI_BUILD=true all | |
- name: Run cppcheck | |
run: | | |
cppcheck --std=c11 --enable=all --inconclusive --suppress=missingInclude --suppress=missingIncludeSystem --suppress=unusedFunction src/ || true | |
- name: Copy assets | |
run: | | |
mkdir build/assets | |
cp -r assets build | |
- name: Publish Build Artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: "pokeromtrader-artifacts-x64" | |
path: build/ # Specify the directory containing your build artifacts | |
build_macos_arm64: | |
# if: false # This workflow is disabled | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
arch: [arm64] | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
- name: Build pksav | |
run: | | |
cd deps/pksav/ | |
mkdir build | |
cd build | |
cmake .. -DPKSAV_STATIC=ON -DPKSAV_ENABLE_TESTS=OFF -DPKSAV_ENABLE_DOCS=OFF | |
make | |
- name: Build raylib | |
run: | | |
cd deps/raylib/src/ | |
make PLATFORM=PLATFORM_DESKTOP | |
- name: Build Project | |
run: | | |
brew install cppcheck | |
make CI_BUILD=true all | |
- name: Run cppcheck | |
run: | | |
cppcheck --std=c11 --enable=all --inconclusive --suppress=missingInclude --suppress=missingIncludeSystem --suppress=unusedFunction src/ || true | |
- name: Copy assets | |
run: | | |
mkdir build/assets | |
cp -r assets build | |
- name: Publish Build Artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: "pokeromtrader-artifacts-arm64" | |
path: build/ # Specify the directory containing your build artifacts | |
bundle_macos_arm64: | |
runs-on: macos-latest | |
needs: build_macos_arm64 # Ensure that the 'build' job is completed before this one starts | |
steps: | |
- name: Download Build Artifact | |
# Download the build artifact from the 'build' job | |
uses: actions/download-artifact@v2 | |
with: | |
name: "pokeromtrader-artifacts-arm64" # Specify the name of the build artifact | |
- name: Bundle macOS Release | |
run: | | |
# You can access the downloaded artifact in the current directory | |
BUILD_DIR="build" | |
MACOS_DESTINATION="${BUILD_DIR}/macos/PokeromTrader.app/Contents/MacOS" | |
APP_BUNDLE_EXECUTABLE="pokeromtrader" | |
APP_BUNDLE_ID="com.yourcompany.pokeromtrader" | |
APP_BUNDLE_NAME="PokeromTrader" | |
INFO_PLIST="${BUILD_DIR}/macos/PokeromTrader.app/Contents/Info.plist" | |
# Create the build directory if it doesn't exist | |
mkdir -p "${BUILD_DIR}" | |
# Create the directory structure | |
mkdir -p "${MACOS_DESTINATION}" | |
# Copy the executable to the .app bundle | |
cp "${{ github.workspace }}/pokeromtrader" "${MACOS_DESTINATION}/pokeromtrader" | |
# Copy assets | |
mkdir -p "${MACOS_DESTINATION}/../Resources/assets" | |
cp "${{ github.workspace }}/assets/icon.icns" "${MACOS_DESTINATION}/../Resources" | |
# Create Info.plist file | |
echo '<?xml version="1.0" encoding="UTF-8"?>' > "${INFO_PLIST}" | |
echo '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' >> "${INFO_PLIST}" | |
echo '<plist version="1.0">' >> "${INFO_PLIST}" | |
echo '<dict>' >> "${INFO_PLIST}" | |
echo ' <key>CFBundleExecutable</key>' >> "${INFO_PLIST}" | |
echo " <string>${APP_BUNDLE_EXECUTABLE}</string>" >> "${INFO_PLIST}" | |
echo ' <key>CFBundleIdentifier</key>' >> "${INFO_PLIST}" | |
echo " <string>${APP_BUNDLE_ID}</string>" >> "${INFO_PLIST}" | |
echo ' <key>CFBundleName</key>' >> "${INFO_PLIST}" | |
echo " <string>${APP_BUNDLE_NAME}</string>" >> "${INFO_PLIST}" | |
echo " <key>CFBundleIconFile</key>" >> "${INFO_PLIST}" | |
echo " <string>icon</string>" >> "${INFO_PLIST}" | |
echo '</dict>' >> "${INFO_PLIST}" | |
echo '</plist>' >> "${INFO_PLIST}" | |
echo "macOS release bundle created" | |
- name: Upload macOS Release | |
uses: actions/upload-artifact@v2 | |
with: | |
name: "pokeromtrader-macos-arm64" # Specify a name for your macOS release | |
path: build/macos | |
bundle_macos_x64: | |
runs-on: macos-latest | |
needs: build_macos_x64 # Ensure that the 'build' job is completed before this one starts | |
steps: | |
- name: Download Build Artifact | |
# Download the build artifact from the 'build' job | |
uses: actions/download-artifact@v2 | |
with: | |
name: "pokeromtrader-artifacts-x64" # Specify the name of the build artifact | |
- name: Bundle macOS Release | |
run: | | |
# You can access the downloaded artifact in the current directory | |
BUILD_DIR="build" | |
MACOS_DESTINATION="${BUILD_DIR}/macos/PokeromTrader.app/Contents/MacOS" | |
APP_BUNDLE_EXECUTABLE="pokeromtrader" | |
APP_BUNDLE_ID="com.yourcompany.pokeromtrader" | |
APP_BUNDLE_NAME="PokeromTrader" | |
INFO_PLIST="${BUILD_DIR}/macos/PokeromTrader.app/Contents/Info.plist" | |
# Create the build directory if it doesn't exist | |
mkdir -p "${BUILD_DIR}" | |
# Create the directory structure | |
mkdir -p "${MACOS_DESTINATION}" | |
# Copy the executable to the .app bundle | |
cp "${{ github.workspace }}/pokeromtrader" "${MACOS_DESTINATION}/pokeromtrader" | |
# Copy assets | |
mkdir -p "${MACOS_DESTINATION}/../Resources/assets" | |
cp "${{ github.workspace }}/assets/icon.icns" "${MACOS_DESTINATION}/../Resources" | |
# Create Info.plist file | |
echo '<?xml version="1.0" encoding="UTF-8"?>' > "${INFO_PLIST}" | |
echo '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' >> "${INFO_PLIST}" | |
echo '<plist version="1.0">' >> "${INFO_PLIST}" | |
echo '<dict>' >> "${INFO_PLIST}" | |
echo ' <key>CFBundleExecutable</key>' >> "${INFO_PLIST}" | |
echo " <string>${APP_BUNDLE_EXECUTABLE}</string>" >> "${INFO_PLIST}" | |
echo ' <key>CFBundleIdentifier</key>' >> "${INFO_PLIST}" | |
echo " <string>${APP_BUNDLE_ID}</string>" >> "${INFO_PLIST}" | |
echo ' <key>CFBundleName</key>' >> "${INFO_PLIST}" | |
echo " <string>${APP_BUNDLE_NAME}</string>" >> "${INFO_PLIST}" | |
echo " <key>CFBundleIconFile</key>" >> "${INFO_PLIST}" | |
echo " <string>icon</string>" >> "${INFO_PLIST}" | |
echo '</dict>' >> "${INFO_PLIST}" | |
echo '</plist>' >> "${INFO_PLIST}" | |
echo "macOS release bundle created" | |
- name: Upload macOS Release | |
uses: actions/upload-artifact@v2 | |
with: | |
name: "pokeromtrader-macos-x64" | |
path: build/macos |