From: "Andreas K. Hüttel" <dilfridge@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: profiles/features/clang/
Date: Sun, 5 Dec 2021 11:19:09 +0000 (UTC) [thread overview]
Message-ID: <1638703125.6890ef4bc1a8b3a67c9da1059091ffe775d4083b.dilfridge@gentoo> (raw)
commit: 6890ef4bc1a8b3a67c9da1059091ffe775d4083b
Author: Alex Revin <2b57 <AT> pm <DOT> me>
AuthorDate: Sat Dec 4 23:13:04 2021 +0000
Commit: Andreas K. Hüttel <dilfridge <AT> gentoo <DOT> org>
CommitDate: Sun Dec 5 11:18:45 2021 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6890ef4b
profiles: add clang profile feature
Signed-off-by: Alex Revin <2b57 <AT> pm.me>
Closes: https://github.com/gentoo/gentoo/pull/23187
Signed-off-by: Andreas K. Hüttel <dilfridge <AT> gentoo.org>
profiles/features/clang/eapi | 1 +
profiles/features/clang/make.defaults | 58 ++++++++++++++++++++++++++++++++++
profiles/features/clang/package.mask | 16 ++++++++++
profiles/features/clang/package.use | 17 ++++++++++
profiles/features/clang/packages | 14 ++++++++
profiles/features/clang/packages.build | 14 ++++++++
profiles/features/clang/use.force | 1 +
7 files changed, 121 insertions(+)
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
next reply other threads:[~2021-12-05 11:19 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-05 11:19 Andreas K. Hüttel [this message]
-- strict thread matches above, loose matches on Subject: below --
2021-12-05 11:19 [gentoo-commits] repo/gentoo:master commit in: profiles/features/clang/ Andreas K. Hüttel
2021-12-05 15:32 Andreas K. Hüttel
2021-12-11 16:01 Andreas K. Hüttel
2022-03-19 17:58 Andreas K. Hüttel
2022-07-18 21:50 Andreas K. Hüttel
2022-09-10 3:52 Sam James
2022-09-10 16:21 Sam James
2022-09-16 0:35 Sam James
2022-09-16 0:55 Sam James
2022-09-23 21:12 Andreas K. Hüttel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1638703125.6890ef4bc1a8b3a67c9da1059091ffe775d4083b.dilfridge@gentoo \
--to=dilfridge@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox