Makefile.inc revision 1.140
1#	$OpenBSD: Makefile.inc,v 1.140 2016/03/30 07:52:47 guenther Exp $
2#	$NetBSD: Makefile.inc,v 1.35 1995/10/16 23:49:07 jtc Exp $
3#	@(#)Makefile.inc	8.1 (Berkeley) 6/17/93
4
5# sys sources
6.PATH: ${LIBCSRCDIR}/arch/${MACHINE_CPU}/sys ${LIBCSRCDIR}/sys
7
8# modules with non-default implementations on at least one architecture:
9SRCS+=	Ovfork.S brk.S cerror.S fork.S \
10	sbrk.S sigpending.S sigprocmask.S sigreturn.S \
11	sigsuspend.S syscall.S tfork_thread.S
12
13# glue to offer userland wrappers for some syscalls
14SRCS+=	posix_madvise.c pthread_sigmask.c \
15	w_fork.c w_sigaction.c w_sigprocmask.c
16
17# glue to provide compatibility between GCC 1.X and 2.X and for compat
18# with old syscall interfaces.
19SRCS+=	ftruncate.c lseek.c mquery.c mmap.c ptrace.c semctl.c truncate.c \
20	timer_create.c timer_delete.c timer_getoverrun.c timer_gettime.c \
21	timer_settime.c pread.c preadv.c pwrite.c pwritev.c
22
23# stack protector helper functions
24SRCS+=	stack_protector.c
25
26# modules with default implementations on all architectures, unless overridden
27# below:
28ASM=	__get_tcb.o __getcwd.o __semctl.o __set_tcb.o __syscall.o \
29	__threxit.o __thrsigdivert.o __thrsleep.o \
30	__thrwakeup.o accept.o accept4.o access.o acct.o adjfreq.o adjtime.o \
31	bind.o chdir.o chflags.o chflagsat.o chmod.o chown.o chroot.o \
32	clock_getres.o clock_gettime.o clock_settime.o close.o \
33	closefrom.o connect.o dup.o dup2.o dup3.o execve.o faccessat.o \
34	fchdir.o fchflags.o fchmod.o fchmodat.o fchown.o \
35	fchownat.o fcntl.o fhopen.o fhstat.o fhstatfs.o \
36	flock.o fpathconf.o fstat.o fstatat.o fstatfs.o \
37	fsync.o futimens.o futimes.o getentropy.o getdents.o getdtablecount.o \
38	getegid.o geteuid.o getfh.o getfsstat.o getgid.o \
39	getgroups.o getitimer.o getpeername.o getpgid.o getpgrp.o \
40	getpid.o getppid.o getpriority.o getresgid.o getresuid.o \
41	getrlimit.o getrtable.o getrusage.o getsid.o getsockname.o \
42	getsockopt.o getthrid.o gettimeofday.o getuid.o ioctl.o \
43	issetugid.o kevent.o kill.o kqueue.o ktrace.o lchown.o \
44	link.o linkat.o listen.o lstat.o madvise.o mincore.o \
45	minherit.o mkdir.o mkdirat.o mkfifo.o mkfifoat.o \
46	mknod.o mknodat.o mlock.o mlockall.o mount.o mprotect.o \
47	msgctl.o msgget.o msgrcv.o msgsnd.o msync.o munlock.o \
48	munlockall.o munmap.o nanosleep.o nfssvc.o \
49	open.o openat.o pathconf.o pipe.o pipe2.o pledge.o \
50	poll.o ppoll.o profil.o pselect.o \
51	quotactl.o read.o readlink.o readlinkat.o readv.o reboot.o \
52	recvfrom.o recvmsg.o rename.o renameat.o revoke.o rmdir.o \
53	sched_yield.o select.o semget.o semop.o sendmsg.o sendsyslog.o \
54	sendto.o \
55	setegid.o seteuid.o setgid.o setgroups.o setitimer.o setlogin.o \
56	setpgid.o setpriority.o setregid.o setresgid.o setresuid.o \
57	setreuid.o setrlimit.o setrtable.o setsid.o setsockopt.o \
58	settimeofday.o setuid.o shmat.o shmctl.o shmdt.o \
59	shmget.o shutdown.o sigaltstack.o socket.o \
60	socketpair.o stat.o statfs.o swapctl.o symlink.o symlinkat.o \
61	sync.o sysarch.o sysctl.o thrkill.o umask.o unlink.o unlinkat.o \
62	unmount.o utimensat.o utimes.o utrace.o wait4.o write.o writev.o
63
64SRCS+=	${SRCS_${MACHINE_CPU}}
65.for i in ${SRCS_${MACHINE_CPU}}
66ASM:=	${ASM:N${i:R}.o}
67.endfor
68
69GASM=	${ASM:.o=.go}
70PASM=	${ASM:.o=.po}
71SASM=	${ASM:.o=.so}
72DASM=	${ASM:.o=.do}
73
74PSEUDO=	_ptrace.o
75GPSEUDO=${PSEUDO:.o=.go}
76PPSEUDO=${PSEUDO:.o=.po}
77SPSEUDO=${PSEUDO:.o=.so}
78DPSEUDO=${PSEUDO:.o=.do}
79
80PSEUDO_NOERR=	_exit.o getlogin_r.o
81GPSEUDO_NOERR=${PSEUDO_NOERR:.o=.go}
82PPSEUDO_NOERR=${PSEUDO_NOERR:.o=.po}
83SPSEUDO_NOERR=${PSEUDO_NOERR:.o=.so}
84DPSEUDO_NOERR=${PSEUDO_NOERR:.o=.do}
85
86HIDDEN= sigaction.o
87GHIDDEN=${HIDDEN:.o=.go}
88PHIDDEN=${HIDDEN:.o=.po}
89SHIDDEN=${HIDDEN:.o=.so}
90DHIDDEN=${HIDDEN:.o=.do}
91
92OBJS+=	${ASM} ${PSEUDO} ${PSEUDO_NOERR} ${HIDDEN}
93
94SYS_DEP =  ${LIBCSRCDIR}/arch/${MACHINE_CPU}/SYS.h /usr/include/sys/syscall.h
95
96# XXX only difference is -x removes FILE symbols?
97TRIM=${LD} -x -r ${.TARGET}.o -o ${.TARGET} && rm -f ${.TARGET}.o
98TRIM.debug=${LD} -X -r ${.TARGET}.o -o ${.TARGET} && rm -f ${.TARGET}.o
99
100
101# Pick one of these to set what ASM is generated...
102GENERATE.rsyscall=\
103	echo creating ${.TARGET} && \
104	printf '\#include "SYS.h"\nRSYSCALL(${.PREFIX})\n'
105GENERATE.pseudo=\
106	echo creating ${.TARGET} && \
107	printf '\#include "SYS.h"\nPSEUDO(${.PREFIX},${.PREFIX:S/^_//})\n'
108GENERATE.pseudo_noerr=\
109	echo creating ${.TARGET} && \
110	printf '\#include "SYS.h"\nPSEUDO_NOERROR(${.PREFIX},${.PREFIX:S/^_//})\n'
111GENERATE.rsyscall_hidden=\
112	echo creating ${.TARGET} && \
113	printf '\#include "SYS.h"\nRSYSCALL_HIDDEN(${.PREFIX:S/^_//})\n'
114
115# ...and one of these to control how it's compiled
116FINISH=	${COMPILE.S} ${CFLAGS:M-[ID]*} ${AINC} -x assembler-with-cpp -
117FINISH.go=${FINISH} -o ${.TARGET}.o			&& ${TRIM.debug}
118FINISH.po=${FINISH} -o ${.TARGET}.o -DPROF		&& ${TRIM.debug}
119FINISH.so=${FINISH} -o ${.TARGET}   ${PICFLAG}
120FINISH.do=${FINISH} -o ${.TARGET}.o ${DIST_CFLAGS}	&& ${TRIM}
121FINISH.o =${FINISH} -o ${.TARGET}.o			&& ${TRIM}
122
123# Use those to generate the desired syscall stubs
124${GASM}: ${SYS_DEP} ; @${GENERATE.rsyscall} | ${FINISH.go}
125${PASM}: ${SYS_DEP} ; @${GENERATE.rsyscall} | ${FINISH.po}
126${SASM}: ${SYS_DEP} ; @${GENERATE.rsyscall} | ${FINISH.so}
127${DASM}: ${SYS_DEP} ; @${GENERATE.rsyscall} | ${FINISH.do}
128${ASM}:  ${SYS_DEP} ; @${GENERATE.rsyscall} | ${FINISH.o}
129
130${GPSEUDO}: ${SYS_DEP} ; @${GENERATE.pseudo} | ${FINISH.go}
131${PPSEUDO}: ${SYS_DEP} ; @${GENERATE.pseudo} | ${FINISH.po}
132${SPSEUDO}: ${SYS_DEP} ; @${GENERATE.pseudo} | ${FINISH.so}
133${DPSEUDO}: ${SYS_DEP} ; @${GENERATE.pseudo} | ${FINISH.do}
134${PSEUDO}:  ${SYS_DEP} ; @${GENERATE.pseudo} | ${FINISH.o}
135
136${GPSEUDO_NOERR}: ${SYS_DEP} ; @${GENERATE.pseudo_noerr} | ${FINISH.go}
137${PPSEUDO_NOERR}: ${SYS_DEP} ; @${GENERATE.pseudo_noerr} | ${FINISH.po}
138${SPSEUDO_NOERR}: ${SYS_DEP} ; @${GENERATE.pseudo_noerr} | ${FINISH.so}
139${DPSEUDO_NOERR}: ${SYS_DEP} ; @${GENERATE.pseudo_noerr} | ${FINISH.do}
140${PSEUDO_NOERR}:  ${SYS_DEP} ; @${GENERATE.pseudo_noerr} | ${FINISH.o}
141
142${GHIDDEN}: ${SYS_DEP} ; @${GENERATE.rsyscall_hidden} | ${FINISH.go}
143${PHIDDEN}: ${SYS_DEP} ; @${GENERATE.rsyscall_hidden} | ${FINISH.po}
144${SHIDDEN}: ${SYS_DEP} ; @${GENERATE.rsyscall_hidden} | ${FINISH.so}
145${DHIDDEN}: ${SYS_DEP} ; @${GENERATE.rsyscall_hidden} | ${FINISH.do}
146${HIDDEN}:  ${SYS_DEP} ; @${GENERATE.rsyscall_hidden} | ${FINISH.o}
147
148
149MAN+=	__get_tcb.2 __thrsigdivert.2 __thrsleep.2 _exit.2 accept.2 \
150	access.2 acct.2 adjfreq.2 adjtime.2 bind.2 brk.2 chdir.2 \
151	chflags.2 chmod.2 chown.2 chroot.2 clock_gettime.2 close.2 \
152	closefrom.2 connect.2 dup.2 execve.2 fcntl.2 fhopen.2 flock.2 \
153	fork.2 fsync.2 getentropy.2 getdents.2 getdtablecount.2 \
154	getfh.2 getfsstat.2 getgid.2 getgroups.2 getitimer.2 getlogin.2 \
155	getpeername.2 getpgrp.2 getpid.2 getpriority.2 getrlimit.2 \
156	getrtable.2 getrusage.2 getsid.2 getsockname.2 getsockopt.2 \
157	getthrid.2 gettimeofday.2 getuid.2 intro.2 ioctl.2 issetugid.2 \
158	kbind.2 kill.2 kqueue.2 ktrace.2 link.2 listen.2 lseek.2 madvise.2 \
159	mincore.2 minherit.2 mkdir.2 mkfifo.2 mknod.2 mlock.2 \
160	mlockall.2 mmap.2 mount.2 mprotect.2 mquery.2 msgctl.2 \
161	msgget.2 msgrcv.2 msgsnd.2 msync.2 munmap.2 nanosleep.2 \
162	nfssvc.2 open.2 pathconf.2 pipe.2 pledge.2 poll.2 profil.2 \
163	ptrace.2 quotactl.2 read.2 readlink.2 reboot.2 recv.2 \
164	rename.2 revoke.2 rmdir.2 sched_yield.2 select.2 semctl.2 semget.2 \
165	semop.2 send.2 setgroups.2 setpgid.2 setregid.2 \
166	setresuid.2 setreuid.2 setsid.2 sendsyslog.2 setuid.2 shmat.2 \
167	shmctl.2 shmget.2 shutdown.2 sigaction.2 sigaltstack.2 sigpending.2 \
168	sigprocmask.2 sigreturn.2 sigsuspend.2 socket.2 \
169	socketpair.2 stat.2 statfs.2 swapctl.2 symlink.2 \
170	sync.2 sysarch.2 syscall.2 thrkill.2 truncate.2 umask.2 unlink.2 \
171	utimes.2 utrace.2 vfork.2 wait.2 write.2
172