name: CI # Only trigger workflow when code changes, or this file is changed. # Android has a different workflow and different rules. on: push: paths: - "desktop_version/CMakeLists.txt" - "desktop_version/src/**.cpp" - "desktop_version/src/**.c" - "desktop_version/src/**.h" - "third_party/**" - ".github/workflows/ci.yml" pull_request: paths: - "desktop_version/CMakeLists.txt" - "desktop_version/src/**.cpp" - "desktop_version/src/**.c" - "desktop_version/src/**.h" - "third_party/**" - ".github/workflows/ci.yml" env: SRC_DIR_PATH: desktop_version jobs: build-mac: name: Build (macos-latest) runs-on: macos-latest env: CXXFLAGS: -I/usr/local/include/SDL2 LDFLAGS: -L/usr/local/lib steps: - uses: actions/checkout@v1 with: submodules: true - name: Install dependencies run: brew install ninja sdl2 - name: CMake configure (default version) run: | mkdir ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build cmake -GNinja .. - name: Build (default version) run: ninja -C ${SRC_DIR_PATH}/build - name: CMake configure (official) run: | cd ${SRC_DIR_PATH}/build cmake -DOFFICIAL_BUILD=ON .. - name: Build (official) run: | ninja -C ${SRC_DIR_PATH}/build - name: CMake configure (M&P) run: | cd ${SRC_DIR_PATH}/build cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON .. - name: Build (M&P) run: ninja -C ${SRC_DIR_PATH}/build build-lin: name: Build (CentOS 7) runs-on: ubuntu-latest container: ghcr.io/infoteddy/vvvvvv-build@sha256:50a2f769db3ca180286e9a76c1bf06b7016544a78e1fc7a9a0cc1144c675ced1 env: CXXFLAGS: -I/usr/local/include/SDL2 LDFLAGS: -L/usr/local/lib steps: - uses: actions/checkout@v1 with: submodules: true - name: CMake configure (default version) run: | mkdir ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build cmake .. - name: Build (default version) run: make -j $(nproc) -C ${SRC_DIR_PATH}/build - name: CMake configure (official) run: | cd ${SRC_DIR_PATH}/build cmake -DOFFICIAL_BUILD=ON .. - name: Build (official) run: | make -j $(nproc) -C ${SRC_DIR_PATH}/build - name: CMake configure (M&P) run: | cd ${SRC_DIR_PATH}/build cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON .. - name: Build (M&P) run: make -j $(nproc) -C ${SRC_DIR_PATH}/build build-win: name: Build (windows-latest) runs-on: windows-latest env: SDL_VERSION: 2.24.0 steps: - uses: actions/checkout@v1 with: submodules: true - name: Cache SDL id: cache-windows-sdl uses: actions/cache@v3 env: cache-name: cache-sdl with: path: C:\SDL2-* key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.SDL_VERSION }} - if: ${{ steps.cache-windows-sdl.outputs.cache-hit != 'true' }} name: Download SDL if not cached run: | Invoke-WebRequest "https://github.com/libsdl-org/SDL/releases/download/release-$env:SDL_VERSION/SDL2-devel-$env:SDL_VERSION-VC.zip" -OutFile C:\SDL.zip Expand-Archive C:\SDL.zip -DestinationPath C:\ - name: Cache build folder for this CMakeLists.txt id: cache-windows-build-folder uses: actions/cache@v3 env: cache-name: cache-windows-build-folder-VS2022 with: path: | desktop_version/build desktop_version/CMakeLists.txt key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('desktop_version/CMakeLists.txt') }}-SDL${{ env.SDL_VERSION }} - if: ${{ steps.cache-windows-build-folder.outputs.cache-hit != 'true' }} name: CMake initial configure/generate run: | mkdir $env:SRC_DIR_PATH/build cd $env:SRC_DIR_PATH/build $env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL_VERSION\lib\x86 " cmake -G "Visual Studio 17 2022" -A Win32 ` -DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL_VERSION\include" ` -DSDL2_LIBRARIES="SDL2;SDL2main" .. - name: CMake configure (default version) run: | cd $env:SRC_DIR_PATH/build cmake .. - name: Build (default version) run: | cd $env:SRC_DIR_PATH/build cmake --build . - name: CMake configure (official) run: | cd $env:SRC_DIR_PATH/build cmake -DOFFICIAL_BUILD=ON .. - name: Build (official) run: | cd $env:SRC_DIR_PATH/build cmake --build . - name: CMake configure (M&P) run: | cd $env:SRC_DIR_PATH/build cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON .. - name: Build (M&P) run: | cd $env:SRC_DIR_PATH/build cmake --build .