Skip to content

update build settings #41

update build settings

update build settings #41

Workflow file for this run

name: Create Release
on:
push:
branches: [ main ]
permissions:
contents: write
packages: write
deployments: write
jobs:
build:
strategy:
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
build_type: [static, shared]
asio: [with_asio, no_asio]
include:
- os: windows-latest
platform: windows
- os: ubuntu-latest
platform: linux
- os: macos-latest
platform: macos
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
working-directory: GekkoLib
steps:
- uses: actions/checkout@v4
- name: Create build directory
run: cmake -E make_directory build
- name: Configure CMake (Windows)
if: matrix.os == 'windows-latest'
shell: cmd
run: >-
cmake -B build
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=out
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=out
-DBUILD_SHARED_LIBS=${{ matrix.build_type == 'shared' && 'ON' || 'OFF' }}
-DNO_ASIO_BUILD=${{ matrix.asio == 'no_asio' && 'ON' || 'OFF' }}
.
- name: Configure CMake (Unix)
if: matrix.os != 'windows-latest'
run: |
cmake -B build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=out \
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=out \
-DBUILD_SHARED_LIBS=${{ matrix.build_type == 'shared' && 'ON' || 'OFF' }} \
-DNO_ASIO_BUILD=${{ matrix.asio == 'no_asio' && 'ON' || 'OFF' }} \
.
- name: Build
run: cmake --build build --config Release
# Debugging step: Print out directory contents (after build)
- name: List output directory contents
run: |
if [ -d "out" ];then
ls -R out
else
echo "Output directory does not exist!"
fi
- name: Prepare files for packaging
run: |
# Create the directory structure for the package
mkdir -p package/Release/${{ matrix.platform }}/lib
# Only copy binaries if the output directory exists
if [ -d "out" ]; then
cp -r out/* package/Release/${{ matrix.platform }}/lib/ || true
else
echo "No binaries found in out/!"
fi
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.platform }}-builds-${{ matrix.build_type }}-${{ matrix.asio }}
path: GekkoLib/package/Release
retention-days: 1
create_release:
needs: build
runs-on: ubuntu-latest
if: ${{ success() }}
permissions:
contents: write
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
- name: Get version
id: version
run: |
echo "version=$(date +'%Y%m%d%H%M%S')-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: downloads
- name: Create OS-specific packages
run: |
# Group by OS platform
for os_platform in windows linux macos; do
mkdir -p "GekkoNet-${os_platform}"
mkdir -p "GekkoNet-${os_platform}/${os_platform}/include"
mkdir -p "GekkoNet-${os_platform}/${os_platform}/thirdparty"
cp -r GekkoLib/include/* "GekkoNet-${os_platform}/${os_platform}/include" || true
cp -r GekkoLib/thirdparty/* "GekkoNet-${os_platform}/${os_platform}/thirdparty" || true
for build_variant in static-with_asio static-no_asio shared-with_asio shared-no_asio; do
cp -r downloads/${os_platform}-builds-${build_variant}/* "GekkoNet-${os_platform}/" || true
done
tar -czf "GekkoNet-${os_platform}-Release.tar.gz" "GekkoNet-${os_platform}"
done
- name: Create Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ steps.version.outputs.version }}
name: Release ${{ steps.version.outputs.version }}
draft: false
prerelease: false
files: GekkoNet-*-Release.tar.gz