Makefile revision 251791
11541Srgrimes# $FreeBSD: head/lib/libcompiler_rt/Makefile 251791 2013-06-15 12:16:27Z andrew $
21541Srgrimes
31541Srgrimes.include <bsd.own.mk>
41541Srgrimes
51541SrgrimesLIB=	compiler_rt
61541SrgrimesNO_PIC=
71541SrgrimesWARNS?=	2
81541Srgrimes
91541SrgrimesCFLAGS+=${PICFLAG} -fvisibility=hidden -DVISIBILITY_HIDDEN
101541Srgrimes
111541Srgrimes.if ${MACHINE_CPUARCH} == "amd64"
121541SrgrimesCRTARCH=x86_64
131541Srgrimes.else
141541SrgrimesCRTARCH=${MACHINE_CPUARCH}
151541Srgrimes.endif
161541Srgrimes
171541SrgrimesCRTSRC=${.CURDIR}/../../contrib/compiler-rt/lib
181541Srgrimes
191541Srgrimes.PATH: ${CRTSRC}/${CRTARCH} ${CRTSRC}
201541Srgrimes
211541SrgrimesSRCF=	absvdi2 \
221541Srgrimes	absvsi2 \
231541Srgrimes	absvti2 \
241541Srgrimes	addvdi3 \
251541Srgrimes	addvsi3 \
261541Srgrimes	addvti3 \
271541Srgrimes	ashldi3 \
281541Srgrimes	ashlti3 \
291541Srgrimes	ashrdi3 \
301541Srgrimes	ashrti3 \
311541Srgrimes	clear_cache \
321541Srgrimes	clzdi2 \
3322521Sdyson	clzsi2 \
3450477Speter	clzti2 \
351541Srgrimes	cmpdi2 \
3622521Sdyson	cmpti2 \
3722521Sdyson	comparedf2 \
3822521Sdyson	comparesf2 \
3922521Sdyson	ctzdi2 \
4022521Sdyson	ctzsi2 \
4122521Sdyson	ctzti2 \
4222521Sdyson	divdc3 \
4322521Sdyson	divdi3 \
4422521Sdyson	divmoddi4 \
4522521Sdyson	divmodsi4 \
4654444Seivind	divsc3 \
4754444Seivind	divti3 \
4854444Seivind	divxc3 \
4954444Seivind	enable_execute_stack \
5054444Seivind	eprintf \
5145058Seivind	ffsdi2 \
5222521Sdyson	ffsti2 \
5322521Sdyson	fixdfdi \
5422521Sdyson	fixdfti \
5522521Sdyson	fixsfdi \
5622521Sdyson	fixsfti \
5722521Sdyson	fixunsdfdi \
5851679Seivind	fixunsdfsi \
5951679Seivind	fixunsdfti \
6051679Seivind	fixunssfdi \
6151679Seivind	fixunssfsi \
6254444Seivind	fixunssfti \
6351679Seivind	fixunsxfdi \
6451679Seivind	fixunsxfsi \
6551679Seivind	fixunsxfti \
6622521Sdyson	fixxfdi \
6722521Sdyson	fixxfti \
6822521Sdyson	floatdidf \
6922521Sdyson	floatdisf \
7022521Sdyson	floatdixf \
7122521Sdyson	floattidf \
7222521Sdyson	floattisf \
731541Srgrimes	floattixf \
741541Srgrimes	floatundidf \
751541Srgrimes	floatundisf \
761541Srgrimes	floatundixf \
771541Srgrimes	floatunsidf \
781541Srgrimes	floatunsisf \
7922521Sdyson	floatuntidf \
8028732Sphk	floatuntisf \
8128732Sphk	floatuntixf \
8228732Sphk	int_util \
8328732Sphk	lshrdi3 \
8428732Sphk	lshrti3 \
8528732Sphk	moddi3 \
8628732Sphk	modti3 \
8728732Sphk	muldc3 \
8828732Sphk	muldi3 \
8928732Sphk	mulodi4 \
9028732Sphk	mulosi4 \
9128732Sphk	muloti4 \
9235823Smsmith	mulsc3 \
9322521Sdyson	multi3 \
9422521Sdyson	mulvdi3 \
951541Srgrimes	mulvsi3 \
9635823Smsmith	mulvti3 \
971541Srgrimes	mulxc3 \
981541Srgrimes	negdf2 \
991541Srgrimes	negdi2 \
1001541Srgrimes	negsf2 \
1011541Srgrimes	negti2 \
10222521Sdyson	negvdi2 \
10322521Sdyson	negvsi2 \
10422521Sdyson	negvti2 \
10522521Sdyson	paritydi2 \
10635823Smsmith	paritysi2 \
10722521Sdyson	parityti2 \
10822521Sdyson	popcountdi2 \
10922521Sdyson	popcountsi2 \
11022521Sdyson	popcountti2 \
11122521Sdyson	powidf2 \
11235823Smsmith	powisf2 \
11322521Sdyson	powitf2 \
11422521Sdyson	powixf2 \
1151541Srgrimes	subvdi3 \
11635823Smsmith	subvsi3 \
11753101Seivind	subvti3 \
1181541Srgrimes	trampoline_setup \
1191541Srgrimes	ucmpdi2 \
1201541Srgrimes	ucmpti2 \
1211541Srgrimes	udivdi3 \
12222521Sdyson	udivmoddi4 \
12322521Sdyson	udivmodsi4 \
12422521Sdyson	udivmodti4 \
1251541Srgrimes	udivti3 \
1261541Srgrimes	umoddi3 \
1271541Srgrimes	umodti3
1281541Srgrimes
1291541Srgrimes# These are already shipped by libc.a on arm and mips
1301541Srgrimes.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips"
1311541SrgrimesSRCF+=	adddf3 \
13222521Sdyson	addsf3 \
13322521Sdyson	divdf3 \
13422521Sdyson	divsf3 \
1351541Srgrimes	extendsfdf2 \
1361541Srgrimes	fixdfsi \
1371541Srgrimes	fixsfsi \
1381541Srgrimes	floatsidf \
1391541Srgrimes	floatsisf \
1401541Srgrimes	muldf3 \
1411541Srgrimes	mulsf3 \
14222521Sdyson	subdf3 \
14322521Sdyson	subsf3 \
14422521Sdyson	truncdfsf2
1451541Srgrimes.endif
1461541Srgrimes
1471541Srgrimes.if ${MACHINE_CPUARCH} != "mips" && \
1481541Srgrimes    (${MACHINE_CPUARCH} != "arm" || ${MK_ARM_EABI} != "no")
1491541SrgrimesSRCF+=	divsi3 \
1501541Srgrimes	modsi3 \
1511541Srgrimes	udivsi3 \
15222521Sdyson	umodsi3
15322521Sdyson.endif
15422521Sdyson
1551541Srgrimes# FreeBSD-specific atomic intrinsics.
1561541Srgrimes.if ${MACHINE_CPUARCH} == "arm"
15754803Srwatson.PATH: ${.CURDIR}/../../sys/arm/arm
1581541Srgrimes
1591541SrgrimesSRCF+=	stdatomic
1601541Srgrimes.elif ${MACHINE_CPUARCH} == "mips"
1611541Srgrimes.PATH: ${.CURDIR}/../../sys/mips/mips
16222521Sdyson
16322521SdysonSRCF+=	stdatomic
16422521Sdyson.endif
1651541Srgrimes
1661541Srgrimes.for file in ${SRCF}
1671541Srgrimes. if ${MACHINE_CPUARCH} != "arm" && exists(${CRTSRC}/${CRTARCH}/${file}.S)
1681541SrgrimesSRCS+=	${file}.S
1691541Srgrimes. else
1701541SrgrimesSRCS+=	${file}.c
1711541Srgrimes. endif
17222521Sdyson.endfor
17322521Sdyson
17422521Sdyson.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
1751541SrgrimesSRCS+=	aeabi_idivmod.S \
1761541Srgrimes	aeabi_ldivmod.S \
1771541Srgrimes	aeabi_memcmp.S \
1781541Srgrimes	aeabi_memcpy.S \
1791541Srgrimes	aeabi_memmove.S \
1801541Srgrimes	aeabi_memset.S \
1811541Srgrimes	aeabi_uidivmod.S \
18222521Sdyson	aeabi_uldivmod.S
18322521Sdyson.endif
18422521Sdyson
1851541Srgrimes.if ${MK_INSTALLLIB} != "no"
1861541SrgrimesSYMLINKS+=libcompiler_rt.a ${LIBDIR}/libgcc.a
1871541Srgrimes.endif
1881541Srgrimes.if ${MK_PROFILE} != "no"
1891541SrgrimesSYMLINKS+=libcompiler_rt_p.a ${LIBDIR}/libgcc_p.a
1901541Srgrimes.endif
1911541Srgrimes
19222521Sdyson.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \
19322521Sdyson    ${MACHINE_CPUARCH} == "powerpc"
19422521SdysonAFLAGS+=--noexecstack
19522521SdysonACFLAGS+=-Wa,--noexecstack
19622521Sdyson.endif
19722521Sdyson
19822521Sdyson
19922521Sdyson.include <bsd.lib.mk>
20022521Sdyson