From dec9bab4126ecaac511372460e6c352e1f7ff503 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Lindel=C3=B6w?= Date: Sun, 5 Apr 2026 20:04:45 +0200 Subject: [PATCH] Migrate from GitLab CI to GitHub Actions --- .github/workflows/ci.yml | 520 ++++++++++++++++++ .gitlab-ci.yml | 463 ---------------- CONTRIBUTING.md | 2 +- README.md | 52 +- ...cmake => toolchain_mingw_x64_winblue.cmake | 0 ...p.cmake => toolchain_mingw_x64_winxp.cmake | 0 6 files changed, 550 insertions(+), 487 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .gitlab-ci.yml rename toolchain_mingw_x86-64_winblue.cmake => toolchain_mingw_x64_winblue.cmake (100%) rename toolchain_mingw_x86-64_winxp.cmake => toolchain_mingw_x64_winxp.cmake (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..c983788 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,520 @@ +name: CI + +on: + push: + branches: [master] + pull_request: + +env: + LC_ALL: C.UTF-8 + LANG: C.UTF-8 + +jobs: + # ---- LINTING ---- + + code-format: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Check formatting + run: | + sudo apt-get update + sudo apt-get install -y clang-format python3 + clang-format --version + python3 ./tools/run-clang-format.py -j 1 -r --exclude tests/doctest.h src tests examples + + static-linting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Run clang-tidy + run: | + sudo apt-get update + sudo apt-get install -y clang-tidy + mkdir build && cd build + cmake -G "Ninja" ../ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON + clang-tidy ../src/*.c ../examples/*.c + + header-updated: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Check header is up to date + run: ./tools/is_header_up_to_date.sh + + posix-coverage: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build and generate coverage + run: | + sudo apt-get update + sudo apt-get install -y gcovr + ./tools/coverage.sh + - uses: actions/upload-artifact@v4 + if: always() + with: + name: coverage-report + path: ./cobertura.xml + retention-days: 7 + + # ---- BUILDS ---- + + msvc-build: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - name: Install m4 + run: choco install gnuwin32-m4 --version=1.4.14 -y + - name: Build x86 + run: | + $env:PATH += ";C:\Program Files (x86)\GnuWin32\bin" + cmake -G "Visual Studio 17 2022" -A "win32" -B build32 -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake --build build32 --target ALL_BUILD --config Debug + cmake --build build32 --target ALL_BUILD --config Release + - name: Build x64 + run: | + $env:PATH += ";C:\Program Files (x86)\GnuWin32\bin" + cmake -G "Visual Studio 17 2022" -A "x64" -B build64 -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake --build build64 --target ALL_BUILD --config Debug + cmake --build build64 --target ALL_BUILD --config Release + - name: Collect artifacts + run: | + mkdir build + move build32\tests\Debug\tests.exe build\tests_msvc_debug_x86.exe + move build32\tests\Release\tests.exe build\tests_msvc_release_x86.exe + move build64\tests\Debug\tests.exe build\tests_msvc_debug_x64.exe + move build64\tests\Release\tests.exe build\tests_msvc_release_x64.exe + move build32\tests\Debug\tests_header_only.exe build\tests_header_only_msvc_debug_x86.exe + move build32\tests\Release\tests_header_only.exe build\tests_header_only_msvc_release_x86.exe + move build64\tests\Debug\tests_header_only.exe build\tests_header_only_msvc_debug_x64.exe + move build64\tests\Release\tests_header_only.exe build\tests_header_only_msvc_release_x64.exe + shell: cmd + - uses: actions/upload-artifact@v4 + with: + name: msvc-tests + path: build/ + + linux-musl-x86_64: + runs-on: ubuntu-latest + container: alpine:3.23.3 + steps: + - uses: actions/checkout@v4 + - name: Build + run: | + apk add cmake g++ ninja m4 linux-headers + mkdir build && cd build + cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF -DCMAKE_EXE_LINKER_FLAGS=-static + cmake --build . + mv ./tests/tests ./tests_linux_musl_x86_64 + mv ./tests/tests_header_only ./tests_header_only_linux_musl_x86_64 + - uses: actions/upload-artifact@v4 + with: + name: linux-musl-x86_64 + path: | + build/tests_linux_musl_x86_64 + build/tests_header_only_linux_musl_x86_64 + + linux-musl-x86: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build in i386 container + run: | + docker run --rm \ + -v ${{ github.workspace }}:/workspace \ + -w /workspace \ + i386/alpine:3.23.3 sh -c ' + apk add cmake g++ ninja m4 linux-headers && + mkdir build && cd build && + cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF -DCMAKE_EXE_LINKER_FLAGS=-static && + cmake --build . && + mv ./tests/tests ./tests_linux_musl_x86 && + mv ./tests/tests_header_only ./tests_header_only_linux_musl_x86 + ' + - uses: actions/upload-artifact@v4 + with: + name: linux-musl-x86 + path: | + build/tests_linux_musl_x86 + build/tests_header_only_linux_musl_x86 + + linux-glibc-x86_64: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build + run: | + mkdir build && cd build + cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake --build . + mv ./tests/tests ./tests_linux_glibc_x86_64 + mv ./tests/tests_header_only ./tests_header_only_linux_glibc_x86_64 + - uses: actions/upload-artifact@v4 + with: + name: linux-glibc-x86_64 + path: | + build/tests_linux_glibc_x86_64 + build/tests_header_only_linux_glibc_x86_64 + + linux-glibc-x86: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build in i386 container + run: | + docker run --rm \ + -v ${{ github.workspace }}:/workspace \ + -w /workspace \ + i386/debian:bookworm sh -c ' + apt-get update && apt-get install -y cmake ninja-build g++ m4 && + mkdir build && cd build && + cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF && + cmake --build . && + mv ./tests/tests ./tests_linux_glibc_x86 && + mv ./tests/tests_header_only ./tests_header_only_linux_glibc_x86 + ' + - uses: actions/upload-artifact@v4 + with: + name: linux-glibc-x86 + path: | + build/tests_linux_glibc_x86 + build/tests_header_only_linux_glibc_x86 + + mingw-x64-winxp: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build + run: | + sudo apt-get update && sudo apt-get install -y gcc-mingw-w64-x86-64-posix g++-mingw-w64-x86-64-posix + mkdir build && cd build + cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x64_winxp.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake --build . + mv ./tests/tests.exe ./tests_mingw_x64_winxp.exe + mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x64_winxp.exe + - uses: actions/upload-artifact@v4 + with: + name: mingw-x64-winxp + path: | + build/tests_mingw_x64_winxp.exe + build/tests_header_only_mingw_x64_winxp.exe + + mingw-x86-winxp: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build + run: | + sudo apt-get update && sudo apt-get install -y gcc-mingw-w64-i686-posix g++-mingw-w64-i686-posix + mkdir build && cd build + cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_winxp.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake --build . + mv ./tests/tests.exe ./tests_mingw_x86_winxp.exe + mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x86_winxp.exe + - uses: actions/upload-artifact@v4 + with: + name: mingw-x86-winxp + path: | + build/tests_mingw_x86_winxp.exe + build/tests_header_only_mingw_x86_winxp.exe + + mingw-x64-winblue: + runs-on: ubuntu-latest + container: alpine:3.23.3 + steps: + - uses: actions/checkout@v4 + - name: Build + run: | + apk add cmake mingw-w64-gcc ninja m4 + mkdir build && cd build + cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x64_winblue.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake --build . + mv ./tests/tests.exe ./tests_mingw_x64_winblue.exe + mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x64_winblue.exe + - uses: actions/upload-artifact@v4 + with: + name: mingw-x64-winblue + path: | + build/tests_mingw_x64_winblue.exe + build/tests_header_only_mingw_x64_winblue.exe + + mingw-x86-winblue: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build in i386 container + run: | + docker run --rm \ + -v ${{ github.workspace }}:/workspace \ + -w /workspace \ + i386/alpine:3.23.3 sh -c ' + apk add cmake mingw-w64-gcc ninja m4 && + mkdir build && cd build && + cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_winblue.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF && + cmake --build . && + mv ./tests/tests.exe ./tests_mingw_x86_winblue.exe && + mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x86_winblue.exe + ' + - uses: actions/upload-artifact@v4 + with: + name: mingw-x86-winblue + path: | + build/tests_mingw_x86_winblue.exe + build/tests_header_only_mingw_x86_winblue.exe + + mingw-x86-win2k: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build + run: | + sudo apt-get update && sudo apt-get install -y gcc-mingw-w64-i686-posix g++-mingw-w64-i686-posix + mkdir build && cd build + cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_win2k.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake --build . + mv ./tests/tests.exe ./tests_mingw_x86_win2k.exe + mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x86_win2k.exe + - uses: actions/upload-artifact@v4 + with: + name: mingw-x86-win2k + path: | + build/tests_mingw_x86_win2k.exe + build/tests_header_only_mingw_x86_win2k.exe + + # ---- TESTS ---- + + windows-tests: + runs-on: windows-latest + timeout-minutes: 30 + needs: + - msvc-build + - mingw-x64-winxp + - mingw-x86-winxp + - mingw-x64-winblue + - mingw-x86-winblue + - mingw-x86-win2k + steps: + - uses: actions/download-artifact@v4 + with: + name: msvc-tests + path: build/ + - uses: actions/download-artifact@v4 + with: + name: mingw-x64-winxp + path: build/ + - uses: actions/download-artifact@v4 + with: + name: mingw-x86-winxp + path: build/ + - uses: actions/download-artifact@v4 + with: + name: mingw-x64-winblue + path: build/ + - uses: actions/download-artifact@v4 + with: + name: mingw-x86-winblue + path: build/ + - uses: actions/download-artifact@v4 + with: + name: mingw-x86-win2k + path: build/ + - name: Run tests + shell: bash + run: | + echo '```' >> $GITHUB_STEP_SUMMARY + ./build/tests_msvc_debug_x86.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_msvc_release_x86.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_msvc_debug_x64.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_msvc_release_x64.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_mingw_x86_winxp.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_mingw_x64_winxp.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_mingw_x86_winblue.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_mingw_x64_winblue.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_mingw_x86_win2k.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_msvc_debug_x86.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_msvc_release_x86.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_msvc_debug_x64.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_msvc_release_x64.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_mingw_x86_winxp.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_mingw_x64_winxp.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_mingw_x86_winblue.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_mingw_x64_winblue.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_mingw_x86_win2k.exe 2>&1 | tee -a $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + + wine-test-x64: + runs-on: ubuntu-latest + timeout-minutes: 30 + needs: + - msvc-build + - mingw-x64-winxp + - mingw-x64-winblue + steps: + - uses: actions/download-artifact@v4 + with: + name: msvc-tests + path: build/ + - uses: actions/download-artifact@v4 + with: + name: mingw-x64-winxp + path: build/ + - uses: actions/download-artifact@v4 + with: + name: mingw-x64-winblue + path: build/ + - name: Run wine tests + run: | + echo '```' >> $GITHUB_STEP_SUMMARY + docker run --rm \ + -v ${{ github.workspace }}:/workspace \ + -w /workspace \ + -e WINEDEBUG=-all \ + -e XDG_RUNTIME_DIR=/tmp/runtime \ + alpine:3.23.3 sh -c ' + apk add wine && + mkdir -p /tmp/runtime && + wine64 ./build/tests_msvc_release_x64.exe && + wine64 ./build/tests_header_only_msvc_release_x64.exe && + wine64 ./build/tests_mingw_x64_winxp.exe && + wine64 ./build/tests_header_only_mingw_x64_winxp.exe && + wine64 ./build/tests_mingw_x64_winblue.exe && + wine64 ./build/tests_header_only_mingw_x64_winblue.exe + ' 2>&1 | tee -a $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + + wine-test-x86: + runs-on: ubuntu-latest + timeout-minutes: 30 + needs: + - msvc-build + - mingw-x86-winxp + - mingw-x86-winblue + - mingw-x86-win2k + steps: + - uses: actions/download-artifact@v4 + with: + name: msvc-tests + path: build/ + - uses: actions/download-artifact@v4 + with: + name: mingw-x86-winxp + path: build/ + - uses: actions/download-artifact@v4 + with: + name: mingw-x86-winblue + path: build/ + - uses: actions/download-artifact@v4 + with: + name: mingw-x86-win2k + path: build/ + - name: Run wine tests + run: | + echo '```' >> $GITHUB_STEP_SUMMARY + docker run --rm \ + -v ${{ github.workspace }}:/workspace \ + -w /workspace \ + -e WINEDEBUG=-all \ + -e XDG_RUNTIME_DIR=/tmp/runtime \ + i386/alpine:3.23.3 sh -c ' + apk add wine && + mkdir -p /tmp/runtime && + wine ./build/tests_msvc_release_x86.exe && + wine ./build/tests_header_only_msvc_release_x86.exe && + wine ./build/tests_mingw_x86_winxp.exe && + wine ./build/tests_header_only_mingw_x86_winxp.exe && + wine ./build/tests_mingw_x86_winblue.exe && + wine ./build/tests_header_only_mingw_x86_winblue.exe && + wine ./build/tests_mingw_x86_win2k.exe && + wine ./build/tests_header_only_mingw_x86_win2k.exe + ' 2>&1 | tee -a $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + + linux-test-musl-x86_64: + runs-on: ubuntu-latest + timeout-minutes: 30 + needs: [linux-musl-x86_64] + steps: + - uses: actions/download-artifact@v4 + with: + name: linux-musl-x86_64 + path: build/ + - name: Run tests + run: | + echo '```' >> $GITHUB_STEP_SUMMARY + chmod +x ./build/tests_linux_musl_x86_64 ./build/tests_header_only_linux_musl_x86_64 + ./build/tests_linux_musl_x86_64 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_linux_musl_x86_64 2>&1 | tee -a $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + + linux-test-musl-x86: + runs-on: ubuntu-latest + timeout-minutes: 30 + needs: [linux-musl-x86] + steps: + - uses: actions/download-artifact@v4 + with: + name: linux-musl-x86 + path: build/ + - name: Run tests + run: | + echo '```' >> $GITHUB_STEP_SUMMARY + chmod +x ./build/tests_linux_musl_x86 ./build/tests_header_only_linux_musl_x86 + ./build/tests_linux_musl_x86 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_linux_musl_x86 2>&1 | tee -a $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + + linux-test-glibc-x86_64: + runs-on: ubuntu-latest + timeout-minutes: 30 + needs: [linux-glibc-x86_64] + steps: + - uses: actions/download-artifact@v4 + with: + name: linux-glibc-x86_64 + path: build/ + - name: Run tests + run: | + echo '```' >> $GITHUB_STEP_SUMMARY + chmod +x ./build/tests_linux_glibc_x86_64 ./build/tests_header_only_linux_glibc_x86_64 + ./build/tests_linux_glibc_x86_64 2>&1 | tee -a $GITHUB_STEP_SUMMARY + ./build/tests_header_only_linux_glibc_x86_64 2>&1 | tee -a $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + + linux-test-glibc-x86: + runs-on: ubuntu-latest + timeout-minutes: 30 + needs: [linux-glibc-x86] + steps: + - uses: actions/download-artifact@v4 + with: + name: linux-glibc-x86 + path: build/ + - name: Run tests + run: | + echo '```' >> $GITHUB_STEP_SUMMARY + docker run --rm \ + -v ${{ github.workspace }}:/workspace \ + -w /workspace \ + i386/debian:bookworm sh -c ' + chmod +x ./build/tests_linux_glibc_x86 ./build/tests_header_only_linux_glibc_x86 && + ./build/tests_linux_glibc_x86 && + ./build/tests_header_only_linux_glibc_x86 + ' 2>&1 | tee -a $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + + # ---- DEPLOY ---- + + sphinx-docs: + runs-on: ubuntu-latest + env: + TZ: UTC + steps: + - uses: actions/checkout@v4 + - name: Build documentation + run: | + sudo apt-get update + sudo apt-get install -y doxygen + pip3 install --break-system-packages -r docs/requirements.txt + cd docs + make html diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 072f4bd..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,463 +0,0 @@ -variables: - LC_ALL: C.UTF-8 - LANG: C.UTF-8 - -.only-default: &only-default - only: - - merge_requests - -stages: - - linting - - build - - test - - deploy - -# LINTING - -code format: - <<: *only-default - tags: - - docker - image: alpine:3.23.3 - stage: linting - needs: [] - script: - - apk add clang clang-extra-tools python3 - - clang-format --version - - python3 ./tools/run-clang-format.py -j 1 -r --exclude tests/doctest.h src tests examples - -static linting: - <<: *only-default - tags: - - docker - image: ubuntu:24.04 - stage: linting - needs: [] - script: - - apt update - - apt install -y cmake g++ clang ninja-build clang-tidy - - mkdir build && cd build - - cmake -G "Ninja" ../ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON - - clang-tidy ../src/*.c ../examples/*.c - -header updated: - <<: *only-default - tags: - - docker - image: amd64/alpine:3.23.3 - stage: linting - needs: [] - script: - - apk add m4 - - ./tools/is_header_up_to_date.sh - -# COVERAGE - -posix coverage: - <<: *only-default - tags: - - docker - image: amd64/alpine:3.23.3 - stage: linting - needs: [] - script: - - apk add cmake g++ ninja m4 gcovr linux-headers - - ./tools/coverage.sh - artifacts: - expire_in: 7 days - reports: - coverage_report: - coverage_format: cobertura - path: ./cobertura.xml - -# BUILDS - -windows-any msvc v19.40: - <<: *only-default - tags: - - saas-windows-medium-amd64 - stage: build - needs: [] - script: - - '& ./tools/build_msvc.bat' - - 'mkdir build' - - 'mv build32/tests/Debug/tests.exe ./build/tests_msvc_debug_x86.exe' - - 'mv build32/tests/Release/tests.exe ./build/tests_msvc_release_x86.exe' - - 'mv build64/tests/Debug/tests.exe ./build/tests_msvc_debug_x86-64.exe' - - 'mv build64/tests/Release/tests.exe ./build/tests_msvc_release_x86-64.exe' - - 'mv build32/tests/Debug/tests_header_only.exe ./build/tests_header_only_msvc_debug_x86.exe' - - 'mv build32/tests/Release/tests_header_only.exe ./build/tests_header_only_msvc_release_x86.exe' - - 'mv build64/tests/Debug/tests_header_only.exe ./build/tests_header_only_msvc_debug_x86-64.exe' - - 'mv build64/tests/Release/tests_header_only.exe ./build/tests_header_only_msvc_release_x86-64.exe' - artifacts: - paths: - - ./build/tests_msvc_debug_x86.exe - - ./build/tests_msvc_release_x86.exe - - ./build/tests_msvc_debug_x86-64.exe - - ./build/tests_msvc_release_x86-64.exe - - ./build/tests_header_only_msvc_debug_x86.exe - - ./build/tests_header_only_msvc_release_x86.exe - - ./build/tests_header_only_msvc_debug_x86-64.exe - - ./build/tests_header_only_msvc_release_x86-64.exe - -linux gcc x86-64: - <<: *only-default - tags: - - docker - image: amd64/alpine:3.23.3 - stage: build - needs: [] - script: - - apk add cmake g++ ninja m4 linux-headers - - mkdir build && cd build - - cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF - - cmake --build . - - mv ./tests/tests ./tests_linux_gcc_x86-64 - - mv ./tests/tests_header_only ./tests_header_only_linux_gcc_x86-64 - artifacts: - paths: - - ./build/tests_linux_gcc_x86-64 - - ./build/tests_header_only_linux_gcc_x86-64 - -linux gcc x86: - <<: *only-default - image: i386/alpine:3.23.3 - stage: build - needs: [] - tags: - - docker - script: - - apk add cmake g++ ninja m4 linux-headers - - mkdir build && cd build - - cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF - - cmake --build . - - mv ./tests/tests ./tests_linux_gcc_x86 - - mv ./tests/tests_header_only ./tests_header_only_linux_gcc_x86 - artifacts: - paths: - - ./build/tests_linux_gcc_x86 - - ./build/tests_header_only_linux_gcc_x86 - -linux mingw-w64 x86-64 winxp: - <<: *only-default - image: ubuntu:24.04 - stage: build - needs: [] - tags: - - docker - script: - - apt update && apt install -y cmake ninja-build m4 gcc-mingw-w64-x86-64-posix g++-mingw-w64-x86-64-posix - - mkdir build && cd build - - cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86-64_winxp.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF - - cmake --build . - - mv ./tests/tests.exe ./tests_mingw_x86-64_winxp.exe - - mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x86-64_winxp.exe - artifacts: - paths: - - ./build/tests_mingw_x86-64_winxp.exe - - ./build/tests_header_only_mingw_x86-64_winxp.exe - -linux mingw-w64 x86 winxp: - <<: *only-default - image: ubuntu:24.04 - stage: build - needs: [] - tags: - - docker - script: - - apt update && apt install -y cmake ninja-build m4 gcc-mingw-w64-i686-posix g++-mingw-w64-i686-posix - - mkdir build && cd build - - cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_winxp.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF - - cmake --build . - - mv ./tests/tests.exe ./tests_mingw_x86_winxp.exe - - mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x86_winxp.exe - artifacts: - paths: - - ./build/tests_mingw_x86_winxp.exe - - ./build/tests_header_only_mingw_x86_winxp.exe - -linux mingw-w64 x86-64 winblue: - <<: *only-default - image: amd64/alpine:3.23.3 - stage: build - needs: [] - tags: - - docker - script: - - apk add cmake mingw-w64-gcc ninja m4 - - mkdir build && cd build - - cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86-64_winblue.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF - - cmake --build . - - mv ./tests/tests.exe ./tests_mingw_x86-64_winblue.exe - - mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x86-64_winblue.exe - artifacts: - paths: - - ./build/tests_mingw_x86-64_winblue.exe - - ./build/tests_header_only_mingw_x86-64_winblue.exe - -linux mingw-w64 x86 winblue: - <<: *only-default - image: i386/alpine:3.23.3 - stage: build - needs: [] - tags: - - docker - script: - - apk add cmake mingw-w64-gcc ninja m4 - - mkdir build && cd build - - cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_winblue.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF - - cmake --build . - - mv ./tests/tests.exe ./tests_mingw_x86_winblue.exe - - mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x86_winblue.exe - artifacts: - paths: - - ./build/tests_mingw_x86_winblue.exe - - ./build/tests_header_only_mingw_x86_winblue.exe - -linux mingw-w64 x86 win2k: - <<: *only-default - image: ubuntu:24.04 - stage: build - needs: [] - tags: - - docker - script: - - apt update && apt install -y cmake ninja-build m4 gcc-mingw-w64-i686-posix g++-mingw-w64-i686-posix - - mkdir build && cd build - - cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_win2k.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF - - cmake --build . - - mv ./tests/tests.exe ./tests_mingw_x86_win2k.exe - - mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x86_win2k.exe - artifacts: - paths: - - ./build/tests_mingw_x86_win2k.exe - - ./build/tests_header_only_mingw_x86_win2k.exe - -# TESTS - -windows-any tests: - <<: *only-default - tags: - - saas-windows-medium-amd64 - stage: test - timeout: 30m - needs: - - "windows-any msvc v19.40" - - "linux mingw-w64 x86-64 winxp" - - "linux mingw-w64 x86 winxp" - - "linux mingw-w64 x86-64 winblue" - - "linux mingw-w64 x86 winblue" - - "linux mingw-w64 x86 win2k" - script: - - ./build/tests_msvc_debug_x86.exe --reporters=junit --out=./report_windows-any_msvc_debug_x86.xml - - ./build/tests_msvc_release_x86.exe --reporters=junit --out=./report_windows-any_msvc_release_x86.xml - - ./build/tests_msvc_debug_x86-64.exe --reporters=junit --out=./report_windows-any_msvc_debug_x86-64.xml - - ./build/tests_msvc_release_x86-64.exe --reporters=junit --out=./report_windows-any_msvc_release_x86-64.xml - - ./build/tests_mingw_x86_winxp.exe --reporters=junit --out=./report_mingw_x86_winxp.xml - - ./build/tests_mingw_x86-64_winxp.exe --reporters=junit --out=./report_mingw_x86-64_winxp.xml - - ./build/tests_mingw_x86_winblue.exe --reporters=junit --out=./report_mingw_x86_winblue.xml - - ./build/tests_mingw_x86-64_winblue.exe --reporters=junit --out=./report_mingw_x86-64_winblue.xml - - ./build/tests_mingw_x86_win2k.exe --reporters=junit --out=./report_mingw_x86_win2k.xml - - ./build/tests_header_only_msvc_debug_x86.exe --reporters=junit --out=./report_header_only_windows-any_msvc_debug_x86.xml - - ./build/tests_header_only_msvc_release_x86.exe --reporters=junit --out=./report_header_only_windows-any_msvc_release_x86.xml - - ./build/tests_header_only_msvc_debug_x86-64.exe --reporters=junit --out=./report_header_only_windows-any_msvc_debug_x86-64.xml - - ./build/tests_header_only_msvc_release_x86-64.exe --reporters=junit --out=./report_header_only_windows-any_msvc_release_x86-64.xml - - ./build/tests_header_only_mingw_x86_winxp.exe --reporters=junit --out=./report_header_only_mingw_x86_winxp.xml - - ./build/tests_header_only_mingw_x86-64_winxp.exe --reporters=junit --out=./report_header_only_mingw_x86-64_winxp.xml - - ./build/tests_header_only_mingw_x86_winblue.exe --reporters=junit --out=./report_header_only_mingw_x86_winblue.xml - - ./build/tests_header_only_mingw_x86-64_winblue.exe --reporters=junit --out=./report_header_only_mingw_x86-64_winblue.xml - - ./build/tests_header_only_mingw_x86_win2k.exe --reporters=junit --out=./report_header_only_mingw_x86_win2k.xml - artifacts: - when: always - paths: - - report_windows-any_msvc_debug_x86.xml - - report_windows-any_msvc_release_x86.xml - - report_windows-any_msvc_debug_x86-64.xml - - report_windows-any_msvc_release_x86-64.xml - - report_mingw_x86_winxp.xml - - report_mingw_x86-64_winxp.xml - - report_mingw_x86_winblue.xml - - report_mingw_x86-64_winblue.xml - - report_mingw_x86_win2k.xml - - report_header_only_windows-any_msvc_debug_x86.xml - - report_header_only_windows-any_msvc_release_x86.xml - - report_header_only_windows-any_msvc_debug_x86-64.xml - - report_header_only_windows-any_msvc_release_x86-64.xml - - report_header_only_mingw_x86_winxp.xml - - report_header_only_mingw_x86-64_winxp.xml - - report_header_only_mingw_x86_winblue.xml - - report_header_only_mingw_x86-64_winblue.xml - - report_header_only_mingw_x86_win2k.xml - reports: - junit: - - report_windows-any_msvc_debug_x86.xml - - report_windows-any_msvc_release_x86.xml - - report_windows-any_msvc_debug_x86-64.xml - - report_windows-any_msvc_release_x86-64.xml - - report_mingw_x86_winxp.xml - - report_mingw_x86-64_winxp.xml - - report_mingw_x86_winblue.xml - - report_mingw_x86-64_winblue.xml - - report_mingw_x86_win2k.xml - - report_header_only_windows-any_msvc_debug_x86.xml - - report_header_only_windows-any_msvc_release_x86.xml - - report_header_only_windows-any_msvc_debug_x86-64.xml - - report_header_only_windows-any_msvc_release_x86-64.xml - - report_header_only_mingw_x86_winxp.xml - - report_header_only_mingw_x86-64_winxp.xml - - report_header_only_mingw_x86_winblue.xml - - report_header_only_mingw_x86-64_winblue.xml - - report_header_only_mingw_x86_win2k.xml - -#winxp tests x86: -# <<: *only-default -# tags: -# - win-xp -# stage: test -# needs: ["windows-any msvc v19.40"] -# script: -# - ./build/tests_msvc_release_x86 --reporters=junit --out=./report_winxp_msvc_x86.xml -# - ./build/tests_header_only_msvc_release_x86 --reporters=junit --out=./report_header_only_winxp_msvc_x86.xml -# artifacts: -# reports: -# junit: -# - report_winxp_msvc_x86.xml -# - report_header_only_winxp_msvc_x86.xml -# allow_failure: true - -linux wine test x86-64: - <<: *only-default - tags: - - docker - image: amd64/alpine:3.23.3 - stage: test - timeout: 30m - needs: - - "linux mingw-w64 x86-64 winxp" - - "linux mingw-w64 x86-64 winblue" - variables: - WINEDEBUG: "-all" - XDG_RUNTIME_DIR: "/tmp/runtime" - script: - - apk add wine - - mkdir -p "$XDG_RUNTIME_DIR" - - wine64 ./build/tests_mingw_x86-64_winxp.exe --reporters=junit --out=./report_wine_mingw_x86-64_winxp.xml - - wine64 ./build/tests_header_only_mingw_x86-64_winxp.exe --reporters=junit --out=./report_wine_header_only_mingw_x86-64_winxp.xml - - wine64 ./build/tests_mingw_x86-64_winblue.exe --reporters=junit --out=./report_wine_mingw_x86-64_winblue.xml - - wine64 ./build/tests_header_only_mingw_x86-64_winblue.exe --reporters=junit --out=./report_wine_header_only_mingw_x86-64_winblue.xml - artifacts: - when: always - paths: - - report_wine_mingw_x86-64_winxp.xml - - report_wine_header_only_mingw_x86-64_winxp.xml - - report_wine_mingw_x86-64_winblue.xml - - report_wine_header_only_mingw_x86-64_winblue.xml - reports: - junit: - - report_wine_mingw_x86-64_winxp.xml - - report_wine_header_only_mingw_x86-64_winxp.xml - - report_wine_mingw_x86-64_winblue.xml - - report_wine_header_only_mingw_x86-64_winblue.xml - -linux wine test x86: - <<: *only-default - tags: - - docker - image: i386/alpine:3.23.3 - stage: test - timeout: 30m - needs: - - "linux mingw-w64 x86 winxp" - - "linux mingw-w64 x86 winblue" - - "linux mingw-w64 x86 win2k" - variables: - WINEDEBUG: "-all" - XDG_RUNTIME_DIR: "/tmp/runtime" - script: - - apk add wine - - mkdir -p "$XDG_RUNTIME_DIR" - - wine ./build/tests_mingw_x86_winxp.exe --reporters=junit --out=./report_wine_mingw_x86_winxp.xml - - wine ./build/tests_header_only_mingw_x86_winxp.exe --reporters=junit --out=./report_wine_header_only_mingw_x86_winxp.xml - - wine ./build/tests_mingw_x86_winblue.exe --reporters=junit --out=./report_wine_mingw_x86_winblue.xml - - wine ./build/tests_header_only_mingw_x86_winblue.exe --reporters=junit --out=./report_wine_header_only_mingw_x86_winblue.xml - - wine ./build/tests_mingw_x86_win2k.exe --reporters=junit --out=./report_wine_mingw_x86_win2k.xml - - wine ./build/tests_header_only_mingw_x86_win2k.exe --reporters=junit --out=./report_wine_header_only_mingw_x86_win2k.xml - artifacts: - when: always - paths: - - report_wine_mingw_x86_winxp.xml - - report_wine_header_only_mingw_x86_winxp.xml - - report_wine_mingw_x86_winblue.xml - - report_wine_header_only_mingw_x86_winblue.xml - - report_wine_mingw_x86_win2k.xml - - report_wine_header_only_mingw_x86_win2k.xml - reports: - junit: - - report_wine_mingw_x86_winxp.xml - - report_wine_header_only_mingw_x86_winxp.xml - - report_wine_mingw_x86_winblue.xml - - report_wine_header_only_mingw_x86_winblue.xml - - report_wine_mingw_x86_win2k.xml - - report_wine_header_only_mingw_x86_win2k.xml - -linux test x86-64: - <<: *only-default - tags: - - docker - image: amd64/alpine:3.23.3 - stage: test - timeout: 30m - needs: ["linux gcc x86-64"] - script: - - apk add libstdc++ - - ./build/tests_linux_gcc_x86-64 --reporters=junit --out=./report_linux_gcc_x86-64.xml - - ./build/tests_header_only_linux_gcc_x86-64 --reporters=junit --out=./report_header_only_linux_gcc_x86-64.xml - artifacts: - when: always - paths: - - report_linux_gcc_x86-64.xml - - report_header_only_linux_gcc_x86-64.xml - reports: - junit: - - report_linux_gcc_x86-64.xml - - report_header_only_linux_gcc_x86-64.xml - -linux test x86: - <<: *only-default - tags: - - docker - image: i386/alpine:3.23.3 - stage: test - timeout: 30m - needs: ["linux gcc x86"] - script: - - apk add libstdc++ - - ./build/tests_linux_gcc_x86 --reporters=junit --out=./report_linux_gcc_x86.xml - - ./build/tests_header_only_linux_gcc_x86 --reporters=junit --out=./report_header_only_linux_gcc_x86.xml - artifacts: - when: always - paths: - - report_linux_gcc_x86.xml - - report_header_only_linux_gcc_x86.xml - reports: - junit: - - report_linux_gcc_x86.xml - - report_header_only_linux_gcc_x86.xml - -# DEPLOY - -sphinx: - <<: *only-default - tags: - - docker - image: ubuntu:24.04 - stage: deploy - needs: [] - variables: - TZ: UTC - script: - - apt update - - apt install -y python3-pip make doxygen - - pip3 install --break-system-packages -r docs/requirements.txt - - cd docs - - make html diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3770537..de02b49 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,5 @@ How do I contribute? ============ -You can create a merge-request at https://gitlab.com/dosshell/tinycsocket. +You can create a pull request at https://github.com/dosshell/tinycsocket. Please note that we use semi-linear history. diff --git a/README.md b/README.md index 0c89d94..5a10bba 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,14 @@ # Tinycsocket +[![CI](https://github.com/dosshell/tinycsocket/actions/workflows/ci.yml/badge.svg)](https://github.com/dosshell/tinycsocket/actions/workflows/ci.yml) + Crossplatform header-only low-level socket C library. -Repository: https://gitlab.com/dosshell/tinycsocket/ +Repository: https://github.com/dosshell/tinycsocket Online documentation: https://tinycsocket.readthedocs.io/ -Download: [latest](https://gitlab.com/dosshell/tinycsocket/-/raw/master/include/tinycsocket.h) +Download: [latest](https://raw.githubusercontent.com/dosshell/tinycsocket/master/include/tinycsocket.h) ```cpp // Put the following define in exactly one of your c/cpp files before including. @@ -68,7 +70,7 @@ build system you do not need to define the implementation definition. ## Use the header only Download the latest header from the include directory in this repository. -Download [latest](https://gitlab.com/dosshell/tinycsocket/-/raw/master/include/tinycsocket.h) +Download [latest](https://raw.githubusercontent.com/dosshell/tinycsocket/master/include/tinycsocket.h) You need to define `TINYCSOCKET_IMPLEMENTATION` in exactly one translation unit (c/cpp file) before including the header file. You can put this in a separate translation unit to not pollute your namespace with OS socket symbols. @@ -93,7 +95,7 @@ Here is an example of a CMakeLists.txt file that let you link to tinycsocket: include(FetchContent) FetchContent_Declare( tinycsocket - GIT_REPOSITORY https://gitlab.com/dosshell/tinycsocket.git + GIT_REPOSITORY https://github.com/dosshell/tinycsocket.git GIT_TAG v0.4 # Use the latest version tag, or master if you want to break your build system in the future ) FetchContent_MakeAvailable(tinycsocket) @@ -114,7 +116,7 @@ The following commands will create these include- and lib folders in a folder named install: ```sh -git clone https://gitlab.com/dosshell/tinycsocket.git +git clone https://github.com/dosshell/tinycsocket.git mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX:Path=../install ../tinycsocket @@ -125,21 +127,25 @@ like. # Tested platforms in CI -These platforms are tested for every merge request. All configurations are tested as both static library and header-only. - -| OS | Compiler | WINVER | -|-----------------------------|-----------------------------------|--------| -| Windows 2022 | MSVC v19.40 x86 | | -| Windows 2022 | MSVC v19.40 x86-64 | | -| Windows 2022 | i686-w64-mingw32-gcc-posix v13.2 | 0x500 | -| Windows 2022 | i686-w64-mingw32-gcc-posix v13.2 | 0x501 | -| Windows 2022 | i686-w64-mingw32-gcc v15.2 | 0x603 | -| Windows 2022 | x86_64-w64-mingw32-gcc-posix v13.2| 0x502 | -| Windows 2022 | x86_64-w64-mingw32-gcc v15.2 | 0x603 | -| Wine (Alpine) | i686-w64-mingw32-gcc-posix v13.2 | 0x500 | -| Wine (Alpine) | i686-w64-mingw32-gcc-posix v13.2 | 0x501 | -| Wine (Alpine) | i686-w64-mingw32-gcc v15.2 | 0x603 | -| Wine (Alpine) | x86_64-w64-mingw32-gcc-posix v13.2| 0x502 | -| Wine (Alpine) | x86_64-w64-mingw32-gcc v15.2 | 0x603 | -| Linux Alpine 3.23 x86-64 | gcc v15.2 | | -| Linux Alpine 3.23 x86 | gcc v15.2 | | +These platforms are tested for every pull request. All configurations are tested as both static library and header-only. + +| OS | Compiler | WINVER | +|-----------------------------------|------------------------------------|--------| +| Windows Server 2025 | MSVC v19.44 x86 | | +| Windows Server 2025 | MSVC v19.44 x64 | | +| Windows Server 2025 | i686-w64-mingw32-gcc-posix v13 | 0x500 | +| Windows Server 2025 | i686-w64-mingw32-gcc-posix v13 | 0x502 | +| Windows Server 2025 | i686-w64-mingw32-gcc v15.2 | 0x603 | +| Windows Server 2025 | x86_64-w64-mingw32-gcc-posix v13 | 0x502 | +| Windows Server 2025 | x86_64-w64-mingw32-gcc v15.2 | 0x603 | +| Wine (Alpine 3.23) | MSVC v19.44 x86 | | +| Wine (Alpine 3.23) | MSVC v19.44 x64 | | +| Wine (Alpine 3.23) | i686-w64-mingw32-gcc-posix v13 | 0x500 | +| Wine (Alpine 3.23) | i686-w64-mingw32-gcc-posix v13 | 0x502 | +| Wine (Alpine 3.23) | i686-w64-mingw32-gcc v15.2 | 0x603 | +| Wine (Alpine 3.23) | x86_64-w64-mingw32-gcc-posix v13 | 0x502 | +| Wine (Alpine 3.23) | x86_64-w64-mingw32-gcc v15.2 | 0x603 | +| Linux Alpine 3.23 x86_64 musl | gcc v15.2 | | +| Linux Alpine 3.23 x86 musl | gcc v15.2 | | +| Linux Ubuntu 24.04 x86_64 glibc | gcc v13.3 | | +| Linux Ubuntu 24.04 x86 glibc | gcc v13.3 | | diff --git a/toolchain_mingw_x86-64_winblue.cmake b/toolchain_mingw_x64_winblue.cmake similarity index 100% rename from toolchain_mingw_x86-64_winblue.cmake rename to toolchain_mingw_x64_winblue.cmake diff --git a/toolchain_mingw_x86-64_winxp.cmake b/toolchain_mingw_x64_winxp.cmake similarity index 100% rename from toolchain_mingw_x86-64_winxp.cmake rename to toolchain_mingw_x64_winxp.cmake