diff options
author | Alex Revin <2b57@pm.me> | 2021-12-05 00:13:04 +0100 |
---|---|---|
committer | Andreas K. Hüttel <dilfridge@gentoo.org> | 2021-12-05 12:18:45 +0100 |
commit | 6890ef4bc1a8b3a67c9da1059091ffe775d4083b (patch) | |
tree | 52a5ff095a4f17bb56b99a4cfd6109455382180d /profiles/features/clang | |
parent | sys-libs/glibc: Update live ebuild (diff) | |
download | gentoo-6890ef4bc1a8b3a67c9da1059091ffe775d4083b.tar.gz gentoo-6890ef4bc1a8b3a67c9da1059091ffe775d4083b.tar.bz2 gentoo-6890ef4bc1a8b3a67c9da1059091ffe775d4083b.zip |
profiles: add clang profile feature
Signed-off-by: Alex Revin <2b57@pm.me>
Closes: https://github.com/gentoo/gentoo/pull/23187
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Diffstat (limited to 'profiles/features/clang')
-rw-r--r-- | profiles/features/clang/eapi | 1 | ||||
-rw-r--r-- | profiles/features/clang/make.defaults | 58 | ||||
-rw-r--r-- | profiles/features/clang/package.mask | 16 | ||||
-rw-r--r-- | profiles/features/clang/package.use | 17 | ||||
-rw-r--r-- | profiles/features/clang/packages | 14 | ||||
-rw-r--r-- | profiles/features/clang/packages.build | 14 | ||||
-rw-r--r-- | profiles/features/clang/use.force | 1 |
7 files changed, 121 insertions, 0 deletions
diff --git a/profiles/features/clang/eapi b/profiles/features/clang/eapi new file mode 100644 index 000000000000..7f8f011eb73d --- /dev/null +++ b/profiles/features/clang/eapi @@ -0,0 +1 @@ +7 diff --git a/profiles/features/clang/make.defaults b/profiles/features/clang/make.defaults new file mode 100644 index 000000000000..014816b37253 --- /dev/null +++ b/profiles/features/clang/make.defaults @@ -0,0 +1,58 @@ +# use Clang as a primary compiler +CC="clang" +CXX="clang++" + +# libtool needs this +LD="ld.lld" + +# linker flags +LDFLAGS="${LDFLAGS} -fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind -Wl,--as-needed" + +# hardening flags +SOME_HARDENING_CFLAGS="-fPIC -fstack-protector-strong -D_FORTIFY_SOURCE=2" +SOME_HARDENING_LDFLAGS="-Wl,-z,relro,-z,now -pie" + +# enable some hardening by default +CFLAGS="${CFLAGS} ${SOME_HARDENING_FLAGS}" +CXXFLAGS="${CXXFLAGS} ${SOME_HARDENING_FLAGS}" +LDFLAGS="${LDFLAGS} ${SOME_HARDENING_LDFLAGS}" + +# use LLVM-provided binutils +AR="llvm-ar" +AS="llvm-as" +NM="llvm-nm" +STRIP="llvm-strip" +RANLIB="llvm-ranlib" +OBJCOPY="llvm-objcopy" +STRINGS="llvm-strings" +OBJDUMP="llvm-objdump" +READELF="llvm-readelf" +ADDR2LINE="llvm-addr2line" + + +# bootstrap USE for stage1 + +# curl needed by cmake +BOOTSTRAP_USE="$BOOTSTRAP_USE ssl curl_ssl_openssl" + +# Clang needs this +BOOTSTRAP_USE="${BOOTSTRAP_USE} python_single_target_python3_9" + +# sys-devel/llvm +BOOTSTRAP_USE="${BOOTSTRAP_USE} -gold" + +# sys-devel/clang, sys-devel/clang-runtime, sys-libs/llvm-libunwind, sys-libs/libcxx, sys-libs/libcxxabi +BOOTSTRAP_USE="${BOOTSTRAP_USE} compiler-rt clang libunwind" + +# sys-devel/clang +BOOTSTRAP_USE="${BOOTSTRAP_USE} default-compiler-rt default-lld default-libcxx llvm-libunwind" + +# sys-devel/clang-runtime +# sanitizers are disabled for now +BOOTSTRAP_USE="${BOOTSTRAP_USE} libcxx -sanitize" + +# sys-libs/libcxxabi +BOOTSTRAP_USE="${BOOTSTRAP_USE} libcxxabi" + +# llvm & clang: explicitly disable all extra targets, otherwise linking stage2 fails +BOOTSTRAP_USE="${BOOTSTRAP_USE} -llvm_targets_BPF -llvm_targets_AMDGPU -llvm_targets_NVPTX -llvm_targets_BPF" diff --git a/profiles/features/clang/package.mask b/profiles/features/clang/package.mask new file mode 100644 index 000000000000..0b6b883d274a --- /dev/null +++ b/profiles/features/clang/package.mask @@ -0,0 +1,16 @@ +# mask LLVM 13, since it breaks tcl, which breaks sqlite and so on + +>sys-devel/llvm-12.0.1 +>sys-devel/llvm-common-12.0.1 + +>sys-libs/compiler-rt-12.0.1 +>sys-libs/compiler-rt-sanitizers-12.0.1 + +>sys-devel/clang-12.0.1 +>sys-devel/clang-common-12.0.1 +>sys-devel/clang-runtime-12.0.1 + +>sys-devel/lld-12.0.1 +>sys-libs/libcxx-12.0.1 +>sys-libs/libcxxabi-12.0.1 +>sys-libs/llvm-libunwind-12.0.1 diff --git a/profiles/features/clang/package.use b/profiles/features/clang/package.use new file mode 100644 index 000000000000..5d568cb8cb66 --- /dev/null +++ b/profiles/features/clang/package.use @@ -0,0 +1,17 @@ +# use lld by default +sys-devel/llvm -gold + +# use all defaults +sys-devel/clang compiler-rt default-compiler-rt default-lld default-libcxx llvm-libunwind +sys-libs/compiler-rt clang + +# disable sanitizers for now +sys-devel/clang-runtime compiler-rt libcxx -sanitize +# sys-libs/compiler-rt-sanitizers clang + +sys-libs/libcxx libunwind libcxxabi +sys-libs/libcxxabi libunwind +sys-libs/llvm-libunwind compiler-rt + +# libgcrypt doesn't like optimizations +dev-libs/libgcrypt o-flag-munging diff --git a/profiles/features/clang/packages b/profiles/features/clang/packages new file mode 100644 index 000000000000..9536b85862f3 --- /dev/null +++ b/profiles/features/clang/packages @@ -0,0 +1,14 @@ +# now part of @system set +*sys-devel/lld +*sys-devel/llvm +*sys-devel/clang +*sys-libs/libcxx +*sys-libs/libcxxabi +*sys-libs/compiler-rt +*sys-libs/llvm-libunwind + +# not needed with clang +-*sys-devel/gcc +-*sys-devel/gcc-config +-*sys-devel/binutils +-*sys-devel/binutils-config diff --git a/profiles/features/clang/packages.build b/profiles/features/clang/packages.build new file mode 100644 index 000000000000..fd1e69e329e3 --- /dev/null +++ b/profiles/features/clang/packages.build @@ -0,0 +1,14 @@ +# will be pulled by stage1 +sys-libs/compiler-rt +sys-libs/libcxxabi +sys-libs/libcxx +sys-devel/llvm +sys-devel/lld +sys-devel/clang +sys-libs/llvm-libunwind + +# remove gcc & friends +-sys-devel/gcc +-sys-devel/gcc-config +-sys-devel/binutils +-sys-devel/binutils-config diff --git a/profiles/features/clang/use.force b/profiles/features/clang/use.force new file mode 100644 index 000000000000..e671fa21003e --- /dev/null +++ b/profiles/features/clang/use.force @@ -0,0 +1 @@ +clang |