xref: /xnu-12377.81.4/osfmk/conf/Makefile.template (revision 043036a2b3718f7f0be807e2870f8f47d3fa0796)
1#
2# Mach Operating System
3# Copyright (c) 1986 Carnegie-Mellon University
4# All rights reserved.  The CMU software License Agreement specifies
5# the terms and conditions for use and redistribution.
6#
7
8export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd
9export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def
10export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule
11export MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir
12
13include $(MakeInc_cmd)
14include $(MakeInc_def)
15
16#
17# XXX: CFLAGS
18#
19CFLAGS+= -include meta_features.h -DMACH_KERNEL_PRIVATE -DMACH_KERNEL
20SFLAGS+= -include meta_features.h
21
22ifeq ($(KSANCOV),1)
23# Don't instrument functions called by the ksancov runtime. SanitizeCoverage does
24# not support denylists, so exclude the whole file.
25machine_routines.o_CFLAGS_RM = $(KCOV_CFLAGS)
26machine_routines_common.o_CFLAGS_RM = $(KCOV_CFLAGS)
27pcb_native.o_CFLAGS_RM = $(KCOV_CFLAGS)
28endif
29
30#
31# XXX: INCFLAGS to include libsa prototypes
32#
33INCFLAGS_MAKEFILE= -I$(SOURCE)libsa
34
35#
36# Directories for generated files
37#
38COMP_SUBDIRS = \
39	atm \
40	default_pager \
41	device \
42	kern \
43	mach \
44	UserNotification \
45	gssd \
46	kextd \
47	lockd
48
49#
50#  Make sure we don't remove this by accident if interrupted at the wrong
51#  time.
52#
53.PRECIOUS: Makefile
54
55#
56#  Theses macros are filled in by the config program depending on the
57#  current configuration.  The MACHDEP macro is replaced by the
58#  contents of the machine dependent makefile template and the others
59#  are replaced by the corresponding symbol definitions for the
60#  configuration.
61#
62
63%OBJS
64
65%LIBOBJS
66
67%CFILES
68
69%CXXFILES
70
71%SFILES
72
73%MACHDEP
74
75# Ease debuggability of VM test code as much as possible.
76vm_tests.o_CFLAGS_ADD += -g
77
78#
79# vm_sanitize/vm_sanitize_error_compat use the UBSan verifier to detect
80# potential undefined behavior at compile time. The verifier inspects the
81# compiled object files to detect calls to the UBSan minimal runtime.
82#
83# False positives are possible if checks are generated where UB is not actually
84# possible. If possible, code should be re-architected to allow the compiler
85# to optimize out the checks; if not __attribute__((nosanitize)) can be used.
86#
87# As of the time of writing, we enable all checks except the following:
88#   `alignment` since it generates checks for calls to os_xyz_overflow()
89#   `bool` since it generates checks most times bools are used
90#   `function` since it generates checks for any non-trivial usage of function
91#		pointers, and there is no way to do runtime type checking to eliminate
92# 		these checks.
93#   `null` since it generates NULL checks on typically non-null arguments.
94#   	Marking these arguments using __attribute__(nonnull) may have an
95#		undesired effect of optimizing out explicitly written NULL checks.
96#   `unreachable` since it generates a check after each panic()
97#   `obj-cast`,`return`,`vptr` since they are not relevant to C code
98#
99VM_UBSAN_CHECKS = bounds, builtin, enum, float-cast-overflow, \
100	float-divide-by-zero, implicit-signed-integer-truncation, \
101	implicit-unsigned-integer-truncation, integer-divide-by-zero, \
102	nonnull-attribute, nullability-arg, nullability-assign, nullability-return, \
103	object-size, pointer-overflow, returns-nonnull-attribute, shift, \
104	signed-integer-overflow, unsigned-integer-overflow, unsigned-shift-base, \
105	vla-bound
106VM_UBSAN_FLAGS = -fsanitize=$(subst ${} ${},,${VM_UBSAN_CHECKS})
107
108#
109# KASAN and coverage configurations have different code generation than customer
110# release kernels, and are not frequently built at desk like development kernels.
111# Build-time UBSan "violations" that affect only these kernels are likely to be
112# false positives and have no real-world security impact regardless.
113#
114ifeq ($(KASAN),1)
115# UBSan build-time validations disabled on KASAN builds
116else ifeq ($(BUILD_CODE_COVERAGE),1)
117# UBSan build-time validations disabled on code coverage builds
118else
119	vm_sanitize.o_CFLAGS_ADD += ${VM_UBSAN_FLAGS}
120	vm_sanitize.o_VERIFIER = VERIFIER_NO_UBSAN_CHECKS
121	vm_sanitize_error_compat.o_CFLAGS_ADD += ${VM_UBSAN_FLAGS}
122	vm_sanitize_error_compat.o_VERIFIER = VERIFIER_NO_UBSAN_CHECKS
123endif
124
125cccbc.o_INCFLAGS += -I${SRCROOT}/EXTERNAL_HEADERS/corecrypto
126ccdrbg.o_INCFLAGS += -I${SRCROOT}/EXTERNAL_HEADERS/corecrypto
127ccgcm.o_INCFLAGS += -I${SRCROOT}/EXTERNAL_HEADERS/corecrypto
128ccmode_gcm_gf_mult.o_INCFLAGS += -I${SRCROOT}/EXTERNAL_HEADERS/corecrypto
129ccmode_gcm_mult_h.o_INCFLAGS += -I${SRCROOT}/EXTERNAL_HEADERS/corecrypto
130
131#
132# Enforce semantic types
133#
134
135SEMANTIC_TYPES_SRC = $(notdir $(wildcard ${SRCROOT}/osfmk/vm/*.c))
136SEMANTIC_TYPES_OBJ = $(SEMANTIC_TYPES_SRC:.c=.o)
137
138define FORCE_UNSAFE_TYPES
139$1_CFLAGS_ADD += -DVM_UNSAFE_TYPES
140endef
141
142$(foreach file,$(SEMANTIC_TYPES_OBJ),$(eval $(call FORCE_UNSAFE_TYPES, $(file))))
143
144#
145# Diagnostic opt-outs.  We need to make this list empty.
146#
147# DO NOT ADD MORE HERE.
148#
149# -Wno-format-nonliteral
150ktest_emit.o_CWARNFLAGS_ADD += -Wno-format-nonliteral
151# -Wno-atomic-implicit-seq-cst
152mp.o_CWARNFLAGS_ADD += -Wno-atomic-implicit-seq-cst
153pmCPU.o_CWARNFLAGS_ADD += -Wno-atomic-implicit-seq-cst
154pmap_pcid.o_CWARNFLAGS_ADD += -Wno-atomic-implicit-seq-cst
155xcpm_dvfs.o_CWARNFLAGS_ADD += -Wno-atomic-implicit-seq-cst
156xcpm_fi.o_CWARNFLAGS_ADD += -Wno-atomic-implicit-seq-cst
157xcpm_idle.o_CWARNFLAGS_ADD += -Wno-atomic-implicit-seq-cst
158# -Wno-cast-align
159bsd_i386.o_CWARNFLAGS_ADD += -Wno-cast-align
160ccdigest_final_64be.o_CWARNFLAGS_ADD += -Wno-cast-align
161ccsha512_ltc_compress.o_CWARNFLAGS_ADD += -Wno-cast-align
162ccdigest_init.o_CWARNFLAGS_ADD += -Wno-cast-align
163ccdigest_update.o_CWARNFLAGS_ADD += -Wno-cast-align
164cchmac_final.o_CWARNFLAGS_ADD += -Wno-cast-align
165cchmac_init.o_CWARNFLAGS_ADD += -Wno-cast-align
166ccmode_gcm_gf_mult.o_CWARNFLAGS_ADD += -Wno-cast-align
167ccmode_gcm_mult_h.o_CWARNFLAGS_ADD += -Wno-cast-align
168commpage.o_CWARNFLAGS_ADD += -Wno-cast-align
169cpu_threads.o_CWARNFLAGS_ADD += -Wno-cast-align
170host.o_CWARNFLAGS_ADD += -Wno-cast-align
171kdp_machdep.o_CWARNFLAGS_ADD += -Wno-cast-align
172kdp_udp.o_CWARNFLAGS_ADD += -Wno-cast-align
173kdp_x86_common.o_CWARNFLAGS_ADD += -Wno-cast-align
174locks_i386.o_CWARNFLAGS_ADD += -Wno-cast-align
175machine_task.o_CWARNFLAGS_ADD += -Wno-cast-align
176model_dep.o_CWARNFLAGS_ADD += -Wno-cast-align
177mp_desc.o_CWARNFLAGS_ADD += -Wno-cast-align
178pcb.o_CWARNFLAGS_ADD += -Wno-cast-align
179pcb_native.o_CWARNFLAGS_ADD += -Wno-cast-align
180processor.o_CWARNFLAGS_ADD += -Wno-cast-align
181status.o_CWARNFLAGS_ADD += -Wno-cast-align
182task.o_CWARNFLAGS_ADD += -Wno-cast-align
183task_policy.o_CWARNFLAGS_ADD += -Wno-cast-align
184video_console.o_CWARNFLAGS_ADD += -Wno-cast-align
185# -Wno-implicit-int-conversion
186acpi.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
187commpage.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
188cpu.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
189cpu_threads.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
190kdebug_trigger.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
191kern_stackshot.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
192lapic_native.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
193loose_ends.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
194lz4.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
195model_dep.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
196mp.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
197mp_desc.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
198pcb.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
199pcb_native.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
200pmap_pcid.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
201pmap_x86_common.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
202sched_clutch.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
203trap.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
204uat.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
205video_console.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
206xcpm_dvfs.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
207xcpm_ioctl.o_CWARNFLAGS_ADD += -Wno-implicit-int-conversion
208# -Wno-shorten-64-to-32
209arm_vm_init.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
210backtrace.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
211btlog.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
212caches.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
213callstack.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
214clock.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
215clock_oldops.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
216iokit_rpc.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
217ipc_kmsg.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
218ipc_pset.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
219ipc_right.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
220kdp_core.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
221kdp_vm.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
222kern_cdata.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
223kern_stackshot.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
224loose_ends.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
225mach_msg.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
226machine_routines.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
227mk_timer.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
228model_dep.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
229pcb.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
230pmap.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
231processor_core.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
232rtclock.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
233status.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
234telemetry.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
235vm_init.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
236vm_kern.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
237vm_object.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
238vm_shared_region_pager.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
239vm_dyld_pager.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
240vm_swapfile_pager.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
241vm_user.o_CWARNFLAGS_ADD += -Wno-shorten-64-to-32
242# -Wno-sign-conversion
243Diagnostics.o_CWARNFLAGS_ADD += -Wno-sign-conversion
244acpi.o_CWARNFLAGS_ADD += -Wno-sign-conversion
245action.o_CWARNFLAGS_ADD += -Wno-sign-conversion
246affinity.o_CWARNFLAGS_ADD += -Wno-sign-conversion
247alternate_debugger.o_CWARNFLAGS_ADD += -Wno-sign-conversion
248arcade.o_CWARNFLAGS_ADD += -Wno-sign-conversion
249arm_init.o_CWARNFLAGS_ADD += -Wno-sign-conversion
250arm_timer.o_CWARNFLAGS_ADD += -Wno-sign-conversion
251arm_vm_init.o_CWARNFLAGS_ADD += -Wno-sign-conversion
252ast.o_CWARNFLAGS_ADD += -Wno-sign-conversion
253backtrace.o_CWARNFLAGS_ADD += -Wno-sign-conversion
254bank.o_CWARNFLAGS_ADD += -Wno-sign-conversion
255bitmap_test.o_CWARNFLAGS_ADD += -Wno-sign-conversion
256bsd_arm64.o_CWARNFLAGS_ADD += -Wno-sign-conversion
257bsd_i386.o_CWARNFLAGS_ADD += -Wno-sign-conversion
258bsd_i386_native.o_CWARNFLAGS_ADD += -Wno-sign-conversion
259bsd_kern.o_CWARNFLAGS_ADD += -Wno-sign-conversion
260bsd_vm.o_CWARNFLAGS_ADD += -Wno-sign-conversion
261btlog.o_CWARNFLAGS_ADD += -Wno-sign-conversion
262caches.o_CWARNFLAGS_ADD += -Wno-sign-conversion
263callstack.o_CWARNFLAGS_ADD += -Wno-sign-conversion
264ccdrbg_nisthmac.o_CWARNFLAGS_ADD += -Wno-sign-conversion
265cchmac.o_CWARNFLAGS_ADD += -Wno-sign-conversion
266cchmac_final.o_CWARNFLAGS_ADD += -Wno-sign-conversion
267cchmac_init.o_CWARNFLAGS_ADD += -Wno-sign-conversion
268clock.o_CWARNFLAGS_ADD += -Wno-sign-conversion
269clock_oldops.o_CWARNFLAGS_ADD += -Wno-sign-conversion
270coalition.o_CWARNFLAGS_ADD += -Wno-sign-conversion
271commpage.o_CWARNFLAGS_ADD += -Wno-sign-conversion
272copyio.o_CWARNFLAGS_ADD += -Wno-sign-conversion
273corpse.o_CWARNFLAGS_ADD += -Wno-sign-conversion
274cpu.o_CWARNFLAGS_ADD += -Wno-sign-conversion
275cpu_common.o_CWARNFLAGS_ADD += -Wno-sign-conversion
276cpu_threads.o_CWARNFLAGS_ADD += -Wno-sign-conversion
277cpu_topology.o_CWARNFLAGS_ADD += -Wno-sign-conversion
278cpuid.o_CWARNFLAGS_ADD += -Wno-sign-conversion
279dbgwrap.o_CWARNFLAGS_ADD += -Wno-sign-conversion
280debug.o_CWARNFLAGS_ADD += -Wno-sign-conversion
281ecc_logging.o_CWARNFLAGS_ADD += -Wno-sign-conversion
282entropy.o_CWARNFLAGS_ADD += -Wno-sign-conversion
283exception.o_CWARNFLAGS_ADD += -Wno-sign-conversion
284fpu.o_CWARNFLAGS_ADD += -Wno-sign-conversion
285host.o_CWARNFLAGS_ADD += -Wno-sign-conversion
286host_notify.o_CWARNFLAGS_ADD += -Wno-sign-conversion
287hv.o_CWARNFLAGS_ADD += -Wno-sign-conversion
288i386_init.o_CWARNFLAGS_ADD += -Wno-sign-conversion
289i386_timer.o_CWARNFLAGS_ADD += -Wno-sign-conversion
290i386_vm_init.o_CWARNFLAGS_ADD += -Wno-sign-conversion
291iokit_rpc.o_CWARNFLAGS_ADD += -Wno-sign-conversion
292ipc_eventlink.o_CWARNFLAGS_ADD += -Wno-sign-conversion
293ipc_host.o_CWARNFLAGS_ADD += -Wno-sign-conversion
294ipc_importance.o_CWARNFLAGS_ADD += -Wno-sign-conversion
295ipc_init.o_CWARNFLAGS_ADD += -Wno-sign-conversion
296ipc_kmsg.o_CWARNFLAGS_ADD += -Wno-sign-conversion
297ipc_kobject.o_CWARNFLAGS_ADD += -Wno-sign-conversion
298ipc_mqueue.o_CWARNFLAGS_ADD += -Wno-sign-conversion
299ipc_object.o_CWARNFLAGS_ADD += -Wno-sign-conversion
300ipc_port.o_CWARNFLAGS_ADD += -Wno-sign-conversion
301ipc_pset.o_CWARNFLAGS_ADD += -Wno-sign-conversion
302ipc_right.o_CWARNFLAGS_ADD += -Wno-sign-conversion
303ipc_space.o_CWARNFLAGS_ADD += -Wno-sign-conversion
304ipc_tt.o_CWARNFLAGS_ADD += -Wno-sign-conversion
305ipc_voucher.o_CWARNFLAGS_ADD += -Wno-sign-conversion
306kalloc.o_CWARNFLAGS_ADD += -Wno-sign-conversion
307kdp.o_CWARNFLAGS_ADD += -Wno-sign-conversion
308kdp_core.o_CWARNFLAGS_ADD += -Wno-sign-conversion
309kdp_machdep.o_CWARNFLAGS_ADD += -Wno-sign-conversion
310kdp_serial.o_CWARNFLAGS_ADD += -Wno-sign-conversion
311kdp_vm.o_CWARNFLAGS_ADD += -Wno-sign-conversion
312kern_monotonic.o_CWARNFLAGS_ADD += -Wno-sign-conversion
313kern_stackshot.o_CWARNFLAGS_ADD += -Wno-sign-conversion
314kernel_tests.o_CWARNFLAGS_ADD += -Wno-sign-conversion
315kext_alloc.o_CWARNFLAGS_ADD += -Wno-sign-conversion
316kpc.o_CWARNFLAGS_ADD += -Wno-sign-conversion
317kpc_arm.o_CWARNFLAGS_ADD += -Wno-sign-conversion
318kpc_common.o_CWARNFLAGS_ADD += -Wno-sign-conversion
319kpc_x86.o_CWARNFLAGS_ADD += -Wno-sign-conversion
320kperf.o_CWARNFLAGS_ADD += -Wno-sign-conversion
321kperf_kpc.o_CWARNFLAGS_ADD += -Wno-sign-conversion
322kperf_mp.o_CWARNFLAGS_ADD += -Wno-sign-conversion
323kperf_timer.o_CWARNFLAGS_ADD += -Wno-sign-conversion
324kperfbsd.o_CWARNFLAGS_ADD += -Wno-sign-conversion
325ktest_emit.o_CWARNFLAGS_ADD += -Wno-sign-conversion
326lapic_native.o_CWARNFLAGS_ADD += -Wno-sign-conversion
327lazy.o_CWARNFLAGS_ADD += -Wno-sign-conversion
328ledger.o_CWARNFLAGS_ADD += -Wno-sign-conversion
329lockdown_mode.o_CWARNFLAGS_ADD += -Wno-sign-conversion
330locks.o_CWARNFLAGS_ADD += -Wno-sign-conversion
331locks_arm.o_CWARNFLAGS_ADD += -Wno-sign-conversion
332locks_i386.o_CWARNFLAGS_ADD += -Wno-sign-conversion
333locks_i386_opt.o_CWARNFLAGS_ADD += -Wno-sign-conversion
334loose_ends.o_CWARNFLAGS_ADD += -Wno-sign-conversion
335lowmem_vectors.o_CWARNFLAGS_ADD += -Wno-sign-conversion
336lz4.o_CWARNFLAGS_ADD += -Wno-sign-conversion
337mach_debug.o_CWARNFLAGS_ADD += -Wno-sign-conversion
338mach_kernelrpc.o_CWARNFLAGS_ADD += -Wno-sign-conversion
339mach_port.o_CWARNFLAGS_ADD += -Wno-sign-conversion
340machdep_call.o_CWARNFLAGS_ADD += -Wno-sign-conversion
341machine.o_CWARNFLAGS_ADD += -Wno-sign-conversion
342machine_check.o_CWARNFLAGS_ADD += -Wno-sign-conversion
343machine_remote_time.o_CWARNFLAGS_ADD += -Wno-sign-conversion
344machine_routines.o_CWARNFLAGS_ADD += -Wno-sign-conversion
345machine_routines_common.o_CWARNFLAGS_ADD += -Wno-sign-conversion
346machine_task.o_CWARNFLAGS_ADD += -Wno-sign-conversion
347meminfo.o_CWARNFLAGS_ADD += -Wno-sign-conversion
348memory_object.o_CWARNFLAGS_ADD += -Wno-sign-conversion
349mk_sp.o_CWARNFLAGS_ADD += -Wno-sign-conversion
350mk_timer.o_CWARNFLAGS_ADD += -Wno-sign-conversion
351model_dep.o_CWARNFLAGS_ADD += -Wno-sign-conversion
352monotonic_arm64.o_CWARNFLAGS_ADD += -Wno-sign-conversion
353monotonic_x86_64.o_CWARNFLAGS_ADD += -Wno-sign-conversion
354mp.o_CWARNFLAGS_ADD += -Wno-sign-conversion
355mp_desc.o_CWARNFLAGS_ADD += -Wno-sign-conversion
356mp_native.o_CWARNFLAGS_ADD += -Wno-sign-conversion
357mpsc_queue.o_CWARNFLAGS_ADD += -Wno-sign-conversion
358mtrr.o_CWARNFLAGS_ADD += -Wno-sign-conversion
359pal_routines.o_CWARNFLAGS_ADD += -Wno-sign-conversion
360pcb.o_CWARNFLAGS_ADD += -Wno-sign-conversion
361pcb_native.o_CWARNFLAGS_ADD += -Wno-sign-conversion
362pet.o_CWARNFLAGS_ADD += -Wno-sign-conversion
363platform_tests.o_CWARNFLAGS_ADD += -Wno-sign-conversion
364pmCPU.o_CWARNFLAGS_ADD += -Wno-sign-conversion
365pmap.o_CWARNFLAGS_ADD += -Wno-sign-conversion
366pmap_common.o_CWARNFLAGS_ADD += -Wno-sign-conversion
367pmap_pcid.o_CWARNFLAGS_ADD += -Wno-sign-conversion
368pmap_tests.o_CWARNFLAGS_ADD += -Wno-sign-conversion
369pmap_x86_common.o_CWARNFLAGS_ADD += -Wno-sign-conversion
370printf.o_CWARNFLAGS_ADD += -Wno-sign-conversion
371priority.o_CWARNFLAGS_ADD += -Wno-sign-conversion
372prng_random.o_CWARNFLAGS_ADD += -Wno-sign-conversion
373processor.o_CWARNFLAGS_ADD += -Wno-sign-conversion
374remote_time.o_CWARNFLAGS_ADD += -Wno-sign-conversion
375rtclock.o_CWARNFLAGS_ADD += -Wno-sign-conversion
376sart.o_CWARNFLAGS_ADD += -Wno-sign-conversion
377sched_amp.o_CWARNFLAGS_ADD += -Wno-sign-conversion
378sched_amp_common.o_CWARNFLAGS_ADD += -Wno-sign-conversion
379sched_average.o_CWARNFLAGS_ADD += -Wno-sign-conversion
380sched_clutch.o_CWARNFLAGS_ADD += -Wno-sign-conversion
381sched_dualq.o_CWARNFLAGS_ADD += -Wno-sign-conversion
382sched_prim.o_CWARNFLAGS_ADD += -Wno-sign-conversion
383serial_console.o_CWARNFLAGS_ADD += -Wno-sign-conversion
384serial_general.o_CWARNFLAGS_ADD += -Wno-sign-conversion
385sfi.o_CWARNFLAGS_ADD += -Wno-sign-conversion
386shart.o_CWARNFLAGS_ADD += -Wno-sign-conversion
387sleh.o_CWARNFLAGS_ADD += -Wno-sign-conversion
388stack.o_CWARNFLAGS_ADD += -Wno-sign-conversion
389startup.o_CWARNFLAGS_ADD += -Wno-sign-conversion
390status.o_CWARNFLAGS_ADD += -Wno-sign-conversion
391status_shared.o_CWARNFLAGS_ADD += -Wno-sign-conversion
392subrs.o_CWARNFLAGS_ADD += -Wno-sign-conversion
393sync_sema.o_CWARNFLAGS_ADD += -Wno-sign-conversion
394syscall_subr.o_CWARNFLAGS_ADD += -Wno-sign-conversion
395t8020dart.o_CWARNFLAGS_ADD += -Wno-sign-conversion
396task.o_CWARNFLAGS_ADD += -Wno-sign-conversion
397task_policy.o_CWARNFLAGS_ADD += -Wno-sign-conversion
398telemetry.o_CWARNFLAGS_ADD += -Wno-sign-conversion
399test_lock.o_CWARNFLAGS_ADD += -Wno-sign-conversion
400test_thread_call.o_CWARNFLAGS_ADD += -Wno-sign-conversion
401thread_call.o_CWARNFLAGS_ADD += -Wno-sign-conversion
402thread_group.o_CWARNFLAGS_ADD += -Wno-sign-conversion
403thread_policy.o_CWARNFLAGS_ADD += -Wno-sign-conversion
404timer_call.o_CWARNFLAGS_ADD += -Wno-sign-conversion
405trap.o_CWARNFLAGS_ADD += -Wno-sign-conversion
406trustcache.o_CWARNFLAGS_ADD += -Wno-sign-conversion
407turnstile.o_CWARNFLAGS_ADD += -Wno-sign-conversion
408uat.o_CWARNFLAGS_ADD += -Wno-sign-conversion
409ucode.o_CWARNFLAGS_ADD += -Wno-sign-conversion
410ux_handler.o_CWARNFLAGS_ADD += -Wno-sign-conversion
411vfp_state_test.o_CWARNFLAGS_ADD += -Wno-sign-conversion
412video_console.o_CWARNFLAGS_ADD += -Wno-sign-conversion
413video_scroll.o_CWARNFLAGS_ADD += -Wno-sign-conversion
414vm32_user.o_CWARNFLAGS_ADD += -Wno-sign-conversion
415vm_compressor.o_CWARNFLAGS_ADD += -Wno-sign-conversion
416vm_compressor_algorithms.o_CWARNFLAGS_ADD += -Wno-sign-conversion
417vm_compressor_backing_store.o_CWARNFLAGS_ADD += -Wno-sign-conversion
418vm_compressor_pager.o_CWARNFLAGS_ADD += -Wno-sign-conversion
419vm_fault.o_CWARNFLAGS_ADD += -Wno-sign-conversion
420vm_kern.o_CWARNFLAGS_ADD += -Wno-sign-conversion
421vm_map.o_CWARNFLAGS_ADD += -Wno-sign-conversion
422vm_map_store_ll.o_CWARNFLAGS_ADD += -Wno-sign-conversion
423vm_map_store_rb.o_CWARNFLAGS_ADD += -Wno-sign-conversion
424vm_object.o_CWARNFLAGS_ADD += -Wno-sign-conversion
425vm_pageout.o_CWARNFLAGS_ADD += -Wno-sign-conversion
426vm_phantom_cache.o_CWARNFLAGS_ADD += -Wno-sign-conversion
427vm_purgeable.o_CWARNFLAGS_ADD += -Wno-sign-conversion
428vm_resident.o_CWARNFLAGS_ADD += -Wno-sign-conversion
429vm_shared_region.o_CWARNFLAGS_ADD += -Wno-sign-conversion
430vm_user.o_CWARNFLAGS_ADD += -Wno-sign-conversion
431vmx_cpu.o_CWARNFLAGS_ADD += -Wno-sign-conversion
432waitq.o_CWARNFLAGS_ADD += -Wno-sign-conversion
433work_interval.o_CWARNFLAGS_ADD += -Wno-sign-conversion
434xcpm_dvfs.o_CWARNFLAGS_ADD += -Wno-sign-conversion
435xcpm_fi.o_CWARNFLAGS_ADD += -Wno-sign-conversion
436xcpm_idle.o_CWARNFLAGS_ADD += -Wno-sign-conversion
437xcpm_ioctl.o_CWARNFLAGS_ADD += -Wno-sign-conversion
438# -Wno-xnu-typed-allocators
439kalloc.o_CWARNFLAGS_ADD += -Wno-xnu-typed-allocators
440exclaves_conclave_launcher.tightbeam.o_CWARNFLAGS_ADD += -Wno-unused-parameter
441# -Wno-vla
442exclaves_boot.o_CWARNFLAGS_ADD += -Wno-vla
443exclaves_xnuproxy.o_CWARNFLAGS_ADD += -Wno-vla
444machine.o_CWARNFLAGS_ADD += -Wno-vla
445pmap.o_CWARNFLAGS_ADD += -Wno-vla
446ppl_hib.o_CWARNFLAGS_ADD += -Wno-vla
447processor_core.o_CWARNFLAGS_ADD += -Wno-vla
448sleh.o_CWARNFLAGS_ADD += -Wno-vla
449vm_reclaim.o_CWARNFLAGS_ADD += -Wno-vla
450# -Wno-enum-compare
451exclaves_memory.o_CWARNFLAGS_ADD += -Wno-enum-compare
452lock_mtx.o_CWARNFLAGS_ADD += -Wno-enum-compare
453pmap.o_CWARNFLAGS_ADD += -Wno-enum-compare
454
455# Rebuild if per-file overrides change
456${OBJS}: $(firstword $(MAKEFILE_LIST))
457
458# Rebuild if global compile flags change
459$(COBJS): .CFLAGS
460.CFLAGS: ALWAYS
461	$(_v)$(REPLACECONTENTS) $@ $(KCC) $(CFLAGS) $(INCFLAGS)
462$(CXXOBJS): .CXXFLAGS
463.CXXFLAGS: ALWAYS
464	$(_v)$(REPLACECONTENTS) $@ $(KC++) $(CXXFLAGS) $(INCFLAGS)
465$(SOBJS): .SFLAGS
466.SFLAGS: ALWAYS
467	$(_v)$(REPLACECONTENTS) $@ $(S_KCC) $(SFLAGS) $(INCFLAGS)
468
469$(COMPONENT).filelist: $(OBJS)
470	$(_v)for hib_file in ${HIB_FILES};		\
471	do	\
472                $(SEG_HACK) -n __HIB -o $${hib_file}__ $${hib_file} || exit 1; \
473                mv $${hib_file}__ $${hib_file} || exit 1; \
474	done
475	@$(LOG_LDFILELIST) "$(COMPONENT)"
476	$(_v)for obj in ${OBJS}; do	\
477		 $(ECHO) $(TARGET)/$(CURRENT_KERNEL_CONFIG)/$${obj}; \
478	done > $(COMPONENT).filelist
479
480ifeq ($(XNU_LibAllFiles),1)
481LIBOBJS := $(OBJS)
482endif
483
484$(COMPONENT).libfilelist: $(LIBOBJS)
485	@$(LOG_LDFILELIST) "lib$(COMPONENT)"
486	$(_v)for obj in ${LIBOBJS}; do	\
487		 $(ECHO) $(TARGET)/$(CURRENT_KERNEL_CONFIG)/$${obj}; \
488	done > $(COMPONENT).libfilelist
489
490ifeq ($(RC_ProjectName),xnu_libraries)
491do_all: $(COMPONENT).libfilelist
492else
493do_all: $(COMPONENT).filelist
494endif
495
496do_build_all:: do_all
497
498# genassym.o actually is an assembly file,
499# we name it genassym.o to help with the automatic
500# dependency generation
501
502GENASSYM_LOCATION = $(CURRENT_ARCH_CONFIG_LC)
503
504ifeq ($(CURRENT_ARCH_CONFIG_LC),x86_64)
505GENASSYM_LOCATION = i386
506else ifeq ($(CURRENT_ARCH_CONFIG_LC),x86_64h)
507GENASSYM_LOCATION = i386
508endif
509
510-include genassym.d
511genassym.o: .CFLAGS $(firstword $(MAKEFILE_LIST))
512genassym.o: $(SOURCE_DIR)/$(COMPONENT)/$(GENASSYM_LOCATION)/genassym.c
513	@$(LOG_GENASSYM) "$<"
514	$(_v)${GENASSYM_KCC} ${CFLAGS} ${CFLAGS_NOLTO_FLAG} -fno-integrated-as -MD -S -o ${@} ${INCFLAGS} $<
515
516assym.s: genassym.o
517	$(_v)sed -e '/^[[:space:]]*DEFINITION__define__/!d;{N;s/\n//;}' -e 's/^[[:space:]]*DEFINITION__define__\([^:]*\):.*ascii.*\"[\$$]*\([-0-9\#]*\)\".*$$/#define \1 \2/' -e 'p'  -e 's/#//2' -e 's/^[[:space:]]*#define \([A-Za-z0-9_]*\)[[:space:]]*[\$$#]*\([-0-9]*\).*$$/#define \1_NUM \2/' genassym.o > $@
518
519${SOBJS}: assym.s
520
521%RULES
522
523include $(MakeInc_rule)
524include $(MakeInc_dir)
525