Makefile.compiler-rt revision 1.8
1# $NetBSD: Makefile.compiler-rt,v 1.8 2019/02/07 10:44:54 mrg Exp $
2
3COMPILER_RT_SRCDIR=	${NETBSDSRCDIR}/sys/external/bsd/compiler_rt/dist
4
5.if ${MACHINE_ARCH} == "powerpc"
6COMPILER_RT_CPU_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/ppc
7COMPILER_RT_ARCH_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/ppc
8.else
9COMPILER_RT_CPU_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/${MACHINE_CPU}
10COMPILER_RT_ARCH_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/${MACHINE_ARCH}
11.endif
12
13.PATH: ${COMPILER_RT_CPU_DIR}
14.PATH: ${COMPILER_RT_ARCH_DIR}
15.PATH: ${COMPILER_RT_SRCDIR}/lib/builtins
16
17GENERIC_SRCS+= \
18	absvdi2.c \
19	absvsi2.c \
20	absvti2.c \
21	addvdi3.c \
22	addvsi3.c \
23	addvti3.c \
24	ashlti3.c \
25	ashrti3.c \
26	clzti2.c \
27	cmpti2.c \
28	ctzti2.c \
29	divti3.c \
30	ffsti2.c \
31	int_util.c \
32	lshrti3.c \
33	modti3.c \
34	mulodi4.c \
35	mulosi4.c \
36	muloti4.c \
37	multi3.c \
38	mulvdi3.c \
39	mulvsi3.c \
40	mulvti3.c \
41	negti2.c \
42	negvdi2.c \
43	negvsi2.c \
44	negvti2.c \
45	paritydi2.c \
46	paritysi2.c \
47	parityti2.c \
48	popcountdi2.c \
49	popcountsi2.c \
50	popcountti2.c \
51	subvdi3.c \
52	subvsi3.c \
53	subvti3.c \
54	ucmpti2.c \
55	udivmodti4.c \
56	udivti3.c \
57	umodti3.c
58
59.if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha"
60GENERIC_SRCS+= \
61	clzsi2.c \
62	ctzsi2.c
63.endif
64
65.if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha"
66GENERIC_SRCS+= \
67	divmodsi4.c \
68	divsi3.c \
69	modsi3.c \
70	udivmodsi4.c \
71	udivsi3.c \
72	umodsi3.c
73.endif
74
75.if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha"
76GENERIC_SRCS+= \
77	clzdi2.c \
78	ctzdi2.c \
79	ffsdi2.c
80.endif
81
82.if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha"
83GENERIC_SRCS+= \
84	ashldi3.c \
85	ashrdi3.c \
86	lshrdi3.c
87.endif
88
89.if ${MACHINE_CPU} != "aarch64" && ${MACHINE} != "alpha"
90GENERIC_SRCS+= \
91	cmpdi2.c \
92	divdi3.c \
93	divmoddi4.c \
94	moddi3.c \
95	muldi3.c \
96	negdi2.c \
97	ucmpdi2.c \
98	udivdi3.c \
99	udivmoddi4.c \
100	umoddi3.c
101.endif
102
103.if ${MACHINE_CPU} == "arm"
104.  if !empty(MACHINE_ARCH:Mearm*)
105GENERIC_SRCS+= \
106	aeabi_idivmod.S \
107	aeabi_ldivmod.S \
108	aeabi_uidivmod.S \
109	aeabi_uldivmod.S \
110	__aeabi_idiv0.c \
111	__aeabi_ldiv0.c
112.  endif
113.endif
114
115.for src in ${GENERIC_SRCS}
116.  if exists(${COMPILER_RT_CPU_DIR}/${src:R}.S) || \
117      exists(${COMPILER_RT_ARCH_DIR}/${src:R}.S)
118SRCS+=	${src:R}.S
119.  else
120SRCS+=	${src}
121COPTS.${src}+=	-Wno-missing-prototypes \
122		-Wno-old-style-definition \
123		-Wno-strict-prototypes \
124		-Wno-uninitialized
125.  endif
126.endfor
127
128CPPFLAGS.int_util.c+=	-DKERNEL_USE
129
130# XXX Explicit divide by zero in udivmoddi4.c -> abort().
131.if defined(HAVE_GCC) && ${HAVE_GCC} == 7 && ${ACTIVE_CC} == "gcc"
132. if ${MACHINE_CPU} != "arm"
133COPTS.udivmoddi4.c+=	-fnon-call-exceptions
134. endif
135.endif
136