Merge pull request #21 from lrre-foss/dependabot/submodules/Dependenc… #8
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 | |
- uses: awalsh128/cache-apt-pkgs-action@latest | |
name: Install required packages | |
with: | |
version: 1.0 | |
packages: >- | |
git | |
clang | |
cmake | |
ninja-build | |
libboost-dev | |
Libogre-1.12-dev | |
libpugixml-dev | |
qt6-base-dev | |
- name: Generate Ninja build files | |
run: cmake -G Ninja -B build -DCI -DCMAKE_BUILD_TYPE=${{ matrix.configuration == 'Release' && 'MinSizeRel' || matrix.configuration }} . | |
- name: Build (Ninja) | |
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 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: Add resources | |
run: cp -R Content/RNR build/dist/content && cp LICENSE 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 | |
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: >- | |
git | |
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 -DCMAKE_BUILD_TYPE=${{ matrix.configuration == 'Release' && 'MinSizeRel' || matrix.configuration }} . | |
- name: Build (Ninja) | |
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 Qt dependencies | |
run: windeployqt6 build/dist/*.exe | |
- name: Add runtime dependencies | |
run: ldd build/dist/*.exe | grep "=> /" | awk '{print $3}' | grep "clang64" | xargs -I '{}' cp -v '{}' build/dist | |
- 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 resources | |
run: cp -R Content/RNR build/dist/content && cp LICENSE 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 | |
uses: actions/upload-artifact@v3 | |
with: | |
name: rnr-${{ steps.vars.outputs.hash }}-win_x64-${{ steps.vars.outputs.configuration }} | |
path: build/dist |