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