add required linux libraries #13
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.1 | |
packages: >- | |
- name: Install required packages | |
run: sudo apt-get update && sudo apt-get install -y clang cmake ninja-build libboost-dev libogre-1.12-dev libpugixml-dev libglx-dev qt6-base-dev qt6-3d-dev libqt6gui6 libqt6core6 libqt6openglwidgets6 libqt6opengl6-dev | |
- 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 |