testing build artifacts #70
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 | ||
jobs: | ||
build_x64: | ||
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 .. | ||
make | ||
- name: Build raylib | ||
run: | | ||
cd deps/raylib/src/ | ||
make PLATFORM=PLATFORM_DESKTOP | ||
- name: Build Project | ||
run: | | ||
make all | ||
- name: Bundle Executable with Library | ||
run: | | ||
# Copy libpksav.dylib to the same directory as the executable | ||
cp deps/pksav/build/lib/libpksav.dylib build/ | ||
# Update the library path in the executable | ||
install_name_tool -change /Users/runner/work/pokerom-trader/pokerom-trader/deps/pksav/build/lib/libpksav.dylib @executable_path/libpksav.dylib build/pokeromtrader | ||
- name: Publish Build Artifacts | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: pokeromtrader-artifacts-x64 # Specify a name for your artifacts | ||
path: build/ # Specify the directory containing your build artifacts | ||
build_arm64: | ||
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 .. | ||
make | ||
- name: Build raylib | ||
run: | | ||
cd deps/raylib/src/ | ||
make PLATFORM=PLATFORM_DESKTOP | ||
- name: Build Project | ||
run: | | ||
make all | ||
- name: Bundle Executable with Library | ||
run: | | ||
# Copy libpksav.dylib to the same directory as the executable | ||
cp deps/pksav/build/lib/libpksav.dylib build/ | ||
# Update the library path in the executable | ||
install_name_tool -change /Users/runner/work/pokerom-trader/pokerom-trader/deps/pksav/build/lib/libpksav.dylib @executable_path/libpksav.dylib build/pokeromtrader | ||
- name: Publish Build Artifacts | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: pokeromtrader-artifacts-arm64 # Specify a name for your artifacts | ||
path: build/ # Specify the directory containing your build artifacts | ||
bundle_macos_arm64: | ||
runs-on: macos-latest | ||
needs: build_arm64 | ||
# steps: | ||
# - name: Checkout Code | ||
# uses: actions/checkout@v3 | ||
- name: Download Build Artifact | ||
# Download the build artifact from the 'build_arm64' 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" | ||
MACOS_FRAMEWORKS_DESTINATION="${BUILD_DIR}/macos/PokeromTrader.app/Contents/Frameworks" | ||
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}" | ||
mkdir -p "${MACOS_FRAMEWORKS_DESTINATION}" | ||
# Copy the executable to the .app bundle | ||
cp "${{ github.workspace }}/pokeromtrader" "${MACOS_DESTINATION}/pokeromtrader" | ||
cp "${{ github.workspace }}/libpksav.dylib" "${MACOS_FRAMEWORKS_DESTINATION}/libpksav.dylib" | ||
# Update the library path in the executable | ||
install_name_tool -change /Users/runner/work/pokerom-trader/pokerom-trader/deps/pksav/build/lib/libpksav.dylib @rpath/libpksav.dylib build/pokeromtrader | ||
install_name_tool -add_rpath @executable_path/../Frameworks build/pokeromtrader | ||
# 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 '</dict>' >> "${INFO_PLIST}" | ||
echo '</plist>' >> "${INFO_PLIST}" | ||
echo "macOS release bundle created" | ||
- name: Make App Executable | ||
run: | | ||
chmod +x build/macos/PokeromTrader.app/Contents/MacOS/pokeromtrader | ||
working-directory: ${{ github.workspace }} | ||
- name: Upload macOS Release | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: pokeromtrader-arm64 # Specify a name for your macOS release | ||
path: build/macos | ||
- name: Clean Up | ||
run: | | ||
make clean | ||
bundle_macos_x64: | ||
runs-on: macos-latest | ||
needs: build_x64 # Ensure that the 'build' job is completed before this one starts | ||
# steps: | ||
# - name: Checkout Code | ||
# uses: actions/checkout@v3 | ||
- 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" | ||
MACOS_FRAMEWORKS_DESTINATION="${BUILD_DIR}/macos/PokeromTrader.app/Contents/Frameworks" | ||
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}" | ||
mkdir -p "${MACOS_FRAMEWORKS_DESTINATION}" | ||
# Copy the executable to the .app bundle | ||
cp "${{ github.workspace }}/pokeromtrader" "${MACOS_DESTINATION}/pokeromtrader" | ||
cp "${{ github.workspace }}/libpksav.dylib" "${MACOS_FRAMEWORKS_DESTINATION}/libpksav.dylib" | ||
# Update the library path in the executable | ||
install_name_tool -change /Users/runner/work/pokerom-trader/pokerom-trader/deps/pksav/build/lib/libpksav.dylib @rpath/libpksav.dylib build/pokeromtrader | ||
install_name_tool -add_rpath @executable_path/../Frameworks build/pokeromtrader | ||
# 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 '</dict>' >> "${INFO_PLIST}" | ||
echo '</plist>' >> "${INFO_PLIST}" | ||
echo "macOS release bundle created" | ||
- name: Make App Executable | ||
run: | | ||
chmod +x build/macos/PokeromTrader.app/Contents/MacOS/pokeromtrader | ||
working-directory: ${{ github.workspace }} | ||
- name: Upload macOS Release | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: pokeromtrader-x64 # Specify a name for your macOS release | ||
path: build/macos | ||
- name: Clean Up | ||
run: | | ||
make clean |