freebsd-dev/lib/libgcc_s/Makefile
Conrad Meyer c8b5e3de39 Fix llvm-libunwind userspace build on ARM
GCC's libgcc exports a few ARM-specific symbols for ARM EABI, AEABI, or
EHABI or whatever it's called.  Export the same ones from LLVM-libunwind's
libgcc_s, on ARM.  As part of this, convert libgcc_s from a direct
Version.map to one constructed from component Symbol.map files.  This allows
the ARM-specific Symbol.map to be included only on ARM.

Fix ARM-only oddities in struct name/aliases in LLVM-libunwind to match
non-ARM definitions and ARM-specific expectations in libcxxrt /
libcompiler_rt.

No functional change intended for non-ARM architectures.

This commit does not actually flip the switch for ARM defaults from libgcc
to llvm-libunwind, but makes it possible (to compile, anyway).
2019-11-05 03:20:40 +00:00

56 lines
1.3 KiB
Makefile

# $FreeBSD$
PACKAGE= clibs
SHLIB_NAME= libgcc_s.so.1
SHLIBDIR?= /lib
.include <bsd.opts.mk>
MK_SSP= no
WARNS?= 2
LDFLAGS+= -nodefaultlibs
LIBADD+= c
.if ${MK_SYMVER} == "yes"
VERSION_DEF= ${.CURDIR}/Versions.def
SYMBOL_MAPS= ${.CURDIR}/Symbol.map
# Export ARM AEABI unwind routines needed by libc and libthr.
.if exists(${.CURDIR}/${MACHINE_CPUARCH}/Symbol.map)
SYMBOL_MAPS+= ${.CURDIR}/${MACHINE_CPUARCH}/Symbol.map
.endif
.endif
.include "../libcompiler_rt/Makefile.inc"
.include "../libgcc_eh/Makefile.inc"
# gcc has incompatible internal declarations for __divtc3 and __multc3, but has
# no option to silence its warning, so make warnings non-fatal.
NO_WERROR.gcc=
LIBCSRCDIR= ${SRCTOP}/lib/libc
LIBMSRCDIR= ${SRCTOP}/lib/msun/src
CFLAGS+= -I${LIBCSRCDIR}/include -I${LIBCSRCDIR}/${MACHINE_CPUARCH}
CFLAGS+= -I${LIBMSRCDIR}
.PATH: ${LIBMSRCDIR}
SRCS+= s_fabs.c
SRCS+= s_fabsf.c
SRCS+= s_fabsl.c
SRCS+= s_fmax.c
SRCS+= s_fmaxf.c
SRCS+= s_logb.c
SRCS+= s_logbf.c
SRCS+= s_scalbn.c
SRCS+= s_scalbnf.c
# Don't include long double routines on architectures where long double
# is the same size as double.
.if ${MACHINE_CPUARCH} != "mips" && ${MACHINE_CPUARCH} != "arm" && \
${MACHINE_CPUARCH} != "powerpc"
SRCS+= s_fmaxl.c
SRCS+= s_logbl.c
SRCS+= s_scalbnl.c
.endif
.include <bsd.lib.mk>