# Copyright 2021-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # this is for now highly experimental -dilfridge # use clang as the 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" # # we need to eventually do this the same way as in gcc, for now let's # keep it to a minimum SOME_HARDENING_CFLAGS="-D_FORTIFY_SOURCE=2" SOME_HARDENING_LDFLAGS="" # enable hardening by default, cf. gcc[pie,ssp] CFLAGS="${CFLAGS} ${SOME_HARDENING_FLAGS}" CXXFLAGS="${CXXFLAGS} ${SOME_HARDENING_FLAGS}" LDFLAGS="${LDFLAGS} ${SOME_HARDENING_LDFLAGS}" # use LLVM-provided binutils AR="llvm-ar" AS="clang -c" CPP="clang-cpp" NM="llvm-nm" STRIP="llvm-strip" RANLIB="llvm-ranlib" OBJCOPY="llvm-objcopy" STRINGS="llvm-strings" OBJDUMP="llvm-objdump" READELF="llvm-readelf" ADDR2LINE="llvm-addr2line" # Rust needs this to build some crates (like uutils) # https://github.com/rust-lang/rust/blob/master/compiler/rustc_llvm/build.rs LLVM_USE_LIBCXX=1 # https://github.com/rust-lang/cc-rs#c-support # https://github.com/rust-lang/cc-rs/blob/main/src/lib.rs CXXSTDLIB="c++" # 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_10" # sys-devel/llvm BOOTSTRAP_USE="${BOOTSTRAP_USE} -binutils-plugin" # 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 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"