[utils] fix #324
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 characters
| name: CI | |
| on: | |
| pull_request: | |
| paths-ignore: | |
| - "documents/**" | |
| - "**.md" | |
| push: | |
| paths-ignore: | |
| - "documents/**" | |
| - "**.md" | |
| workflow_dispatch: | |
| jobs: | |
| # --------------------------------------------------------------------------- | |
| x86_64-linux-gnu-uwvm-default: | |
| name: x86_64-linux-gnu (ubuntu-24.04) uwvm | |
| runs-on: ubuntu-24.04 # noble | |
| strategy: | |
| matrix: | |
| mode: ["debug"] | |
| policies: | |
| [ | |
| "build.sanitizer.address,build.sanitizer.leak,build.sanitizer.undefined", | |
| ] | |
| cxx_flags: [ | |
| "", # SSE2 | |
| "-msse3", # SSE2 SSE3 | |
| "-mssse3", # SSE2 SSE3 SSSE3 | |
| "-msse4 -mbmi -mbmi2", # SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 BMI BMI2 | |
| "-mavx -mbmi -mbmi2 -mprfchw", # SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX BMI BMI2 | |
| "-mavx2 -mbmi -mbmi2 -mprfchw", # SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX AVX2 BMI BMI2 | |
| "-mapxf -mbmi -mbmi2 -mprfchw", | |
| # "-mavx512bw -mbmi -mbmi2 -mprfchw", # SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX AVX2 AVX512F AVX512BW BMI BMI2 | |
| # "-mavx512vbmi -mavx512vbmi2 -mbmi -mbmi2 -mprfchw" # SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX AVX2 AVX512F AVX512BW AVX512VBMI AVX512VBMI2 BMI BMI2 | |
| ] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup | |
| run: | | |
| wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/llvm.asc | |
| sudo add-apt-repository ppa:xmake-io/xmake | |
| sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble main" | |
| sudo apt-get install clang-22 clang-tools-22 lld-22 xmake | |
| - name: Configure | |
| run: xmake f -m debug --use-llvm=y --sdk=/usr/lib/llvm-22 -m ${{ matrix.mode }} --policies=${{ matrix.policies }} --march=none --cxflags="${{ matrix.cxx_flags }}" | |
| - name: Build | |
| run: xmake b -rv | |
| - name: Check UWVM version | |
| run: xmake run uwvm --version | |
| - name: Unit tests | |
| run: xmake test -v | |
| # --------------------------------------------------------------------------- | |
| x86_64-linux-gnu-uwvm-cxxmodule: | |
| if: ${{ !always() }} | |
| name: x86_64-linux-gnu (ubuntu-24.04) uwvm (cxx-module build) | |
| runs-on: ubuntu-24.04 # noble | |
| strategy: | |
| matrix: | |
| mode: ["debug"] | |
| policies: | |
| [ | |
| "build.sanitizer.address,build.sanitizer.leak,build.sanitizer.undefined", | |
| ] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup | |
| run: | | |
| wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/llvm.asc | |
| sudo add-apt-repository ppa:xmake-io/xmake | |
| sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble main" | |
| sudo apt-get install clang-22 clang-tools-22 lld-22 xmake | |
| - name: Configure | |
| run: xmake f -m debug --use-llvm=y --sdk=/usr/lib/llvm-22 -m ${{ matrix.mode }} --policies=${{ matrix.policies }} --use-cxx-module=y | |
| - name: Build | |
| run: xmake b -rv | |
| - name: Check UWVM version | |
| run: xmake run uwvm --version | |
| # --------------------------------------------------------------------------- | |
| x86_64-windows-gnu: | |
| if: ${{ !always() }} # Remove it once update to LLVM22 | |
| name: x86_64-windows-gnu (MINGW ${{ matrix.env.name }}) | |
| runs-on: windows-latest | |
| strategy: | |
| matrix: | |
| env: | |
| - name: "CLANG64" | |
| prefix: mingw-w64-clang-x86_64 | |
| - name: "CLANGARM64" | |
| prefix: mingw-w64-clang-aarch64 | |
| mode: ["debug"] | |
| policies: ["build.sanitizer.address"] | |
| defaults: | |
| run: | |
| shell: msys2 {0} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: ${{ matrix.env.name }} | |
| update: true | |
| install: | | |
| ${{ matrix.env.prefix }}-cc | |
| ${{ matrix.env.prefix }}-xmake | |
| - name: Configure | |
| run: xmake f -p mingw --use-llvm=y -m ${{ matrix.mode }} --policies=${{ matrix.policies }} | |
| - name: Build | |
| run: xmake b -rv | |
| - name: Check UWVM version | |
| run: xmake run uwvm --version | |
| - name: Unit tests | |
| run: xmake test -v | |
| # --------------------------------------------------------------------------- | |
| x86_64-freebsd14: | |
| name: x86_64-freebsd14 | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| mode: ["debug"] | |
| policies: ["build.sanitizer.address"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: cross-platform-actions/action@v0.27.0 | |
| with: | |
| operating_system: freebsd | |
| version: "14.2" | |
| run: | | |
| sudo pkg install -y llvm-devel xmake-io | |
| xmake f -m debug --use-llvm=y -m ${{ matrix.mode }} --policies=${{ matrix.policies }} | |
| xmake b -rv | |
| xmake run uwvm --version | |
| xmake test -v |