Skip to content
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: CMake Vcpkg Emscripten Publish
on:
push:
branches: [ "main" ]
permissions:
contents: read
pages: write
id-token: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: Install libs
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y xorg-dev
sudo apt-get install -y libglu1-mesa-dev
- name: Install vcpgk
uses: lukka/run-vcpkg@v11
with:
vcpkgDirectory: ${{ github.workspace }}/vcpkg
runVcpkgInstall: true
- name: Install emsdk
uses: mymindstorm/setup-emsdk@v11
# with:
# version: 2.0.10
- name: Verify
run: emcc -v
- name: Create build directory
run: mkdir build
- name: Configure CMake
run: emcmake cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DVCPKG_TARGET_TRIPLET=wasm32-emscripten "-DCMAKE_EXE_LINKER_FLAGS=-s USE_GLFW=3 -s FULL_ES3=1 -s WASM=1 -s EXPORTED_RUNTIME_METHODS=[ccall] -s ALLOW_MEMORY_GROWTH=1 -s EXPORTED_FUNCTIONS=[_main,_malloc,_free] --preload-file ../../Chip8Games --preload-file ../../shaders --preload-file ../../fonts" -DCMAKE_BUILD_TYPE=Release
- name: Build
run: emmake make -C build
- name: Copy artefacts to web folder
run: |
cp build/Chip8topia/Chip8topia.js web/
cp build/Chip8topia/Chip8topia.wasm web/
cp build/Chip8topia/Chip8topia.data web/
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
# Upload entire repository
path: './web'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1