From 2d536b08535d21caf372c939f54df1fadf8f95e9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Dec 2025 22:09:59 +0000 Subject: [PATCH] Switch to Clang as default compiler in CI/CD and Docker Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com> --- .github/workflows/qemu-test.yml | 3 ++- .github/workflows/release.yml | 3 ++- .github/workflows/unit-tests.yml | 4 ++-- Dockerfile | 7 +++++-- README.md | 10 +++++----- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/.github/workflows/qemu-test.yml b/.github/workflows/qemu-test.yml index 9efa83e..51829d7 100644 --- a/.github/workflows/qemu-test.yml +++ b/.github/workflows/qemu-test.yml @@ -25,6 +25,7 @@ jobs: sudo apt-get update sudo apt-get install -y \ build-essential \ + clang \ cmake \ nasm \ qemu-system-x86 \ @@ -49,7 +50,7 @@ jobs: run: | mkdir -p build cd build - cmake .. -DCMAKE_TOOLCHAIN_FILE=../build/Release/generators/conan_toolchain.cmake + CC=clang CXX=clang++ cmake .. -DCMAKE_TOOLCHAIN_FILE=../build/Release/generators/conan_toolchain.cmake - name: Build bootloader and kernel run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9908761..2cc3df1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,6 +24,7 @@ jobs: sudo apt-get update sudo apt-get install -y \ build-essential \ + clang \ cmake \ nasm \ qemu-system-x86 \ @@ -47,7 +48,7 @@ jobs: run: | mkdir -p build cd build - cmake .. -DCMAKE_TOOLCHAIN_FILE=../build/Release/generators/conan_toolchain.cmake + CC=clang CXX=clang++ cmake .. -DCMAKE_TOOLCHAIN_FILE=../build/Release/generators/conan_toolchain.cmake - name: Build bootloader and kernel run: | diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 20f373d..1e0c9a2 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -22,7 +22,7 @@ jobs: set -e # Exit on any error sudo apt-get update - sudo apt-get install -y build-essential cmake python3 python3-pip + sudo apt-get install -y build-essential clang cmake python3 python3-pip # Install Conan pip3 install conan @@ -38,7 +38,7 @@ jobs: run: | mkdir -p build cd build - cmake .. -DCMAKE_TOOLCHAIN_FILE=../build/Release/generators/conan_toolchain.cmake + CC=clang CXX=clang++ cmake .. -DCMAKE_TOOLCHAIN_FILE=../build/Release/generators/conan_toolchain.cmake - name: Build unit tests run: | diff --git a/Dockerfile b/Dockerfile index 320e0ca..caf276f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,8 +13,9 @@ WORKDIR /metalos RUN apt-get update && apt-get install -y \ # Build essentials build-essential \ - gcc \ - g++ \ + clang \ + clang++ \ + lld \ nasm \ make \ cmake \ @@ -62,6 +63,8 @@ RUN cp /usr/share/OVMF/OVMF_CODE.fd /metalos/deps/ovmf/ 2>/dev/null || \ # Set environment variables ENV PATH="/metalos/tools:${PATH}" ENV METALOS_ROOT="/metalos" +ENV CC=clang +ENV CXX=clang++ # Default command CMD ["/bin/bash"] diff --git a/README.md b/README.md index 3868ef9..aea37e9 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ See [docs/ROADMAP.md](docs/ROADMAP.md) for detailed phase breakdown. ## Building -MetalOS uses **CMake** as its build system for a modern, cross-platform build experience. +MetalOS uses **CMake** as its build system for a modern, cross-platform build experience. **Clang** is the default compiler. ### Quick Start (CMake) @@ -87,13 +87,13 @@ ninja ninja qemu ``` -### Building with Clang +### Building with GCC -MetalOS supports both GCC and Clang compilers. To build with Clang: +MetalOS supports both Clang (default) and GCC compilers. To build with GCC: ```bash mkdir build && cd build -CC=clang CXX=clang++ cmake .. +CC=gcc CXX=g++ cmake .. cmake --build . ``` @@ -101,7 +101,7 @@ Or with Ninja: ```bash mkdir build && cd build -CC=clang CXX=clang++ cmake -G Ninja .. +CC=gcc CXX=g++ cmake -G Ninja .. ninja ```