Skip to content

Instantly share code, notes, and snippets.

@gxyd
Created April 29, 2025 16:55
Show Gist options
  • Select an option

  • Save gxyd/ea46bf72bdee94d8f0b253b2e1b6be68 to your computer and use it in GitHub Desktop.

Select an option

Save gxyd/ea46bf72bdee94d8f0b253b2e1b6be68 to your computer and use it in GitHub Desktop.
$ conda create -n llvm-dev cmake python ninja ccache lld
$ conda activate llvm-dev
$ cmake -GNinja -Bbuild -Hllvm \
    -DLLVM_ENABLE_PROJECTS="clang" \
    -DLLVM_TARGETS_TO_BUILD="AArch64" \
    -DCMAKE_BUILD_TYPE=Debug \
    -DLLVM_ENABLE_ASSERTIONS=true \
    -DLLVM_CCACHE_BUILD=true \
    -DLLVM_ENABLE_LLD=On \
    -DLLVM_PARALLEL_COMPILE_JOBS=6 \
    -DLLVM_PARALLEL_LINK_JOBS=1


$ cmake -GNinja -S llvm -B build \
  -DLLVM_ENABLE_PROJECTS="clang;lld" \
  -DLLVM_TARGETS_TO_BUILD=Native \
  -DCMAKE_BUILD_TYPE=Debug \
  -DLLVM_ENABLE_ASSERTIONS=ON \
  -DLLVM_CCACHE_BUILD=ON \
  -DLLVM_USE_LINKER=lld \
  -DLLVM_PARALLEL_COMPILE_JOBS=10 \
  -DLLVM_PARALLEL_LINK_JOBS=1

$ # Build LLVM
$ ninja -Cbuild

$ # to run tests
$ ninja -Cbuild check-llvm
@gxyd

gxyd commented Jul 1, 2025

Copy link
Copy Markdown
Author

To work on the issue: llvm/llvm-project#129401, I've used the below build commands for llvm-project

$ cmake -G Ninja -S llvm -B build \
  -DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt" \
  -DLLVM_TARGETS_TO_BUILD="AArch64" \
  -DCMAKE_BUILD_TYPE=Debug \
  -DLLVM_ENABLE_ASSERTIONS=ON \
  -DLLVM_CCACHE_BUILD=ON \
  -DLLVM_USE_LINKER=lld \
  -DLLVM_PARALLEL_COMPILE_JOBS=10 \
  -DLLVM_PARALLEL_LINK_JOBS=1 \
  -DCMAKE_C_COMPILER=clang \
  -DCMAKE_CXX_COMPILER=clang++

$ ninja -Cbuild

@gxyd

gxyd commented Jul 15, 2025

Copy link
Copy Markdown
Author

Commands to use in VSCode for getting more debugging information about the variables:

> frame variable ...
> expression ...
Screenshot 2025-07-15 at 4 58 07 PM

@gxyd

gxyd commented Aug 6, 2025

Copy link
Copy Markdown
Author
$ cmake -G Ninja -S llvm -B build \
  -DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt;clang-tools-extra" \
  -DLLVM_ENABLE_RUNTIMES="compiler-rt" \
  -DLLVM_TARGETS_TO_BUILD="AArch64" \
  -DCMAKE_BUILD_TYPE=Debug \
  -DLLVM_ENABLE_ASSERTIONS=ON \
  -DLLVM_CCACHE_BUILD=ON \
  -DLLVM_USE_LINKER=lld \
  -DLLVM_PARALLEL_COMPILE_JOBS=10 \
  -DLLVM_PARALLEL_LINK_JOBS=1 \
  -DCMAKE_C_COMPILER=clang \
  -DCMAKE_CXX_COMPILER=clang++ \
  -DLLVM_ENABLE_LIBCXX=ON \
  -DLLVM_ENABLE_LTO=OFF

$ ninja -Cbuild

Trying the above set of command for clang related issues.

@gxyd

gxyd commented Jan 19, 2026

Copy link
Copy Markdown
Author

Build with the following commands to try to fix the issue: llvm/llvm-project#121952

$ pwd
/Users/gxyd/OpenSource/llvm-project/build
$ cmake -G Ninja -S ../llvm \
  -DLLVM_ENABLE_PROJECTS="clang;lld" \
  -DLLVM_TARGETS_TO_BUILD="AArch64" \
  -DCMAKE_BUILD_TYPE=Debug \
  -DLLVM_ENABLE_ASSERTIONS=ON \
  -DLLVM_USE_SANITIZER=Address \
  -DLLVM_CCACHE_BUILD=ON \
  -DLLVM_USE_LINKER=lld \
  -DLLVM_PARALLEL_COMPILE_JOBS=10 \
  -DLLVM_PARALLEL_LINK_JOBS=1 \
  -DCMAKE_C_COMPILER=clang \
  -DCMAKE_CXX_COMPILER=clang++

