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