mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-24 17:44:17 +01:00
1062db3070
GCC 13 supports _Float16 and __int128 on fewer architectures than clang and thus libcxxrt compiled with gcc13 is sometimes missing related symbols. Hack around this by explicitly appending --undefined-version to LDFLAGS in problematic cases. Reviewed by: theraven, dim Differential Revision: https://reviews.freebsd.org/D45233
55 lines
1.2 KiB
Makefile
55 lines
1.2 KiB
Makefile
PACKAGE= clibs
|
|
SHLIBDIR?= /lib
|
|
|
|
.include <src.opts.mk>
|
|
|
|
SRCDIR= ${SRCTOP}/contrib/libcxxrt
|
|
|
|
SHLIB_MAJOR= 1
|
|
|
|
.PATH: ${SRCDIR}
|
|
|
|
LIB= cxxrt
|
|
|
|
SRCS+= auxhelper.cc
|
|
SRCS+= dynamic_cast.cc
|
|
SRCS+= exception.cc
|
|
SRCS+= guard.cc
|
|
SRCS+= libelftc_dem_gnu3.c
|
|
SRCS+= memory.cc
|
|
SRCS+= stdexcept.cc
|
|
SRCS+= terminate.cc
|
|
SRCS+= typeinfo.cc
|
|
|
|
WARNS?= 0
|
|
CFLAGS+= -isystem ${SRCDIR} -nostdinc++
|
|
CXXSTD?= c++14
|
|
|
|
.if exists(Version.map.${MACHINE})
|
|
VERSION_MAP= ${.CURDIR}/Version.map.${MACHINE}
|
|
.else
|
|
.if ${MACHINE_ABI:Mlong32}
|
|
VERSION_MAP= Version-32.map
|
|
.else
|
|
VERSION_MAP= Version-64.map
|
|
.endif
|
|
|
|
Version-32.map: Version.map
|
|
sed 's/%%NEW_DELETE_TYPE%%/int/' ${.ALLSRC} > ${.TARGET}
|
|
|
|
Version-64.map: Version.map
|
|
sed 's/%%NEW_DELETE_TYPE%%/long/' ${.ALLSRC} > ${.TARGET}
|
|
.endif
|
|
|
|
.include <bsd.lib.mk>
|
|
|
|
# gcc13 doesn't support _Float16 on riscv, powerpc64, and x86 or __int128
|
|
# on i386. Disable checks for missing symbols to allow this to link.
|
|
#
|
|
# XXX: This is a hack that hides an ABI divergence between clang and gcc.
|
|
.if ${COMPILER_TYPE} == "gcc" && \
|
|
(${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" || \
|
|
${MACHINE_ARCH:Mpowerpc64*} || ${MACHINE_ARCH} == "riscv64")
|
|
LDFLAGS+= -Wl,--undefined-version
|
|
.endif
|