# Copyright (C) Viktor Szakats # # SPDX-License-Identifier: curl name: Cygwin 'on': push: branches: - master - '*/ci' paths-ignore: - '**/*.md' - '.circleci/**' - 'appveyor.*' - 'packages/**' - 'plan9/**' - 'projects/**' - 'winbuild/**' pull_request: branches: - master paths-ignore: - '**/*.md' - '.circleci/**' - 'appveyor.*' - 'packages/**' - 'plan9/**' - 'projects/**' - 'winbuild/**' concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true permissions: {} jobs: cygwin: name: "cygwin, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} ${{ matrix.platform }} ${{ matrix.name }}" runs-on: windows-latest timeout-minutes: 45 defaults: run: shell: C:\cygwin\bin\bash.exe '{0}' env: SHELLOPTS: 'igncr' strategy: matrix: include: - { build: 'automake', platform: 'x86_64', tflags: '' , config: '--enable-debug --disable-threaded-resolver', name: 'openssl' } - { build: 'cmake' , platform: 'x86_64', tflags: 'skiprun', config: '-DCURL_USE_OPENSSL=ON', name: 'openssl R' } fail-fast: false steps: - run: git config --global core.autocrlf input shell: pwsh - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - uses: cygwin/cygwin-install-action@006ad0b0946ca6d0a3ea2d4437677fa767392401 # v4 with: platform: ${{ matrix.platform }} site: https://mirrors.kernel.org/sourceware/cygwin/ # https://cygwin.com/cgi-bin2/package-grep.cgi packages: >- autoconf libtool gcc-core gcc-g++ binutils ${{ matrix.build }} make ninja openssh libssl-devel libssh2-devel libpsl-devel zlib-devel libbrotli-devel libnghttp2-devel - name: 'autotools autoreconf' if: ${{ matrix.build == 'automake' }} timeout-minutes: 2 run: autoreconf -fi - name: 'autotools configure' if: ${{ matrix.build == 'automake' }} timeout-minutes: 5 run: | PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32" mkdir bld && cd bld && ../configure --enable-unity --enable-warnings --enable-werror \ --prefix="${HOME}"/install \ --enable-websockets \ --with-openssl \ --with-libssh2 \ --disable-dependency-tracking \ ${{ matrix.config }} - name: 'autotools configure log' if: ${{ matrix.build == 'automake' && !cancelled() }} run: cat bld/config.log 2>/dev/null || true - name: 'curl_config.h' if: ${{ matrix.build == 'automake' }} run: cat bld/lib/curl_config.h | grep -F '#define' | sort || true - name: 'curl_config.h (full)' if: ${{ matrix.build == 'automake' }} run: cat bld/lib/curl_config.h || true - name: 'autotools build' if: ${{ matrix.build == 'automake' }} timeout-minutes: 10 run: make -C bld -j5 V=1 install - name: 'curl version' if: ${{ matrix.build == 'automake' }} timeout-minutes: 1 run: | find . -name '*.exe' -o -name '*.dll' bld/src/curl.exe --disable --version - name: 'autotools build tests' if: ${{ matrix.build == 'automake' && matrix.tflags != 'skipall' }} timeout-minutes: 15 run: make -C bld -j5 V=1 -C tests - name: 'autotools run tests' if: ${{ matrix.build == 'automake' && matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }} timeout-minutes: 15 run: | export TFLAGS='-j8 ${{ matrix.tflags }} ~615' if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")" fi make -C bld -j5 V=1 test-ci - name: 'autotools build examples' if: ${{ matrix.build == 'automake' }} timeout-minutes: 5 run: make -C bld -j5 V=1 examples - name: 'cmake configure' if: ${{ matrix.build == 'cmake' }} timeout-minutes: 5 run: | PATH="/usr/bin:$(cygpath "${SYSTEMROOT}")/System32" cmake -B bld -G Ninja ${options} \ -DCMAKE_UNITY_BUILD=ON \ -DCURL_WERROR=ON \ -DENABLE_WEBSOCKETS=ON \ -DCURL_BROTLI=ON \ ${{ matrix.config }} - name: 'cmake configure log' if: ${{ matrix.build == 'cmake' && !cancelled() }} run: cat bld/CMakeFiles/CMake*.yaml 2>/dev/null || true - name: 'curl_config.h' if: ${{ matrix.build == 'cmake' }} run: cat bld/lib/curl_config.h | grep -F '#define' | sort || true - name: 'curl_config.h (full)' if: ${{ matrix.build == 'cmake' }} run: cat bld/lib/curl_config.h || true - name: 'cmake build' if: ${{ matrix.build == 'cmake' }} timeout-minutes: 10 run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 - name: 'curl version' if: ${{ matrix.build == 'cmake' }} timeout-minutes: 1 run: | find . -name '*.exe' -o -name '*.dll' | grep -v '/examples/' PATH="$PWD/bld/lib:$PATH" bld/src/curl.exe --disable --version - name: 'cmake build tests' if: ${{ matrix.build == 'cmake' && matrix.tflags != 'skipall' }} timeout-minutes: 15 run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target testdeps - name: 'cmake run tests' if: ${{ matrix.build == 'cmake' && matrix.tflags != 'skipall' && matrix.tflags != 'skiprun' }} timeout-minutes: 15 run: | export TFLAGS='-j8 ${{ matrix.tflags }} ~615' if [ -x "$(cygpath "${SYSTEMROOT}/System32/curl.exe")" ]; then TFLAGS+=" -ac $(cygpath "${SYSTEMROOT}/System32/curl.exe")" fi PATH="$PWD/bld/lib:$PATH" cmake --build bld --config '${{ matrix.type }}' --target test-ci - name: 'cmake build examples' if: ${{ matrix.build == 'cmake' }} timeout-minutes: 5 run: cmake --build bld --config '${{ matrix.type }}' --parallel 5 --target curl-examples