1########################################################################
2#
3# Shared libc with userspace (/common/lib/libc)
4#
5
6.for f in \
7	memchr.o
8${f}:	${LIBCOMMONCDIR}/string/${f:C/\.o/.c/}
9OBJS+=	${f}
10CLEANFILES+= ${f}
11.endfor
12
13.for f in \
14	lshldi3.o
15${f}:	${LIBCOMMONCDIR}/quad/${f:C/\.o/.c/}
16OBJS+=	${f}
17CLEANFILES+= ${f}
18.endfor
19
20.for f in \
21	byte_swap_2.o byte_swap_4.o
22${f}:	${LIBCOMMONCARCHDIR}/gen/${f:C/\.o/.S/}
23OBJS+=	${f}
24CLEANFILES+= ${f}
25.endfor
26
27.for f in \
28	__aeabi_idiv0.o __aeabi_ldiv0.o
29${f}:	${LIBCOMMONCARCHDIR}/gen/${f:C/\.o/.c/}
30OBJS+=	${f}
31CLEANFILES+= ${f}
32.endfor
33
34CPPFLAGS.__aeabi_idiv0.c+= -D_STANDALONE
35CPPFLAGS.__aeabi_ldiv0.c+= -D_STANDALONE
36
37#.for f in \
38#	__aeabi_ldivmod.o __aeabi_uldivmod.o
39#${f}:	${LIBCOMMONCARCHDIR}/quad/${f:C/\.o/.S/}
40#OBJS+=	${f}
41#CLEANFILES+= ${f}
42#.endfor
43
44.for f in \
45	memcmp.o memcpy.o memmove.o memset.o \
46	strcat.o strchr.o strcmp.o strcpy.o strlcpy.o strlen.o strncpy.o \
47	strncmp.o strrchr.o strcpy_arm.o
48${f}:	${LIBCOMMONCARCHDIR}/string/${f:C/\.o/.S/}
49OBJS+=	${f}
50CLEANFILES+= ${f}
51.endfor
52
53CPPFLAGS.strcpy_arm.S+= -DSTRLCPY -D_LIBC
54
55########################################################################
56#
57# Functions imported directly from libc.
58#
59.for f in \
60	alloca.o
61${f}:	${LIBCARCHDIR}/gen/${f:C/\.o/.S/}
62OBJS+=	${f}
63CLEANFILES+= ${f}
64.endfor
65
66.for f in \
67	__aeabi_dcmpeq.o __aeabi_fcmpeq.o \
68	__aeabi_dcmpge.o __aeabi_fcmpge.o \
69	__aeabi_dcmpgt.o __aeabi_fcmpgt.o \
70	__aeabi_dcmple.o __aeabi_fcmple.o \
71	__aeabi_dcmplt.o __aeabi_fcmplt.o \
72	__aeabi_dcmpun.o __aeabi_fcmpun.o
73CPPFLAGS.${f:C/\.o/.c/}+= -I${LIBCARCHDIR}/softfloat -I${LIBCDIR}/softfloat
74CPPFLAGS.${f:C/\.o/.c/}+= -DSOFTFLOAT_FOR_GCC
75${f}:	${LIBCARCHDIR}/softfloat/${f:C/\.o/.c/}
76OBJS+=	${f}
77CLEANFILES+= ${f}
78.endfor
79
80.for f in \
81	aeabi_uidivmod.o aeabi_ldivmod.o aeabi_uldivmod.o aeabi_idivmod.o
82${f}:	${NETBSDSRCDIR}/sys/external/bsd/compiler_rt/dist/lib/arm/${f:C/\.o/.S/}
83OBJS+=	${f}
84CLEANFILES+= ${f}
85.endfor
86
87.for f in \
88	fpgetround.o fpsetround.o fpgetmask.o fpsetmask.o \
89	fpgetsticky.o fpsetsticky.o
90CPPFLAGS.${f:C/\.o/.c/}+= -I${LIBCARCHDIR}/softfloat -I${LIBCDIR}/softfloat
91CPPFLAGS.${f:C/\.o/.c/}+= -DSOFTFLOAT_FOR_GCC
92${f}:	${LIBCDIR}/softfloat/${f:C/\.o/.c/}
93OBJS+=	${f}
94CLEANFILES+= ${f}
95.endfor
96
97SOFTFLOAT_BITS?=64
98.for f in \
99	softfloat.o
100CPPFLAGS.${f:C/\.o/.c/}+= -I${LIBCARCHDIR}/softfloat -I${LIBCDIR}/softfloat
101CPPFLAGS.${f:C/\.o/.c/}+= -DSOFTFLOAT_FOR_GCC
102${f}:	${LIBCDIR}/softfloat/bits${SOFTFLOAT_BITS}/${f:C/\.o/.c/}
103OBJS+=	${f}
104CLEANFILES+= ${f}
105.endfor
106
107.if defined(HAVE_GCC) && ${HAVE_GCC} >= 45
108.if (${MACHINE_CPU} == "arm")
109COPTS.softfloat.c+=	-Wno-enum-compare -fno-tree-vrp
110.endif
111.endif
112