name: C/C++ CI on: push: branches: [ "master" ] paths: [ '**.c', '**.h', 'Makefile.**', '.github/configs', '.github/workflows/c-cpp.yml' ] pull_request: branches: [ "master" ] paths: [ '**.c', '**.h', 'Makefile.**', '.github/configs', '.github/workflows/c-cpp.yml' ] 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@v4 # - name: configure # run: ./configure - name: Linux libraries if: ${{ startsWith(matrix.target, 'ubuntu') }} run: sudo apt install libssl-dev libpam-dev libpcre3 libpcre3-dev - name: make Ubuntu if: ${{ startsWith(matrix.target, 'ubuntu') }} run: make -f Makefile.Linux - name: mkdir if: ${{ startsWith(matrix.target, 'ubuntu') }} run: mkdir ~/3proxy - name: make install if: ${{ startsWith(matrix.target, 'ubuntu') }} run: make -f Makefile.Linux DESTDIR=~/3proxy install - name: make clean Linux if: ${{ startsWith(matrix.target, 'ubuntu') }} run: make -f Makefile.Linux clean - name: Mac libraries if: ${{ startsWith(matrix.target, 'macos') }} run: brew install pcre - name: make MacOS if: ${{ startsWith(matrix.target, 'macos') }} run: make -f Makefile.FreeBSD env: LDFLAGS: "-L/usr/local/lib -L/opt/homebrew/lib -L/opt/homebrew/opt/openssl/lib" CFLAGS: "-I/usr/local/include -I/opt/homebrew/include -I/usr/local/opt/openssl/include -I/opt/homebrew/opt/openssl/include" - name: make clean MacOS if: ${{ startsWith(matrix.target, 'macos') }} run: make -f Makefile.FreeBSD clean - name: make Windows if: ${{ startsWith(matrix.target, 'windows') }} run: make -f Makefile.win env: LIBS: '-L "c:/program files/openssl/lib/VC/x64/MT"' CFLAGS: '-I "c:/program files/openssl/include"' - name: make clean Windows if: ${{ startsWith(matrix.target, 'windows') }} run: make -f Makefile.win clean - name: Setup MSVC environment if: ${{ startsWith(matrix.target, 'windows') }} uses: microsoft/setup-msbuild@v3 with: msbuild-version: latest msbuild-architecture: x64 - name: make Windows MSVC if: ${{ startsWith(matrix.target, 'windows') }} run: call "C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\BuildTools\VC\Auxiliary\Build\vcvars64.bat" && nmake /F Makefile.msvc64 env: LIBS: '-L "c:/program files/openssl/lib/VC/x64/MT"' CFLAGS: '-I "c:/program files/openssl/include"' - name: make clean Windows if: ${{ startsWith(matrix.target, 'windows') }} run: nmake /F Makefile.msvc64 clean