name: Build with vcpkg on: push: branches: - master - v* tags: - v* paths: - .github/workflows/** - cmake/** - src/** - CMakeLists.txt pull_request: paths: - .github/workflows/** - cmake/** - src/** - CMakeLists.txt jobs: job: name: ${{ matrix.os }}-${{ matrix.cxx }}-${{ matrix.buildtype }}-luajit=${{ matrix.luajit }} runs-on: ${{ matrix.os }}-${{ matrix.os-version }} strategy: fail-fast: false max-parallel: 8 matrix: name: [ubuntu-gcc, macos-clang, windows-msvc] buildtype: [Debug, Release] luajit: [on, off] include: - name: windows-msvc os: windows os-version: latest cxx: cl.exe cc: cl.exe triplet: x64-windows packages: > boost-iostreams boost-asio boost-system boost-variant boost-lockfree boost-filesystem boost-uuid glew luajit libogg libvorbis openal-soft opengl openssl physfs zlib - name: ubuntu-gcc os: ubuntu os-version: 20.04 cxx: g++ cc: gcc triplet: x64-linux packages: > boost-iostreams boost-asio boost-system boost-variant boost-lockfree glew boost-filesystem boost-uuid physfs openal-soft libogg libvorbis zlib opengl - name: macos-clang os: macos os-version: latest cxx: clang++ cc: clang triplet: x64-osx packages: > boost-iostreams boost-asio boost-system boost-variant boost-lockfree glew boost-filesystem boost-uuid libogg libvorbis zlib opengl exclude: - name: windows-msvc luajit: off steps: - uses: actions/checkout@v3 with: submodules: true - name: Unshallow run: git fetch --prune --unshallow - name: Get latest CMake # Using 'latest' branch, the latest CMake is installed. uses: lukka/get-cmake@latest - name: Ubuntu - install opengl lua5.1 luajit # vcpkg has lua 5.3+ run: sudo apt-get install libglew-dev liblua5.1-0-dev libluajit-5.1-dev if: contains( matrix.os, 'ubuntu') - name: MacOS - install physfs pkgconfig lua5.1 luajit xquartz run: brew install physfs pkgconfig lua@5.1 luajit xquartz if: contains( matrix.os, 'macos') - name: Set Environment vars run: | echo "CXX=${{ matrix.cxx }}" >> $GITHUB_ENV echo "CC=${{ matrix.cc }}" >> $GITHUB_ENV - name: Run vcpkg uses: lukka/run-vcpkg@v7 with: vcpkgArguments: ${{ matrix.packages }} vcpkgDirectory: ${{ runner.workspace }}/vcpkg/ vcpkgTriplet: ${{ matrix.triplet }} vcpkgGitCommitId: 6f7ffeb18f99796233b958aaaf14ec7bd4fb64b2 - name: Build with CMake uses: lukka/run-cmake@v3 with: buildDirectory: ${{ runner.workspace }}/build cmakeListsOrSettingsJson: CMakeListsTxtAdvanced cmakeAppendedArgs: '-G Ninja -DCMAKE_BUILD_TYPE="${{ matrix.buildtype }}" -DLUAJIT="${{ matrix.luajit }}"' useVcpkgToolchainFile: true - name: dir run: find $RUNNER_WORKSPACE shell: bash - name: Upload artifact binary uses: actions/upload-artifact@v3 with: name: otclient-${{ matrix.name }}-${{ matrix.buildtype }}-luajit=${{ matrix.luajit }}-${{ github.sha }} path: ${{ runner.workspace }}/build/otclient if: "! contains( matrix.os, 'windows')" - name: Upload artifact binary (exe) uses: actions/upload-artifact@v3 with: name: otclient-${{ matrix.name }}-${{ matrix.buildtype }}-luajit=${{ matrix.luajit }}-${{ github.sha }} path: ${{ runner.workspace }}/build/otclient.exe if: contains( matrix.os, 'windows') - name: Upload artifact binary (dlls) uses: actions/upload-artifact@v3 with: name: otclient-${{ matrix.name }}-${{ matrix.buildtype }}-luajit=${{ matrix.luajit }}-${{ github.sha }} path: ${{ runner.workspace }}/build/*.dll if: contains( matrix.os, 'windows')