name: Build
on:
  push:
    branches:
      - master
  pull_request:

jobs:
  linux:
    name: Linux
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source
        uses: actions/checkout@v5
        with:
          submodules: recursive

      - name: Setup ccache
        uses: hendrikmuhs/ccache-action@v1.2
        with:
          key: ${{ runner.os }}-ccache

      - name: Install dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y build-essential ninja-build ccache libmariadb-dev libmariadb-dev-compat libboost-all-dev libperl-dev liblua5.1-0-dev libluajit-5.1-dev zlib1g-dev uuid-dev libssl-dev libsodium-dev libmbedtls-dev

      - name: Configure
        run: |
          cmake -S . -B build -G Ninja \
            -DCMAKE_BUILD_TYPE=RelWithDebInfo \
            -DCMAKE_C_COMPILER_LAUNCHER=ccache \
            -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
            -DEQEMU_BUILD_TESTS=ON \
            -DEQEMU_BUILD_LOGIN=ON \
            -DEQEMU_BUILD_LUA=ON \
            -DEQEMU_BUILD_PERL=ON \
            -DEQEMU_BUILD_CLIENT_FILES=ON

      - name: Build
        run: cmake --build build --parallel

      - name: Test
        working-directory: build
        run: ./bin/tests

  windows:
    name: Windows
    runs-on: windows-latest
    steps:
      - name: Checkout source
        uses: actions/checkout@v5
        with:
          submodules: recursive

      - name: Enable long paths
        run: git config --global core.longpaths true

      - name: Setup MSVC environment
        uses: ilammy/msvc-dev-cmd@v1
        with:
          arch: x64

      - name: Configure
        shell: pwsh
        run: |
          cmake -S . -B build -G "Visual Studio 17 2022" -A x64 `
            -DCMAKE_BUILD_TYPE=RelWithDebInfo `
            -DEQEMU_BUILD_TESTS=ON `
            -DEQEMU_BUILD_LOGIN=ON `
            -DEQEMU_BUILD_LUA=ON `
            -DEQEMU_BUILD_ZLIB=ON `
            -DEQEMU_BUILD_CLIENT_FILES=ON

      - name: Build
        shell: pwsh
        run: cmake --build build --config RelWithDebInfo --target ALL_BUILD -- /m

      - name: Test
        working-directory: build
        run: ./bin/RelWithDebInfo/tests.exe
