diff --git a/.cargo/config.toml b/.cargo/config.toml index 40eddf62..af86330d 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -3,3 +3,7 @@ rustflags = ["-C", "target-cpu=x86-64-v3"] [target.'cfg(target_arch = "aarch64")'] rustflags = ["-C", "target-cpu=cortex-a76"] + +[env] +CC = "clang" +CXX = "clang++" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 257e76df..92c386dd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,6 +10,7 @@ on: env: CARGO_TERM_COLOR: always + LLVM_VERSION: "20.1" jobs: build-linux: @@ -44,6 +45,10 @@ jobs: libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev \ libpipewire-0.3-dev libwayland-dev libdecor-0-dev liburing-dev version: ${{ matrix.target }}-1.0 + - name: Install LLVM and Clang + uses: KyleMayes/install-llvm-action@v2 + with: + version: "${{ env.LLVM_VERSION }}" - name: Build run: | cargo build --release -v --target=${{ matrix.target }} @@ -75,11 +80,19 @@ jobs: with: target: ${{ matrix.target }} rustflags: "" + - name: Install LLVM and Clang + uses: KyleMayes/install-llvm-action@v2 + with: + version: "${{ env.LLVM_VERSION }}" - name: Build run: | cargo build --release -v --target=${{ matrix.target }} mkdir output cp target/${{ matrix.target }}/release/gopher64.exe output/gopher64-${{ matrix.arch }}.exe + env: + CC: clang-cl + CXX: clang-cl + AR: llvm-lib - name: Upload file uses: actions/upload-artifact@v4 with: @@ -87,6 +100,7 @@ jobs: path: output/gopher64-${{ matrix.arch }}.exe build-macos: + if: false runs-on: macos-15 strategy: fail-fast: false diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 96182d36..50bc48fd 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,6 +11,7 @@ permissions: env: CARGO_TERM_COLOR: always + LLVM_VERSION: "20.1" jobs: lint-linux: @@ -34,6 +35,10 @@ jobs: libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev \ libpipewire-0.3-dev libwayland-dev libdecor-0-dev liburing-dev version: lint-1.0 + - name: Install LLVM and Clang + uses: KyleMayes/install-llvm-action@v2 + with: + version: "${{ env.LLVM_VERSION }}" - name: Rustfmt Check uses: actions-rust-lang/rustfmt@v1 - name: Lint diff --git a/build.rs b/build.rs index 80dca07e..01765727 100644 --- a/build.rs +++ b/build.rs @@ -62,46 +62,21 @@ fn main() { let os = std::env::var("CARGO_CFG_TARGET_OS").unwrap(); let arch = std::env::var("CARGO_CFG_TARGET_ARCH").unwrap(); - let env = std::env::var("CARGO_CFG_TARGET_ENV").unwrap(); + if arch == "x86_64" { + build.flag("-march=x86-64-v3"); + } else if arch == "aarch64" { + build.flag("-march=armv8.2-a"); + simd_build.flag("-march=armv8.2-a"); + } else { + panic!("unknown arch") + } if os == "windows" { - if arch == "x86_64" { - if env == "msvc" { - build.flag("/arch:AVX2"); - } else if env == "gnu" { - build.flag("-march=x86-64-v3"); - } else { - panic!("unknown env") - } - } else if arch == "aarch64" { - if env == "msvc" { - build.flag("/arch:armv8.2"); - simd_build.flag("/arch:armv8.2"); - } else if env == "gnu" { - build.flag("-march=armv8.2-a"); - simd_build.flag("-march=armv8.2-a"); - } else { - panic!("unknown env") - } - } else { - panic!("unknown arch") - } build.flag("-DVK_USE_PLATFORM_WIN32_KHR"); winresource::WindowsResource::new() .set_icon("data/icon.ico") .compile() .unwrap(); - } else if os == "linux" || os == "macos" { - if arch == "x86_64" { - build.flag("-march=x86-64-v3"); - } else if arch == "aarch64" { - build.flag("-march=armv8.2-a"); - simd_build.flag("-march=armv8.2-a"); - } else { - panic!("unknown arch") - } - } else { - panic!("unknown OS") } build.compile("parallel-rdp");