xref: /xnu-12377.61.12/bsd/sys/Makefile (revision 4d495c6e23c53686cf65f45067f79024cf5dcee8)
1export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd
2export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def
3export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule
4export MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir
5
6include $(MakeInc_cmd)
7include $(MakeInc_def)
8
9INSTINC_SUBDIRS = \
10	_types
11
12EXPINC_SUBDIRS = \
13	_types
14
15# Files that are public on macOS, but private on embedded
16EMBEDDED_PRIVATE_DATAFILES = \
17	disk.h dtrace.h dtrace_glue.h dtrace_impl.h fasttrap.h fasttrap_isa.h ioctl_compat.h kdebug.h \
18	kern_control.h kern_event.h kernel_types.h proc_info.h protosw.h reboot.h sys_domain.h ttychars.h \
19	ttydev.h ubc.h vnode.h
20
21ifeq ($(filter $(SUPPORTED_EMBEDDED_PLATFORMS) $(SUPPORTED_SIMULATOR_PLATFORMS),$(PLATFORM)),)
22EXTRA_DATAFILES = $(EMBEDDED_PRIVATE_DATAFILES)
23else
24EXTRA_PRIVATE_DATAFILES = $(EMBEDDED_PRIVATE_DATAFILES)
25endif
26
27# Installs header file for user level -
28#	  $(DSTROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
29#	  $(DSTROOT)/usr/include/
30# Most of these are covered by CoreOSModuleMaps because some of them are mixed
31# in with related headers in other directories from other projects, or mixed
32# in with headers from other projects in sys/.
33DATAFILES = $(sort \
34	appleapiopts.h	acct.h aio.h attr.h \
35	buf.h cdefs.h clonefile.h conf.h constrained_ctypes.h \
36	dir.h dirent.h dkstat.h \
37	errno.h ev.h event.h fcntl.h file.h filedesc.h \
38	fileport.h filio.h fsgetpath.h gmon.h \
39	ioccom.h ioctl.h \
40	ipc.h kernel.h lctx.h loadable_fs.h lock.h lockf.h \
41	kauth.h kdebug_signpost.h lockstat.h malloc.h \
42	mbuf.h mman.h mount.h msg.h msgbuf.h netport.h param.h paths.h pipe.h poll.h \
43	proc.h ptrace.h queue.h quota.h resource.h resourcevar.h \
44	sbuf.h posix_sem.h posix_shm.h random.h sdt.h\
45	select.h sem.h semaphore.h shm.h signal.h signalvar.h snapshot.h socket.h socketvar.h sockio.h stat.h stdio.h \
46	sysctl.h syslimits.h syslog.h termios.h  time.h \
47	timeb.h times.h trace.h tty.h ttycom.h \
48	ttydefaults.h types.h ucontext.h ucred.h uio.h un.h unistd.h unpcb.h \
49	user.h utfconv.h utsname.h vadvise.h vcmd.h \
50	vm.h vmmeter.h vmparam.h vnode_if.h vsock.h vstat.h wait.h xattr.h \
51	_select.h _structs.h _types.h _endian.h __endian.h domain.h \
52	spawn.h timex.h commpage.h log_data.h endian.h \
53	$(EXTRA_DATAFILES))
54
55# Installs header file for DriverKit drivers -
56#	  $(DSTROOT)/System/DriverKit/System/usr/include/
57DRIVERKIT_DATAFILES = \
58	cdefs.h _types.h _endian.h __endian.h time.h
59
60# Installs header file for Apple internal use in user level -
61#	  $(DSTROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
62# These are covered by CoreOSModuleMaps because they're mixed in with headers
63# from other projects in sys/.
64PRIVATE_DATAFILES = $(sort \
65	attr.h \
66	attr_private.h \
67	cdefs.h \
68	clonefile.h \
69	coalition.h \
70	coalition_private.h \
71	codesign.h \
72	constrained_ctypes.h \
73	content_protection.h \
74	crossarch.h \
75	csr.h \
76	decmpfs.h \
77	dirent_private.h \
78	disk_private.h \
79	disklabel.h \
80	domain.h \
81	event.h \
82	event_log.h \
83	event_private.h \
84	fcntl_private.h \
85	fileport.h \
86	fsctl.h \
87	fsevents.h \
88	fsgetpath.h \
89	fsgetpath_private.h \
90	fslog.h \
91	guarded.h \
92	imgsrc.h \
93	ipcs.h \
94	kas_info.h \
95	kdebug.h \
96	kdebug_private.h \
97	kdebug_triage.h \
98	kern_control_private.h \
99	kern_debug.h \
100	kern_event_private.h \
101	kern_memorystatus.h \
102	kern_memorystatus_freeze.h \
103	kern_overrides.h \
104	kern_sysctl.h \
105	mbuf.h \
106	mem_acct_private.h \
107	mman.h \
108	monotonic.h \
109	persona.h \
110	preoslog.h \
111	priv.h \
112	proc.h \
113	proc_info_private.h \
114	proc_uuid_policy.h \
115	process_policy.h \
116	reason.h \
117	resource.h \
118	resource_private.h \
119	sfi.h \
120	shm_internal.h \
121	snapshot.h \
122	socket.h \
123	socket_private.h \
124	socketvar.h \
125	sockio.h \
126	sockio_private.h \
127	spawn.h \
128	spawn_internal.h \
129	stackshot.h \
130	sys_domain_private.h \
131	tree.h \
132	ulock.h \
133	unpcb.h \
134	ux_exception.h \
135	variant_internal.h \
136	vsock.h \
137	vsock_private.h \
138	work_interval.h \
139	process_policy.h \
140	proc_uuid_policy.h \
141	priv.h \
142	pgo.h \
143	memory_maintenance.h \
144	commpage.h \
145	os_log_coprocessor.h \
146	$(EXTRA_PRIVATE_DATAFILES))
147
148# Installs header file for Apple internal use by DriverKit drivers -
149#	  $(DSTROOT)/System/DriverKit/System/usr/local/include/
150DRIVERKIT_PRIVATE_DATAFILES = \
151	appleapiopts.h kdebug.h kdebug_private.h queue.h
152
153# Installs header file for kernel extensions -
154#	  $(DSTROOT)/System/Library/Frameworks/Kernel.framework/Headers
155#	  $(DSTROOT)/System/Library/Frameworks/Kernel.framework/PrivateHeaders
156KERNELFILES = \
157	appleapiopts.h	 attr.h \
158	buf.h cdefs.h conf.h constrained_ctypes.h \
159	dir.h dirent.h disk.h disklabel.h dkstat.h  \
160	errno.h ev.h event.h fcntl.h file.h filio.h \
161	ioccom.h ioctl.h ipc.h \
162	ioctl_compat.h  kernel.h kernel_types.h kern_event.h lock.h lockf.h \
163	kauth.h kdebug.h kdebug_private.h kdebug_kernel.h md5.h kern_control.h \
164	imgact.h malloc.h namei.h mman.h mbuf.h mount.h netport.h param.h paths.h \
165	proc.h  queue.h random.h resource.h \
166	sbuf.h posix_sem.h posix_shm.h resource_private.h sem.h shm.h \
167	select.h signal.h socket.h socketvar.h sockio.h stat.h stdio.h \
168	sysctl.h syslimits.h syslog.h systm.h sys_domain.h  time.h \
169	types.h ubc.h ucontext.h ucred.h uio.h un.h unistd.h unpcb.h \
170	utfconv.h unicode.h vm.h vmparam.h vnode.h vnode_if.h vsock.h xattr.h \
171	_select.h _structs.h _types.h _endian.h __endian.h protosw.h domain.h \
172	kpi_mbuf.h kpi_socket.h kpi_socketfilter.h \
173	ttycom.h termios.h msg.h \
174	wait.h \
175	spawn.h timex.h commpage.h
176# The last line was added to export needed headers for the MAC calls
177# whose source is outside of the xnu/bsd tree.
178
179# Installs header file for Apple internal use for kernel extensions -
180#	  $(DSTROOT)/System/Library/Frameworks/Kernel.framework/PrivateHeaders
181PRIVATE_KERNELFILES = \
182	acct.h \
183	attr_private.h \
184	codesign.h \
185	cprotect.h \
186	content_protection.h \
187	csr.h \
188	decmpfs.h \
189	dirent_private.h \
190	disktab.h \
191	disk_private.h \
192	eventhandler.h \
193	event_log.h \
194	event_private.h \
195	fbt.h \
196	fcntl_private.h \
197	fileport.h \
198	fsctl.h \
199	fslog.h \
200	kern_memorystatus.h \
201	kern_memorystatus_freeze.h \
202	kpi_private.h \
203	ktrace.h \
204	kdebug_triage.h \
205	kern_control_private.h \
206	kern_event_private.h \
207	linker_set.h \
208	mach_swapon.h \
209	monotonic.h \
210	msgbuf.h \
211	eventvar.h \
212	persona.h \
213	preoslog.h \
214	proc_info.h \
215	proc_info_private.h \
216	pthread_shims.h \
217	quota.h \
218	reboot.h \
219	resourcevar.h \
220	sem_internal.h \
221	shm_internal.h \
222	signalvar.h \
223	socket_private.h \
224	sockio_private.h \
225	stackshot.h \
226	sys_domain_private.h \
227	timeb.h times.h \
228	tprintf.h \
229	tty.h  ttychars.h \
230	ttydefaults.h ttydev.h \
231	user.h \
232	variant_internal.h \
233	vfs_context.h \
234	vmmeter.h \
235	vsock_private.h \
236	reason.h \
237	spawn_internal.h \
238	priv.h \
239	pgo.h \
240	memory_maintenance.h \
241	doc_tombstone.h \
242	fsevents.h \
243	work_interval.h \
244	kern_sysctl.h \
245	vsock_transport.h \
246	trust_caches.h \
247	code_signing.h \
248	lockdown_mode.h \
249
250XNU_ONLY_EXPORTS = \
251	bsdtask_info.h \
252	file_internal.h \
253	filedesc.h \
254	guarded.h \
255	kern_memorystatus_xnu.h \
256	mount_internal.h \
257	munge.h \
258	pipe.h \
259	proc_internal.h \
260	proc_require.h \
261	proc_ro.h \
262	pthread_internal.h \
263	resourcevar.h \
264	semaphore.h \
265	tree.h \
266	uio_internal.h \
267	ulock.h \
268	ux_exception.h \
269	vnode_internal.h \
270	vsock_domain.h \
271	code_signing_internal.h \
272	trusted_execution_monitor.h \
273	coalition.h \
274	coalition_private.h
275
276# /usr/include
277INSTALL_MI_LIST	= ${DATAFILES}
278
279INSTALL_DRIVERKIT_MI_LIST = ${DRIVERKIT_DATAFILES}
280
281INSTALL_MI_GEN_LIST = syscall.h _posix_availability.h _symbol_aliasing.h
282
283INSTALL_DRIVERKIT_MI_GEN_LIST = _posix_availability.h _symbol_aliasing.h
284
285INSTALL_MI_DIR = sys
286
287EXPORT_MI_LIST	= $(sort ${KERNELFILES} ${PRIVATE_KERNELFILES} ${XNU_ONLY_EXPORTS})
288
289EXPORT_MI_GEN_LIST = syscall.h sysproto.h
290
291EXPORT_MI_DIR = sys
292
293# /usr/local/include
294INSTALL_MI_LCL_LIST = $(sort \
295	attr_private.h coalition_private.h code_signing.h codesign.h content_protection.h csr.h decmpfs.h dirent_private.h \
296	disk_private.h event_log.h event_private.h fcntl_private.h fsevents.h fsgetpath_private.h guarded.h kas_info.h \
297	kdebug_private.h kern_control_private.h kern_event_private.h kern_memorystatus.h mem_acct_private.h preoslog.h \
298	proc_info_private.h reason.h resource_private.h socket_private.h sockio_private.h stackshot.h sys_domain_private.h \
299	vsock_private.h work_interval.h ${EXTRA_PRIVATE_DATAFILES})
300
301# /System/Library/Frameworks/System.framework/PrivateHeaders
302INSTALL_SF_MI_LCL_LIST = ${DATAFILES} ${PRIVATE_DATAFILES}
303
304INSTALL_SF_MI_LCL_GEN_LIST = ${INSTALL_MI_GEN_LIST}
305
306INSTALL_DRIVERKIT_MI_LCL_LIST = ${DRIVERKIT_PRIVATE_DATAFILES}
307
308# /System/Library/Frameworks/Kernel.framework/PrivateHeaders
309INSTALL_KF_MI_LCL_LIST =  ${KERNELFILES} ${PRIVATE_KERNELFILES}
310
311INSTALL_KF_MI_LCL_GEN_LIST = sysproto.h
312
313# /System/Library/Frameworks/Kernel.framework/Headers
314INSTALL_KF_MI_LIST = ${KERNELFILES}
315
316INSTALL_KF_MI_GEN_LIST =
317
318MAKESYSCALLS = $(SRCROOT)/bsd/kern/makesyscalls.sh
319
320$(OBJROOT)/cscope.genhdrs:
321	$(_v)mkdir -p $(OBJROOT)/cscope.genhdrs
322
323$(OBJROOT)/syscall.codes: $(TARGET)/bsd.syscalls.master
324	@$(LOG_GENERATE) "$(ColorLF)$@$(Color0) from $(ColorF)$(<F)$(Color0)"
325	$(_v)$(MAKESYSCALLS) $< trace > $@
326
327
328$(OBJROOT)/trace.codes: $(SRCROOT)/bsd/kern/trace_codes $(OBJROOT)/syscall.codes
329	$(_v)sort -g $(SRCROOT)/bsd/kern/trace_codes $(OBJROOT)/syscall.codes >$@
330
331syscall.h: $(TARGET)/bsd.syscalls.master $(OBJROOT)/cscope.genhdrs
332	@$(LOG_GENERATE) "$(ColorLF)bsd/sys/$@$(Color0) from $(ColorF)$(<F)$(Color0)"
333	@echo "$(OBJPATH)/bsd/sys/$@" > $(OBJROOT)/cscope.genhdrs/$@.path
334	$(_v)$(MAKESYSCALLS) $< header > /dev/null
335
336sysproto.h: $(TARGET)/bsd.syscalls.master $(OBJROOT)/cscope.genhdrs
337	@$(LOG_GENERATE) "bsd/sys/$@$(Color0) from $(ColorF)$(<F)$(Color0)"
338	@echo "$(OBJPATH)/bsd/sys/$@" > $(OBJROOT)/cscope.genhdrs/$@.path
339	$(_v)$(MAKESYSCALLS) $< proto > /dev/null
340
341MAKE_POSIX_AVAILABILITY = $(SRCROOT)/bsd/sys/make_posix_availability.sh
342_posix_availability.h: $(MAKE_POSIX_AVAILABILITY)
343	@$(LOG_GENERATE) "bsd/sys/$@$(Color0)"
344	$(_v)$(MAKE_POSIX_AVAILABILITY) "$@"
345
346MAKE_SYMBOL_ALIASING = $(SRCROOT)/bsd/sys/make_symbol_aliasing.sh
347_symbol_aliasing.h: $(MAKE_SYMBOL_ALIASING)
348	@$(LOG_GENERATE) "bsd/sys/$@$(Color0)"
349	$(_v)$(MAKE_SYMBOL_ALIASING) "$(SDKROOT)" "$@"
350
351# generated headers needed early (used by iig during installhdrs of iokit/DriverKit)
352SETUP_GEN_LIST = _posix_availability.h _symbol_aliasing.h
353ifneq ($(filter 1,$(EXCLAVEKIT) $(EXCLAVECORE)),)
354SETUP_GEN_LIST =
355endif
356
357do_build_setup:: $(SETUP_GEN_LIST)
358
359TRACE_CODES_DEST = \
360	$(DSTROOT)/$(INSTALL_SHARE_MISC_DIR)/trace.codes
361
362$(TRACE_CODES_DEST): $(OBJROOT)/trace.codes
363	$(_v)$(MKDIR) $(DSTROOT)/$(INSTALL_SHARE_MISC_DIR)
364	@$(LOG_INSTALL) "$(@F)"
365	$(_v)$(INSTALL) $(INSTALL_FLAGS) $(OBJROOT)/trace.codes $@
366
367do_textfiles_install_mi:: $(TRACE_CODES_DEST)
368
369ARIADNE_PLISTS = \
370	xnu_exclaves.plist \
371	xnu_epoch_sync.plist \
372	xnu_suspension.plist
373
374ARIADNE_PLISTS_SRC = $(patsubst %,$(SRCROOT)/bsd/kern/ariadne_plists/%,$(ARIADNE_PLISTS))
375ARIADNE_PLISTS_DEST = $(patsubst %,$(DSTROOT)/$(INSTALL_ARIADNE_PLISTS_DIR)/%,$(ARIADNE_PLISTS))
376
377$(ARIADNE_PLISTS_DEST): $(ARIADNE_PLISTS_SRC)
378	$(_v)$(MKDIR) $(DSTROOT)/$(INSTALL_ARIADNE_PLISTS_DIR)
379	@$(LOG_INSTALL) "$(@F)"
380	$(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@
381
382do_textfiles_install_mi:: $(ARIADNE_PLISTS_DEST)
383
384include $(MakeInc_rule)
385include $(MakeInc_dir)
386