name: C/C++ CI cmake

on:
  push:
    paths: [ '**.c', '**.h', '**.cmake', 'CMakeLists.txt', '.github/configs', '.github/workflows/c-cpp-cmake.yml' ]
  pull_request:
    paths: [ "**.c", "**.h", "**.cmake", "CMakeLists.txt", ".github/configs", ".github/workflows/c-cpp-cmake.yml" ]
  workflow_dispatch:

permissions:
  contents: read

jobs:
  ci:
    name: "${{ matrix.target }}"
    strategy:
      matrix:
        target:
          - ubuntu-latest
          - ubuntu-24.04-arm
          - macos-15
          - windows-2022
    runs-on: ${{ matrix.target }}
    steps:
    - uses: actions/checkout@v7
#    - name: configure
#      run: ./configure
    - name: Linux libraries
      if: ${{ startsWith(matrix.target, 'ubuntu') }}
      run: sudo apt install libssl-dev libpam-dev libpcre2-dev
    - name: Mac libraries
      if: ${{ startsWith(matrix.target, 'macos') }}
      run: brew install pcre2
    - name: install Windows libraries
      if: ${{ startsWith(matrix.target, 'windows') }}
      run: vcpkg install pcre2:x64-windows 
    - name: make with CMake POSIX
      if: ${{ ! startsWith(matrix.target, 'windows') }}
      run: |
       mkdir build
       cd build
       cmake ..
       cmake --build .
       mkdir ~/3proxy
       DESTDIR=~/3proxy cmake --install .
       cd .. && rm -rf build/
    - name: make with CMake Win
      if: ${{ startsWith(matrix.target, 'windows') }}
      shell: cmd
      run: |
       mkdir build
       cd build
       set "LIB=%LIB%;c:/program files/openssl/lib/VC/x64/MT;c:/vcpkg/installed/x64-windows/lib"
       set "INCLUDE=%INCLUDE%;c:/program files/openssl/include;c:/vcpkg/installed/x64-windows/include"
       cmake ..
       dir
       cmake --build .
       cd ..
       rmdir /s /q build
