Update build.yml #15
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 | |
on: [ push ] | |
jobs: | |
linux: | |
strategy: | |
matrix: | |
configuration: [ Release, Debug ] | |
name: Linux | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
name: Clone repository | |
with: | |
submodules: recursive | |
- name: Install required packages | |
run: sudo apt-get update && sudo apt-get install -y build-essential clang-15 clangd-15 libclang-15-dev cmake ninja-build libboost-dev libogre-1.12-dev libpugixml-dev libglx-dev qt6-base-dev qt6-base-private-dev qt6-declarative-dev qt6-declarative-private-dev qt6-tools-dev qt6-tools-private-dev qt6-scxml-dev qt6-documentation-tools libqt6core5compat6-dev qt6-tools-dev-tools qt6-l10n-tools qt6-shader-baker libqt6shadertools6-dev qt6-quick3d-dev qt6-quick3d-dev-tools libqt6svg6-dev libqt6quicktimeline6-dev libqt6serialport6-dev libgl1-mesa-dev libvulkan-dev libxcb-xinput-dev libxcb-xinerama0-dev libxkbcommon-dev libxkbcommon-x11-dev libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xkb1 libxcb-randr0 libxcb-icccm4 | |
- name: Generate Ninja build files | |
run: cmake -G Ninja -B build -DCI=ON -DCMAKE_BUILD_TYPE=${{ matrix.configuration == 'Release' && 'MinSizeRel' || matrix.configuration }} . | |
- name: Run Ninja build | |
run: ninja -C build | |
# ouch - unless and until we start using CMake's install command, these next few steps are a necessary evil | |
- name: Organize binaries | |
run: mkdir build/dist && find build -perm /a+x -exec mv {} build/dist \; | |
- name: Add RNR resources | |
run: cp -R Content/RNR build/dist/content && cp LICENSE build/dist | |
- name: Add OGRE plugins | |
run: cp -R build/plugins build/dist && cp Content/linux_plugins.cfg build/dist/plugins.cfg | |
- name: Add OGRE shaders | |
run: cp -R build/shaders build/dist | |
- name: Set output variables | |
id: vars | |
run: | | |
echo "configuration=${{ matrix.configuration }}" | awk '{print tolower($0)}' >> $GITHUB_OUTPUT | |
echo "hash=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: rnr-${{ steps.vars.outputs.hash }}-linux_x64-${{ steps.vars.outputs.configuration }} | |
path: build/dist | |
windows: | |
strategy: | |
matrix: | |
include: | |
- { sys: clang64, env: clang-x86_64 } | |
configuration: [ Release, Debug ] | |
name: Windows | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: actions/checkout@v3 | |
name: Clone repository | |
with: | |
submodules: recursive | |
- uses: msys2/setup-msys2@v2 | |
name: Set up MSYS2 and install required packages | |
with: | |
msystem: ${{ matrix.sys }} | |
install: >- | |
mingw-w64-${{ matrix.env }}-${{ matrix.sys == 'clang64' && 'clang' || 'gcc' }} | |
mingw-w64-${{ matrix.env }}-cmake | |
mingw-w64-${{ matrix.env }}-ninja | |
mingw-w64-${{ matrix.env }}-boost | |
mingw-w64-${{ matrix.env }}-pugixml | |
mingw-w64-${{ matrix.env }}-ogre3d | |
mingw-w64-${{ matrix.env }}-qt6 | |
- name: Generate Ninja build files | |
run: cmake -G Ninja -B build -DCI=ON -DCMAKE_BUILD_TYPE=${{ matrix.configuration == 'Release' && 'MinSizeRel' || matrix.configuration }} . | |
- name: Run Ninja build | |
run: ninja -C build | |
# ouch - unless and until we start using CMake's install command, these next few steps are a necessary evil | |
- name: Organize binaries | |
run: mkdir build/dist && mv build/*.exe build/dist | |
- name: Add RNR resources | |
run: cp -R Content/RNR build/dist/content && cp LICENSE build/dist | |
- name: Add Qt plugins and dependencies | |
run: windeployqt6 build/dist/*.exe | |
- name: Add OGRE plugins | |
run: cp Content/win32_plugins.cfg build/dist/plugins.cfg && mkdir build/dist/plugins/ && cat build/dist/plugins.cfg | grep "Plugin=" | sed -e "s/Plugin=//" | xargs -I '{}' cp -v '/${{ matrix.sys }}/bin/{}.dll' build/dist/plugins/ | |
- name: Add OGRE shaders | |
run: mkdir build/dist/shaders && cp -R /${{ matrix.sys }}/share/OGRE/Media/Main/* build/dist/shaders && cp -R /${{ matrix.sys }}/share/OGRE/Media/RTShaderLib/* build/dist/shaders | |
- name: Add additional runtime dependencies | |
run: ldd build/dist/*.exe | grep "=> /" | awk '{print $3}' | grep "clang64" | xargs -I '{}' cp -v '{}' build/dist | |
- name: Set output variables | |
id: vars | |
run: | | |
echo "configuration=${{ matrix.configuration }}" | awk '{print tolower($0)}' >> $GITHUB_OUTPUT | |
echo "hash=${GITHUB_SHA::7}" >> $GITHUB_OUTPUT | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: rnr-${{ steps.vars.outputs.hash }}-win_x64-${{ steps.vars.outputs.configuration }} | |
path: build/dist |