Skip to content

Merge pull request #106 from savaughn/app-support #289

Merge pull request #106 from savaughn/app-support

Merge pull request #106 from savaughn/app-support #289

Workflow file for this run

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