name: CMake concurrency: group: build-${{ github.ref }} cancel-in-progress: true on: push: branches: [ develop ] pull_request: branches: [ develop ] jobs: build-linux: strategy: fail-fast: false matrix: arch: [x64] os: [ubuntu-20.04, ubuntu-22.04] compiler: [gcc, clang] runs-on: ${{ matrix.os }} env: MATRIX_COMPILER: ${{matrix.compiler}} MATRIX_OS: ${{matrix.os}} steps: - uses: actions/checkout@v3 - name: Get dependencies run: | sudo apt-get update && sudo apt-get upgrade sudo mk/linux/setupBuildDeps.sh - name: Build run: | if [ "${MATRIX_COMPILER}" = "clang" ]; then EXTRA_OPTS="-f" fi mk/linux/build-mg.sh -m -d ${EXTRA_OPTS} make -C mk/linux/build -j$(nproc) VERBOSE=1 build-linux-other: strategy: fail-fast: false matrix: compiler: [10, 12] # 11 is on 22.04 by default, tested above runs-on: ubuntu-22.04 env: CC: gcc-${{matrix.compiler}} CXX: g++-${{matrix.compiler}} steps: - uses: actions/checkout@v3 - name: Get dependencies run: | sudo apt-get update && sudo apt-get upgrade sudo apt-get install -y $CXX sudo mk/linux/setupBuildDeps.sh - name: Build run: | mk/linux/build-mg.sh -d -m make -C mk/linux/build -j$(nproc) VERBOSE=1 build-win64: # The CMake configure and build commands are platform agnostic and should work equally # well on Windows or Mac. You can convert this to a matrix build if you need # cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix strategy: fail-fast: false matrix: arch: [x64] build_type: [Release] include: - build_type: Release release: 'ON' runs-on: windows-latest steps: - uses: actions/checkout@v3 - name: Cache Vcpkg Libs uses: actions/cache@v2 env: cache-name: cache-vcpkg-deps with: path: c:/vcpkg/installed key: vcpkg-deps - name: Install Dependencies run: | vcpkg integrate install vcpkg install brotli:x64-windows-static vcpkg install bzip2:x64-windows-static vcpkg install curl:x64-windows-static vcpkg install expat:x64-windows-static vcpkg install freetype:x64-windows-static vcpkg install fribidi:x64-windows-static vcpkg install ftgl:x64-windows-static vcpkg install glew:x64-windows-static vcpkg install libiconv:x64-windows-static vcpkg install libjpeg-turbo:x64-windows-static vcpkg install liblzma:x64-windows-static vcpkg install libogg:x64-windows-static vcpkg install libpng:x64-windows-static vcpkg install libvorbis:x64-windows-static vcpkg install libxml2:x64-windows-static vcpkg install lua:x64-windows-static vcpkg install openal-soft:x64-windows-static vcpkg install opengl:x64-windows-static vcpkg install miniupnpc:x64-windows-static vcpkg install sdl2:x64-windows-static vcpkg install sqlite3:x64-windows-static vcpkg install tiff:x64-windows-static vcpkg install tool-meson:x64-windows-static vcpkg install wxwidgets:x64-windows-static vcpkg install xerces-c:x64-windows-static vcpkg install zlib:x64-windows-static - name: Configure CMake # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type # Kinda guessing this using supertux + my own build scripts as guides. run: cmake --no-warn-unused-cli -B ${{github.workspace}}/build -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 17 2022" -T host=x64 -A x64 -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE - name: Build Mega Glest # Build your program with the given configuration run: cmake --build ${{github.workspace}}/build --config Release --target ALL_BUILD - name: Prepare Snapshot run: | cd mk/windoze cp ..\shared\*.ini . $7zPath = $(Get-Command 7z).Source cp $7zPath . cd ../.. - name: Create Mega Glest Snapshot uses: actions/upload-artifact@v2 with: name: megaglest-x64-windows path: | mk/windoze/*.exe mk/windoze/*.ini !mk/windoze/glest-dev.ini # build-macos: # strategy: # fail-fast: false # matrix: # arch: [x64] # os: [macos-latest] # compiler: [clang] # runs-on: ${{ matrix.os }} # steps: # - uses: actions/checkout@v2 # - name: Get dependencies # run: | # brew install pkg-config cmake sdl2 lua jpeg libpng freetype ftgl libogg glew libvorbis cppunit fribidi miniupnpc curl wxmac xquartz zstd xml2 openldap # - name: Bulid MegaGlest With Clang Compiler # if: ${{ matrix.compiler == 'clang' }} # env: # CC: clang # CXX: clang++ # run: | # # Path hack to get curl working. # export PATH=/usr/local/Cellar/curl/7.77.0/bin:$PATH # mk/macos/build-mg.sh # - name: Test # working-directory: ${{github.workspace}}/build # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail # run: ctest -C ${{env.BUILD_TYPE}}