1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-29 01:13:08 +00:00

devel/llvm14: enable COMPILER_RT on riscv64

Also use the base system unwind.h when appropriate.

PR:		262707, 263414
Submitted by:	pkubaj
This commit is contained in:
Brooks Davis 2022-04-21 00:17:01 +01:00
parent c472db1cb7
commit 3a7c192dc4

View File

@ -89,7 +89,7 @@ OPTIONS_DEFINE_i386= COMPILER_RT OPENMP
OPTIONS_DEFINE_powerpc= GOLD
OPTIONS_DEFINE_powerpc64= GOLD OPENMP
OPTIONS_DEFINE_powerpc64le= GOLD OPENMP
OPTIONS_DEFINE_riscv64= OPENMP
OPTIONS_DEFINE_riscv64= COMPILER_RT OPENMP
OPTIONS_DEFAULT= BE_AMDGPU BE_STANDARD BE_WASM CLANG EXTRAS FLANG LIT LLD LLDB MLIR PYCLANG
OPTIONS_DEFAULT_aarch64= OPENMP
OPTIONS_DEFAULT_amd64= COMPILER_RT GOLD OPENMP
@ -99,7 +99,7 @@ OPTIONS_DEFAULT_powerpc64= ${OPTIONS_DEFAULT_powerpc64_${OSREL:R}} OPENMP
OPTIONS_DEFAULT_powerpc64_13= GOLD
OPTIONS_DEFAULT_powerpc64_14= GOLD
OPTIONS_DEFAULT_powerpc64le= GOLD OPENMP
OPTIONS_DEFAULT_riscv64= OPENMP
OPTIONS_DEFAULT_riscv64= COMPILER_RT OPENMP
OPTIONS_EXCLUDE_armv6= FLANG
OPTIONS_EXCLUDE_armv7= FLANG
OPTIONS_EXCLUDE_i386= FLANG
@ -134,12 +134,7 @@ CLANG_SUB_LIST= XCC=clang${LLVM_SUFFIX} \
X_COMPILER_TYPE=clang
CLANG_USE= GNOME=libxml2
COMPILER_RT_DESC= Sanitizer libraries
# An unwind.h is require to build. I think an in-tree one should be used
# but this seems to work as a workaround...
COMPILER_RT_BUILD_DEPENDS= libunwind>0:devel/libunwind
COMPILER_RT_CMAKE_ON= -DCOMPILER_RT_INSTALL_PATH=${LLVM_PREFIX}/lib/clang/${LLVM_RELEASE}
# Allow unwind.h to be found reliably
COMPILER_RT_USES= localbase
COMPILER_RT_PLIST_FILES=${_COMPILER_RT_LIBS:S|^|${_CRTLIBDIR}/|} \
${_COMPILER_RT_BLACKLISTS:S|^|${_CRTBLDIR}/|}
DOCS_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sphinx-markdown-tables>=0:textproc/py-sphinx-markdown-tables@${PY_FLAVOR} \
@ -307,6 +302,13 @@ USES+= gnome
.if ${PORT_OPTIONS:MCOMPILER_RT}
LLVM_ENABLE_PROJECTS+= compiler-rt
COMPILER_RT_PATTERN= (sanitizer|include.xray|include\/fuzzer|profile\/InstrProfData.inc)
.if ${OSVERSION} < 1300525
# An unwind.h is require to build. I think an in-tree one should be used
# but this seems to work as a workaround...
COMPILER_RT_BUILD_DEPENDS= libunwind>0:devel/libunwind
# Allow unwind.h to be found reliably
COMPILER_RT_USES= localbase
.endif
.endif
.if ${PORT_OPTIONS:MEXTRAS}
@ -425,7 +427,6 @@ BE_PATTERN=${_BE_LIBS_STANDARD:O:S/$/.a/:ts|}|${_BE_INCS_STANDARD:ts|}
_CRTLIBDIR= ${LLVM_DIR}/lib/clang/${LLVM_RELEASE}/lib/freebsd
_CRTBLDIR= ${LLVM_DIR}/lib/clang/${LLVM_RELEASE}/share
_COMPILER_RT_BLACKLISTS= cfi_ignorelist.txt
_COMPILER_RT_LIBS_i386= \
libclang_rt.asan-i386.a \
libclang_rt.asan-i386.so \
@ -445,6 +446,7 @@ _COMPILER_RT_LIBS_i386= \
libclang_rt.ubsan_standalone-i386.so \
libclang_rt.ubsan_standalone_cxx-i386.a
.if ${ARCH} == "amd64"
_COMPILER_RT_BLACKLISTS= cfi_ignorelist.txt
_COMPILER_RT_BLACKLISTS+= asan_ignorelist.txt
_COMPILER_RT_BLACKLISTS+= msan_ignorelist.txt
_COMPILER_RT_LIBS= \
@ -492,10 +494,31 @@ _COMPILER_RT_LIBS= \
.if exists(/usr/lib32/libc.so.7)
_COMPILER_RT_LIBS+= ${_COMPILER_RT_LIBS_i386}
.endif
.endif
.if ${ARCH} == "i386"
.elif ${ARCH} == "i386"
_COMPILER_RT_BLACKLISTS= cfi_ignorelist.txt
_COMPILER_RT_BLACKLISTS+= asan_ignorelist.txt
_COMPILER_RT_LIBS+= ${_COMPILER_RT_LIBS_i386}
.elif ${ARCH} == "riscv64"
_COMPILER_RT_BLACKLISTS= asan_ignorelist.txt
_COMPILER_RT_LIBS= \
libclang_rt.asan-preinit-riscv64.a \
libclang_rt.asan-riscv64.a \
libclang_rt.asan-riscv64.a.syms \
libclang_rt.asan-riscv64.so \
libclang_rt.asan_cxx-riscv64.a \
libclang_rt.asan_cxx-riscv64.a.syms \
libclang_rt.asan_static-riscv64.a \
libclang_rt.builtins-riscv64.a \
libclang_rt.stats-riscv64.a \
libclang_rt.stats_client-riscv64.a \
libclang_rt.ubsan_minimal-riscv64.a \
libclang_rt.ubsan_minimal-riscv64.a.syms \
libclang_rt.ubsan_minimal-riscv64.so \
libclang_rt.ubsan_standalone-riscv64.a \
libclang_rt.ubsan_standalone-riscv64.a.syms \
libclang_rt.ubsan_standalone-riscv64.so \
libclang_rt.ubsan_standalone_cxx-riscv64.a \
libclang_rt.ubsan_standalone_cxx-riscv64.a.syms
.endif
.if ${ARCH} == "armv6"