$ ninja clang clang-fuzzer

@gxyd

gxyd commented Jan 22, 2026

Copy link
Copy Markdown
Author

Point VSCode to the compile database:

through command palette:

C/C++: Edit Configurations (UI)
→ Compile Commands → set build/compile_commands.json (try full path like `/Users/gxyd/OpenSource/llvm-project/build/compile_commands.json` if needed)

@gxyd

gxyd commented Mar 1, 2026

Copy link
Copy Markdown
Author

Latest commands used to build LLVM:

$ cmake -G Ninja -S ../llvm \
-DLLVM_ENABLE_PROJECTS="clang;lld" \
 -DLLVM_TARGETS_TO_BUILD="AArch64" \
 -DCMAKE_BUILD_TYPE=Debug \
 -DLLVM_ENABLE_ASSERTIONS=ON \
 -DLLVM_USE_SANITIZER=Address \
 -DLLVM_CCACHE_BUILD=ON \
 -DLLVM_USE_LINKER=lld \
 -DLLVM_PARALLEL_COMPILE_JOBS=10 \
 -DLLVM_PARALLEL_LINK_JOBS=1 \
 -DCMAKE_C_COMPILER=clang \
 -DCMAKE_CXX_COMPILER=clang++

I now need to list whether these build commands worked or not?
and confirm whether the clang-fuzzer version can be confirmed or not?

(llvm-dev) *[main][~/OpenSource/llvm-project]$ ./build/bin/clang-fuzzer --version
*** This tool was not linked to libFuzzer.
*** No fuzzing will be performed.

the above is what I got a little earlier.

I need to check what happens with the below set of commands:

# Reconfigure to remove compiler-rt and add ASan
$ cmake -G Ninja -S ../llvm \
 -DLLVM_ENABLE_PROJECTS="clang;lld" \
 -DLLVM_TARGETS_TO_BUILD="AArch64" \
 -DCMAKE_BUILD_TYPE=Debug \
 -DLLVM_ENABLE_ASSERTIONS=ON \
 -DLLVM_USE_SANITIZER=Address \
 -DLLVM_CCACHE_BUILD=ON \
 -DLLVM_USE_LINKER=lld \
 -DLLVM_PARALLEL_COMPILE_JOBS=10 \
 -DLLVM_PARALLEL_LINK_JOBS=1 \
 -DCMAKE_C_COMPILER=clang \
 -DCMAKE_CXX_COMPILER=clang++

$ ninja clang clang-fuzzer

@gxyd

gxyd commented Apr 4, 2026

Copy link
Copy Markdown
Author

I'm now trying to fix the issue: llvm/llvm-project#55026, for which I'm building LLVM with the below commands:

(llvm-dev) [main][~/OpenSource/llvm-project]$ mkdir build
(llvm-dev) [main][~/OpenSource/llvm-project]$ cd build
(llvm-dev) [main][~/OpenSource/llvm-project/build]$ cmake -G Ninja \
  -DCMAKE_BUILD_TYPE=Debug \
  -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \
  -DLLVM_TARGETS_TO_BUILD="AArch64" \
  -DLLVM_ENABLE_ASSERTIONS=ON \
  -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
  -DLLVM_OPTIMIZED_TABLEGEN=ON \
  ../llvm
(llvm-dev) [main][~/OpenSource/llvm-project/build]$ ninja clang-tidy

[306/3089] Configuring NATIVE LLVM...

@gxyd

gxyd commented Apr 13, 2026

Copy link
Copy Markdown
Author

I'm now trying to fix the issue: llvm/llvm-project#55026, for which I'm building LLVM with the below commands:

(llvm-dev) [main][~/OpenSource/llvm-project]$ mkdir build
(llvm-dev) [main][~/OpenSource/llvm-project]$ cd build
(llvm-dev) [main][~/OpenSource/llvm-project/build]$ cmake -G Ninja \
  -DCMAKE_BUILD_TYPE=Debug \
  -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \
  -DLLVM_TARGETS_TO_BUILD="AArch64" \
  -DLLVM_ENABLE_ASSERTIONS=ON \
  -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
  -DLLVM_OPTIMIZED_TABLEGEN=ON \
  -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON \
  ../llvm
(llvm-dev) [main][~/OpenSource/llvm-project/build]$ ninja clang-tidy

[306/3089] Configuring NATIVE LLVM...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment