xref: /minix/minix/lib/libminc/Makefile (revision 83133719)
1#
2# Minimal libc for servers and drivers.
3#
4
5# LSC: TODO: Explaination of how this works
6#.for f in \
7#${f} ${f:C/\.o/.bc/}:	${NETBSDSRCDIR}//${f:C/\.o/.S/}
8#OBJS+=	${f} ${f:C/\.o/.bc/}
9#CLEANFILES+= ${f} ${f:C/\.o/.bc/}
10#
11#.if ${USE_BITCODE:Uno} == "yes"
12#OBJS+=	${f:C/\.o/.bc/}
13#CLEANFILES+= ${f:C/\.o/.bc/}
14#.endif # ${USE_BITCODE:Uno} == "yes"
15
16#.endfor
17
18.include <bsd.own.mk>
19
20LIB=		minc
21
22MKPIC=		no # Never used as a dynamic library
23
24LIBSADIR=	${NETBSDSRCDIR}/sys/lib/libsa
25LIBSYSDIR=	${NETBSDSRCDIR}/minix/lib/libsys
26LIBMINIXCDIR=	${NETBSDSRCDIR}/minix/lib/libc
27LIBMINIXCARCHDIR= ${NETBSDSRCDIR}/minix/lib/libc/arch/${MACHINE_CPU}
28LIBCDIR=	${NETBSDSRCDIR}/lib/libc
29LIBCARCHDIR=	${LIBCDIR}/arch/${MACHINE_CPU}
30LIBCOMMONCDIR=	${NETBSDSRCDIR}/common/lib/libc
31LIBCOMMONCARCHDIR= ${LIBCOMMONCDIR}/arch/${MACHINE_CPU}
32
33CPPFLAGS+=	-I${LIBCDIR}/include -I${LIBCDIR}
34CPPFLAGS+=	-D_LIBMINC
35
36CFLAGS+=	-fno-builtin
37
38#
39# Customized versions of libc functions.
40#
41SRCS+= atoi.c fputs.c _snprintf.c strtol.c
42CPPFLAGS._snprintf.c+=	-I${LIBSADIR}
43
44CPPFLAGS.strtol.c+=	-D_STANDALONE
45CPPFLAGS.strtol.c+=	-I${LIBCOMMONCDIR}/stdlib
46CPPFLAGS.strtol.c+=	-I${NETBSDSRCDIR}/sys
47
48########################################################################
49#
50# Functions imported from libsa (StandAlone)
51#
52.for f in \
53	errno.o printf.o sprintf.o strerror.o subr_prf.o
54${f} ${f:C/\.o/.bc/}:	${LIBSADIR}/${f:C/\.o/.c/}
55OBJS+=	${f}
56CLEANFILES+= ${f}
57
58.if ${USE_BITCODE:Uno} == "yes"
59OBJS+=	${f:C/\.o/.bc/}
60CLEANFILES+= ${f:C/\.o/.bc/}
61.endif # ${USE_BITCODE:Uno} == "yes"
62.endfor
63
64CPPFLAGS.fslib.c+= -I${NETBSDSRCDIR}/minix/fs
65
66# LSC: I would like not to have to copy te file, but I can't
67#      have libsa appear first in the .PATH, for a lot of files
68#      would be taken from there, which is not the intention ATM.
69CPPFLAGS.strerror.c+= -I${LIBSADIR}
70
71# LSC: putchar and kputc have the same role / signature.
72CPPFLAGS.subr_prf.c+= -Dputchar=kputc
73
74# Activate optional support, may be deactivated.
75CPPFLAGS.subr_prf.c+= -DLIBSA_PRINTF_LONGLONG_SUPPORT
76CPPFLAGS.subr_prf.c+= -DLIBSA_PRINTF_WIDTH_SUPPORT
77
78########################################################################
79#
80# Imports from libsys
81#
82.for f in \
83	kputc.o sys_diagctl.o
84${f} ${f:C/\.o/.bc/}:	${LIBSYSDIR}/${f:C/\.o/.c/}
85OBJS+=	${f}
86CLEANFILES+= ${f}
87
88.if ${USE_BITCODE:Uno} == "yes"
89OBJS+=	${f:C/\.o/.bc/}
90CLEANFILES+= ${f:C/\.o/.bc/}
91.endif # ${USE_BITCODE:Uno} == "yes"
92.endfor
93
94########################################################################
95#
96# Shared libc with userspace (/common/lib/libc)
97#
98
99.for f in \
100	bswap64.o rb.o
101${f} ${f:C/\.o/.bc/}:	${LIBCOMMONCDIR}/gen/${f:C/\.o/.c/}
102OBJS+=	${f}
103CLEANFILES+= ${f}
104
105.if ${USE_BITCODE:Uno} == "yes"
106OBJS+=	${f:C/\.o/.bc/}
107CLEANFILES+= ${f:C/\.o/.bc/}
108.endif # ${USE_BITCODE:Uno} == "yes"
109.endfor
110
111CPPFLAGS.bswap64.c+=	-D_STANDALONE
112CPPFLAGS.rb.c+=		-D_LIBC
113
114.for f in \
115	sha2.o
116${f} ${f:C/\.o/.bc/}:	${LIBCOMMONCDIR}/hash/sha2/${f:C/\.o/.c/}
117OBJS+=	${f}
118CLEANFILES+= ${f}
119
120.if ${USE_BITCODE:Uno} == "yes"
121OBJS+=	${f:C/\.o/.bc/}
122CLEANFILES+= ${f:C/\.o/.bc/}
123.endif # ${USE_BITCODE:Uno} == "yes"
124.endfor
125
126CPPFLAGS.sha2.c+=	-D_STANDALONE
127CPPFLAGS.sha2.c+=	-I${NETBSDSRCDIR}/sys
128
129.for f in \
130	ashrdi3.o divdi3.o lshldi3.o lshrdi3.o moddi3.o \
131	udivdi3.o umoddi3.o qdivrem.o
132${f} ${f:C/\.o/.bc/}:	${LIBCOMMONCDIR}/quad/${f:C/\.o/.c/}
133OBJS+=	${f}
134CLEANFILES+= ${f}
135
136.if ${USE_BITCODE:Uno} == "yes"
137OBJS+=	${f:C/\.o/.bc/}
138CLEANFILES+= ${f:C/\.o/.bc/}
139.endif # ${USE_BITCODE:Uno} == "yes"
140.endfor
141
142.for f in \
143	random.o strtoul.o
144${f} ${f:C/\.o/.bc/}:	${LIBCOMMONCDIR}/stdlib/${f:C/\.o/.c/}
145OBJS+=	${f}
146CLEANFILES+= ${f}
147
148.if ${USE_BITCODE:Uno} == "yes"
149OBJS+=	${f:C/\.o/.bc/}
150CLEANFILES+= ${f:C/\.o/.bc/}
151.endif # ${USE_BITCODE:Uno} == "yes"
152.endfor
153
154CPPFLAGS.strtoul.c+=	-D_STANDALONE
155CPPFLAGS.strtoul.c+=	-I${NETBSDSRCDIR}/sys
156
157.for f in \
158	strcasecmp.o strncasecmp.o strnlen.o strlcat.o
159${f} ${f:C/\.o/.bc/}:	${LIBCOMMONCDIR}/string/${f:C/\.o/.c/}
160OBJS+=	${f}
161CLEANFILES+= ${f}
162
163.if ${USE_BITCODE:Uno} == "yes"
164OBJS+=	${f:C/\.o/.bc/}
165CLEANFILES+= ${f:C/\.o/.bc/}
166.endif # ${USE_BITCODE:Uno} == "yes"
167.endfor
168
169########################################################################
170#
171# Functions imported directly from libc.
172#
173
174.include "${.CURDIR}/arch/${MACHINE_ARCH}/Makefile.libc.inc"
175
176# This file is specifically generated
177SRCS+= errlist.c
178
179errlist.c: ${LIBCDIR}/gen/errlist.awk \
180	   ${NETBSDSRCDIR}/sys/sys/errno.h
181	${TOOL_CAT} ${NETBSDSRCDIR}/sys/sys/errno.h | ${TOOL_SED} 's/(_SIGN//' | ${TOOL_AWK} -f ${LIBCDIR}/gen/errlist.awk > ${.TARGET}
182CLEANFILES+=	errlist.c
183
184.for f in \
185	_errno.o \
186	getprogname.o setprogname.o execle.o sleep.o time.o \
187	ctype_.o tolower_.o toupper_.o usleep.o sigsetops.o
188${f} ${f:C/\.o/.bc/}:	${LIBCDIR}/gen/${f:C/\.o/.c/}
189OBJS+=	${f}
190CLEANFILES+= ${f}
191
192.if ${USE_BITCODE:Uno} == "yes"
193OBJS+=	${f:C/\.o/.bc/}
194CLEANFILES+= ${f:C/\.o/.bc/}
195.endif # ${USE_BITCODE:Uno} == "yes"
196.endfor
197
198CPPFLAGS.ctype_.c+= -I${LIBCDIR}/locale
199CPPFLAGS.isctype.c+= -I${LIBCDIR}/locale
200CPPFLAGS.tolower_.c+= -I${LIBCDIR}/locale
201CPPFLAGS.toupper_.c+= -I${LIBCDIR}/locale
202
203.for f in \
204	waitpid.o read_tsc_64.o fslib.o itoa.o
205${f} ${f:C/\.o/.bc/}:	${LIBMINIXCDIR}/gen/${f:C/\.o/.c/}
206OBJS+=	${f}
207CLEANFILES+= ${f}
208
209.if ${USE_BITCODE:Uno} == "yes"
210OBJS+=	${f:C/\.o/.bc/}
211CLEANFILES+= ${f:C/\.o/.bc/}
212.endif # ${USE_BITCODE:Uno} == "yes"
213.endfor
214
215.for f in \
216	initfini.o stack_protector.o
217${f} ${f:C/\.o/.bc/}:	${LIBCDIR}/misc/${f:C/\.o/.c/}
218OBJS+=	${f}
219CLEANFILES+= ${f}
220
221.if ${USE_BITCODE:Uno} == "yes"
222OBJS+=	${f:C/\.o/.bc/}
223CLEANFILES+= ${f:C/\.o/.bc/}
224.endif # ${USE_BITCODE:Uno} == "yes"
225.endfor
226
227CPPFLAGS.stack_protector.c+= -Dxprintf=printf
228
229.for f in \
230	regcomp.o regerror.o regexec.o regfree.o
231${f} ${f:C/\.o/.bc/}:	${LIBCDIR}/regex/${f:C/\.o/.c/}
232OBJS+=	${f}
233CLEANFILES+= ${f}
234
235.if ${USE_BITCODE:Uno} == "yes"
236OBJS+=	${f:C/\.o/.bc/}
237CLEANFILES+= ${f:C/\.o/.bc/}
238.endif # ${USE_BITCODE:Uno} == "yes"
239.endfor
240
241.for f in \
242	abort.o atexit.o _env.o exit.o getenv.o \
243	ldiv.o malloc.o \
244	_rand48.o lrand48.o srand48.o
245${f} ${f:C/\.o/.bc/}:	${LIBCDIR}/stdlib/${f:C/\.o/.c/}
246OBJS+=	${f}
247CLEANFILES+= ${f}
248
249.if ${USE_BITCODE:Uno} == "yes"
250OBJS+=	${f:C/\.o/.bc/}
251CLEANFILES+= ${f:C/\.o/.bc/}
252.endif # ${USE_BITCODE:Uno} == "yes"
253
254# LSC FIXME: Try to get this out of the loop
255CPPFLAGS.${i}+=	-I${LIBCDIR}/stdlib
256.endfor
257
258.for f in \
259	strcspn.o
260${f} ${f:C/\.o/.bc/}:	${LIBCDIR}/string/${f:C/\.o/.c/}
261OBJS+=	${f}
262CLEANFILES+= ${f}
263
264.if ${USE_BITCODE:Uno} == "yes"
265OBJS+=	${f:C/\.o/.bc/}
266CLEANFILES+= ${f:C/\.o/.bc/}
267.endif # ${USE_BITCODE:Uno} == "yes"
268.endfor
269CPPFLAGS.strcspn.c+=	-D_LIBC
270
271.for f in \
272	access.o brk.o close.o environ.o execve.o fork.o fsync.o \
273	getgid.o getpid.o geteuid.o getuid.o gettimeofday.o getvfsstat.o \
274	init.o link.o loadname.o lseek.o _mcontext.o mknod.o \
275	mmap.o nanosleep.o open.o pread.o pwrite.o read.o sbrk.o \
276	select.o setuid.o sigprocmask.o stack_utils.o stat.o stime.o \
277	syscall.o _ucontext.o umask.o unlink.o write.o \
278	kill.o
279${f} ${f:C/\.o/.bc/}:	${LIBMINIXCDIR}/sys/${f:C/\.o/.c/}
280OBJS+=	${f}
281CLEANFILES+= ${f}
282
283.if ${USE_BITCODE:Uno} == "yes"
284OBJS+=	${f:C/\.o/.bc/}
285CLEANFILES+= ${f:C/\.o/.bc/}
286.endif # ${USE_BITCODE:Uno} == "yes"
287.endfor
288
289CPPFLAGS.malloc.c+= -D_LIBSYS
290
291.for f in \
292	brksize.o _do_kernel_call_intr.o get_minix_kerninfo.o _ipc.o ucontext.o
293${f} ${f:C/\.o/.bc/}:	${LIBMINIXCARCHDIR}/sys/${f:C/\.o/.S/}
294OBJS+=	${f}
295CLEANFILES+= ${f}
296
297.if ${USE_BITCODE:Uno} == "yes"
298OBJS+=	${f:C/\.o/.bc/}
299CLEANFILES+= ${f:C/\.o/.bc/}
300.endif # ${USE_BITCODE:Uno} == "yes"
301.endfor
302
303ARCHSUBDIR=${MACHINE_CPU}
304.include "${NETBSDSRCDIR}/minix/lib/libc/arch/${MACHINE_CPU}/Makefile.inc"
305
306.include <bsd.lib.mk>
307