1#	$NetBSD: Makefile.inc,v 1.211 2012/02/11 23:31:24 martin Exp $
2#	@(#)Makefile.inc	8.3 (Berkeley) 10/24/94
3
4# sys sources
5.PATH: ${ARCHDIR}/sys ${.CURDIR}/sys
6
7# modules with non-default implementations on at least one architecture:
8SRCS+=	__clone.S __vfork14.S brk.S exect.S fork.S pipe.S \
9	getcontext.S \
10	ptrace.S sbrk.S shmat.S \
11	syscall.S __syscall.S __clone.S cerror.S
12
13# other sources shared with the kernel, used in syscalls
14SRCS+=	cpuset.c
15
16_LSRC+=	Lint___clone.c Lint___vfork14.c Lint_brk.c Lint_clone.c \
17	Lint_getcontext.c Lint_exect.c Lint_pipe.c Lint_ptrace.c \
18	Lint_sbrk.c Lint___sigaction14.c Lint_syscall.c Lint___syscall.c \
19	LintSysNormal.c LintSysNoerr.c LintSysPseudoNoerr.c
20
21.if ${MKLINT} != "no"
22LSRCS+=		${_LSRC}
23DPSRCS+=	${_LSRC:MLintSys*.c}
24CLEANFILES+=	${_LSRC:MLintSys*.c}
25.endif
26
27# glue to offer userland wrappers for some syscalls
28SRCS+=	posix_fadvise.c posix_madvise.c sched.c sigqueue.c sigtimedwait.c \
29	sigwait.c sigwaitinfo.c statvfs.c swapon.c semctl.c 
30
31# glue to provide compatibility between GCC 1.X and 2.X and for compat
32# with old syscall interfaces.
33GLUE+= ftruncate.c lseek.c mmap.c pread.c preadv.c pwrite.c \
34	pwritev.c truncate.c ntp_adjtime.c
35
36GLUE50+= adjtime.c clock_settime.c settimeofday.c
37
38# 'glue' files might .c or .S depending on the architecture
39.for glue in ${GLUE}
40. if exists(${glue:.c=.S})
41# Build the ASM glue file
42SRCS+=${glue:.c=.S}
43. else
44.  if exists(__${glue:.c=.S})
45SRCS+=__${glue:.c=.S} ${glue}
46.  else
47# Build the C glue file
48SRCS+= ${glue}
49# and an asm entry for __<syscall>
50ASM_GLUE+= tmp_${glue:.c=.S}
51.  endif
52. endif
53.endfor
54
55# 'glue' files might .c or .S depending on the architecture
56.for glue in ${GLUE50}
57. if exists(${glue:.c=.S})
58# Build the ASM glue file
59SRCS+=${glue:.c=.S}
60. else
61.  if exists(__${glue:.c=}50.S)
62SRCS+=__${glue:.c=}50.S ${glue}
63.  else
64# Build the C glue file
65SRCS+= ${glue}
66# and an asm entry for __<syscall>
67ASM_GLUE+= tmp___${glue:.c=}50.S
68.  endif
69. endif
70.endfor
71
72# namespace purity wrappers
73SRCS+=	_brk.c _fork.c _getcontext.c _pipe.c _sbrk.c
74
75# modules with default implementations on all architectures:
76ASM=	access.S acct.S \
77	bind.S \
78	chdir.S chflags.S chmod.S chown.S chroot.S __clock_getres50.S \
79		__clock_gettime50.S \
80	dup.S dup2.S dup3.S \
81	extattrctl.S \
82		extattr_delete_fd.S extattr_delete_file.S \
83		extattr_delete_link.S extattr_get_fd.S extattr_get_file.S \
84		extattr_get_link.S extattr_list_fd.S extattr_list_file.S \
85		extattr_list_link.S extattr_set_fd.S extattr_set_file.S \
86		extattr_set_link.S \
87	setxattr.S getxattr.S listxattr.S removexattr.S \
88		lsetxattr.S lgetxattr.S llistxattr.S lremovexattr.S \
89		fsetxattr.S fgetxattr.S flistxattr.S fremovexattr.S \
90	faccessat.S fchdir.S fchflags.S fchmod.S fchmodat.S fchown.S \
91		fchownat.S fchroot.S fexecve.S __fhopen40.S __fhstat50.S \
92		__fhstatvfs140.S fktrace.S flock.S fpathconf.S __fstat50.S \
93		fstatvfs1.S fstatat.S  __futimes50.S futimens.S \
94	__getcwd.S __getdents30.S __getfh30.S getvfsstat.S getgroups.S\
95		__getitimer50.S __getlogin.S getpeername.S getpgid.S getpgrp.S \
96		getpriority.S getrlimit.S __getrusage50.S getsid.S \
97		getsockname.S getsockopt.S __gettimeofday50.S \
98	ioctl.S \
99	kqueue.S kqueue1.S ktrace.S \
100		_ksem_close.S _ksem_destroy.S _ksem_getvalue.S _ksem_init.S \
101		_ksem_post.S _ksem_trywait.S _ksem_unlink.S _ksem_wait.S \
102		_ksem_open.S \
103	lchflags.S lchmod.S lchown.S lfs_bmapv.S lfs_markv.S lfs_segclean.S \
104		__lfs_segwait50.S link.S linkat.S listen.S __lstat50.S \
105		__lutimes50.S _lwp_create.S _lwp_exit.S _lwp_kill.S \
106		___lwp_park50.S _lwp_self.S _lwp_wait.S _lwp_unpark.S \
107		_lwp_unpark_all.S _lwp_suspend.S _lwp_continue.S \
108		_lwp_wakeup.S _lwp_detach.S _lwp_setprivate.S \
109		_lwp_setname.S _lwp_getname.S _lwp_ctl.S \
110	madvise.S mincore.S minherit.S mkdir.S mkdirat.S mkfifo.S mkfifoat.S \
111		__mknod50.S mknodat.S mlock.S mlockall.S modctl.S __mount50.S \
112		mprotect.S __msgctl50.S msgget.S munlock.S munlockall.S \
113		munmap.S \
114	nfssvc.S __ntp_gettime50.S \
115	openat.S \
116	paccept.S pathconf.S pipe2.S pmc_get_info.S pmc_control.S \
117		__posix_chown.S __posix_fchown.S __posix_lchown.S \
118		__posix_rename.S profil.S \
119	__quotactl.S \
120	rasctl.S readlinkat.S reboot.S recvfrom.S recvmsg.S rename.S \
121		renameat.S revoke.S rmdir.S \
122	sa_register.S sa_stacks.S sa_enable.S sa_setconcurrency.S sa_yield.S \
123		sa_preempt.S semconfig.S semget.S semop.S \
124		sendmsg.S sendto.S setegid.S setcontext.S seteuid.S setgid.S \
125		setgroups.S __setitimer50.S __setlogin.S setpgid.S \
126		setpriority.S \
127		setregid.S setreuid.S setrlimit.S setsid.S setsockopt.S \
128		setuid.S __shmctl50.S shmdt.S shmget.S shutdown.S \
129		sigqueueinfo.S \
130		__sigaltstack14.S __sigpending14.S __sigaction_sigtramp.S \
131		____sigtimedwait50.S __socket30.S socketpair.S __stat50.S \
132		statvfs1.S swapctl.S symlink.S symlinkat.S __sysctl.S \
133	timer_create.S timer_delete.S __timer_gettime50.S timer_getoverrun.S \
134		____semctl50.S __timer_settime50.S \
135	umask.S undelete.S unlink.S unlinkat.S unmount.S __utimes50.S \
136		utimensat.S utrace.S uuidgen.S vadvise.S
137
138# modules with potentially non default implementations
139ASM_MD=	_lwp_getprivate.S mremap.S 
140
141.for f in ${ASM_MD}
142. if !exists(${f})
143   ASM+=	tmp_${f}
144. else
145   SRCS+=	${f}
146. endif
147.endfor
148
149WEAKASM= accept.S __aio_suspend50.S close.S connect.S execve.S \
150	fcntl.S fdatasync.S fsync.S fsync_range.S __kevent50.S \
151	kill.S mq_receive.S mq_send.S __mq_timedreceive50.S __mq_timedsend50.S \
152	msgrcv.S msgsnd.S __msync13.S  __nanosleep50.S open.S poll.S \
153	__pollts50.S __pselect50.S read.S readlink.S \
154	readv.S _sched_setparam.S _sched_getparam.S _sched_setaffinity.S \
155	_sched_getaffinity.S sched_yield.S \
156	__select50.S __sigprocmask14.S __sigsuspend14.S sysarch.S \
157	__wait450.S write.S writev.S
158
159NOERR=	getegid.S geteuid.S getgid.S getpid.S getppid.S getuid.S \
160	issetugid.S posix_spawn.S sync.S __posix_fadvise50.S
161
162PSEUDONOERR=	_exit.S
163
164SRCS+=		${ASM} ${WEAKASM} ${NOERR} ${PSEUDONOERR} ${ASM_GLUE}
165CLEANFILES+=	${ASM} ${WEAKASM} ${NOERR} ${PSEUDONOERR} ${ASM_GLUE}
166
167ASMDEPS=	${.CURDIR}/sys/Makefile.inc ${ARCHDIR}/SYS.h \
168		${DESTDIR}/usr/include/sys/syscall.h
169
170_LINTASM=	${ASM:Nsa_*.S} ${WEAKASM:Nsa_*.S}
171
172${ASM}: ${ASMDEPS}
173	${_MKTARGET_CREATE}
174	printf '#include "SYS.h"\nRSYSCALL(${.PREFIX:S/tmp_//})\n' >${.TARGET}
175
176${ASM_GLUE}: ${ASMDEPS}
177	${_MKTARGET_CREATE}
178	printf '#include "SYS.h"\nPSEUDO(${.PREFIX:S/tmp_/__/},${.PREFIX:S/tmp_//})\n' >${.TARGET}
179
180${WEAKASM}: ${ASMDEPS}
181	${_MKTARGET_CREATE}
182	printf '#include "SYS.h"\nWSYSCALL(${.PREFIX},_sys_${.PREFIX})\nWEAK_ALIAS(_${.PREFIX},_sys_${.PREFIX})\n' >${.TARGET}
183
184${NOERR}: ${ASMDEPS}
185	${_MKTARGET_CREATE}
186	printf '#include "SYS.h"\nRSYSCALL_NOERROR(${.PREFIX})\n' >${.TARGET}
187
188${PSEUDONOERR}: ${ASMDEPS}
189	${_MKTARGET_CREATE}
190	printf '#include "SYS.h"\nPSEUDO_NOERROR(${.PREFIX},${.PREFIX:S/_//})\n' >${.TARGET}
191	# add an _Exit alias to _exit
192	printf 'STRONG_ALIAS(${.PREFIX:S/e/E/},${.PREFIX})\n' >>${.TARGET}
193
194LintSysNormal.c: ${LIBCDIR}/sys/makelintstub \
195    ${DESTDIR}/usr/include/sys/syscall.h ${_LINTASM}
196	${_MKTARGET_CREATE}
197	CPP=${CPP:Q} ${HOST_SH} ${LIBCDIR}/sys/makelintstub -o ${.TARGET} \
198	    -s ${DESTDIR}/usr/include/sys/syscall.h ${_LINTASM:S/tmp_//}
199
200LintSysNoerr.c: ${LIBCDIR}/sys/makelintstub \
201    ${DESTDIR}/usr/include/sys/syscall.h
202	${_MKTARGET_CREATE}
203	CPP=${CPP:Q} ${HOST_SH} ${LIBCDIR}/sys/makelintstub -o ${.TARGET} -n \
204	    -s ${DESTDIR}/usr/include/sys/syscall.h ${NOERR}
205
206LintSysPseudoNoerr.c: ${LIBCDIR}/sys/makelintstub \
207    ${DESTDIR}/usr/include/sys/syscall.h
208	${_MKTARGET_CREATE}
209	CPP=${CPP:Q} ${HOST_SH} ${LIBCDIR}/sys/makelintstub -o ${.TARGET} -p \
210	    -s ${DESTDIR}/usr/include/sys/syscall.h ${PSEUDONOERR}
211
212MAN+=	accept.2 access.2 acct.2 adjtime.2 bind.2 brk.2 chdir.2 \
213	chflags.2 chmod.2 chown.2 chroot.2 clock_settime.2 clone.2 close.2 \
214	connect.2 dup.2 execve.2 _exit.2 extattr_get_file.2 \
215	fcntl.2 fdatasync.2 fhopen.2 \
216	flock.2 fork.2 fsync.2 getcontext.2 getdents.2 \
217	getfh.2 getvfsstat.2 getgid.2 getgroups.2 \
218	getitimer.2 getlogin.2 getpeername.2 getpgrp.2 getpid.2 \
219	getpriority.2 getrlimit.2 getrusage.2 getsid.2 getsockname.2 \
220	getsockopt.2 gettimeofday.2 getuid.2 intro.2 ioctl.2 issetugid.2 \
221	kill.2 kqueue.2 ktrace.2 \
222	lfs_bmapv.2 lfs_markv.2 lfs_segclean.2 lfs_segwait.2 \
223	link.2 listen.2 lseek.2 \
224	_lwp_create.2 _lwp_ctl.2 _lwp_detach.2 _lwp_exit.2 \
225	_lwp_self.2 _lwp_setname.2 \
226	_lwp_suspend.2 _lwp_wakeup.2 _lwp_wait.2 _lwp_kill.2 \
227	_lwp_getname.2 _lwp_getprivate.2 \
228	_lwp_park.2 _lwp_unpark.2 _lwp_unpark_all.2 \
229	mkdir.2 mkfifo.2 mknod.2 \
230	madvise.2 mincore.2 minherit.2 mlock.2 mlockall.2 mmap.2 modctl.2 \
231	mount.2 \
232	mprotect.2 mremap.2 msgctl.2 msgget.2 msgrcv.2 msgsnd.2 msync.2 \
233	munmap.2 nanosleep.2 nfssvc.2 ntp_adjtime.2 open.2 pathconf.2 pipe.2 \
234	pmc_control.2 poll.2 posix_fadvise.2 profil.2 ptrace.2 __quotactl.2 \
235	rasctl.2 read.2 readlink.2 \
236	reboot.2 recv.2 rename.2 revoke.2 rmdir.2 \
237	select.2 semctl.2 \
238	semget.2 semop.2 send.2 setgroups.2 setpgid.2 setregid.2 \
239	setreuid.2 setsid.2 setuid.2 shmat.2 shmctl.2 shmget.2 \
240	shutdown.2 sigaction.2 sigaltstack.2 sigpending.2 \
241	sigprocmask.2 sigqueue.2 sigstack.2 sigsuspend.2 sigtimedwait.2 \
242	socket.2 \
243	socketpair.2 stat.2 statvfs.2 swapctl.2 swapon.3 symlink.2 \
244	sync.2 sysarch.2 syscall.2 timer_create.2 timer_delete.2 \
245	timer_settime.2 truncate.2 umask.2 undelete.2 \
246	unlink.2 utimes.2 utrace.2 uuidgen.2 vfork.2 wait.2 write.2
247
248MLINKS+=_exit.2 _Exit.2
249MLINKS+=brk.2 sbrk.2
250MLINKS+=clone.2 __clone.2
251MLINKS+=dup.2 dup2.2
252MLINKS+=dup.2 dup3.2
253MLINKS+=chdir.2 fchdir.2
254MLINKS+=chflags.2 fchflags.2 chflags.2 lchflags.2
255MLINKS+=chmod.2 fchmod.2 chmod.2 lchmod.2
256MLINKS+=chown.2 fchown.2 chown.2 lchown.2
257MLINKS+=chroot.2 fchroot.2
258MLINKS+=clock_settime.2 clock_gettime.2
259MLINKS+=clock_settime.2 clock_getres.2
260MLINKS+=extattr_get_file.2 extattr_set_file.2 \
261	extattr_get_file.2 extattr_delete_file.2 \
262	extattr_get_file.2 extattr_list_file.2 \
263	extattr_get_file.2 extattr_get_fd.2 \
264	extattr_get_file.2 extattr_set_fd.2 \
265	extattr_get_file.2 extattr_delete_fd.2 \
266	extattr_get_file.2 extattr_list_fd.2 \
267	extattr_get_file.2 extattr_get_link.2 \
268	extattr_get_file.2 extattr_set_link.2 \
269	extattr_get_file.2 extattr_delete_link.2 \
270	extattr_get_file.2 extattr_list_link.2
271MLINKS+=fhopen.2 fhstat.2 fhopen.2 fhstatvfs.2 fhopen.2 fhstatvfs1.2
272MLINKS+=fsync.2 fsync_range.2
273MLINKS+=getcontext.2 setcontext.2
274MLINKS+=getgid.2 getegid.2
275MLINKS+=getitimer.2 setitimer.2
276MLINKS+=getlogin.2 setlogin.2
277MLINKS+=getlogin.2 getlogin_r.2
278MLINKS+=getpgrp.2 getpgid.2
279MLINKS+=getpid.2 getppid.2
280MLINKS+=getpriority.2 setpriority.2
281MLINKS+=getrlimit.2 setrlimit.2
282MLINKS+=getsockopt.2 setsockopt.2
283MLINKS+=gettimeofday.2 settimeofday.2
284MLINKS+=getuid.2 geteuid.2
285MLINKS+=intro.2 errno.2
286MLINKS+=kqueue.2 kevent.2
287MLINKS+=ktrace.2 fktrace.2
288MLINKS+=lseek.2 seek.2
289MLINKS+=link.2 linkat.2
290MLINKS+=_lwp_suspend.2 _lwp_continue.2
291MLINKS+=_lwp_getprivate.2 _lwp_setprivate.2
292MLINKS+=madvise.2 posix_madvise.2
293MLINKS+=mlock.2 munlock.2
294MLINKS+=mlockall.2 munlockall.2
295MLINKS+=mount.2 unmount.2
296MLINKS+=ntp_adjtime.2 ntp_gettime.2
297MLINKS+=pathconf.2 fpathconf.2
298MLINKS+=pmc_control.2 pmc_get_info.2
299MLINKS+=poll.2 pollts.2
300MLINKS+=read.2 readv.2 read.2 pread.2 read.2 preadv.2
301MLINKS+=recv.2 recvfrom.2 recv.2 recvmsg.2
302MLINKS+=select.2 pselect.2
303MLINKS+=send.2 sendmsg.2 send.2 sendto.2
304MLINKS+=setpgid.2 setpgrp.2
305MLINKS+=setuid.2 setegid.2 setuid.2 seteuid.2 setuid.2 setgid.2
306MLINKS+=shmat.2 shmdt.2
307MLINKS+=timer_settime.2 timer_gettime.2 timer_settime.2 timer_getoverrun.2
308MLINKS+=sigqueue.2 sigqueueinfo.2
309MLINKS+=sigtimedwait.2 sigwaitinfo.2
310MLINKS+=sigtimedwait.2 sigwait.2
311MLINKS+=stat.2 fstat.2 stat.2 lstat.2
312MLINKS+=statvfs.2 fstatvfs.2
313MLINKS+=statvfs.2 statvfs1.2
314MLINKS+=statvfs.2 fstatvfs1.2
315MLINKS+=syscall.2 __syscall.2
316MLINKS+=truncate.2 ftruncate.2
317MLINKS+=utimes.2 futimes.2 utimes.2 lutimes.2
318MLINKS+=utimes.2 futimens.2 utimes.2 utimensat.2
319MLINKS+=wait.2 wait3.2 wait.2 wait4.2 wait.2 waitpid.2
320MLINKS+=write.2 writev.2 write.2 pwrite.2 write.2 pwritev.2
321MLINKS+=pipe.2 pipe2.2
322MLINKS+=accept.2 paccept.2
323