summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2024-08-21 14:26:41 +0200
committerOliver Reiche <oliver.reiche@huawei.com>2024-08-23 12:11:02 +0200
commit01b58e6282eef559fc80719b5ebc2eee50f01450 (patch)
tree83b047a795b4f2611aa05d59d37b96f39e245d5d
parent9e11172824011a57c9d27af0283b24d84b8c0ae7 (diff)
downloadbootstrappable-toolchain-01b58e6282eef559fc80719b5ebc2eee50f01450.tar.gz
clang: Add support for building clang-tidy
-rw-r--r--README.md2
-rw-r--r--src/compilers/clang-16-native.TARGETS56
-rw-r--r--src/compilers/clang-17-native.TARGETS56
-rw-r--r--src/compilers/clang-18-native.TARGETS56
4 files changed, 167 insertions, 3 deletions
diff --git a/README.md b/README.md
index 4c77c67..781a8d2 100644
--- a/README.md
+++ b/README.md
@@ -171,6 +171,8 @@ Fields for building the toolchains:
Library directory of the C library on the build host (default: not set)
- `HOST_DYNAMIC_LINKER`:
Absolute path to the dynamic linker on the build host (default: not set)
+- `INCLUDE_LINTER`:
+ Add linter to toolchain if supported, e.g., `clang-tidy` (default: `false`)
Fields for using the toolchains
(within [Justbuild](https://github.com/just-buildsystem/justbuild) projects):
diff --git a/src/compilers/clang-16-native.TARGETS b/src/compilers/clang-16-native.TARGETS
index 019c42b..33b2921 100644
--- a/src/compilers/clang-16-native.TARGETS
+++ b/src/compilers/clang-16-native.TARGETS
@@ -133,7 +133,61 @@
, "cp -r ${LOCALBASE}/. ${DESTDIR}/."
, "chmod -R +w ${DESTDIR}/*"
, "mkdir build"
- , "cmake -B build -S llvm ${CONF_ARGS} -DLLVM_USE_FOLDERS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON -DLLVM_ENABLE_PROJECTS=clang -DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind' -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_PARALLEL_LINK_JOBS=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX= -DLLVM_HOST_TRIPLE=${HOST_TRIPLE} -DLLVM_NATIVE_TARGET=ON -DLIBCXXABI_ENABLE_ASSERTIONS=OFF -DLIBUNWIND_ENABLE_ASSERTIONS=OFF >configure.log 2>&1 || (cat configure.log && exit 1)"
+ , { "type": "join"
+ , "separator": " "
+ , "$1":
+ [ "cmake"
+ , "-B"
+ , "build"
+ , "-S"
+ , "llvm"
+ , "${CONF_ARGS}"
+ , "-DLLVM_USE_FOLDERS=OFF"
+ , "-DLLVM_INCLUDE_DOCS=OFF"
+ , "-DLLVM_INCLUDE_TESTS=OFF"
+ , "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON"
+ , { "type": "join"
+ , "$1":
+ [ "-DLLVM_ENABLE_PROJECTS="
+ , { "type": "join_cmd"
+ , "$1":
+ [ { "type": "join"
+ , "separator": ";"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ ["clang"]
+ , { "type": "if"
+ , "cond":
+ { "type": "lookup"
+ , "key": "INCLUDE_LINTER"
+ , "map":
+ { "type": "var"
+ , "name": "TOOLCHAIN_CONFIG"
+ , "default": {"type": "empty_map"}
+ }
+ }
+ , "then": ["clang-tools-extra"]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ , "-DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind'"
+ , "-DLLVM_TARGETS_TO_BUILD=X86"
+ , "-DLLVM_PARALLEL_LINK_JOBS=1"
+ , "-DCMAKE_BUILD_TYPE=Release"
+ , "-DCMAKE_INSTALL_PREFIX="
+ , "-DLLVM_HOST_TRIPLE=${HOST_TRIPLE}"
+ , "-DLLVM_NATIVE_TARGET=ON"
+ , "-DLIBCXXABI_ENABLE_ASSERTIONS=OFF"
+ , "-DLIBUNWIND_ENABLE_ASSERTIONS=OFF"
+ , ">configure.log 2>&1 || (cat configure.log && exit 1)"
+ ]
+ }
, "cmake --build build --target clang -j${NJOBS} >build.log 2>&1 || (cat configure.log build.log && exit 1)"
, "export LDFLAGS=\"--gcc-toolchain=${GCC_TOOLCHAIN} ${LINK_ARGS}\""
, "cmake --build build --target all -j${NJOBS} >>build.log 2>&1 || (cat configure.log build.log && exit 1)"
diff --git a/src/compilers/clang-17-native.TARGETS b/src/compilers/clang-17-native.TARGETS
index 8d3ebda..19fc02e 100644
--- a/src/compilers/clang-17-native.TARGETS
+++ b/src/compilers/clang-17-native.TARGETS
@@ -133,7 +133,61 @@
, "cp -r ${LOCALBASE}/. ${DESTDIR}/."
, "chmod -R +w ${DESTDIR}/*"
, "mkdir build"
- , "cmake -B build -S llvm ${CONF_ARGS} -DLLVM_USE_FOLDERS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON -DLLVM_ENABLE_PROJECTS=clang -DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind' -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_PARALLEL_LINK_JOBS=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX= -DLLVM_HOST_TRIPLE=${HOST_TRIPLE} -DLLVM_NATIVE_TARGET=ON -DLIBCXXABI_ENABLE_ASSERTIONS=OFF -DLIBUNWIND_ENABLE_ASSERTIONS=OFF >configure.log 2>&1 || (cat configure.log && exit 1)"
+ , { "type": "join"
+ , "separator": " "
+ , "$1":
+ [ "cmake"
+ , "-B"
+ , "build"
+ , "-S"
+ , "llvm"
+ , "${CONF_ARGS}"
+ , "-DLLVM_USE_FOLDERS=OFF"
+ , "-DLLVM_INCLUDE_DOCS=OFF"
+ , "-DLLVM_INCLUDE_TESTS=OFF"
+ , "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON"
+ , { "type": "join"
+ , "$1":
+ [ "-DLLVM_ENABLE_PROJECTS="
+ , { "type": "join_cmd"
+ , "$1":
+ [ { "type": "join"
+ , "separator": ";"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ ["clang"]
+ , { "type": "if"
+ , "cond":
+ { "type": "lookup"
+ , "key": "INCLUDE_LINTER"
+ , "map":
+ { "type": "var"
+ , "name": "TOOLCHAIN_CONFIG"
+ , "default": {"type": "empty_map"}
+ }
+ }
+ , "then": ["clang-tools-extra"]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ , "-DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind'"
+ , "-DLLVM_TARGETS_TO_BUILD=X86"
+ , "-DLLVM_PARALLEL_LINK_JOBS=1"
+ , "-DCMAKE_BUILD_TYPE=Release"
+ , "-DCMAKE_INSTALL_PREFIX="
+ , "-DLLVM_HOST_TRIPLE=${HOST_TRIPLE}"
+ , "-DLLVM_NATIVE_TARGET=ON"
+ , "-DLIBCXXABI_ENABLE_ASSERTIONS=OFF"
+ , "-DLIBUNWIND_ENABLE_ASSERTIONS=OFF"
+ , ">configure.log 2>&1 || (cat configure.log && exit 1)"
+ ]
+ }
, "cmake --build build --target clang -j${NJOBS} >build.log 2>&1 || (cat configure.log build.log && exit 1)"
, "export LDFLAGS=\"--gcc-toolchain=${GCC_TOOLCHAIN} ${LINK_ARGS}\""
, "cmake --build build --target all -j${NJOBS} >>build.log 2>&1 || (cat configure.log build.log && exit 1)"
diff --git a/src/compilers/clang-18-native.TARGETS b/src/compilers/clang-18-native.TARGETS
index bf2a456..e0ef548 100644
--- a/src/compilers/clang-18-native.TARGETS
+++ b/src/compilers/clang-18-native.TARGETS
@@ -133,7 +133,61 @@
, "cp -r ${LOCALBASE}/. ${DESTDIR}/."
, "chmod -R +w ${DESTDIR}/*"
, "mkdir build"
- , "cmake -B build -S llvm ${CONF_ARGS} -DLLVM_USE_FOLDERS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON -DLLVM_ENABLE_PROJECTS=clang -DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind' -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_PARALLEL_LINK_JOBS=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX= -DLLVM_HOST_TRIPLE=${HOST_TRIPLE} -DLLVM_NATIVE_TARGET=ON -DLIBCXXABI_ENABLE_ASSERTIONS=OFF -DLIBUNWIND_ENABLE_ASSERTIONS=OFF >configure.log 2>&1 || (cat configure.log && exit 1)"
+ , { "type": "join"
+ , "separator": " "
+ , "$1":
+ [ "cmake"
+ , "-B"
+ , "build"
+ , "-S"
+ , "llvm"
+ , "${CONF_ARGS}"
+ , "-DLLVM_USE_FOLDERS=OFF"
+ , "-DLLVM_INCLUDE_DOCS=OFF"
+ , "-DLLVM_INCLUDE_TESTS=OFF"
+ , "-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON"
+ , { "type": "join"
+ , "$1":
+ [ "-DLLVM_ENABLE_PROJECTS="
+ , { "type": "join_cmd"
+ , "$1":
+ [ { "type": "join"
+ , "separator": ";"
+ , "$1":
+ { "type": "++"
+ , "$1":
+ [ ["clang"]
+ , { "type": "if"
+ , "cond":
+ { "type": "lookup"
+ , "key": "INCLUDE_LINTER"
+ , "map":
+ { "type": "var"
+ , "name": "TOOLCHAIN_CONFIG"
+ , "default": {"type": "empty_map"}
+ }
+ }
+ , "then": ["clang-tools-extra"]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ , "-DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind'"
+ , "-DLLVM_TARGETS_TO_BUILD=X86"
+ , "-DLLVM_PARALLEL_LINK_JOBS=1"
+ , "-DCMAKE_BUILD_TYPE=Release"
+ , "-DCMAKE_INSTALL_PREFIX="
+ , "-DLLVM_HOST_TRIPLE=${HOST_TRIPLE}"
+ , "-DLLVM_NATIVE_TARGET=ON"
+ , "-DLIBCXXABI_ENABLE_ASSERTIONS=OFF"
+ , "-DLIBUNWIND_ENABLE_ASSERTIONS=OFF"
+ , ">configure.log 2>&1 || (cat configure.log && exit 1)"
+ ]
+ }
, "cmake --build build --target clang -j${NJOBS} >build.log 2>&1 || (cat configure.log build.log && exit 1)"
, "export LDFLAGS=\"--gcc-toolchain=${GCC_TOOLCHAIN} ${LINK_ARGS}\""
, "cmake --build build --target all -j${NJOBS} >>build.log 2>&1 || (cat configure.log build.log && exit 1)"