name: build

on:
  push:
  pull_request:

jobs:
  Linux:
    runs-on: ubuntu-22.04

    strategy:
      fail-fast: false
      matrix:
        build_type:
          - debug
          - release
        compiler:
          - gcc
          - clang
        arch:
          - x86
          - x64

    steps:
      - uses: actions/checkout@v3

      - uses: actions/checkout@v3
        with:
          repository: ocornut/imgui
          path: imgui

      - name: Dependencies
        run: sudo apt-get install g++-multilib

      - name: Configure
        run: cmake -DCMAKE_CXX_COMPILER=${{ matrix.compiler }} -DCMAKE_C_COMPILER=${{ matrix.compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DGCC_ARCH=${{ matrix.arch }} -B cmake-build -S .github

      - name: Build
        run: cmake --build cmake-build --parallel $(nproc)

      - name: Run
        run: |
          file cmake-build/example_implot
          cmake-build/example_implot

  MacOS:
    runs-on: macos-latest

    strategy:
      fail-fast: false
      matrix:
        build_type:
          - debug
          - release
        arch:
          - x86_64
          - arm64

    steps:
      - uses: actions/checkout@v3

      - uses: actions/checkout@v3
        with:
          repository: ocornut/imgui
          path: imgui

      - name: Configure
        shell: bash
        run: cmake -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DOSX_ARCH=${{ matrix.arch }} -B cmake-build -S .github

      - name: Build
        shell: bash
        run: cmake --build cmake-build --parallel $(sysctl -n hw.ncpu)

      - name: Run
        if: matrix.arch == 'x86_64' # github's CI hosts seem to be running intel and can not run ARM
        run: |
          file cmake-build/example_implot
          cmake-build/example_implot

  Windows_MSVC:
    runs-on: windows-2022

    strategy:
      fail-fast: false
      matrix:
        build_type:
          - debug
          - release
        arch:
          - Win32
          - x64

    steps:
      - uses: actions/checkout@v3

      - uses: actions/checkout@v3
        with:
          repository: ocornut/imgui
          path: imgui

      - name: Configure
        shell: bash
        run: cmake -G 'Visual Studio 17 2022' -A ${{ matrix.arch }} -B cmake-build -S .github

      - name: Build
        shell: bash
        run: cmake --build cmake-build -- -p:Configuration=${{ matrix.build_type }} -maxcpucount:$NUMBER_OF_PROCESSORS

      - name: Run
        run: .\cmake-build\${{matrix.build_type}}\example_implot.exe

  Windows_MingW: # MingW on Github CI does not fully support 32 bits: link fails when it tries to link 64 bits system libraries.
    runs-on: windows-2022

    strategy:
      fail-fast: false
      matrix:
        build_type:
          - debug
          - release
        arch:
          - x64
          # - Win32

    steps:
      - uses: actions/checkout@v3

      - uses: actions/checkout@v3
        with:
          repository: ocornut/imgui
          path: imgui

      - name: Configure
        shell: bash
        run: cmake -G 'MinGW Makefiles' -DGCC_ARCH=${{ matrix.arch }} -B cmake-build -S .github

      - name: Build
        shell: bash
        run: cmake --build cmake-build --parallel $NUMBER_OF_PROCESSORS

      - name: Run (MingW)
        run: .\cmake-build\example_implot.exe
  
