Makefile revision 251525
139212Sgibbs# $FreeBSD: head/lib/libcompiler_rt/Makefile 251525 2013-06-08 13:22:53Z ed $
239212Sgibbs
339212Sgibbs.include <bsd.own.mk>
439212Sgibbs
539212SgibbsLIB=	compiler_rt
639212SgibbsNO_PIC=
739212SgibbsWARNS?=	2
839212Sgibbs
939212SgibbsCFLAGS+=${PICFLAG} -fvisibility=hidden -DVISIBILITY_HIDDEN
1039212Sgibbs
1139212Sgibbs.if ${MACHINE_CPUARCH} == "amd64"
1239212SgibbsCRTARCH=x86_64
1339212Sgibbs.else
1439212SgibbsCRTARCH=${MACHINE_CPUARCH}
1539212Sgibbs.endif
1639212Sgibbs
1739212SgibbsCRTSRC=${.CURDIR}/../../contrib/compiler-rt/lib
1839212Sgibbs
1939212Sgibbs.PATH: ${CRTSRC}/${CRTARCH} ${CRTSRC}
2039212Sgibbs
2139212SgibbsSRCF=	absvdi2 \
2239212Sgibbs	absvsi2 \
2339212Sgibbs	absvti2 \
2439212Sgibbs	addvdi3 \
2539212Sgibbs	addvsi3 \
2639212Sgibbs	addvti3 \
2739212Sgibbs	ashldi3 \
2850477Speter	ashlti3 \
2939212Sgibbs	ashrdi3 \
3039212Sgibbs	ashrti3 \
3139212Sgibbs	clzdi2 \
3239212Sgibbs	clzsi2 \
3339212Sgibbs	clzti2 \
3455206Speter	cmpdi2 \
3539212Sgibbs	cmpti2 \
3639212Sgibbs	comparedf2 \
3739212Sgibbs	comparesf2 \
3839212Sgibbs	ctzdi2 \
3939212Sgibbs	ctzsi2 \
4039212Sgibbs	ctzti2 \
4139212Sgibbs	divdc3 \
4239212Sgibbs	divdi3 \
4339212Sgibbs	divmoddi4 \
4439212Sgibbs	divmodsi4 \
4539212Sgibbs	divsc3 \
4639212Sgibbs	divti3 \
4739212Sgibbs	divxc3 \
4839212Sgibbs	enable_execute_stack \
4939212Sgibbs	eprintf \
5039212Sgibbs	ffsdi2 \
5139212Sgibbs	ffsti2 \
5239212Sgibbs	fixdfdi \
5339212Sgibbs	fixdfti \
5439212Sgibbs	fixsfdi \
5539212Sgibbs	fixsfti \
5671507Sjhb	fixunsdfdi \
5739212Sgibbs	fixunsdfsi \
5839212Sgibbs	fixunsdfti \
5946581Sken	fixunssfdi \
6046581Sken	fixunssfsi \
6139212Sgibbs	fixunssfti \
6239212Sgibbs	fixunsxfdi \
6339212Sgibbs	fixunsxfsi \
6439212Sgibbs	fixunsxfti \
6539212Sgibbs	fixxfdi \
6639212Sgibbs	fixxfti \
6739212Sgibbs	floatdidf \
6839212Sgibbs	floatdisf \
6939212Sgibbs	floatdixf \
7071507Sjhb	floattidf \
7171507Sjhb	floattisf \
7271507Sjhb	floattixf \
7371507Sjhb	floatundidf \
7471507Sjhb	floatundisf \
7539212Sgibbs	floatundixf \
7639212Sgibbs	floatunsidf \
7739212Sgibbs	floatunsisf \
7839212Sgibbs	floatuntidf \
7939212Sgibbs	floatuntisf \
8039212Sgibbs	floatuntixf \
8139212Sgibbs	int_util \
8239212Sgibbs	lshrdi3 \
8339212Sgibbs	lshrti3 \
8439212Sgibbs	moddi3 \
8539212Sgibbs	modti3 \
8639212Sgibbs	muldc3 \
8739212Sgibbs	muldi3 \
8839212Sgibbs	mulodi4 \
8939212Sgibbs	mulosi4 \
9039212Sgibbs	muloti4 \
9171507Sjhb	mulsc3 \
9239212Sgibbs	multi3 \
9339212Sgibbs	mulvdi3 \
9439212Sgibbs	mulvsi3 \
9539212Sgibbs	mulvti3 \
9646581Sken	mulxc3 \
9746581Sken	negdf2 \
9839212Sgibbs	negdi2 \
9939212Sgibbs	negsf2 \
10039212Sgibbs	negti2 \
10139212Sgibbs	negvdi2 \
10239212Sgibbs	negvsi2 \
10339212Sgibbs	negvti2 \
10439212Sgibbs	paritydi2 \
10539212Sgibbs	paritysi2 \
10639212Sgibbs	parityti2 \
10739212Sgibbs	popcountdi2 \
10839212Sgibbs	popcountsi2 \
10939212Sgibbs	popcountti2 \
11071507Sjhb	powidf2 \
11139212Sgibbs	powisf2 \
11239212Sgibbs	powitf2 \
11339212Sgibbs	powixf2 \
11439212Sgibbs	subvdi3 \
11539212Sgibbs	subvsi3 \
11639212Sgibbs	subvti3 \
11739212Sgibbs	trampoline_setup \
11839212Sgibbs	ucmpdi2 \
11939212Sgibbs	ucmpti2 \
12039212Sgibbs	udivdi3 \
12139212Sgibbs	udivmoddi4 \
12239212Sgibbs	udivmodsi4 \
12339212Sgibbs	udivmodti4 \
12439212Sgibbs	udivti3 \
12539212Sgibbs	umoddi3 \
12639212Sgibbs	umodti3
12739212Sgibbs
12839212Sgibbs# Don't build clear_cache on ARM with clang as it is a builtin there.
12939212Sgibbs.if ${MACHINE_CPUARCH} != "arm" || ${COMPILER_TYPE} != "clang"
13039212SgibbsSRCF+=	clear_cache
13139212Sgibbs.endif
13239212Sgibbs
13339212Sgibbs# These are already shipped by libc.a on arm and mips
13455206Speter.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips"
13539212SgibbsSRCF+=	adddf3 \
136	addsf3 \
137	divdf3 \
138	divsf3 \
139	extendsfdf2 \
140	fixdfsi \
141	fixsfsi \
142	floatsidf \
143	floatsisf \
144	muldf3 \
145	mulsf3 \
146	subdf3 \
147	subsf3 \
148	truncdfsf2
149.endif
150
151.if ${MACHINE_CPUARCH} != "mips" && \
152    (${MACHINE_CPUARCH} != "arm" || ${MK_ARM_EABI} != "no")
153SRCF+=	divsi3 \
154	modsi3 \
155	udivsi3 \
156	umodsi3
157.endif
158
159# FreeBSD-specific atomic intrinsics.
160.if ${MACHINE_CPUARCH} == "arm"
161SRCF+=	__sync_fetch_and_add_4 \
162	__sync_fetch_and_and_4 \
163	__sync_fetch_and_or_4 \
164	__sync_fetch_and_sub_4 \
165	__sync_fetch_and_xor_4 \
166	__sync_lock_test_and_set_4 \
167	__sync_synchronize \
168	__sync_val_compare_and_swap_4
169.elif ${MACHINE_CPUARCH} == "mips"
170.PATH: ${.CURDIR}/../../sys/mips/mips
171
172SRCF+=	stdatomic
173.endif
174
175.for file in ${SRCF}
176. if ${MACHINE_CPUARCH} != "arm" && exists(${CRTSRC}/${CRTARCH}/${file}.S)
177SRCS+=	${file}.S
178. else
179SRCS+=	${file}.c
180. endif
181.endfor
182
183.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
184SRCS+=	aeabi_idivmod.S \
185	aeabi_ldivmod.S \
186	aeabi_memcmp.S \
187	aeabi_memcpy.S \
188	aeabi_memmove.S \
189	aeabi_memset.S \
190	aeabi_uidivmod.S \
191	aeabi_uldivmod.S
192.endif
193
194.if ${MK_INSTALLLIB} != "no"
195SYMLINKS+=libcompiler_rt.a ${LIBDIR}/libgcc.a
196.endif
197.if ${MK_PROFILE} != "no"
198SYMLINKS+=libcompiler_rt_p.a ${LIBDIR}/libgcc_p.a
199.endif
200
201.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \
202    ${MACHINE_CPUARCH} == "powerpc"
203AFLAGS+=--noexecstack
204ACFLAGS+=-Wa,--noexecstack
205.endif
206
207
208.include <bsd.lib.mk>
209