xref: /openbsd/lib/libc/string/Makefile.inc (revision 3d8817e4)
1#	$OpenBSD: Makefile.inc,v 1.24 2011/04/04 18:16:24 stsp Exp $
2
3# string sources
4.PATH: ${LIBCSRCDIR}/arch/${MACHINE_CPU}/string ${LIBCSRCDIR}/string
5
6SRCS+=	bm.c memccpy.c memrchr.c strcasecmp.c strcasestr.c strcoll.c strdup.c \
7	strerror.c strerror_r.c strlcat.c strmode.c strndup.c strnlen.c \
8	strsignal.c strtok.c strxfrm.c \
9	wcscat.c wcschr.c wcscmp.c wcscpy.c wcscspn.c wcslcat.c wcslcpy.c \
10	wcslen.c wcsncat.c wcsncmp.c wcsncpy.c wcspbrk.c wcsrchr.c wcsspn.c \
11	wcsstr.c wcstok.c wcswcs.c wcswidth.c wmemchr.c wmemcmp.c wmemcpy.c \
12	wmemmove.c wmemset.c \
13	timingsafe_bcmp.c
14
15# machine-dependent net sources
16# m-d Makefile.inc must include sources for:
17#	bcmp() bcopy() bzero() ffs() index() memchr() memcmp() memset()
18#	rindex() strcat() strcmp() strcpy() strcspn() strlen() strlcpy()
19#	strncat() strncmp() strncpy() strpbrk() strsep()
20#	strspn() strstr() swav()
21# m-d Makefile.inc may include sources for:
22#	memcpy() memmove() strchr() strrchr()
23
24.include "${LIBCSRCDIR}/arch/${MACHINE_CPU}/string/Makefile.inc"
25
26# if no machine specific memmove(3), build one out of bcopy(3).
27.if empty(SRCS:Mmemmove.S)
28OBJS+=	memmove.o
29memmove.o: bcopy.c
30	${CC} -DMEMMOVE ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} -o ${.TARGET}
31	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
32	@mv ${.TARGET}.tmp ${.TARGET}
33
34memmove.go: bcopy.c
35	${CC} -g -DMEMMOVE ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} -o ${.TARGET}
36	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
37	@mv ${.TARGET}.tmp ${.TARGET}
38
39memmove.po: bcopy.c
40	${CC} -DMEMMOVE ${CFLAGS} ${CPPFLAGS} -c -p ${.ALLSRC} -o ${.TARGET}
41	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
42	@mv ${.TARGET}.tmp ${.TARGET}
43
44memmove.so: bcopy.c
45	${CC} ${PICFLAG} -DPIC -DMEMMOVE ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} \
46		-o ${.TARGET}
47.endif
48
49# if no machine specific memcpy(3), build one out of bcopy(3).
50# if there is a machine specific memmove(3), we'll assume it aliases
51# memcpy(3).
52.if empty(SRCS:Mmemcpy.S)
53.if empty(SRCS:Mmemmove.S)
54OBJS+=	memcpy.o
55memcpy.o: bcopy.c
56	${CC} -DMEMCOPY ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} -o ${.TARGET}
57	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
58	@mv ${.TARGET}.tmp ${.TARGET}
59
60memcpy.go: bcopy.c
61	${CC} -g -DMEMCOPY ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} -o ${.TARGET}
62	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
63	@mv ${.TARGET}.tmp ${.TARGET}
64
65memcpy.po: bcopy.c
66	${CC} -DMEMCOPY ${CFLAGS} ${CPPFLAGS} -c -p ${.ALLSRC} -o ${.TARGET}
67	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
68	@mv ${.TARGET}.tmp ${.TARGET}
69
70memcpy.so: bcopy.c
71	${CC} ${PICFLAG} -DPIC -DMEMCOPY ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} \
72		-o ${.TARGET}
73.endif
74.endif
75
76# if no machine specific strchr(3), build one out of index(3).
77.if empty(SRCS:Mstrchr.S)
78OBJS+=	strchr.o
79strchr.o: index.c
80	${CC} -DSTRCHR ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} -o ${.TARGET}
81	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
82	@mv ${.TARGET}.tmp ${.TARGET}
83
84strchr.go: index.c
85	${CC} -g -DSTRCHR ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} -o ${.TARGET}
86	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
87	@mv ${.TARGET}.tmp ${.TARGET}
88
89strchr.po: index.c
90	${CC} -DSTRCHR ${CFLAGS} ${CPPFLAGS} -c -p ${.ALLSRC} -o ${.TARGET}
91	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
92	@mv ${.TARGET}.tmp ${.TARGET}
93
94strchr.so: index.c
95	${CC} ${PICFLAG} -DPIC -DSTRCHR ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} \
96	    -o ${.TARGET}
97.endif
98
99# if no machine specific strrchr(3), build one out of rindex(3).
100.if empty(SRCS:Mstrrchr.S)
101OBJS+=	strrchr.o
102strrchr.o: rindex.c
103	${CC} -DSTRRCHR ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} -o ${.TARGET}
104	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
105	@mv ${.TARGET}.tmp ${.TARGET}
106
107strrchr.go: rindex.c
108	${CC} -g -DSTRRCHR ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} -o ${.TARGET}
109	@${LD} -o ${.TARGET}.tmp -x -r ${.TARGET}
110	@mv ${.TARGET}.tmp ${.TARGET}
111
112strrchr.po: rindex.c
113	${CC} -DSTRRCHR ${CFLAGS} ${CPPFLAGS} -c -p ${.ALLSRC} -o ${.TARGET}
114	@${LD} -o ${.TARGET}.tmp -X -r ${.TARGET}
115	@mv ${.TARGET}.tmp ${.TARGET}
116
117strrchr.so: rindex.c
118	${CC} ${PICFLAG} -DPIC -DSTRRCHR ${CFLAGS} ${CPPFLAGS} -c ${.ALLSRC} \
119	    -o ${.TARGET}
120.endif
121
122# build .ln files for memmove, memcpy, strchr and strrchr always from
123# bcopy, index, and rindex
124LOBJS+=	memmove.ln memcpy.ln strchr.ln strrchr.ln
125
126memmove.ln: bcopy.c
127	lint ${LINTFLAGS} -DMEMMOVE ${CFLAGS:M-[IDU]*} -i -o ${.TARGET} \
128		${LIBCSRCDIR}/string/bcopy.c
129
130memcpy.ln: bcopy.c
131	lint ${LINTFLAGS} -DMEMCOPY ${CFLAGS:M-[IDU]*} -i -o ${.TARGET} \
132		${LIBCSRCDIR}/string/bcopy.c
133
134strchr.ln: index.c
135	lint ${LINTFLAGS} -DSTRCHR ${CFLAGS:M-[IDU]*} -i -o ${.TARGET} \
136		${LIBCSRCDIR}/string/index.c
137
138strrchr.ln: rindex.c
139	lint ${LINTFLAGS} -DSTRRCHR ${CFLAGS:M-[IDU]*} -i -o ${.TARGET} \
140		${LIBCSRCDIR}/string/rindex.c
141
142MAN+=	bm.3 bcmp.3 bcopy.3 bstring.3 bzero.3 ffs.3 memccpy.3 memchr.3 \
143	memcmp.3 memcpy.3 memmove.3 memset.3 strcasecmp.3 strcat.3 \
144	strchr.3 strcmp.3 strcoll.3 strcpy.3 strcspn.3 strerror.3 \
145	string.3 strlen.3 strmode.3 strdup.3 strpbrk.3 strrchr.3 strsep.3 \
146	strsignal.3 strspn.3 strstr.3 strtok.3 strxfrm.3 swab.3 strlcpy.3 \
147	wcstok.3 wmemchr.3 wcswidth.3
148
149MLINKS+=bm.3 bm_comp.3 bm.3 bm_exec.3 bm.3 bm_free.3
150MLINKS+=memchr.3 memrchr.3
151MLINKS+=strchr.3 index.3
152MLINKS+=strrchr.3 rindex.3
153MLINKS+=strcasecmp.3 strncasecmp.3
154MLINKS+=strcat.3 strncat.3
155MLINKS+=strcmp.3 strncmp.3
156MLINKS+=strcpy.3 strncpy.3
157MLINKS+=strdup.3 strndup.3
158MLINKS+=strlcpy.3 strlcat.3
159MLINKS+=strlen.3 strnlen.3
160MLINKS+=strstr.3 strcasestr.3
161MLINKS+=strtok.3 strtok_r.3
162MLINKS+=strerror.3 strerror_r.3
163MLINKS+=wmemchr.3 wmemcmp.3
164MLINKS+=wmemchr.3 wmemcpy.3
165MLINKS+=wmemchr.3 wmemmove.3
166MLINKS+=wmemchr.3 wmemset.3
167MLINKS+=wmemchr.3 wcscat.3
168MLINKS+=wmemchr.3 wcschr.3
169MLINKS+=wmemchr.3 wcscmp.3
170MLINKS+=wmemchr.3 wcscpy.3
171MLINKS+=wmemchr.3 wcscspn.3
172MLINKS+=wmemchr.3 wcslcat.3
173MLINKS+=wmemchr.3 wcslcpy.3
174MLINKS+=wmemchr.3 wcslen.3
175MLINKS+=wmemchr.3 wcsncat.3
176MLINKS+=wmemchr.3 wcsncmp.3
177MLINKS+=wmemchr.3 wcsncpy.3
178MLINKS+=wmemchr.3 wcspbrk.3
179MLINKS+=wmemchr.3 wcsrchr.3
180MLINKS+=wmemchr.3 wcsspn.3
181MLINKS+=wmemchr.3 wcsstr.3
182MLINKS+=bcmp.3 timingsafe_bcmp.3
183