diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c9ddaba..ac580f8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -350,6 +350,29 @@ jobs: build/tests_android_x86_64 build/tests_header_only_android_x86_64 + cygwin-x86_64-build: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - uses: egor-tensin/setup-cygwin@v4 + with: + packages: cmake gcc-g++ ninja m4 + - name: Build + shell: C:\tools\cygwin\bin\bash.exe --login -eo pipefail -o igncr {0} + run: | + cd "$(cygpath "$GITHUB_WORKSPACE")" + mkdir build && cd build + cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON + cmake --build . + mv ./tests/tests.exe ./tests_cygwin_x86_64.exe + mv ./tests/tests_header_only.exe ./tests_header_only_cygwin_x86_64.exe + - uses: actions/upload-artifact@v4 + with: + name: cygwin-x86_64 + path: | + build/tests_cygwin_x86_64.exe + build/tests_header_only_cygwin_x86_64.exe + # ---- TESTS ---- windows-tests: @@ -636,6 +659,26 @@ jobs: adb shell /data/local/tmp/tests adb shell /data/local/tmp/tests_header_only + cygwin-x86_64-test: + runs-on: windows-latest + timeout-minutes: 30 + needs: [cygwin-x86_64-build] + steps: + - uses: actions/download-artifact@v4 + with: + name: cygwin-x86_64 + path: build/ + - uses: egor-tensin/setup-cygwin@v4 + - name: Run tests + shell: C:\tools\cygwin\bin\bash.exe --login -eo pipefail -o igncr {0} + run: | + cd "$(cygpath "$GITHUB_WORKSPACE")" + SUMMARY="$(cygpath "$GITHUB_STEP_SUMMARY")" + echo '```' >> "$SUMMARY" + ./build/tests_cygwin_x86_64.exe 2>&1 | tee -a "$SUMMARY" + ./build/tests_header_only_cygwin_x86_64.exe 2>&1 | tee -a "$SUMMARY" + echo '```' >> "$SUMMARY" + # ---- DEPLOY ---- sphinx-docs: diff --git a/CMakeLists.txt b/CMakeLists.txt index ca204fc..8bd7c75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -142,7 +142,9 @@ if(TCS_ENABLE_EXAMPLES) endif() # Documentation -find_package(Doxygen QUIET) +if(NOT CYGWIN) # FindDoxygen crashes on Cygwin due to path translation issues + find_package(Doxygen QUIET) +endif() if(DOXYGEN_FOUND) # Define output directory for Doxygen documentation set(DOXYGEN_OUTPUT_DIR "${CMAKE_BINARY_DIR}/docs")