aboutsummaryrefslogtreecommitdiff
path: root/lib/libcompiler_rt/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libcompiler_rt/Makefile')
-rw-r--r--lib/libcompiler_rt/Makefile44
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/libcompiler_rt/Makefile b/lib/libcompiler_rt/Makefile
new file mode 100644
index 000000000000..08467bbec310
--- /dev/null
+++ b/lib/libcompiler_rt/Makefile
@@ -0,0 +1,44 @@
+.include <src.opts.mk>
+
+PACKAGE= lib${LIB}
+LIB= compiler_rt
+MK_SSP= no
+NO_PIC=
+WARNS?= 2
+
+CFLAGS+= ${PICFLAG}
+CFLAGS+= -fvisibility=hidden
+CFLAGS+= -DVISIBILITY_HIDDEN
+CFLAGS+= -I${SRCTOP}/contrib/llvm-project/libunwind/include
+
+# gcc has incompatible internal declarations for __divtc3 and __multc3, but has
+# no option to silence its warning, so make warnings non-fatal.
+MK_WERROR.gcc= no
+
+.include "Makefile.inc"
+
+# Out-of-line LSE atomics helpers for aarch64
+.if ${MACHINE_CPUARCH} == "aarch64"
+. for pat in cas swp ldadd ldclr ldeor ldset
+. for size in 1 2 4 8 16
+. for model in 1 2 3 4 5
+. if ${pat} == "cas" || ${size} != "16"
+# Use .for to define lse_name, to get a special loop-local variable
+. for lse_name in outline_atomic_${pat}${size}_${model}.S
+CLEANFILES+= ${lse_name}
+STATICOBJS+= ${lse_name:R}.o
+ACFLAGS.${lse_name}+= -DL_${pat} -DSIZE=${size} -DMODEL=${model} -I${CRTSRC}
+${lse_name}: lse.S
+ ln -sf ${.ALLSRC} ${.TARGET}
+. endfor # lse_name
+. endif
+. endfor # model
+. endfor # size
+. endfor # pat
+.endif
+
+.if ${MK_INSTALLLIB} != "no"
+SYMLINKS+= libcompiler_rt.a ${LIBDIR}/libgcc.a
+.endif
+
+.include <bsd.lib.mk>