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