Last active
September 12, 2025 20:19
-
-
Save vladiant/d4e23b09ef8e4acd40c0a97d9a861f63 to your computer and use it in GitHub Desktop.
Revisions
-
vladiant revised this gist
Sep 12, 2025 . 1 changed file with 2 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -5,4 +5,5 @@ * <https://gist.github.com/NickNaso/ff50ecd38becbadafb1c40a5f2a49c87> * <https://github.com/hailiang194/NeoSekaiEngine> * <https://www.kdab.com/github-actions-for-cpp-and-qt/> * <https://github.com/MiKom/QtQuickApp> * <https://github.com/AshleyRoll/arquebus> - .clang-format , .clang-tidy , .cmake-format.py , .pre-commit-config.yaml -
vladiant created this gist
Aug 3, 2025 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,8 @@ ## Links * <https://github.com/andreasfertig/programming-with-cpp20> * <https://github.com/scivision/Cpp23-examples> * <https://github.com/uNetworking/uWebSockets> * <https://gist.github.com/NickNaso/ff50ecd38becbadafb1c40a5f2a49c87> * <https://github.com/hailiang194/NeoSekaiEngine> * <https://www.kdab.com/github-actions-for-cpp-and-qt/> * <https://github.com/MiKom/QtQuickApp> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,219 @@ name: ci # Trigger on pushes to all branches and for all pull-requests on: [push, pull_request] env: CMAKE_VERSION: 3.28.2 NINJA_VERSION: 1.10.0 jobs: build: name: ${{ matrix.config.name }} runs-on: ${{ matrix.config.os }} strategy: fail-fast: false matrix: config: # GCC-13 - { name: "Linux GCC 13", os: ubuntu-22.04, build_type: Release, cxx: "g++-13", gcc_version: 13, } # Clang-17 - { name: "Linux Clang 17", os: ubuntu-22.04, build_type: Release, cxx: "clang++-17", clang_version: 17, libcxx: true } # # AppleClang # - { # name: "macOS Clang", # os: macos-latest, # build_type: Release, # cxx: "clang++", # } # MSVC 2019 - { name: "Windows MSVC 2019", os: windows-latest, build_type: Release, cxx: "cl", environment_script: "C:/Program Files (x86)/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", } steps: - uses: actions/checkout@v4 with: fetch-depth: 2 - name: Download Ninja and CMake id: cmake_and_ninja shell: cmake -P {0} run: | set(cmake_version $ENV{CMAKE_VERSION}) set(ninja_version $ENV{NINJA_VERSION}) message(STATUS "Using host CMake version: ${CMAKE_VERSION}") if ("${{ runner.os }}" STREQUAL "Windows") set(ninja_suffix "win.zip") set(cmake_suffix "windows-x86_64.zip") set(cmake_dir "cmake-${cmake_version}-windows-x86_64/bin") elseif ("${{ runner.os }}" STREQUAL "Linux") set(ninja_suffix "linux.zip") set(cmake_suffix "linux-x86_64.tar.gz") set(cmake_dir "cmake-${cmake_version}-linux-x86_64/bin") elseif ("${{ runner.os }}" STREQUAL "macOS") set(ninja_suffix "mac.zip") set(cmake_suffix "macos-universal.tar.gz") set(cmake_dir "cmake-${cmake_version}-macos-universal/CMake.app/Contents/bin") endif() set(ninja_url "https://github.com/ninja-build/ninja/releases/download/v${ninja_version}/ninja-${ninja_suffix}") file(DOWNLOAD "${ninja_url}" ./ninja.zip SHOW_PROGRESS) execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ./ninja.zip) set(cmake_url "https://github.com/Kitware/CMake/releases/download/v${cmake_version}/cmake-${cmake_version}-${cmake_suffix}") file(DOWNLOAD "${cmake_url}" ./cmake.zip SHOW_PROGRESS) execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ./cmake.zip) # preserve it for the next steps file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/${cmake_dir}" cmake_dir) message("::set-output name=cmake_dir::${cmake_dir}") if (NOT "${{ runner.os }}" STREQUAL "Windows") execute_process( COMMAND chmod +x ninja COMMAND chmod +x ${cmake_dir}/cmake ) endif() - name: Install Clang 17 id: install_clang_17 if: startsWith(matrix.config.os, 'ubuntu') && startsWith(matrix.config.cxx, 'clang++-') shell: bash working-directory: ${{ env.HOME }} run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh ${{ matrix.config.clang_version }} sudo apt-get install -y libunwind-${{ matrix.config.clang_version }}-dev libunwind-${{ matrix.config.clang_version }} - name: Install g++ 13 id: install_gcc_13 if: startsWith(matrix.config.os, 'ubuntu') && ( matrix.config.cxx == 'g++-13' ) shell: bash working-directory: ${{ env.HOME }} env: CXX: ${{ matrix.config.cxx }} run: | curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install g++-${{ matrix.config.gcc_version }} sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 100 - name: Install libc++ id: install_libcxx if: matrix.config.libcxx shell: bash working-directory: ${{ env.HOME }} env: CXX: ${{ matrix.config.cxx }} run: | sudo apt-get install libc++-${{ matrix.config.clang_version }}-dev libc++abi-${{ matrix.config.clang_version }}-dev - name: Setup MSVC Dev if: "startsWith(matrix.config.os, 'Windows')" uses: ilammy/msvc-dev-cmd@v1 - name: Configure id: cmake_configure shell: cmake -P {0} run: | set(ENV{CXX} ${{ matrix.config.cxx }}) if ("${{ runner.os }}" STREQUAL "Windows") execute_process( COMMAND "${{ matrix.config.environment_script }}" && set OUTPUT_FILE environment_script_output.txt ) set(cxx_flags "/permissive- /EHsc") file(STRINGS environment_script_output.txt output_lines) foreach(line IN LISTS output_lines) if (line MATCHES "^([a-zA-Z0-9_-]+)=(.*)$") set(ENV{${CMAKE_MATCH_1}} "${CMAKE_MATCH_2}") endif() endforeach() endif() set(path_separator ":") if ("${{ runner.os }}" STREQUAL "Windows") set(path_separator ";") endif() set(ENV{PATH} "$ENV{GITHUB_WORKSPACE}${path_separator}$ENV{PATH}") if ("x${{ matrix.config.libcxx }}" STREQUAL "xtrue") set(cxx_flags "${cxx_flags} -stdlib=libc++ -Wno-unused-command-line-argument") set(link_flags "${link_flags} -lc++abi") endif() execute_process( COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake -S . -B build -G Ninja -D CMAKE_BUILD_TYPE=${{ matrix.config.build_type }} -D CMAKE_MAKE_PROGRAM:STRING=ninja -D "CMAKE_CXX_FLAGS:STRING=${cxx_flags}" -D "CMAKE_EXE_LINKER_FLAGS:STRING=${link_flags}" ${{ matrix.config.cmake_args }} RESULT_VARIABLE result ) if (NOT result EQUAL 0) message(FATAL_ERROR "Bad exit from cmake configure status") endif() - name: Build shell: cmake -P {0} continue-on-error: false run: | set(ENV{NINJA_STATUS} "[%f/%t %o/sec] ") if ("${{ runner.os }}" STREQUAL "Windows") execute_process( COMMAND "${{ matrix.config.environment_script }}" && set OUTPUT_FILE environment_script_output.txt ) set(cxx_flags "/permissive- /EHsc") file(STRINGS environment_script_output.txt output_lines) foreach(line IN LISTS output_lines) if (line MATCHES "^([a-zA-Z0-9_-]+)=(.*)$") set(ENV{${CMAKE_MATCH_1}} "${CMAKE_MATCH_2}") endif() endforeach() endif() set(path_separator ":") if ("${{ runner.os }}" STREQUAL "Windows") set(path_separator ";") endif() set(ENV{PATH} "$ENV{GITHUB_WORKSPACE}${path_separator}$ENV{PATH}") execute_process( COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake --build build RESULT_VARIABLE result ) if (NOT result EQUAL 0) message(FATAL_ERROR "Bad exit status from building") endif() This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,152 @@ name: cmake on: push: paths: - "**.cpp" - "**.ixx" - "**.cmake" - "**/CMakeLists.txt" - ".github/workflows/cmake.yml" workflow_dispatch: # avoid wasted runs concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: CTEST_NO_TESTS_ACTION: error CTEST_PARALLEL_LEVEL: 0 CMAKE_BUILD_PARALLEL_LEVEL: 4 HOMEBREW_NO_AUTO_UPDATE: 1 jobs: gcc-new: runs-on: ubuntu-latest timeout-minutes: 5 strategy: matrix: cxx: [g++-12, g++-13, g++-14, clang++-18] env: CXX: ${{ matrix.cxx }} steps: - uses: actions/checkout@v4 - run: cmake --workflow debug - run: cmake --workflow release - uses: actions/upload-artifact@v4 if: success() with: name: ${{ matrix.cxx }}_features.json path: build/features.json gcc-old: runs-on: ubuntu-22.04 timeout-minutes: 5 strategy: matrix: cxx: [g++-9, g++-10, g++-11] env: CXX: ${{ matrix.cxx }} steps: - uses: actions/checkout@v4 - run: cmake --workflow debug - run: cmake --workflow release - uses: actions/upload-artifact@v4 if: success() with: name: ${{ matrix.cxx }}_features.json path: build/features.json mac: runs-on: macos-latest timeout-minutes: 5 env: HOMEBREW_NO_AUTO_CLEANUP: 1 CXX: ${{ matrix.cxx }} strategy: matrix: cxx: [clang++, g++-14] steps: - uses: actions/checkout@v4 - run: cmake --workflow debug - run: cmake --workflow release - uses: actions/upload-artifact@v4 if: success() with: name: ${{ runner.os }}-${{ matrix.cxx }}_features.json path: build/features.json windows-msvc: runs-on: windows-latest steps: - uses: actions/checkout@v4 - run: cmake --workflow msvc - uses: actions/upload-artifact@v4 if: success() with: name: ${{ runner.os }}-MSVC_features.json path: build/features.json windows-gcc: runs-on: windows-latest timeout-minutes: 10 steps: - uses: msys2/setup-msys2@v2 id: msys2 with: update: true install: >- mingw-w64-ucrt-x86_64-gcc # need GCC install to get latest G++ - name: Put MSYS2_MinGW64 on PATH run: echo "${{ steps.msys2.outputs.msys2-location }}/ucrt64/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - uses: actions/checkout@v4 - run: cmake --workflow debug - run: cmake --workflow release - uses: actions/upload-artifact@v4 if: success() with: name: ${{ runner.os }}-GCC_features.json path: build/features.json - name: upload CMakeConfigureLog.yaml if: failure() && hashFiles('build/CMakeFiles/CMakeConfigureLog.yaml') != '' uses: actions/upload-artifact@v4 with: name: ${{ runner.os }}-CMakeConfigureLog.yaml path: build/CMakeFiles/CMakeConfigureLog.yaml This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,183 @@ # This is a basic workflow to help you get started with Actions # workflow - цепочка действий # Имя процесса Билдится на всех типах 📦 🐍 name: CMake Build Matrix # Controls when the action will run. Triggers the workflow on push on: push: pull_request: release: # tags: # - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on name: ${{ matrix.config.name }} runs-on: ${{ matrix.config.os }} # будет запускаться по очереди на всех типах машин strategy: fail-fast: false matrix: config: - { name: "Windows Latest MSVC", os: windows-latest, artifact: "windows_msvc.7z", build_type: "Release", cc: "cl", cxx: "cl", environment_script: "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat", archiver: "7z a", generators: "Visual Studio 16 2019" } - { name: "Windows Latest MinGW", os: windows-latest, artifact: "windows_mingw.7z", build_type: "Release", cc: "gcc", cxx: "g++", archiver: "7z a", generators: "Ninja" } - { name: "Ubuntu_Latest_GCC", os: ubuntu-latest, artifact: "ubuntu_gcc.7z", build_type: "Release", cc: "gcc", cxx: "g++", archiver: "7z a", generators: "Ninja" } - { name: "Ubuntu_GCC_9", os: ubuntu-latest, artifact: "ubuntu_gcc9.7z", build_type: "Release", cc: "gcc", cxx: "g++", archiver: "7z a", generators: "Ninja" } - { name: "macOS Latest Clang", os: macos-latest, artifact: "macos_clang.7z", build_type: "Release", cc: "clang", cxx: "clang++", archiver: "7za a", generators: "Ninja" } steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - name: Print env run: | echo github.event.action: ${{ github.event.action }} echo github.event_name: ${{ github.event_name }} - name: Install dependencies on windows if: startsWith(matrix.config.os, 'windows') run: | choco install ninja cmake ninja --version cmake --version # cmd "${{ matrix.config.environment_script }}" - name: Install dependencies on ubuntu if: startsWith(matrix.config.name, 'Ubuntu_Latest_GCC') run: | sudo apt-get update sudo apt-get install ninja-build cmake ninja --version cmake --version gcc --version - name: Install dependencies on ubuntu9 if: startsWith(matrix.config.name, 'Ubuntu_GCC_9') run: | echo Update gcc-9 ======================================================================= echo gcc version before gcc --version sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install ninja-build cmake gcc-9 g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9 echo gcc version after gcc --version echo Update ninja ======================================================================= echo ninja version before ninja --version # wget https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-linux.zip wget https://github.com/ninja-build/ninja/releases/latest/download/ninja-linux.zip sudo unzip ninja-linux.zip -d /usr/local/bin/ sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force echo ninja version after ninja --version echo Update cmake ======================================================================= echo cmake version before cmake --version # curl --silent "https://api.github.com/repos/Kitware/CMake/releases/latest" | sed -n 's/.*tag_name":\s"\(.*\)".*/\1/p' | head -2 # wget https://github.com/Kitware/CMake/releases/latest/download/cmake-3.16.5-Linux-x86_64.sh cmake_version=$(curl --silent "https://api.github.com/repos/Kitware/CMake/releases/latest" | sed -n 's/.*tag_name":\s"\(.*\)".*/\1/p' | head -2 | cut -c 2-) echo cmake download latest v$cmake_version version wget https://github.com/Kitware/CMake/releases/download/v$cmake_version/cmake-$cmake_version-Linux-x86_64.sh chmod +x cmake-$cmake_version-Linux-x86_64.sh sudo mkdir /opt/cmake sudo ./cmake-$cmake_version-Linux-x86_64.sh --prefix=/opt/cmake --skip-license sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake/bin/cmake 1 --force echo cmake version after cmake --version - name: Install dependencies on macos if: startsWith(matrix.config.os, 'macos') run: | brew install p7zip cmake ninja ninja --version cmake --version - name: Configure shell: bash run: | mkdir build mkdir instdir cmake \ -S . \ -B . \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -G "${{ matrix.config.generators }}" \ -DCMAKE_INSTALL_PREFIX:PATH=instdir - name: Build shell: bash run: cmake --build . --config ${{ matrix.config.build_type }} - name: Install Strip shell: bash run: cmake --install . --strip - name: Pack shell: bash working-directory: instdir run: | ls -laR ${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . - name: Upload uses: actions/upload-artifact@v1 with: path: ./${{ matrix.config.artifact }} name: ${{ matrix.config.artifact }} - name: Upload release asset if: github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'created') uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} asset_path: ./${{ matrix.config.artifact }} asset_name: ${{ matrix.config.artifact }}.zip asset_content_type: application/zip This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,94 @@ name: C++ CI on: [push] jobs: short_fuzzing: runs-on: ubuntu-latest steps: - name: Build fuzzers id: build uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master with: oss-fuzz-project-name: 'uwebsockets' language: c++ - name: Run fuzzers uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master with: oss-fuzz-project-name: 'uwebsockets' language: c++ fuzz-seconds: 600 - name: Upload crash uses: actions/upload-artifact@v4 if: failure() && steps.build.outcome == 'success' with: name: artifacts path: ./out/artifacts build_windows: runs-on: windows-latest steps: - name: Clone source run: git clone --recursive https://github.com/uNetworking/uWebSockets.git - name: Install libuv run: | vcpkg install libuv:x64-windows cp C:\vcpkg\installed\x64-windows\bin\uv.dll uWebSockets\uv.dll - uses: ilammy/msvc-dev-cmd@v1 - name: Build examples run: | cd uWebSockets $Env:WITH_ZLIB='0'; $ENV:WITH_LTO='0'; $Env:CC='clang'; $ENV:CFLAGS='-I C:\vcpkg\installed\x64-windows\include'; $ENV:LDFLAGS='-L C:\vcpkg\installed\x64-windows\lib'; $ENV:CXX='clang++'; $ENV:EXEC_SUFFIX='.exe'; $ENV:WITH_LIBUV='1'; nmake ls - name: Run smoke test run: | cd uWebSockets iwr https://deno.land/x/install/install.ps1 -useb | iex Start-Process -NoNewWindow .\Crc32 sleep 1 deno run --allow-net tests\smoke.mjs Stop-Process -Name Crc32 build_linux: runs-on: ubuntu-latest steps: - name: Clone source run: git clone --recursive https://github.com/uNetworking/uWebSockets.git - name: Build source run: cmake -S uWebSockets/libdeflate -B uWebSockets/libdeflate && make -C uWebSockets/libdeflate && WITH_ASAN=1 WITH_LIBDEFLATE=1 make -C uWebSockets - name: List binaries run: ls uWebSockets - name: Install Deno run: curl -fsSL https://deno.land/x/install/install.sh | sh - name: Run smoke test run: make -C uWebSockets/tests smoke - name: Run compliance test run: make -C uWebSockets/tests compliance - name: Run unit tests run: make -C uWebSockets/tests - name: Autobahn|Testsuite run: ~/.deno/bin/deno run -A --unstable uWebSockets/autobahn/server-test.js build_osx: runs-on: macos-latest steps: - name: Clone source run: git clone --recursive https://github.com/uNetworking/uWebSockets.git - name: Build source run: make -C uWebSockets - name: List binaries run: ls uWebSockets - name: Install Deno run: curl -fsSL https://deno.land/x/install/install.sh | sh - name: Run smoke test run: make -C uWebSockets/tests smoke - name: Run unit tests run: make -C uWebSockets/tests