diff --git a/build-scripts/build_llvm.py b/build-scripts/build_llvm.py index 68ef640e39..e2221b8e54 100755 --- a/build-scripts/build_llvm.py +++ b/build-scripts/build_llvm.py @@ -48,7 +48,7 @@ def query_llvm_version(llvm_info): return response['sha'] -def build_llvm(llvm_dir, platform, backends, projects, use_clang=False, extra_flags=''): +def build_llvm(llvm_dir, platform, backends, projects, use_clang=False, extra_flags='', use_ccache=False): LLVM_COMPILE_OPTIONS = [ '-DCMAKE_BUILD_TYPE:STRING="Release"', "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON", @@ -68,8 +68,8 @@ def build_llvm(llvm_dir, platform, backends, projects, use_clang=False, extra_fl "-DLLVM_OPTIMIZED_TABLEGEN:BOOL=ON", ] - # ccache is not available on Windows - if not "windows" == platform: + # ccache is opt-in via --use-ccache flag + if not "windows" == platform and use_ccache: LLVM_COMPILE_OPTIONS.append("-DLLVM_CCACHE_BUILD:BOOL=ON") # perf support is available on Linux only if "linux" == platform: @@ -270,6 +270,11 @@ def main(): action="store_true", help="use clang instead of gcc", ) + parser.add_argument( + "--use-ccache", + action="store_true", + help="enable ccache for faster incremental LLVM builds (disabled by default to reduce CI storage consumption, recommended for local development)", + ) parser.add_argument( "--extra-cmake-flags", type=str, @@ -334,7 +339,7 @@ def main(): if ( build_llvm( llvm_dir, platform, options.arch, options.project, options.use_clang, - options.extra_cmake_flags + options.extra_cmake_flags, options.use_ccache ) is not None ): diff --git a/product-mini/README.md b/product-mini/README.md index 65be5ce047..65c3dd00de 100644 --- a/product-mini/README.md +++ b/product-mini/README.md @@ -79,6 +79,12 @@ cd product-mini/platforms/linux/ ./build_llvm.sh (The llvm source code is cloned under /core/deps/llvm and auto built) ``` +Note: By default, ccache is disabled to reduce CI storage consumption. For local development with frequent LLVM rebuilds, you can enable ccache for faster incremental builds by using the `--use-ccache` flag: +``` Bash +cd /build-scripts +python3 build_llvm.py --arch X86 --use-ccache +``` + Then pass argument `-DWAMR_BUILD_JIT=1` to cmake to enable LLVM JIT: ``` Bash mkdir build && cd build diff --git a/tests/benchmarks/README.md b/tests/benchmarks/README.md index 95d85b1c09..6039363d35 100644 --- a/tests/benchmarks/README.md +++ b/tests/benchmarks/README.md @@ -65,3 +65,5 @@ cmake ../llvm \ ninja -j 8 # tool `llvm-profdata` is generated under this folder. ``` + +> **Note**: The example above shows `-DLLVM_CCACHE_BUILD:BOOL=ON` for enabling ccache in the cmake configuration. When using the `build_llvm.py` script, ccache is disabled by default to reduce CI storage consumption. To enable it with the script, use: `python3 build_llvm.py --use-ccache --arch X86`