name: Build on: [ push ] jobs: 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: - name: Checkout repository uses: actions/checkout@v3 with: submodules: recursive - name: Set up MSYS2 and install required packages uses: msys2/setup-msys2@v2 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 mingw-w64-${{ matrix.env }}-bullet - 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 && mv build/dist/shaders/GLSL/* build/dist/shaders && rm -rf build/dist/shaders/GLSL - name: Add additional runtime dependencies run: ldd build/dist/*.exe | grep "=> /" | awk '{print $3}' | grep "${{ matrix.sys }}" | 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