xref: /xnu-10063.121.3/osfmk/kern/Makefile (revision 2c2f96dc2b9a4408a43d3150ae9c105355ca3daa)
1
2export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd
3export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def
4export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule
5export MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir
6
7include $(MakeInc_cmd)
8include $(MakeInc_def)
9
10DATAFILES = \
11	exc_guard.h \
12	exc_resource.h \
13	kern_cdata.h \
14	kcdata.h
15
16MODULEMAPFILES = \
17	kcdata.modulemap
18
19PRIVATE_DATAFILES = \
20	arithmetic_128.h  \
21	block_hint.h \
22	cambria_layout.h \
23	cs_blobs.h \
24	debug.h \
25	ecc.h \
26	lock_stat.h \
27	monotonic.h \
28	remote_time.h \
29	restartable.h \
30	trustcache.h \
31	turnstile.h \
32	socd_client.h
33
34PRIVATE_MODULEMAPFILES = \
35	kern_debug.modulemap \
36	kern_private.modulemap
37
38EXPORT_FILES = \
39	affinity.h \
40	assert.h \
41	audit_sessionport.h \
42	backtrace.h \
43	bits.h \
44	circle_queue.h \
45	clock.h \
46	coalition.h \
47	counter.h  \
48	cpu_number.h \
49	cpu_data.h \
50	energy_perf.h \
51	ext_paniclog.h \
52	extmod_statistics.h \
53	hv_io_notifier.h \
54	hv_support.h \
55	hv_support_kext.h \
56	ipc_mig.h \
57	ipc_misc.h \
58	kalloc.h \
59	kext_alloc.h \
60	kern_types.h \
61	kpc.h \
62	ledger.h \
63	lock.h \
64	lock_attr.h \
65	lock_group.h \
66	lock_mtx.h \
67	lock_rw.h \
68	lock_sleep.h \
69	lock_types.h \
70	locks.h \
71	host.h \
72	hvg_hypercall.h \
73	mach_param.h \
74	macro_help.h \
75	mpqueue.h \
76	page_decrypt.h \
77	pms.h \
78	policy_internal.h \
79	processor.h \
80	queue.h \
81	mpsc_queue.h \
82	percpu.h \
83	priority_queue.h \
84	sched_prim.h \
85	sfi.h \
86	simple_lock.h \
87	smr_types.h \
88	startup.h \
89	task.h \
90	task_ref.h \
91	telemetry.h \
92	thread.h \
93	thread_call.h \
94	thread_group.h \
95	timer_call.h \
96	waitq.h \
97	work_interval.h \
98	zalloc.h
99
100
101# Installs header file for Apple internal use for kernel extensions -
102#         $(DSTROOT)/System/Library/Frameworks/Kernel.framework/PrivateHeaders
103PRIVATE_EXPORT_FILES = \
104	build_config.h \
105	copyout_shim.h \
106	kern_apfs_reflock.h \
107	mach_filter.h \
108	mach_node_link.h \
109	sched_clutch.h \
110	socd_client_kern.h \
111	task_ident.h \
112	ticket_lock.h \
113	zalloc_ro_shim.h
114
115
116XNU_ONLY_EXPORTS = \
117	arcade.h \
118	btlog.h \
119	cpc.h \
120	iotrace.h \
121	ipc_kobject.h \
122	lock_ptr.h \
123	recount.h \
124	sched_hygiene.h \
125	smr.h \
126	smr_hash.h \
127	sync_sema.h \
128	ux_handler.h \
129	workload_config.h
130
131INSTALL_MI_LIST = ${DATAFILES}
132
133INSTALL_MODULEMAP_MI_LIST = ${MODULEMAPFILES}
134
135INSTALL_MI_LCL_LIST = cs_blobs.h debug.h ext_paniclog.h
136
137INSTALL_MODULEMAP_MI_LCL_LIST = ${PRIVATE_MODULEMAPFILES}
138
139INSTALL_SF_MI_LCL_LIST = ${DATAFILES} ${PRIVATE_DATAFILES}
140
141INSTALL_KF_MI_LIST = ${DATAFILES} ${PRIVATE_DATAFILES} ${EXPORT_FILES}
142
143INSTALL_KF_MI_LCL_LIST = $(sort ${DATAFILES} ${PRIVATE_DATAFILES} ${EXPORT_FILES} ${PRIVATE_EXPORT_FILES})
144
145INSTALL_MI_DIR = kern
146
147EXPORT_MI_LIST = $(sort ${INSTALL_KF_MI_LIST} ${INSTALL_KF_MI_LCL_LIST} ${XNU_ONLY_EXPORTS})
148
149EXPORT_MI_DIR = kern
150
151# build support for tightbeamc-generated files
152
153ifeq ($(XNU_CONFIG_TIGHTBEAM),1)
154TIGHTBEAM_FILES := \
155	exclaves_conclave_launcher.tightbeam \
156	exclaves_eic.tightbeam \
157	exclaves_log.tightbeam \
158	exclaves_upcalls.tightbeam \
159	stackshot.tightbeam \
160	exclaves_frame_mint.tightbeam
161
162TIGHTBEAM_MODULES := \
163	SharedMemoryBase.tbmodule
164endif
165
166# This makes sure to not include any tbmodules which don't exist in the SDK and
167# expand the modules listed above to their full path in the SDK. The modules
168# should only be needed when actually building with CONFIG_EXCLAVES
169# (which can't easily be checked here).
170TIGHTBEAM_MODULES := $(patsubst %.tbmodule,$(TIGHTBEAM_MODULE_DIR)/%.tbmodule,$(TIGHTBEAM_MODULES))
171TIGHTBEAM_MODULES := $(wildcard $(TIGHTBEAM_MODULES))
172
173TIGHTBEAM_COMBINED_HDR := exclaves.tightbeam.h
174# Clear TIGHTBEAM_COMBINED_HDR if there are no tightbeam files/modules to be
175# compiled at all.
176ifeq ($(strip $(TIGHTBEAM_FILES)),)
177ifeq ($(strip $(TIGHTBEAM_MODULES)),)
178TIGHTBEAM_COMBINED_HDR :=
179endif
180endif
181
182TIGHTBEAM_COMBINED_IMPL := $(patsubst %.h,%.c,$(TIGHTBEAM_COMBINED_HDR))
183
184COMP_FILES := $(TIGHTBEAM_COMBINED_HDR) $(TIGHTBEAM_COMBINED_IMPL)
185
186$(TIGHTBEAM_COMBINED_IMPL) : $(TIGHTBEAM_FILES) $(TIGHTBEAM_MODULES)
187	@$(LOG_TIGHTBEAMC) "$@"
188	$(_v)$(TIGHTBEAMC) build generate-c --output-base $@ --codegen-version 2 $^
189
190$(TIGHTBEAM_COMBINED_HDR) : $(TIGHTBEAM_COMBINED_IMPL)
191
192do_build_all:: $(COMP_FILES)
193
194include $(MakeInc_rule)
195include $(MakeInc_dir)
196