xref: /xnu-11215.41.3/tests/Makefile (revision 33de042d024d46de5ff4e89f2471de6608e37fa4)
1PROJECT := xnu/darwintests
2
3# When building as part of xnu_tests, we get passed a DSTROOT that's got the
4# unit test path in it already.  But, BASEDSTROOT doesn't, so use that instead.
5ifdef BASEDSTROOT
6override DSTROOT = $(BASEDSTROOT)
7endif
8
9INVALID_ARCHS = i386 $(filter armv7%,$(ARCH_CONFIGS))
10ENABLE_LTE_TESTS=YES
11
12OTHER_LTE_INCLUDE_FILES += \
13	/System/Library/PrivateFrameworks/LoggingSupport.framework, \
14	/System/Library/PrivateFrameworks/MobileKeyBag.framework, \
15	/System/Library/Frameworks/IOSurface.framework, \
16	/usr/local/lib/libdarwintest_utils.dylib, \
17	/usr/lib/libapple_crypto.dylib,
18
19DEVELOPER_DIR ?= $(shell xcode-select -p)
20
21
22ifeq ($(origin TIGHTBEAM_MODULE_DIR),undefined)
23	export TIGHTBEAM_MODULE_DIR := $(shell /usr/bin/xcrun --show-sdk-path -sdk $(SDKROOT))/usr/local/lib/kernel/tightbeam
24endif
25
26USE_WERROR := 1
27ifneq ($(BUILD_WERROR),)
28USE_WERROR := $(BUILD_WERROR)
29endif
30
31ifeq ($(USE_WERROR),1)
32WERROR := -Werror
33endif
34
35# the xnu build system will only ever call us with the default target
36.DEFAULT_GOAL := install
37
38include $(DEVELOPER_DIR)/AppleInternal/Makefiles/darwintest/Makefile.common
39
40OTHER_CFLAGS  = -Weverything -Wno-gnu-union-cast -Wno-missing-field-initializers -Wno-partial-availability
41OTHER_CFLAGS += -Wno-missing-noreturn -Wno-vla -Wno-reserved-id-macro -Wno-documentation-unknown-command
42OTHER_CFLAGS += -Wno-padded -Wno-used-but-marked-unused -Wno-covered-switch-default -Wno-nullability-extension
43OTHER_CFLAGS += -Wno-gnu-empty-initializer -Wno-unused-macros -Wno-undef -Wno-fixed-enum-extension
44OTHER_CFLAGS += -Wno-gnu-auto-type -Wno-switch-enum -Wno-variadic-macros -Wno-declaration-after-statement
45OTHER_CFLAGS += -Wno-cast-function-type-strict -Wno-gcc-compat -Wno-c2x-extensions
46OTHER_CFLAGS += --std=gnu11 -isystem $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
47OTHER_CFLAGS += -UT_NAMESPACE_PREFIX -DT_NAMESPACE_PREFIX=xnu -DT_LEAKS_DISABLE=1
48OTHER_CFLAGS += -F $(SDKROOT)/System/Library/PrivateFrameworks
49
50
51CODESIGN:=$(shell xcrun -sdk "$(TARGETSDK)" -find codesign)
52CODESIGN_HARDENED_RUNTIME:=$(CODESIGN) -o runtime
53CODESIGN_ALLOCATE:=$(shell xcrun -sdk "$(TARGETSDK)" -find codesign_allocate)
54
55LIPO:=$(shell xcrun -sdk "$(TARGETSDK)" -find lipo)
56
57ifeq ($(PLATFORM),iPhoneOS)
58  IOS_TEST_COMPAT = YES
59else
60  IOS_TEST_COMPAT = NO
61endif
62
63# Generate tightbeam header for ExclavesCHelloServer from tbmodule in the SDK
64ifneq ($(wildcard $(SDKROOT)/System/Library/PrivateFrameworks/Tightbeam.framework/Headers/tightbeam.h),)
65TIGHTBEAM_MODULES := \
66	ExclavesCHelloServer.tbmodule
67
68TIGHTBEAM_MODULE_HEADERS := $(patsubst %.tbmodule,%.tightbeam.h,$(TIGHTBEAM_MODULES))
69TIGHTBEAM_MODULE_IMPL := $(patsubst %.tbmodule,%.tightbeam.c,$(TIGHTBEAM_MODULES))
70
71# This makes sure to not include any tbmodules which don't exist in the SDK and
72# expand the modules listed above to their full path in the SDK. The modules
73# should only be needed when actually building with CONFIG_EXCLAVES
74# (which can't easily be checked here).
75TIGHTBEAM_MODULES := $(patsubst %.tbmodule,$(TIGHTBEAM_MODULE_DIR)/%.tbmodule,$(TIGHTBEAM_MODULES))
76TIGHTBEAM_MODULES := $(wildcard $(TIGHTBEAM_MODULES))
77TIGHTBEAM_MODULE_IMPL_PATH := $(addprefix $(OBJROOT)/, $(TIGHTBEAM_MODULE_IMPL))
78
79$(TIGHTBEAM_MODULE_IMPL) : \
80	%.tightbeam.c : $(TIGHTBEAM_MODULES)
81	$(TIGHTBEAMC) build generate-c --output-base $(OBJROOT)/$*.tightbeam.c --codegen-version 2 $<
82
83$(TIGHTBEAM_MODULE_HEADERS) : $(TIGHTBEAM_MODULE_IMPL)
84endif
85
86# Subsystems
87
88include ktrace/Makefile
89
90INCLUDED_TEST_SOURCE_DIRS += recount
91include recount/Makefile
92INCLUDED_TEST_SOURCE_DIRS += cpu_counters
93include cpu_counters/Makefile
94
95# Miscellaneous Tests
96
97signal_exit_reason: CODE_SIGN_ENTITLEMENTS = signal_exit_reason.entitlements
98
99
100atm_diagnostic_flag: OTHER_CFLAGS += drop_priv.c
101
102atm_diagnostic_flag_entitled: CODE_SIGN_ENTITLEMENTS = atm_diagnostic_flag.entitlements
103atm_diagnostic_flag_entitled: OTHER_CFLAGS += drop_priv.c
104
105avx: INVALID_ARCHS = $(filter arm%,$(ARCH_CONFIGS))
106avx: OTHER_CFLAGS += -mavx512f -mavx512bw -mavx512vl
107avx: OTHER_CFLAGS += -I$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
108avx: CONFIG_FLAGS := $(filter-out -O%,$(CONFIG_FLAGS))
109# Add -mno-implicit-float to prevent the compiler from touching SIMD regs
110# unexpectedly
111avx: CONFIG_FLAGS += -mno-implicit-float
112# Disable vzeroupper insertion to work around rdar://problem/35035096
113avx: CONFIG_FLAGS += -mllvm -x86-use-vzeroupper=0
114ifneq (osx,$(TARGET_NAME))
115EXCLUDED_SOURCES += avx.c
116endif
117
118CUSTOM_TARGETS = sr_entitlement_helper
119
120sr_entitlement_helper: sr_entitlement_helper.c
121	mkdir -p $(SYMROOT)
122	$(CC) -I $(OBJROOT) $(CFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) sr_entitlement_helper.c -o $(SYMROOT)/$@
123	echo $(CODESIGN) --force --sign - --timestamp=none --entitlements sr_entitlement.entitlements $(SYMROOT)/$@; \
124	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements sr_entitlement.entitlements $(SYMROOT)/$@;
125
126install-sr_entitlement_helper: sr_entitlement_helper
127	mkdir -p $(INSTALLDIR)
128	cp $(SYMROOT)/sr_entitlement_helper $(INSTALLDIR)
129
130sr_entitlement: OTHER_LDFLAGS += -ldarwintest_utils
131
132restrict_jit: CODE_SIGN_ENTITLEMENTS = restrict_jit.entitlements
133
134backtracing_tests: OTHER_LDFLAGS += -framework CoreSymbolication
135backtracing_tests: CODE_SIGN_ENTITLEMENTS = kernel_symbolication_entitlements.plist
136
137CUSTOM_TARGETS += corpse_backtrace2
138
139corpse_backtrace2:
140		$(MIG) $(CFLAGS) \
141		-DMACH_EXC_SERVER_TASKIDTOKEN \
142		-DMACH_EXC_SERVER_BACKTRACE \
143		-sheader $(OBJROOT)/excserver_backtrace.h \
144		-server $(OBJROOT)/excserver_backtrace.c \
145		-header /dev/null -user /dev/null \
146		excserver_backtrace.defs
147
148install-corpse_backtrace2: ;
149
150corpse_backtrace: corpse_backtrace2 exc_helpers.c
151corpse_backtrace: OTHER_CFLAGS += $(OBJROOT)/excserver_backtrace.c
152corpse_backtrace: OTHER_CFLAGS += -I $(OBJROOT)
153corpse_backtrace: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
154
155
156OTHER_TEST_TARGETS += vm/vm_parameter_validation
157
158# vm_parameter_validation builds each arch as a separate build command
159# so we can pass architecture-specific linker flags.
160# and generate arch-specific MIG files.
161
162# libdarwintest.a doesn't have an arm64 slice on watchOS
163ifeq ($(PLATFORM),WatchOS)
164VM_PARAMETER_VALIDATION_INVALID_ARCHS = arm64
165vm/vm_parameter_validation: INVALID_ARCHS += arm64
166endif
167
168VM_PARAMETER_VALIDATION_ARCHS = $(filter-out $(VM_PARAMETER_VALIDATION_INVALID_ARCHS),$(ARCH_CONFIGS))
169
170# Some tests map-overwrite wildly at addresses near 0.
171# Use a large PAGEZERO so our executable and other data do not land there.
172# (This is 32-bit only. 64-bit uses 4GB PAGEZERO by default which is fine.)
173VM_PARAMETER_VALIDATION_LDFLAGS_i386     = -Xlinker -pagezero_size -Xlinker 0x1000000
174VM_PARAMETER_VALIDATION_LDFLAGS_armv7    = -Xlinker -pagezero_size -Xlinker 0x1000000
175VM_PARAMETER_VALIDATION_LDFLAGS_armv7s   = -Xlinker -pagezero_size -Xlinker 0x1000000
176VM_PARAMETER_VALIDATION_LDFLAGS_armv7k   = -Xlinker -pagezero_size -Xlinker 0x1000000
177VM_PARAMETER_VALIDATION_LDFLAGS_arm64_32 = -Xlinker -pagezero_size -Xlinker 0x1000000
178
179VM_PARAMETER_VALIDATION_SLICES=$(addprefix $(SYMROOT)/vm/vm_parameter_validation_,$(VM_PARAMETER_VALIDATION_ARCHS))
180
181vm/vm_parameter_validation: $(VM_PARAMETER_VALIDATION_SLICES)
182	$(LIPO) -create $(VM_PARAMETER_VALIDATION_SLICES) -output $(SYMROOT)/$@
183	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@
184
185$(SYMROOT)/vm/vm_parameter_validation_%: ../osfmk/tests/vm_parameter_validation.h \
186                                         $(OBJROOT)/vm_parameter_validation_%_vm_map_user.c \
187                                         $(OBJROOT)/vm_parameter_validation_%_mach_vm_user.c \
188                                         $(OBJROOT)/vm_parameter_validation_%_replacement_mach_host.c \
189                                         $(OBJROOT)/vm_parameter_validation_%_replacement_host_priv.c \
190                                         vm/vm_parameter_validation.c
191	mkdir -p $(SYMROOT)/vm
192	$(CC) -I $(OBJROOT) \
193	    $(DT_CFLAGS) $(OTHER_CFLAGS) $(filter-out $(ARCH_FLAGS),$(CFLAGS)) -arch $* \
194	    $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $(VM_PARAMETER_VALIDATION_LDFLAGS_$*) \
195	    $(OBJROOT)/vm_parameter_validation_$*_vm_map_user.c \
196	    $(OBJROOT)/vm_parameter_validation_$*_mach_vm_user.c \
197	    $(OBJROOT)/vm_parameter_validation_$*_replacement_mach_host.c \
198	    $(OBJROOT)/vm_parameter_validation_$*_replacement_host_priv.c \
199	    vm/vm_parameter_validation.c -o $@
200
201# xnu/libsyscall/mach/mach_vm.c intercepts some VM calls from userspace,
202# sometimes doing something other than the expected MIG call.
203# We generate our own MIG userspace call sites to call the kernel entrypoints directly,
204# bypassing libsyscall's interference.
205$(OBJROOT)/vm_parameter_validation_%_vm_map_user.c: ../osfmk/mach/vm_map.defs
206	$(MIG) $(filter-out $(ARCH_FLAGS),$(CFLAGS)) -arch $* \
207	 -I../osfmk -novouchers -DMACH_KERNEL_PRIVATE -DKERNEL_USER=1 -DKOBJECT_SERVER -DKERNEL_VM_TEST=1 \
208	 -user $@ -header $(subst _$*_,_,$(@:.c=.h)) \
209	 -server /dev/null -sheader /dev/null \
210	 $<
211$(OBJROOT)/vm_parameter_validation_%_mach_vm_user.c: ../osfmk/mach/mach_vm.defs
212	$(MIG) $(filter-out $(ARCH_FLAGS),$(CFLAGS)) -arch $* \
213	 -I../osfmk -novouchers -DMACH_KERNEL_PRIVATE -DKERNEL_USER=1 -DKOBJECT_SERVER -DKERNEL_VM_TEST=1 \
214	 -user $@ -header $(subst _$*_,_,$(@:.c=.h)) \
215	 -server /dev/null -sheader /dev/null \
216	 $<
217# The declaration of mach_memory_object_memory_entry is buggy on U32.
218# We compile in our own MIG user stub for it with a "replacement_" prefix.
219# rdar://117927965
220$(OBJROOT)/vm_parameter_validation_%_replacement_mach_host.c: vm/vm_parameter_validation_replacement_mach_host.defs
221	$(MIG) $(filter-out $(ARCH_FLAGS),$(CFLAGS)) -arch $* \
222	 -I../osfmk -novouchers -DMACH_KERNEL_PRIVATE -DKERNEL_USER=1 -DKOBJECT_SERVER -DKERNEL_VM_TEST=1 \
223	 -user $@ -header $(subst _$*_,_,$(@:.c=.h)) \
224	 -server /dev/null -sheader /dev/null \
225	 $<
226# The declaration of vm_wire is buggy on U32.
227# We compile in our own MIG user stub for it with a "replacement_" prefix.
228# rdar://118258929
229$(OBJROOT)/vm_parameter_validation_%_replacement_host_priv.c: vm/vm_parameter_validation_replacement_host_priv.defs
230	$(MIG) $(filter-out $(ARCH_FLAGS),$(CFLAGS)) -arch $* \
231	 -I../osfmk -novouchers -DMACH_KERNEL_PRIVATE -DKERNEL_USER=1 -DKOBJECT_SERVER -DKERNEL_VM_TEST=1 \
232	 -user $@ -header $(subst _$*_,_,$(@:.c=.h)) \
233	 -server /dev/null -sheader /dev/null \
234	 $<
235
236
237CUSTOM_TARGETS += immovable_send_client vm_spawn_tool port_exhaustion_client port_table_limits_client fd_table_limits_client posix_spawnattr_set_crash_behavior_np_child kqworkloop_limits_client
238CUSTOM_TARGETS += ipc/hardened_exceptions_entitled_debugger ipc/hardened_exceptions_entitled
239CUSTOM_TARGETS += excserver_protect
240CUSTOM_TARGETS += excserver_protect_state
241
242exception_tests: excserver_protect exc_helpers.c
243exception_tests: CODE_SIGN_ENTITLEMENTS = exception_tests.entitlements
244exception_tests: OTHER_CFLAGS += $(OBJROOT)/excserver_protect.c
245exception_tests: OTHER_CFLAGS += -I $(OBJROOT)
246exception_tests: OTHER_CFLAGS += -DENTITLED=1
247
248ipc/hardened_exceptions: excserver_protect_state exc_helpers.c
249ipc/hardened_exceptions: ipc/hardened_exceptions_entitled ipc/hardened_exceptions_entitled_debugger
250ipc/hardened_exceptions: OTHER_CFLAGS += $(OBJROOT)/excserver_protect_state.c -I $(OBJROOT)
251
252ipc/hardened_exceptions_entitled: excserver_protect_state
253ipc/hardened_exceptions_entitled: CODE_SIGN_ENTITLEMENTS = entitlements/only_one_exception_port.entitlement
254ipc/hardened_exceptions_entitled: OTHER_CFLAGS += -I $(OBJROOT)
255ipc/hardened_exceptions_entitled: exc_helpers.c ipc/hardened_exceptions.c
256	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(OTHER_CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) -I$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders \
257	$(filter-out $(CUSTOM_TARGETS), $^) -o $(SYMROOT)/$@
258	$(CODESIGN) --force --sign - --entitlements $(CODE_SIGN_ENTITLEMENTS) --timestamp=none $(SYMROOT)/$@
259
260ipc/hardened_exceptions_entitled_debugger: excserver_protect_state
261ipc/hardened_exceptions_entitled_debugger: CODE_SIGN_ENTITLEMENTS = entitlements/only_one_exception_port_debugger.entitlement
262ipc/hardened_exceptions_entitled_debugger: OTHER_CFLAGS += -I $(OBJROOT)
263ipc/hardened_exceptions_entitled_debugger: exc_helpers.c ipc/hardened_exceptions.c
264	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(OTHER_CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) -I$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders \
265	$(filter-out $(CUSTOM_TARGETS), $^) -o $(SYMROOT)/$@
266	$(CODESIGN) --force --sign -  --entitlements $(CODE_SIGN_ENTITLEMENTS) --timestamp=none $(SYMROOT)/$@
267
268install-ipc/hardened_exceptions_entitled_debugger: ipc/hardened_exceptions_entitled_debugger
269	mkdir -p $(INSTALLDIR)
270	cp $(SYMROOT)/$< $(INSTALLDIR)/
271
272install-ipc/hardened_exceptions_entitled: ipc/hardened_exceptions_entitled
273	mkdir -p $(INSTALLDIR)
274	cp $(SYMROOT)/$< $(INSTALLDIR)/
275
276install-reply_port_defense_client: reply_port_defense_client
277	mkdir -p $(INSTALLDIR)
278	cp $(SYMROOT)/$< $(INSTALLDIR)/
279
280immovable_send: excserver
281immovable_send: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
282immovable_send: OTHER_LDFLAGS += -ldarwintest_utils -lpthread -framework IOKit
283immovable_send: immovable_send_client
284immovable_send: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
285
286locks: OTHER_LDFLAGS += -ldarwintest_utils
287
288immovable_send_client: immovable_send_client.c
289	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) immovable_send_client.c -o $(SYMROOT)/immovable_send_client
290
291install-immovable_send_client: immovable_send_client
292	mkdir -p $(INSTALLDIR)
293	cp $(SYMROOT)/immovable_send_client $(INSTALLDIR)/
294
295ipc/sys_perf_notify_test: excserver_protect_state
296ipc/sys_perf_notify_test: OTHER_CFLAGS += $(OBJROOT)/excserver_protect_state.c -I $(OBJROOT)
297ipc/sys_perf_notify_test: CODE_SIGN_ENTITLEMENTS=entitlements/sys_perf_notify_test.entitlements
298
299
300posix_spawnattr_set_crash_behavior_np: posix_spawnattr_set_crash_behavior_np_child
301posix_spawnattr_set_crash_behavior_np: CODE_SIGN_ENTITLEMENTS = posix_spawnattr_set_crash_behavior_np_entitlements.plist
302
303posix_spawnattr_set_crash_behavior_np_child: posix_spawnattr_set_crash_behavior_np_child.c
304	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) posix_spawnattr_set_crash_behavior_np_child.c -o $(SYMROOT)/posix_spawnattr_set_crash_behavior_np_child
305	$(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@
306
307install-posix_spawnattr_set_crash_behavior_np_child: posix_spawnattr_set_crash_behavior_np_child
308	mkdir -p $(INSTALLDIR)
309	cp $(SYMROOT)/posix_spawnattr_set_crash_behavior_np_child $(INSTALLDIR)/
310
311posix_spawnattr_set_launch_type_np: posix_spawnattr_set_launch_type_test
312posix_spawnattr_set_launch_type_np: OTHER_CFLAGS += -isystem $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
313
314posix_spawn_launch_type: CODE_SIGN_ENTITLEMENTS = posix_spawn_launch_type-entitlements.plist
315
316port_exhaustion: OTHER_LDFLAGS += -ldarwintest_utils -lpthread
317port_exhaustion: port_exhaustion_client
318
319port_exhaustion_client: port_exhaustion_client.c
320	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) port_exhaustion_client.c -o $(SYMROOT)/port_exhaustion_client
321
322install-port_exhaustion_client: port_exhaustion_client
323	mkdir -p $(INSTALLDIR)
324	cp $(SYMROOT)/port_exhaustion_client $(INSTALLDIR)/
325
326port_table_limits: rnserver
327port_table_limits: CODE_SIGN_ENTITLEMENTS = task_for_pid_entitlement.plist
328port_table_limits: OTHER_CFLAGS += $(OBJROOT)/rnServer.c -I $(OBJROOT)
329port_table_limits: OTHER_LDFLAGS += -ldarwintest_utils -lpthread
330port_table_limits: port_table_limits_client
331
332port_table_limits_client: port_table_limits_client.c
333	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) port_table_limits_client.c -o $(SYMROOT)/port_table_limits_client
334	$(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@
335
336install-port_table_limits_client: port_table_limits_client
337	mkdir -p $(INSTALLDIR)
338	cp $(SYMROOT)/port_table_limits_client $(INSTALLDIR)/
339
340CUSTOM_TARGETS += kqwl_rnserver
341
342kqwl_rnserver:
343	$(MIG) $(CFLAGS) \
344		-DKQWORKLOOPS_VIOLATION_SUPPORTED \
345		-user /dev/null \
346		-header $(OBJROOT)/kqwl_rn.h \
347		-sheader $(OBJROOT)/kqwl_rnServer.h \
348		-server $(OBJROOT)/kqwl_rnServer.c \
349		rnserver.defs
350install-kqwl_rnserver: ;
351
352kqworkloop_limits: kqwl_rnserver
353kqworkloop_limits: OTHER_CFLAGS += $(OBJROOT)/kqwl_rnServer.c -I $(OBJROOT)
354kqworkloop_limits: OTHER_LDFLAGS += -ldarwintest_utils -lpthread
355kqworkloop_limits: kqworkloop_limits_client
356
357kqworkloop_limits_client: kqworkloop_limits_client.c
358	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) kqworkloop_limits_client.c -o $(SYMROOT)/kqworkloop_limits_client
359	$(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@
360
361install-kqworkloop_limits_client: kqworkloop_limits_client
362	mkdir -p $(INSTALLDIR)
363	cp $(SYMROOT)/kqworkloop_limits_client $(INSTALLDIR)/
364
365ipc/task_name_for_pid: CODE_SIGN_ENTITLEMENTS = ipc/task_name_for_pid_entitlement.plist
366
367fd_table_limits: rnserver
368fd_table_limits: OTHER_CFLAGS += $(OBJROOT)/rnServer.c -I $(OBJROOT)
369fd_table_limits: OTHER_LDFLAGS += -ldarwintest_utils -lpthread
370fd_table_limits: fd_table_limits_client
371
372fd_table_limits_client: fd_table_limits_client.c
373	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) fd_table_limits_client.c -o $(SYMROOT)/fd_table_limits_client
374	$(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@
375
376install-fd_table_limits_client: fd_table_limits_client
377	mkdir -p $(INSTALLDIR)
378	cp $(SYMROOT)/fd_table_limits_client $(INSTALLDIR)/
379
380vm_spawn_tool: INVALID_ARCHS = i386
381vm_spawn_tool: vm_spawn_tool.c
382	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) vm_spawn_tool.c -o $(SYMROOT)/vm_spawn_tool
383
384install-vm_spawn_tool: vm_spawn_tool
385	mkdir -p $(INSTALLDIR)/tools
386	cp $(SYMROOT)/vm_spawn_tool $(INSTALLDIR)/tools/
387
388CUSTOM_TARGETS += imm_pinned_control_port_crasher
389CUSTOM_TARGETS += imm_pinned_control_port_crasher_3P_hardened
390
391imm_pinned_control_port: excserver_protect
392imm_pinned_control_port: CODE_SIGN_ENTITLEMENTS = task_for_pid_entitlement.plist
393imm_pinned_control_port: OTHER_CFLAGS += $(OBJROOT)/excserver_protect.c -I $(OBJROOT)
394imm_pinned_control_port: OTHER_LDFLAGS += -ldarwintest_utils -lpthread
395imm_pinned_control_port: imm_pinned_control_port_crasher imm_pinned_control_port_crasher_3P_hardened
396
397imm_pinned_control_port_crasher: imm_pinned_control_port_crasher.c cs_helpers.c
398	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) -I$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders \
399	$^ -o $(SYMROOT)/$@
400	$(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@
401
402imm_pinned_control_port_crasher_3P_hardened: CODE_SIGN_ENTITLEMENTS = entitlements/hardened-binary-entitlements-1.plist
403imm_pinned_control_port_crasher_3P_hardened: imm_pinned_control_port_crasher.c cs_helpers.c
404	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) -I$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders \
405	$^ -o $(SYMROOT)/$@
406	$(CODESIGN) --force --sign - --entitlements $(CODE_SIGN_ENTITLEMENTS) --timestamp=none $(SYMROOT)/$@
407
408install-imm_pinned_control_port_crasher: imm_pinned_control_port_crasher
409	mkdir -p $(INSTALLDIR)
410	cp $(SYMROOT)/$^ $(INSTALLDIR)/
411
412install-imm_pinned_control_port_crasher_3P_hardened: imm_pinned_control_port_crasher_3P_hardened
413	mkdir -p $(INSTALLDIR)
414	cp $(SYMROOT)/$^ $(INSTALLDIR)/
415
416CUSTOM_TARGETS += reply_port_defense_client
417CUSTOM_TARGETS += reply_port_defense_client_3P_hardened
418
419reply_port_defense: excserver_protect_state
420reply_port_defense: OTHER_CFLAGS += $(OBJROOT)/excserver_protect_state.c -I $(OBJROOT)
421reply_port_defense: OTHER_LDFLAGS += -ldarwintest_utils -lpthread
422reply_port_defense: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
423reply_port_defense: reply_port_defense_client reply_port_defense_client_3P_hardened
424
425reply_port_defense_client: reply_port_defense_client.c cs_helpers.c
426	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) -I$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders \
427	$^ -o $(SYMROOT)/$@
428	$(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@
429
430reply_port_defense_client_3P_hardened: CODE_SIGN_ENTITLEMENTS=entitlements/hardened-binary-entitlements-1.plist
431reply_port_defense_client_3P_hardened: reply_port_defense_client.c cs_helpers.c
432	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) -I$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders \
433	$^ -o $(SYMROOT)/$@
434	$(CODESIGN) --force --sign - --entitlements $(CODE_SIGN_ENTITLEMENTS) --timestamp=none $(SYMROOT)/$@
435
436install-reply_port_defense_client: reply_port_defense_client
437	mkdir -p $(INSTALLDIR)
438	cp $(SYMROOT)/$< $(INSTALLDIR)/
439
440install-reply_port_defense_client_3P_hardened: reply_port_defense_client_3P_hardened
441	mkdir -p $(INSTALLDIR)
442	cp $(SYMROOT)/$< $(INSTALLDIR)/
443
444kas_info: OTHER_LDFLAGS += -framework CoreSymbolication
445kas_info: CODE_SIGN_ENTITLEMENTS = kernel_symbolication_entitlements.plist
446
447net_bounds_safety: OTHER_CFLAGS += -fbounds-safety
448
449net_no_bounds_safety: OTHER_CFLAGS += -fno-bounds-safety
450net_no_bounds_safety: net_bounds_safety.c
451	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
452OTHER_TEST_TARGETS += net_no_bounds_safety
453
454host_statistics_rate_limiting: cs_helpers.c host_statistics_rate_limiting.c
455
456EXCLUDED_SOURCES += drop_priv.c xnu_quick_test_helpers.c memorystatus_assertion_helpers.c bpflib.c in_cksum.c test_utils.c inet_transfer.c net_test_lib.c cs_helpers.c
457
458ifneq ($(IOS_TEST_COMPAT),YES)
459EXCLUDED_SOURCES += jumbo_va_spaces_28530648.c perf_compressor.c vm/entitlement_increased_memory_limit.c vm/ios13extended_footprint.c vm/entitlement_internal_bands.c
460endif
461
462perf_compressor: OTHER_LDFLAGS += -ldarwintest_utils
463perf_compressor: CODE_SIGN_ENTITLEMENTS=./private_entitlement.plist
464
465
466vm/memorystatus_freeze_test: CODE_SIGN_ENTITLEMENTS=./task_for_pid_entitlement.plist
467vm/memorystatus_freeze_test: OTHER_LDFLAGS += -ldarwintest_utils
468vm/memorystatus_freeze_test: memorystatus_assertion_helpers.c test_utils.c vm/memorystatus_freeze_test.c
469	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
470	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements $(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@;
471
472vm/memorystatus_freeze_test_entitled: CODE_SIGN_ENTITLEMENTS=./vm/memorystatus_freeze_test_entitled.plist
473vm/memorystatus_freeze_test_entitled: OTHER_LDFLAGS += -ldarwintest_utils
474vm/memorystatus_freeze_test_entitled: test_utils.c vm/memorystatus_freeze_test_entitled.c
475	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
476	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements $(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@;
477
478vm/memorystatus_jetsam_zprint_snapshot: CODE_SIGN_ENTITLEMENTS=./vm/memorystatus_jetsam_zprint_snapshot.entitlements
479vm/memorystatus_jetsam_zprint_snapshot: OTHER_LDFLAGS += -ldarwintest_utils
480
481vm/neural_footprint: CODE_SIGN_ENTITLEMENTS=./vm/neural_footprint.entitlement
482vm/neural_footprint: OTHER_CFLAGS += -I $(OBJROOT)
483vm/neural_footprint: OTHER_LDFLAGS += -ldarwintest_utils
484vm/neural_footprint: test_utils.c vm/neural_footprint.c ./vm/neural_footprint.entitlement
485	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
486	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements $(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@;
487
488memorystatus_is_assertion: OTHER_LDFLAGS += -ldarwintest_utils
489memorystatus_is_assertion: OTHER_CFLAGS += memorystatus_assertion_helpers.c
490
491memorystatus_vm_map_fork: OTHER_CFLAGS += test_utils.c
492memorystatus_vm_map_fork: OTHER_LDFLAGS += -ldarwintest_utils
493
494shared_cache_tests: OTHER_LDFLAGS += -ldarwintest_utils
495
496ifneq ($(wildcard $(SDKROOT)/System/Library/PrivateFrameworks/Tightbeam.framework/Headers/tightbeam.h),)
497stackshot_tests: OTHER_LDFLAGS += -framework Tightbeam
498stackshot_tests: OTHER_CFLAGS += -I$(OBJROOT)
499stackshot_tests: OTHER_CFLAGS += $(TIGHTBEAM_MODULE_IMPL_PATH)
500stackshot_tests.m: $(TIGHTBEAM_MODULE_HEADERS)
501endif
502stackshot_tests: ./stackshot-entitlements.plist stackshot_tests.m
503stackshot_tests: CODE_SIGN_ENTITLEMENTS=./stackshot-entitlements.plist
504stackshot_tests: OTHER_CFLAGS += -Wno-objc-messaging-id test_utils.c
505stackshot_tests: OTHER_LDFLAGS += -lkdd -lz -ldarwintest_utils -framework Foundation -framework IOKit
506
507stackshot_accuracy: ./stackshot-entitlements.plist
508stackshot_accuracy: CODE_SIGN_ENTITLEMENTS=./stackshot-entitlements.plist
509stackshot_accuracy: OTHER_CFLAGS += -ldarwintest_utils -Wno-objc-messaging-id
510stackshot_accuracy: OTHER_LDFLAGS += -lkdd -ldarwintest_utils -framework Foundation
511stackshot_accuracy: INVALID_ARCHS = i386
512
513stackshot_spawn_exit_stress: ./stackshot-entitlements.plist
514stackshot_spawn_exit_stress: CODE_SIGN_ENTITLEMENTS=./stackshot-entitlements.plist
515
516ifeq ($(PLATFORM),MacOSX)
517CUSTOM_TARGETS += stackshot_translated_child
518
519stackshot_translated_child: INVALID_ARCHS = arm64 arm64e
520stackshot_translated_child: stackshot_translated_child.c
521	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) stackshot_translated_child.c -o $(SYMROOT)/stackshot_translated_child
522
523install-stackshot_translated_child: stackshot_translated_child
524	mkdir -p $(INSTALLDIR)
525	cp $(SYMROOT)/stackshot_translated_child $(INSTALLDIR)/
526else
527EXCLUDED_SOURCES += stackshot_translated_child.c
528endif
529
530microstackshot_tests: ./stackshot-entitlements.plist
531microstackshot_tests: CODE_SIGN_ENTITLEMENTS=./stackshot-entitlements.plist
532microstackshot_tests: OTHER_LDFLAGS = -ldarwintest_utils -framework ktrace -framework kperf -framework CoreFoundation
533
534memorystatus_zone_test: ./stackshot-entitlements.plist
535memorystatus_zone_test: CODE_SIGN_ENTITLEMENTS=./stackshot-entitlements.plist
536memorystatus_zone_test: OTHER_CFLAGS += -isystem $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
537memorystatus_zone_test: OTHER_LDFLAGS += -framework ktrace
538memorystatus_zone_test: OTHER_LDFLAGS += -ldarwintest_utils
539
540memcmp_zero: OTHER_CFLAGS += ../osfmk/arm64/memcmp_zero.s
541
542text_corruption: OTHER_LDFLAGS += -ldarwintest_utils
543CUSTOM_TARGETS += text_corruption_helper
544
545text_corruption_helper:
546	$(CC) $(LDFLAGS) $(CFLAGS) text_corruption_helper.c -lm -o $(SYMROOT)/$@;
547	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
548
549install-text_corruption_helper: text_corruption_helper
550	mkdir -p $(INSTALLDIR)
551	cp $(SYMROOT)/text_corruption_helper $(INSTALLDIR)/
552
553codesigntests: CODE_SIGN_ENTITLEMENTS=codesigntests-entitlements.plist
554codesigntests: OTHER_CFLAGS += -DTESTNAME=codesigntests
555# Adding a custom target and build/install rules since CODE_SIGN_ENTITLEMENTS
556# does not take in arguments, and we need to sign this test using a sha256T
557# digest
558
559OTHER_TEST_TARGETS += codesigntests_sha256t
560codesigntests_sha256t: OTHER_CFLAGS += -DTESTNAME=codesigntests_sha256t
561
562codesigntests_sha256t: codesigntests.c
563	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(DT_LDFLAGS) $(LDFLAGS) $(CFLAGS) codesigntests.c -o $(SYMROOT)/$@;
564	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --digest=sha256T -s - --entitlements codesigntests-entitlements.plist $(SYMROOT)/$@;
565install-codesigntests_sha256t: codesigntests_sha256t
566	mkdir -p $(INSTALLDIR)
567	cp $(SYMROOT)/codesigntests_sha256t $(INSTALLDIR)/
568
569
570ecc_test: OTHER_LDFLAGS += -ldarwintest_utils
571CUSTOM_TARGETS += ecc_test_helper
572
573ecc_test_helper:
574	$(CC) $(LDFLAGS) $(CFLAGS) ecc_test_helper.c -lm -o $(SYMROOT)/$@;
575	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
576
577install-ecc_test_helper: ecc_test_helper
578	mkdir -p $(INSTALLDIR)
579	cp $(SYMROOT)/ecc_test_helper $(INSTALLDIR)/
580
581vm/test_vm_no_pager: excserver
582vm/test_vm_no_pager: OTHER_LDFLAGS += -ldarwintest_utils -lpthread -lkdd -framework Foundation
583vm/test_vm_no_pager: OTHER_CFLAGS += -I$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders $(OBJROOT)/excserver.c -I$(OBJROOT)
584vm/test_vm_no_pager: vm/test_vm_no_pager_helper
585vm/test_vm_no_pager: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
586CUSTOM_TARGETS += vm/test_vm_no_pager_helper
587
588vm/test_vm_no_pager_helper: vm/test_vm_no_pager_helper.c
589	$(CC) $(CFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -lm -o $(SYMROOT)/$@;
590	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
591
592install-vm/test_vm_no_pager_helper: vm/test_vm_no_pager_helper
593	mkdir -p $(INSTALLDIR)/vm
594	cp $(SYMROOT)/vm/test_vm_no_pager_helper $(INSTALLDIR)/vm/
595
596
597kevent_qos: OTHER_CFLAGS += -Wno-unused-macros
598kevent_qos: OTHER_CFLAGS += -I $(OBJROOT)/
599
600test_knote_use_after_free: OTHER_CFLAGS += -Wno-unused-macros
601test_knote_use_after_free: OTHER_LDFLAGS += -ldarwintest_utils -lpthread
602
603mach_get_times: OTHER_LDFLAGS += -ldarwintest_utils
604
605monotonic_core: ./stackshot-entitlements.plist
606monotonic_core: CODE_SIGN_ENTITLEMENTS=./stackshot-entitlements.plist
607monotonic_core: OTHER_LDFLAGS += -framework ktrace
608
609perf_exit: perf_exit_proc
610perf_exit: ./stackshot-entitlements.plist
611perf_exit: CODE_SIGN_ENTITLEMENTS=./stackshot-entitlements.plist
612perf_exit: OTHER_LDFLAGS = -framework ktrace -ldarwintest_utils
613perf_exit: CODE_SIGN_ENTITLEMENTS=./private_entitlement.plist
614
615ipc/mach_exc_port_substitute: excserver
616ipc/mach_exc_port_substitute: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
617ipc/mach_exc_port_substitute: CODE_SIGN_ENTITLEMENTS = ipc/mach_exc_port_substitute.plist
618
619CUSTOM_TARGETS += prioritize_process_launch_helper
620prioritize_process_launch: prioritize_process_launch_helper
621
622prioritize_process_launch_helper: prioritize_process_launch_helper.c
623	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) prioritize_process_launch_helper.c -o $(SYMROOT)/prioritize_process_launch_helper
624	echo $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@; \
625	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
626
627install-prioritize_process_launch_helper: prioritize_process_launch_helper
628	mkdir -p $(INSTALLDIR)
629	cp $(SYMROOT)/prioritize_process_launch_helper $(INSTALLDIR)/
630
631
632perf_spawn_fork: CODE_SIGN_ENTITLEMENTS=./private_entitlement.plist
633
634mach_exception_reply: OTHER_CFLAGS += -Wno-cast-align
635mach_exception_reply: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
636
637os_thread_self_restrict: os_thread_self_restrict.c os_thread_self_restrict-entitlements.plist
638os_thread_self_restrict: CODE_SIGN_ENTITLEMENTS=os_thread_self_restrict-entitlements.plist
639os_thread_self_restrict: OTHER_LDFLAGS += -sectcreate __TEXT __info_plist os_thread_self_restrict-identifier.plist
640
641# Temporarily disabled.  See rdar://121952316
642EXCLUDED_SOURCES += os_thread_self_restrict.c
643
644subsystem_root_path: subsystem_root_path.c subsystem_root_path-entitlements.plist
645subsystem_root_path: CODE_SIGN_ENTITLEMENTS=subsystem_root_path-entitlements.plist
646
647EXCLUDED_SOURCES += $(wildcard bounded_ptr_src/*.cpp)
648bounded_ptr: OTHER_CXXFLAGS += -Werror=implicit-int-conversion -Werror=shorten-64-to-32 -I$(SRCROOT)/../libkern -std=c++17
649bounded_ptr: $(wildcard bounded_ptr_src/*.cpp) bounded_ptr.cpp
650
651EXCLUDED_SOURCES += bounded_ptr_03.cpp
652bounded_ptr_03: OTHER_CXXFLAGS += -Werror=implicit-int-conversion -Werror=shorten-64-to-32 -I$(SRCROOT)/../libkern -std=c++03 $(DT_LDFLAGS)
653bounded_ptr_03: bounded_ptr_03.cpp
654
655EXCLUDED_SOURCES += $(wildcard bounded_array_src/*.cpp)
656bounded_array: OTHER_CXXFLAGS += -Werror=implicit-int-conversion -Werror=shorten-64-to-32 -I$(SRCROOT)/../libkern -std=c++17
657bounded_array: $(wildcard bounded_array_src/*.cpp) bounded_array.cpp
658
659EXCLUDED_SOURCES += $(wildcard bounded_array_ref_src/*.cpp)
660bounded_array_ref: OTHER_CXXFLAGS += -Werror=implicit-int-conversion -Werror=shorten-64-to-32 -I$(SRCROOT)/../libkern -std=c++17
661bounded_array_ref: $(wildcard bounded_array_ref_src/*.cpp) bounded_array_ref.cpp
662
663EXCLUDED_SOURCES += $(wildcard intrusive_shared_ptr_src/*.cpp)
664intrusive_shared_ptr: OTHER_CXXFLAGS += -Werror=implicit-int-conversion -Werror=shorten-64-to-32 -I$(SRCROOT)/../libkern -std=c++17
665intrusive_shared_ptr: $(wildcard intrusive_shared_ptr_src/*.cpp) intrusive_shared_ptr.cpp
666
667EXCLUDED_SOURCES += $(wildcard safe_allocation_src/*.cpp)
668safe_allocation: OTHER_CXXFLAGS += -Werror=implicit-int-conversion -Werror=shorten-64-to-32 -I$(SRCROOT)/../libkern -std=c++17
669safe_allocation: $(wildcard safe_allocation_src/*.cpp) safe_allocation.cpp
670
671EXCLUDED_SOURCES += $(wildcard cxx_safe_buffers_src/*.cpp)
672cxx_safe_buffers: OTHER_CXXFLAGS += -Werror=unsafe-buffer-usage -I$(SRCROOT)/../libkern -std=c++20
673cxx_safe_buffers: $(wildcard cxx_safe_buffers_src/*.cpp) cxx_safe_buffers.cpp
674
675EXCLUDED_SOURCES += osptr_compat.cpp
676osptr_98: OTHER_CXXFLAGS += -I$(SRCROOT)/../libkern -std=c++98 -DOSPTR_STD="98"
677osptr_98: osptr_compat.cpp
678	$(CXX) $(DT_CXXFLAGS) $(OTHER_CXXFLAGS) $(CXXFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
679osptr_11: OTHER_CXXFLAGS += -I$(SRCROOT)/../libkern -std=c++11 -DOSPTR_STD="11"
680osptr_11: osptr_compat.cpp
681	$(CXX) $(DT_CXXFLAGS) $(OTHER_CXXFLAGS) $(CXXFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
682osptr_14: OTHER_CXXFLAGS += -I$(SRCROOT)/../libkern -std=c++14 -DOSPTR_STD="14"
683osptr_14: osptr_compat.cpp
684	$(CXX) $(DT_CXXFLAGS) $(OTHER_CXXFLAGS) $(CXXFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
685osptr_17: OTHER_CXXFLAGS += -I$(SRCROOT)/../libkern -std=c++17 -DOSPTR_STD="17"
686osptr_17: osptr_compat.cpp
687	$(CXX) $(DT_CXXFLAGS) $(OTHER_CXXFLAGS) $(CXXFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
688
689priority_queue: OTHER_CXXFLAGS += -std=c++17
690queue: OTHER_CFLAGS += -I$(SRCROOT)/../osfmk
691
692vm/zalloc: OTHER_LDFLAGS += -ldarwintest_utils
693vm/zalloc_buddy: OTHER_CFLAGS += -Wno-format-pedantic
694
695os_refcnt: OTHER_CFLAGS += -I$(SRCROOT)/../libkern/ -Wno-gcc-compat -Wno-undef -O3 -flto -ldarwintest_utils
696
697kernel_inspection: CODE_SIGN_ENTITLEMENTS = ./task_for_pid_entitlement.plist
698kernel_inspection: OTHER_CFLAGS += -DENTITLED=1
699
700turnstile_multihop: OTHER_CFLAGS += -Wno-unused-macros
701turnstile_multihop: OTHER_CFLAGS += -I $(OBJROOT)/
702
703CUSTOM_TARGETS += perf_exit_proc
704
705perf_exit_proc:
706	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) perf_exit_proc.c -o $(SYMROOT)/perf_exit_proc
707
708install-perf_exit_proc: perf_exit_proc
709	mkdir -p $(INSTALLDIR)
710	cp $(SYMROOT)/perf_exit_proc $(INSTALLDIR)/
711
712# Stackshot
713
714
715stackshot_idle_25570396: ./stackshot-entitlements.plist
716stackshot_idle_25570396: CODE_SIGN_ENTITLEMENTS=./stackshot-entitlements.plist
717stackshot_idle_25570396: OTHER_LDFLAGS += -lkdd -framework Foundation
718stackshot_idle_25570396: OTHER_LDFLAGS += -lkdd -framework Foundation
719
720stackshot_block_owner_14362384: ./stackshot-entitlements.plist
721stackshot_block_owner_14362384: CODE_SIGN_ENTITLEMENTS=./stackshot-entitlements.plist
722stackshot_block_owner_14362384: OTHER_LDFLAGS += -framework Foundation -lpthread -lkdd
723ifeq ($(PLATFORM),MacOSX)
724stackshot_block_owner_14362384: OTHER_LDFLAGS += -lpcre
725endif
726
727all: $(DSTROOT)/usr/local/bin/kcdata
728
729$(DSTROOT)/usr/local/bin/kcdata: $(SRCROOT)/../tools/lldbmacros/kcdata.py
730	mkdir -p $(dir $@)
731	cp $< $@
732	chmod a+x $@
733
734xnu_quick_test: OTHER_CFLAGS += xnu_quick_test_helpers.c
735
736CUSTOM_TARGETS += vm_set_max_addr_helper
737
738vm_set_max_addr_helper: vm_set_max_addr_helper.c
739	$(CC) $(OTHER_CFLAGS) $(CFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) vm_set_max_addr_helper.c -o $(SYMROOT)/vm_set_max_addr_helper; \
740	echo $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@; \
741	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
742
743install-vm_set_max_addr_helper: vm_set_max_addr_helper
744	mkdir -p $(INSTALLDIR)
745	cp $(SYMROOT)/vm_set_max_addr_helper $(INSTALLDIR)/
746
747CUSTOM_TARGETS += subsystem_root_path_helper_entitled
748CUSTOM_TARGETS += subsystem_root_path_helper
749
750subsystem_root_path_helper_entitled: subsystem_root_path_helper.c subsystem_root_path-entitlements.plist
751	$(CC) $(OTHER_CFLAGS) $(CFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) subsystem_root_path_helper.c -o $(SYMROOT)/subsystem_root_path_helper_entitled; \
752	echo $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@; \
753	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements subsystem_root_path-entitlements.plist $(SYMROOT)/$@;
754
755install-subsystem_root_path_helper_entitled: subsystem_root_path_helper_entitled
756	mkdir -p $(INSTALLDIR)
757	cp $(SYMROOT)/subsystem_root_path_helper_entitled $(INSTALLDIR)/
758
759subsystem_root_path_helper: subsystem_root_path_helper.c
760	$(CC) $(OTHER_CFLAGS) $(CFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) subsystem_root_path_helper.c -o $(SYMROOT)/subsystem_root_path_helper; \
761	echo $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@; \
762	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
763
764install-subsystem_root_path_helper: subsystem_root_path_helper
765	mkdir -p $(INSTALLDIR)
766	cp $(SYMROOT)/subsystem_root_path_helper $(INSTALLDIR)/
767
768CUSTOM_TARGETS += vm_test_code_signing_helper
769
770vm_test_code_signing_helper: vm_test_code_signing_helper.c
771	$(CC) $(OTHER_CFLAGS) $(CFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) vm_test_code_signing_helper.c -o $(SYMROOT)/vm_test_code_signing_helper; \
772	echo $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@; \
773	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
774
775install-vm_test_code_signing_helper: vm_test_code_signing_helper
776	mkdir -p $(INSTALLDIR)
777	cp $(SYMROOT)/vm_test_code_signing_helper $(INSTALLDIR)/
778
779vm_test_code_signing: OTHER_LDFLAGS += -ldarwintest_utils
780
781INCLUDED_TEST_SOURCE_DIRS += vm ipc rm workq
782
783# Revert to legacy vm_test suite until <rdar://problem/56675212> gets solved
784EXCLUDED_SOURCES += vm/vm_allocation.c
785
786EXCLUDED_SOURCES += jumbo_va_spaces_common.c
787
788ifeq ($(IOS_TEST_COMPAT),YES)
789OTHER_TEST_TARGETS += jumbo_va_spaces_28530648_unentitled jumbo_va_spaces_52551256 vm_phys_footprint_legacy vm/entitlement_increased_memory_limit vm/entitlement_increased_memory_limit_unentitled vm/entitlement_increased_debugging_memory_limit vm/ios13extended_footprint vm/memorystatus_freeze_test vm/memorystatus_freeze_test_entitled vm/entitlement_internal_bands vm/entitlement_internal_bands_unentitled
790
791jumbo_va_spaces_28530648: CODE_SIGN_ENTITLEMENTS = jumbo_va_spaces_28530648.entitlements
792jumbo_va_spaces_28530648: OTHER_CFLAGS += -DENTITLED=1 -DTESTNAME=jumbo_va_spaces_28530648
793jumbo_va_spaces_28530648: jumbo_va_spaces_common.c
794jumbo_va_spaces_28530648: OTHER_LDFLAGS += -ldarwintest_utils
795jumbo_va_spaces_28530648: OTHER_LDFLAGS += -sectcreate __TEXT __info_plist jumbo_va_spaces_28530648-identifier.plist
796
797jumbo_va_spaces_52551256: CODE_SIGN_ENTITLEMENTS = jumbo_va_spaces_52551256.entitlements
798jumbo_va_spaces_52551256: OTHER_CFLAGS += -DENTITLED=1 -DTESTNAME=jumbo_va_spaces_52551256
799jumbo_va_spaces_52551256: OTHER_LDFLAGS += -ldarwintest_utils
800jumbo_va_spaces_52551256: jumbo_va_spaces_28530648.c jumbo_va_spaces_common.c
801	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
802	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements $(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@;
803
804jumbo_va_spaces_28530648_unentitled: OTHER_LDFLAGS += -ldarwintest_utils
805jumbo_va_spaces_28530648_unentitled: OTHER_CFLAGS += -DTESTNAME=jumbo_va_spaces_28530648_unentitled
806
807jumbo_va_spaces_28530648_unentitled: jumbo_va_spaces_28530648.c jumbo_va_spaces_common.c
808	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
809
810vm/entitlement_increased_memory_limit: CODE_SIGN_ENTITLEMENTS = vm/entitlement_increased_memory_limit.entitlements
811vm/entitlement_increased_memory_limit: OTHER_CFLAGS += -DENTITLED=1 jumbo_va_spaces_common.c
812vm/entitlement_increased_memory_limit: OTHER_LDFLAGS += -ldarwintest_utils memorystatus_assertion_helpers.c
813vm/entitlement_increased_memory_limit: vm/entitlement_increased_memory_limit.c
814	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
815	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements $(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@;
816
817vm/entitlement_increased_memory_limit_unentitled: OTHER_LDFLAGS += -ldarwintest_utils memorystatus_assertion_helpers.c
818vm/entitlement_increased_memory_limit_unentitled: vm/entitlement_increased_memory_limit.c jumbo_va_spaces_common.c
819	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
820
821vm/entitlement_increased_debugging_memory_limit: CODE_SIGN_ENTITLEMENTS = vm/entitlement_increased_debugging_memory_limit.entitlements
822vm/entitlement_increased_debugging_memory_limit: OTHER_CFLAGS += -DENTITLED_DEBUGGING=1 jumbo_va_spaces_common.c
823vm/entitlement_increased_debugging_memory_limit: OTHER_LDFLAGS += -ldarwintest_utils memorystatus_assertion_helpers.c
824vm/entitlement_increased_debugging_memory_limit: vm/entitlement_increased_memory_limit.c
825	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
826	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements $(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@;
827
828vm/entitlement_internal_bands: CODE_SIGN_ENTITLEMENTS = vm/entitlement_internal_bands.entitlements
829vm/entitlement_internal_bands: OTHER_CFLAGS += -DENTITLED=1
830vm/entitlement_internal_bands: OTHER_LDFLAGS += -ldarwintest_utils
831vm/entitlement_internal_bands: vm/entitlement_internal_bands.c memorystatus_assertion_helpers.c
832	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
833	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements $(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@;
834
835vm/entitlement_internal_bands_unentitled: OTHER_LDFLAGS += -ldarwintest_utils
836vm/entitlement_internal_bands_unentitled: vm/entitlement_internal_bands.c memorystatus_assertion_helpers.c
837	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
838	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
839
840vm/ios13extended_footprint: CODE_SIGN_ENTITLEMENTS = vm/ios13extended_footprint.entitlements
841vm/ios13extended_footprint: vm/ios13extended_footprint.c
842	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
843	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements $(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@;
844
845vm_phys_footprint_legacy: OTHER_LDFLAGS += -framework CoreFoundation -framework IOSurface
846vm_phys_footprint_legacy: OTHER_CFLAGS += -DLEGACY_FOOTPRINT_ENTITLED=1
847vm_phys_footprint_legacy: CODE_SIGN_ENTITLEMENTS=./legacy_footprint.entitlement
848vm_phys_footprint_legacy: vm_phys_footprint.c
849	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
850
851endif
852
853CUSTOM_TARGETS += vm/hello
854
855vm/hello: vm/hello.c
856	$(CC) $(LDFLAGS) $(CFLAGS) $< -o $(SYMROOT)/$@
857	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
858
859.PHONY: install-vm/hello
860install-vm/hello: vm/hello
861	mkdir -p $(INSTALLDIR)/vm
862	cp $(SYMROOT)/vm/hello $(INSTALLDIR)/vm/
863
864vm/vm_tainted_executable: vm/hello
865
866vm/vm_ranges: CODE_SIGN_ENTITLEMENTS = ./vm/vm_ranges_entitlement.plist
867
868big_map_test: CODE_SIGN_ENTITLEMENTS = ./big_map_test_entitlement.plist
869
870task_info_28439149: CODE_SIGN_ENTITLEMENTS = ./task_for_pid_entitlement.plist
871
872ipc/ipc_read_inspect: CODE_SIGN_ENTITLEMENTS = ./task_for_pid_entitlement.plist
873
874ipc/ipc_thread_ports_race: CODE_SIGN_ENTITLEMENTS = ./task_for_pid_entitlement.plist
875ipc/ipc_thread_ports_race: OTHER_LDFLAGS += -ldarwintest_utils
876
877proc_info: recount/recount_test_utils.c
878proc_info: CODE_SIGN_ENTITLEMENTS = ./task_for_pid_entitlement.plist
879proc_info: OTHER_LDFLAGS += -ldarwintest_utils
880
881proc_info_list_kthreads: CODE_SIGN_ENTITLEMENTS = ./proc_info_list_kthreads.entitlements
882
883proc_info_44873309: CODE_SIGN_ENTITLEMENTS = ./proc_info_44873309.entitlements
884
885disk_mount_conditioner: disk_mount_conditioner*
886disk_mount_conditioner: CODE_SIGN_ENTITLEMENTS=./disk_mount_conditioner-entitlements.plist
887disk_mount_conditioner: OTHER_LDFLAGS += -ldarwintest_utils
888
889disk_mount_conditioner: OTHER_TEST_TARGETS += disk_mount_conditioner_unentitled
890disk_mount_conditioner_unentitled: OTHER_CFLAGS += -DTEST_UNENTITLED
891disk_mount_conditioner_unentitled: OTHER_LDFLAGS += -ldarwintest_utils
892disk_mount_conditioner_unentitled: disk_mount_conditioner.c
893	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
894
895work_interval_test: CODE_SIGN_ENTITLEMENTS = work_interval_test.entitlements
896work_interval_test: OTHER_CFLAGS += -DENTITLED=1
897
898work_interval_data_test: CODE_SIGN_ENTITLEMENTS = work_interval_test.entitlements
899work_interval_data_test: OTHER_CFLAGS += -DENTITLED=1
900work_interval_data_test: OTHER_LDFLAGS += -lpthread
901
902game_mode: CODE_SIGN_ENTITLEMENTS = game_mode.entitlements
903carplay_mode: CODE_SIGN_ENTITLEMENTS = carplay_mode.entitlements
904
905coalition_policy: CODE_SIGN_ENTITLEMENTS = coalition_policy.entitlements
906
907settimeofday_29193041: OTHER_CFLAGS += drop_priv.c
908
909settimeofday_29193041_entitled: CODE_SIGN_ENTITLEMENTS = settimeofday_29193041.entitlements
910settimeofday_29193041_entitled: OTHER_CFLAGS += drop_priv.c
911
912thread_group_set_32261625: ./stackshot-entitlements.plist
913thread_group_set_32261625: CODE_SIGN_ENTITLEMENTS=./stackshot-entitlements.plist
914thread_group_set_32261625: OTHER_LDFLAGS = -framework ktrace
915
916task_info: CODE_SIGN_ENTITLEMENTS = task_for_pid_entitlement.plist
917task_info: OTHER_CFLAGS += test_utils.c
918task_info: OTHER_LDFLAGS += -ldarwintest_utils
919
920extract_right_soft_fail: CODE_SIGN_ENTITLEMENTS = task_for_pid_entitlement.plist
921
922ifneq ($(IOS_TEST_COMPAT),YES)
923	EXCLUDED_SOURCES += task_vm_info_decompressions.c
924endif
925
926ifeq ($(PLATFORM),MacOSX)
927	EXCLUDED_SOURCES += vm/compression_sweep.c
928endif
929
930unp_sock_release: CODE_SIGN_ENTITLEMENTS = unp_sock_release-entitlements.plist
931
932bpf_write: bpflib.c in_cksum.c net_test_lib.c
933bpf_write: OTHER_LDFLAGS += -ldarwintest_utils
934
935bpf_write_batch: bpflib.c in_cksum.c net_test_lib.c
936bpf_write_batch: OTHER_LDFLAGS += -ldarwintest_utils
937
938udp_disconnect: in_cksum.c net_test_lib.c
939udp_disconnect: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
940
941udp_bind_connect: in_cksum.c net_test_lib.c
942udp_bind_connect: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
943
944tcp_bind_connect: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
945tcp_send_implied_connect: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
946socket_bind_35243417: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
947socket_bind_35685803: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
948icmp_fragmetned_payload: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
949tcp_invalid_address: OTHER_CFLAGS += -Wno-int-conversion
950tcp_invalid_address: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
951
952net_tuntests: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
953
954net_bridge: inet_transfer.c bpflib.c in_cksum.c net_test_lib.c
955net_bridge: OTHER_LDFLAGS += -ldarwintest_utils
956net_bridge: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
957
958net_vlan: inet_transfer.c bpflib.c in_cksum.c net_test_lib.c
959net_vlan: OTHER_LDFLAGS += -ldarwintest_utils
960net_vlan: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
961
962net_bond: inet_transfer.c bpflib.c in_cksum.c net_test_lib.c
963net_bond: OTHER_LDFLAGS += -ldarwintest_utils
964net_bond: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
965
966if_generation_id: net_test_lib.c in_cksum.c
967if_generation_id: OTHER_LDFLAGS += -ldarwintest_utils
968
969inet6_addr_mode: net_test_lib.c in_cksum.c
970inet6_addr_mode: OTHER_LDFLAGS += -ldarwintest_utils
971
972bpf_direction: bpflib.c
973bpf_direction: OTHER_LDFLAGS += -ldarwintest_utils
974bpf_direction: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
975
976bpf_timestamp: bpflib.c
977bpf_timestamp: OTHER_LDFLAGS += -ldarwintest_utils
978bpf_timestamp: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
979
980ipv6_bind_race: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
981
982so_bindtodevice: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
983
984v4mappedv6_dontfrag: net_test_lib.c in_cksum.c
985v4mappedv6_dontfrag: OTHER_LDFLAGS += -ldarwintest_utils
986v4mappedv6_dontfrag: CODE_SIGN_ENTITLEMENTS = network_entitlements.plist
987
988
989CUSTOM_TARGETS += posix_spawn_archpref_helper
990
991posix_spawn_archpref_helper: posix_spawn_archpref_helper.c
992	$(CC) $(LDFLAGS) $(CFLAGS) posix_spawn_archpref_helper.c -o $(SYMROOT)/$@;
993	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
994
995install-posix_spawn_archpref_helper: posix_spawn_archpref_helper
996	mkdir -p $(INSTALLDIR)
997	cp $(SYMROOT)/posix_spawn_archpref_helper $(INSTALLDIR)/
998
999CUSTOM_TARGETS += posix_spawn_alt_rosetta_helper
1000
1001posix_spawn_alt_rosetta_helper: posix_spawn_alt_rosetta_helper.c
1002	$(CC) $(LDFLAGS) $(CFLAGS) posix_spawn_alt_rosetta_helper.c -o $(SYMROOT)/$@;
1003	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
1004
1005install-posix_spawn_alt_rosetta_helper: posix_spawn_alt_rosetta_helper
1006	mkdir -p $(INSTALLDIR)
1007	cp $(SYMROOT)/posix_spawn_alt_rosetta_helper $(INSTALLDIR)/
1008
1009MIG:=SDKROOT=$(SDKROOT) $(shell xcrun -sdk "$(TARGETSDK)" -find mig)
1010
1011CUSTOM_TARGETS += excserver
1012
1013excserver:
1014	$(MIG) $(CFLAGS) \
1015		-sheader $(OBJROOT)/excserver.h \
1016		-server $(OBJROOT)/excserver.c \
1017		-header /dev/null -user /dev/null \
1018		excserver.defs
1019install-excserver: ;
1020
1021excserver_protect:
1022	$(MIG) $(CFLAGS) \
1023		-DMACH_EXC_SERVER_TASKIDTOKEN \
1024		-sheader $(OBJROOT)/excserver_protect.h \
1025		-server $(OBJROOT)/excserver_protect.c \
1026		-header /dev/null -user /dev/null \
1027		excserver_protect.defs
1028install-excserver_protect: ;
1029
1030excserver_protect_state:
1031	$(MIG) $(CFLAGS) \
1032		-DMACH_EXC_SERVER_TASKIDTOKEN_STATE \
1033		-DMACH_EXC_SERVER_TASKIDTOKEN \
1034		-sheader $(OBJROOT)/excserver_protect_state.h \
1035		-server $(OBJROOT)/excserver_protect_state.c \
1036		-header /dev/null -user /dev/null \
1037		excserver_protect.defs
1038install-excserver_protect_state: ;
1039
1040EXCLUDED_SOURCES += exc_helpers.c
1041
1042CUSTOM_TARGETS += notifyserver
1043
1044notifyserver:
1045	$(MIG) $(CFLAGS) \
1046		-DMACH_NOTIFY_SERVICE_PORT_DESTROYED_EXPECTED \
1047		-user /dev/null \
1048		-header $(OBJROOT)/notify.h \
1049		-sheader $(OBJROOT)/notifyServer.h \
1050		-server $(OBJROOT)/notifyServer.c \
1051		notifyserver.defs
1052install-notifyserver: ;
1053
1054CUSTOM_TARGETS += rnserver
1055
1056rnserver:
1057	$(MIG) $(CFLAGS) \
1058		-user /dev/null \
1059		-header $(OBJROOT)/rn.h \
1060		-sheader $(OBJROOT)/rnServer.h \
1061		-server $(OBJROOT)/rnServer.c \
1062		rnserver.defs
1063install-rnserver: ;
1064
1065SKYWALK_COMMON_FILES := \
1066	skywalk/skywalk_test_common.c \
1067	skywalk/skywalk_test_utils.c
1068SKYWALK_TEST_FILES := \
1069	skywalk/skywalk_test_driver.c \
1070	skywalk/skt_simple.c \
1071	skywalk/skt_features.c \
1072	skywalk/skt_oneslot.c \
1073	skywalk/skt_shutdown.c \
1074	skywalk/skt_shutdown2.c \
1075	skywalk/skt_nslots.c \
1076	skywalk/skt_closecfd.c \
1077	skywalk/skt_closenfd.c \
1078	skywalk/skt_badring.c \
1079	skywalk/skt_kqueue.c \
1080	skywalk/skt_mangle.c \
1081	skywalk/skt_features.c \
1082	skywalk/skt_ringid.c \
1083	skywalk/skt_closekq.c \
1084	skywalk/skt_writemem.c \
1085	skywalk/skt_debug_verify.c \
1086	skywalk/skt_utun27302538.c \
1087	skywalk/skt_utunleak.c \
1088	skywalk/skt_utunloop.c \
1089	skywalk/skt_flowswitch_ns_reserve.c \
1090	skywalk/skt_netifcompat.c \
1091	skywalk/skt_fswloop.c \
1092	skywalk/skt_teardown.c \
1093	skywalk/skt_bind.c \
1094	skywalk/skt_fsw29301703.c \
1095	skywalk/skt_fswbinds.c \
1096	skywalk/skt_manyflows.c \
1097	skywalk/skt_pllupipe.c \
1098	skywalk/skt_fullupipe.c \
1099	skywalk/skt_listener.c \
1100	skywalk/skt_copy_cksum.c \
1101	skywalk/skt_reass.c \
1102	skywalk/skt_memory.c \
1103	skywalk/skt_flow.c \
1104	skywalk/skt_flowlookup.c \
1105	skywalk/skt_libcuckoo.c \
1106	skywalk/skt_restricted_port.c \
1107	skywalk/skt_steering.c
1108SKYWALK_MPTEST_FILES := \
1109	skywalk/skywalk_mptests.c \
1110	skywalk/skywalk_mptest_driver.c \
1111	skywalk/skt_mpsimple.c \
1112	skywalk/skt_mpprotons.c \
1113	skywalk/skt_xfer.c \
1114	skywalk/skt_netifdirect.c \
1115	skywalk/skt_filter.c
1116EXCLUDED_SOURCES += $(SKYWALK_COMMON_FILES) $(SKYWALK_TEST_FILES) $(SKYWALK_MPTEST_FILES)
1117
1118skywalk_tests: excserver
1119skywalk_tests: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1120skywalk_tests: CODE_SIGN_ENTITLEMENTS = skywalk_test.entitlements
1121skywalk_tests: $(SKYWALK_COMMON_FILES) $(SKYWALK_TEST_FILES) $(SKYWALK_MPTEST_FILES) $(SDKROOT)/usr/local/lib/libCrashReporterClient.a
1122
1123EXCLUDED_SOURCES += arm_matrix_sme.c
1124
1125arm_matrix: INVALID_ARCHS = $(filter-out arm64%,$(ARCH_CONFIGS))
1126arm_matrix: excserver exc_helpers.c arm_matrix_sme.c
1127arm_matrix: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT) -Wno-language-extension-token -Wno-c++98-compat -mcpu=firestorm+nofp+sme2
1128arm_matrix: CODE_SIGN_ENTITLEMENTS = arm_matrix.entitlements
1129
1130
1131x18_entitled: OTHER_CFLAGS += -Wno-language-extension-token
1132x18_entitled: CODE_SIGN_ENTITLEMENTS = x18-entitlements.plist
1133x18_unentitled: OTHER_CFLAGS += -Wno-language-extension-token
1134ifneq ($(PLATFORM),MacOSX)
1135EXCLUDED_SOURCES += x18_legacy.c
1136else
1137x18_legacy: OTHER_CFLAGS += -Wno-language-extension-token -Wl,-platform_version -Wl,macos -Wl,10.12 -Wl,10.12
1138endif
1139
1140pmap_bench: INVALID_ARCHS = $(filter-out arm%,$(ARCH_CONFIGS))
1141
1142pmap_stress: INVALID_ARCHS = $(filter-out arm%,$(ARCH_CONFIGS))
1143
1144hw_breakpoint_step_arm64: CODE_SIGN_ENTITLEMENTS = hw_breakpoint_step_arm64_entitlements.plist
1145hw_breakpoint_step_arm64: INVALID_ARCHS = $(filter-out arm64%,$(ARCH_CONFIGS))
1146hw_breakpoint_step_arm64: excserver
1147hw_breakpoint_step_arm64: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1148
1149exc_resource_threads: excserver
1150exc_resource_threads: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1151exc_resource_threads: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1152
1153mach_service_port: notifyserver
1154mach_service_port: OTHER_CFLAGS += $(OBJROOT)/notifyServer.c -I $(OBJROOT)
1155
1156fp_exception: excserver exc_helpers.c
1157fp_exception: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1158fp_exception: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1159
1160ptrauth_failure: excserver exc_helpers.c
1161ptrauth_failure: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT) -Wno-language-extension-token
1162ptrauth_failure: CODESIGN = $(CODESIGN_HARDENED_RUNTIME)
1163ptrauth_failure: CODE_SIGN_ENTITLEMENTS = entitlements/set_state_and_exception_port.entitlement
1164
1165decompression_failure: excserver exc_helpers.c
1166decompression_failure: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1167decompression_failure: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1168
1169ipc/kernel_signed_pac_thread_state: excserver
1170ipc/kernel_signed_pac_thread_state: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1171ipc/kernel_signed_pac_thread_state: CODE_SIGN_ENTITLEMENTS = pac_exception_entitlement.plist
1172
1173ifeq ($(findstring arm64e,$(ARCH_CONFIGS)),)
1174EXCLUDED_SOURCES += pac_exception_entitlement.c
1175else
1176pac_exception_entitlement: excserver exc_helpers.c
1177pac_exception_entitlement: OTHER_CFLAGS += $(OBJROOT)/excserver.c -Wno-language-extension-token
1178pac_exception_entitlement: CODE_SIGN_ENTITLEMENTS = pac_exception_entitlement.plist
1179endif
1180
1181ifeq ($(findstring arm64,$(ARCH_CONFIGS)),)
1182EXCLUDED_SOURCES += arm_cpu_capabilities.c
1183else
1184arm_cpu_capabilities: INVALID_ARCHS = armv7k x86_64 x86_64h
1185arm_cpu_capabilities: excserver exc_helpers.c
1186arm_cpu_capabilities: OTHER_CFLAGS += $(OBJROOT)/excserver.c -Wno-language-extension-token -mcpu=apple-a15
1187#if HAS_ARM_FEAT_SME
1188arm_cpu_capabilities: OTHER_CFLAGS += -mcpu=apple-a15+sme2
1189#endif
1190arm_cpu_capabilities: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1191endif
1192
1193# Disabling building of ldt files as dt_extractmeta crashes
1194# in build systems. Ref rdar://110251082
1195# Leaving commented bits for future re-enablement
1196EXCLUDED_SOURCES += ldt_code32.s ldt.c
1197
1198#\ifeq ($(findstring x86_64,$(ARCH_CONFIGS)),)
1199#EXCLUDED_SOURCES += ldt_code32.s ldt.c
1200#\else # target = osx
1201#$(OBJROOT)/ldt_mach_exc_server.c:
1202#	$(MIG) $(CFLAGS) \
1203#		-user /dev/null \
1204#		-server $(OBJROOT)/ldt_mach_exc_server.c \
1205#		-header $(OBJROOT)/ldt_mach_exc.h \
1206#		mach_exc.defs
1207#
1208#ldt: INVALID_ARCHS = $(ARCH_CONFIGS)
1209#ldt: $(OBJROOT)/ldt_mach_exc_server.c
1210#ldt: OTHER_CFLAGS += -arch x86_64 -I $(OBJROOT) $(SRCROOT)/ldt_code32.s -Wl,-pagezero_size,0x1000 -Wno-missing-variable-declarations
1211#ldt: CODE_SIGN_ENTITLEMENTS=ldt_entitlement.plist
1212#\endif
1213
1214ifneq ($(PLATFORM),BridgeOS)
1215EXCLUDED_SOURCES += remote_time.c
1216else
1217remote_time: INVALID_ARCHS = armv7 armv7s arm64_32
1218endif
1219
1220vm_phys_footprint: OTHER_LDFLAGS += -framework CoreFoundation -framework IOSurface
1221
1222vm_kern_count_wired_kernelcache: OTHER_CFLAGS += -I$(SDKROOT)/System/Library/Frameworks/Kernel.framework/PrivateHeaders/mach
1223
1224debug_control_port_for_pid: CODE_SIGN_ENTITLEMENTS = ./debug_control_port_for_pid_entitlement.plist
1225
1226prng: OTHER_LDFLAGS += -ldarwintest_utils
1227
1228preoslog: OTHER_LDFLAGS += -ldarwintest_utils
1229preoslog: OTHER_CFLAGS += test_utils.c
1230
1231task_policy: CODE_SIGN_ENTITLEMENTS = ./task_policy_entitlement.plist
1232
1233OTHER_TEST_TARGETS += task_policy_unentitled
1234task_policy_unentitled: CODE_SIGN_ENTITLEMENTS = task_for_pid_entitlement.plist
1235task_policy_unentitled: OTHER_CFLAGS += -DUNENTITLED
1236task_policy_unentitled: task_policy.c
1237	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
1238	$(CODESIGN) --force --sign - --timestamp=none --entitlements $(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@
1239
1240
1241EXCLUDED_SOURCES += get_shared_cache_address.c
1242
1243
1244ifneq ($(filter iPhoneOS MacOSX, $(PLATFORM)),)
1245CUSTOM_TARGETS += get_shared_cache_address
1246
1247get_shared_cache_address: INVALID_ARCHS = arm64 i386 x86_64
1248get_shared_cache_address: get_shared_cache_address.c
1249	$(CC) $(OTHER_CFLAGS) $(CFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/get_shared_cache_address
1250
1251install-get_shared_cache_address: get_shared_cache_address
1252	$(CODESIGN) --force --sign - --timestamp=none --identifier=com.apple.get_shared_cache_address $(SYMROOT)/get_shared_cache_address
1253	mkdir -p $(INSTALLDIR)
1254	cp $(SYMROOT)/get_shared_cache_address $(INSTALLDIR)/
1255endif
1256
1257
1258OTHER_TEST_TARGETS += vm_memory_share_tests
1259
1260vm_memory_share_tests: INVALID_ARCHS = i386
1261vm_memory_share_tests: CODE_SIGN_ENTITLEMENTS = ./task_for_pid_entitlement.plist
1262vm_memory_share_tests: vm_memory_tests_src/main.c vm_memory_tests_src/common.c vm_memory_tests_src/vm_tests.c
1263	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
1264	echo $(CODESIGN) --force --sign - --timestamp=none --entitlements $(SRCROOT)/$(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@;
1265	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements "$(SRCROOT)/$(CODE_SIGN_ENTITLEMENTS)" $(SYMROOT)/$@;
1266
1267# build the mach server as individual helper which does not use libdarwintest
1268CUSTOM_TARGETS += vm_memory_share_tests_server
1269vm_memory_share_tests_server: CODE_SIGN_ENTITLEMENTS = ./task_for_pid_entitlement.plist
1270vm_memory_share_tests_server: vm_memory_tests_src/server.c vm_memory_tests_src/common.c vm_memory_tests_src/vm_tests.c
1271	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/vm_memory_share_tests_server
1272	echo $(CODESIGN) --force --sign - --timestamp=none --entitlements $(SRCROOT)/$(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@;
1273	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements "$(SRCROOT)/$(CODE_SIGN_ENTITLEMENTS)" $(SYMROOT)/$@;
1274
1275install-vm_memory_share_tests_server: vm_memory_share_tests_server
1276	mkdir -p $(INSTALLDIR)
1277	cp $(SYMROOT)/vm_memory_share_tests_server $(INSTALLDIR)/
1278
1279ifeq ($(PLATFORM),MacOSX)
1280EXCLUDED_SOURCES += vm/kern_max_task_pmem.c
1281endif
1282
1283EXCLUDED_SOURCES += benchmark/helpers.c
1284
1285perf_vmfault: OTHER_CFLAGS += benchmark/helpers.c
1286
1287BATS_PLISTS += $(SRCROOT)/vm/fault_throughput.plist
1288
1289vm/fault_throughput: OTHER_CFLAGS += benchmark/helpers.c
1290
1291.PHONY: install-vm/fault_throughput
1292install-vm/fault_throughput: vm/fault_throughput
1293	mkdir -p $(INSTALLDIR)/vm
1294	cp $(SYMROOT)/vm/fault_throughput $(INSTALLDIR)/vm/
1295
1296$(SYMROOT)/vm/fault_throughput.lua: $(SRCROOT)/vm/fault_throughput.lua
1297	mkdir -p $(SYMROOT)/vm
1298	cp $< $@
1299	chmod +x $@
1300
1301.PHONY: install-fault_throughput_benchrun
1302install-$(SYMROOT)/vm/fault_throughput.lua: $(SYMROOT)/vm/fault_throughput.lua
1303	mkdir -p $(INSTALLDIR)/vm
1304	cp $(SYMROOT)/vm/fault_throughput.lua $(INSTALLDIR)/vm/
1305	chmod +x $(INSTALLDIR)/vm/fault_throughput.lua
1306
1307EXCLUDED_SOURCES += vm/fault_throughput.plist
1308
1309CUSTOM_TARGETS += $(SYMROOT)/vm/fault_throughput.lua vm/fault_throughput
1310
1311ifeq ($(PLATFORM),MacOSX)
1312mixed_pagesize: vm/mixed_pagesize.c
1313	mkdir -p $(SYMROOT)/vm
1314	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/vm/$@
1315
1316install-mixed_pagesize: mixed_pagesize
1317	mkdir -p $(INSTALLDIR)/vm
1318	cp $(SYMROOT)/vm/mixed_pagesize $(INSTALLDIR)/vm/
1319
1320BATS_PLISTS += $(SRCROOT)/vm/mixed_pagesize.plist
1321
1322EXCLUDED_SOURCES += vm/mixed_pagesize.c vm/mixed_pagesize.plist
1323CUSTOM_TARGETS += mixed_pagesize
1324else
1325EXCLUDED_SOURCES += vm/mixed_pagesize.c vm/mixed_pagesize.plist
1326endif
1327
1328manual_wq_cooperative: manual_wq_cooperative.c
1329	mkdir -p $(SYMROOT)
1330	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
1331
1332install-manual_wq_cooperative: manual_wq_cooperative
1333	mkdir -p $(INSTALLDIR)
1334	cp $(SYMROOT)/manual_wq_cooperative $(INSTALLDIR)
1335
1336BATS_PLISTS += $(SRCROOT)/workqueue.plist
1337EXCLUDED_SOURCES += manual_wq_cooperative.c workqueue.plist
1338CUSTOM_TARGETS += manual_wq_cooperative
1339
1340# VM madvise(2) benchmark
1341
1342BATS_PLISTS += $(SRCROOT)/vm/perf_madvise.plist
1343
1344vm/perf_madvise: OTHER_CFLAGS += benchmark/helpers.c
1345
1346.PHONY: install-vm/perf_madvise
1347install-vm/perf_madvise: vm/perf_madvise
1348	mkdir -p $(INSTALLDIR)/vm
1349	cp $(SYMROOT)/vm/perf_madvise $(INSTALLDIR)/vm/
1350
1351$(SYMROOT)/vm/perf_madvise.lua: $(SRCROOT)/vm/perf_madvise.lua
1352	mkdir -p $(SYMROOT)/vm
1353	cp $< $@
1354	chmod +x $@
1355
1356.PHONY: install-perf_madvise_benchrun
1357install-$(SYMROOT)/vm/perf_madvise.lua: $(SYMROOT)/vm/perf_madvise.lua
1358	mkdir -p $(INSTALLDIR)/vm
1359	cp $(SYMROOT)/vm/perf_madvise.lua $(INSTALLDIR)/vm
1360	chmod +x $(INSTALLDIR)/vm/perf_madvise.lua
1361
1362CUSTOM_TARGETS += $(SYMROOT)/vm/perf_madvise.lua vm/perf_madvise
1363
1364BATS_PLISTS += $(SRCROOT)/vm/perf_compressor.plist
1365EXCLUDED_SOURCES += vm/perf_compressor.plist
1366
1367vm/perf_compressor: OTHER_CFLAGS += benchmark/helpers.c
1368
1369.PHONY: install-vm/perf_compressor
1370install-vm/perf_compressor: vm/perf_compressor
1371	mkdir -p $(INSTALLDIR)/vm
1372	cp $(SYMROOT)/vm/perf_compressor $(INSTALLDIR)/vm/
1373
1374$(SYMROOT)/vm/perf_compressor.lua: $(SRCROOT)/vm/perf_compressor.lua
1375	mkdir -p $(SYMROOT)/vm
1376	cp $< $@
1377	chmod +x $@
1378
1379.PHONY: install-$(SYMROOT)/vm/perf_compressor_benchrun
1380install-$(SYMROOT)/vm/perf_compressor.lua: $(SYMROOT)/vm/perf_compressor.lua
1381	mkdir -p $(INSTALLDIR)/vm
1382	cp $(SYMROOT)/vm/perf_compressor.lua $(INSTALLDIR)/vm/
1383	chmod +x $(INSTALLDIR)/vm/perf_compressor.lua
1384
1385CUSTOM_TARGETS += $(SYMROOT)/vm/perf_compressor.lua vm/perf_compressor
1386
1387ioconnectasyncmethod_57641955: OTHER_LDFLAGS += -framework IOKit
1388
1389ifeq ($(PLATFORM),BridgeOS)
1390EXCLUDED_SOURCES += ipsec.m
1391else
1392ipsec: OTHER_LDFLAGS += -framework Foundation -framework CoreFoundation -framework NetworkExtension
1393ipsec: CODE_SIGN_ENTITLEMENTS = ipsec.entitlements
1394endif
1395
1396test_sysctl_kern_procargs_25397314: OTHER_LDFLAGS += -framework Foundation -ldarwintest_utils
1397
1398INCLUDED_TEST_SOURCE_DIRS += counter
1399
1400EXCLUDED_SOURCES += counter/common.c
1401counter/counter: OTHER_CFLAGS += counter/common.c test_utils.c
1402counter/counter: OTHER_LDFLAGS += -ldarwintest_utils -ldarwintest
1403
1404counter/benchmark: OTHER_CFLAGS += counter/common.c benchmark/helpers.c
1405
1406.PHONY: install-counter/benchmark
1407install-counter/benchmark: counter/benchmark
1408	mkdir -p $(INSTALLDIR)/counter
1409	cp $(SYMROOT)/counter/benchmark $(INSTALLDIR)/counter/
1410
1411$(SYMROOT)/counter/benchmark.lua: $(SRCROOT)/counter/benchmark.lua
1412	mkdir -p $(SYMROOT)/counter
1413	cp $< $@
1414	chmod +x $@
1415
1416.PHONY: install-counter_benchrun
1417install-$(SYMROOT)/counter/benchmark.lua: $(SYMROOT)/counter/benchmark.lua
1418	mkdir -p $(INSTALLDIR)/counter
1419	cp $(SYMROOT)/counter/benchmark.lua $(INSTALLDIR)/counter/
1420	chmod +x $(INSTALLDIR)/counter/benchmark.lua
1421
1422CUSTOM_TARGETS += $(SYMROOT)/counter/benchmark.lua counter/benchmark
1423
1424ifneq ($(PLATFORM),MacOSX)
1425EXCLUDED_SOURCES += vm/page_size_globals.c
1426else
1427vm/page_size_globals: INVALID_ARCHS = arm64 arm64e
1428endif
1429
1430# Same helper used in execperf, different build system.
1431static_binary: ../tools/tests/execperf/exit-asm.S
1432	$(CC) $(DT_CFLAGS) $(CFLAGS) $(filter-out -l%,$(DT_LDFLAGS) $(LDFLAGS) $(OTHER_LDFLAGS)) $< -o $(SYMROOT)/static_binary -static -nostartfiles -nodefaultlibs -Wl,-version_load_command -Wl,-segalign,0x4000 -e _main
1433	CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/static_binary
1434
1435install-static_binary: static_binary
1436	mkdir -p $(INSTALLDIR)
1437	cp $(SYMROOT)/static_binary $(INSTALLDIR)
1438
1439CUSTOM_TARGETS += static_binary
1440EXCLUDED_SOURCES += static_binary.c
1441
1442test_static_binary_csflags: static_binary
1443test_static_binary_csflags: OTHER_LDFLAGS += -ldarwintest_utils
1444
1445
1446libmalloc_apple_array: CODE_SIGN_ENTITLEMENTS = entitlements/libmalloc_apple_array.entitlements
1447libmalloc_apple_array: OTHER_CFLAGS += -DENTITLED=1 drop_priv.c test_utils.c
1448libmalloc_apple_array: OTHER_LDFLAGS += -ldarwintest_utils
1449libmalloc_apple_array: libmalloc_apple_array.c print_apple_array print_apple_array_HR1 print_apple_array_HR2
1450	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
1451	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none --entitlements $(CODE_SIGN_ENTITLEMENTS) $(SYMROOT)/$@;
1452
1453libmalloc_apple_array_unentitled: OTHER_CFLAGS += drop_priv.c test_utils.c
1454libmalloc_apple_array_unentitled: OTHER_LDFLAGS += -ldarwintest_utils
1455libmalloc_apple_array_unentitled: libmalloc_apple_array.c print_apple_array print_apple_array_HR1 print_apple_array_HR2
1456	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $(OTHER_CFLAGS) $< -o $(SYMROOT)/$@
1457	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
1458
1459CUSTOM_TARGETS += print_apple_array
1460print_apple_array: print_apple_array.c
1461	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
1462	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
1463
1464CUSTOM_TARGETS += print_apple_array_HR1
1465print_apple_array_HR1: CODE_SIGN_ENTITLEMENTS=entitlements/hardened-binary-entitlements-1.plist
1466print_apple_array_HR1: print_apple_array.c
1467	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
1468	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --entitlements $(SRCROOT)/$(CODE_SIGN_ENTITLEMENTS) --timestamp=none $(SYMROOT)/$@;
1469
1470CUSTOM_TARGETS += print_apple_array_HR2
1471print_apple_array_HR2: CODE_SIGN_ENTITLEMENTS=entitlements/hardened-binary-entitlements-2.plist
1472print_apple_array_HR2: print_apple_array.c
1473	$(CC) $(DT_CFLAGS) -I $(OBJROOT) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $^ -o $(SYMROOT)/$@
1474	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --entitlements $(SRCROOT)/$(CODE_SIGN_ENTITLEMENTS) --timestamp=none $(SYMROOT)/$@;
1475
1476
1477install-print_apple_array: print_apple_array
1478	mkdir -p $(INSTALLDIR)/tools
1479	cp $(SYMROOT)/print_apple_array $(INSTALLDIR)/tools/
1480
1481install-print_apple_array_HR1: print_apple_array_HR1
1482	mkdir -p $(INSTALLDIR)/tools
1483	cp $(SYMROOT)/print_apple_array_HR1 $(INSTALLDIR)/tools/
1484
1485install-print_apple_array_HR2: print_apple_array_HR2
1486	mkdir -p $(INSTALLDIR)/tools
1487	cp $(SYMROOT)/print_apple_array_HR2 $(INSTALLDIR)/tools/
1488
1489persona: CODE_SIGN_ENTITLEMENTS = persona.entitlements
1490persona_adoption: CODE_SIGN_ENTITLEMENTS = persona_adoption.entitlements
1491
1492OTHER_TEST_TARGETS += libmalloc_apple_array libmalloc_apple_array_unentitled
1493
1494entropy: OTHER_CFLAGS += -framework perfdata
1495
1496debug_enable_syscall_rejection: OTHER_LDFLAGS += -ldarwintest_utils
1497
1498INCLUDED_TEST_SOURCE_DIRS += sched
1499include sched/Makefile
1500
1501thread_set_state_arm64_cpsr: CODE_SIGN_ENTITLEMENTS = entitlements/thread_set_state.entitlement
1502
1503vm/app_swap: OTHER_LDFLAGS += -ldarwintest_utils
1504
1505CUSTOM_TARGETS += debug_syscall_rejection_helper
1506debug_syscall_rejection_helper: debug_syscall_rejection_helper.c
1507	$(CC) $(OTHER_CFLAGS) $(CFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@; \
1508	echo $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@; \
1509	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/$@;
1510
1511
1512install-debug_syscall_rejection_helper: debug_syscall_rejection_helper
1513	mkdir -p $(INSTALLDIR)
1514	cp $(SYMROOT)/debug_syscall_rejection_helper $(INSTALLDIR)/
1515
1516file_leases: OTHER_CFLAGS += test_utils.c
1517file_leases: OTHER_LDFLAGS += -ldarwintest_utils
1518file_leases: CODE_SIGN_ENTITLEMENTS = file_leases.entitlements
1519
1520INCLUDED_TEST_SOURCE_DIRS += vfs
1521vfs/freeable_vnodes: OTHER_LDFLAGS += -ldarwintest_utils
1522
1523vm/vm_reclaim: OTHER_CFLAGS += -Wno-language-extension-token -Wno-c++98-compat memorystatus_assertion_helpers.c
1524vm/vm_reclaim: OTHER_LDFLAGS += -ldarwintest_utils
1525
1526vm/vm_reclaim: INVALID_ARCHS = armv7k arm64_32
1527
1528DIAG_MEM_THRESHOLD_UTILS = vm/diag_threshold_test.c
1529EXCLUDED_SOURCES += $(DIAG_MEM_THRESHOLD_UTILS)
1530
1531vm/diag_threshold_test: $(DIAG_MEM_THRESHOLD_UTILS) excserver
1532
1533vm/diag_threshold_test_double_limit: $(DIAG_MEM_THRESHOLD_UTILS)  excserver
1534vm/diag_threshold_test_double_limit: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1535vm/diag_threshold_test_double_limit: OTHER_CFLAGS += -l darwintest_utils
1536vm/diag_threshold_test_double_limit: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1537
1538vm/diag_threshold_test_simple: $(DIAG_MEM_THRESHOLD_UTILS)  excserver
1539vm/diag_threshold_test_simple: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1540vm/diag_threshold_test_simple: OTHER_CFLAGS += -l darwintest_utils
1541vm/diag_threshold_test_simple: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1542
1543vm/diag_threshold_test_enable_disable_threshold: $(DIAG_MEM_THRESHOLD_UTILS)  excserver
1544vm/diag_threshold_test_enable_disable_threshold: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1545vm/diag_threshold_test_enable_disable_threshold: OTHER_CFLAGS += -l darwintest_utils
1546vm/diag_threshold_test_enable_disable_threshold: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1547
1548vm/diag_threshold_test_no_limit_cross: $(DIAG_MEM_THRESHOLD_UTILS)  excserver
1549vm/diag_threshold_test_no_limit_cross: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1550vm/diag_threshold_test_no_limit_cross: OTHER_CFLAGS += -l darwintest_utils
1551vm/diag_threshold_test_no_limit_cross: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1552
1553vm/diag_threshold_test_no_retrigger: $(DIAG_MEM_THRESHOLD_UTILS)  excserver
1554vm/diag_threshold_test_no_retrigger: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1555vm/diag_threshold_test_no_retrigger: OTHER_CFLAGS += -l darwintest_utils
1556vm/diag_threshold_test_no_retrigger: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1557
1558vm/diag_threshold_test_with_low_watermark: $(DIAG_MEM_THRESHOLD_UTILS)  excserver
1559vm/diag_threshold_test_with_low_watermark: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1560vm/diag_threshold_test_with_low_watermark: OTHER_CFLAGS += -l darwintest_utils
1561vm/diag_threshold_test_with_low_watermark: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1562
1563vm/diag_threshold_test_with_high_watermark: $(DIAG_MEM_THRESHOLD_UTILS)  excserver
1564vm/diag_threshold_test_with_high_watermark: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1565vm/diag_threshold_test_with_high_watermark: OTHER_CFLAGS += -l darwintest_utils
1566vm/diag_threshold_test_with_high_watermark: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1567
1568vm/diag_threshold_test_watermark_and_threshold_same: $(DIAG_MEM_THRESHOLD_UTILS)  excserver
1569vm/diag_threshold_test_watermark_and_threshold_same: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1570vm/diag_threshold_test_watermark_and_threshold_same: OTHER_CFLAGS += -l darwintest_utils
1571vm/diag_threshold_test_watermark_and_threshold_same: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1572
1573vm/diag_threshold_test_limit_and_threshold_same: $(DIAG_MEM_THRESHOLD_UTILS)  excserver
1574vm/diag_threshold_test_limit_and_threshold_same: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1575vm/diag_threshold_test_limit_and_threshold_same: OTHER_CFLAGS += -l darwintest_utils
1576vm/diag_threshold_test_limit_and_threshold_same: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1577
1578vm/diag_threshold_test_logging: $(DIAG_MEM_THRESHOLD_UTILS)  excserver
1579vm/diag_threshold_test_logging: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1580vm/diag_threshold_test_logging: OTHER_CFLAGS += -l darwintest_utils
1581
1582vm/diag_threshold_test_large_limit: $(DIAG_MEM_THRESHOLD_UTILS)  excserver
1583vm/diag_threshold_test_large_limit: OTHER_CFLAGS += $(OBJROOT)/excserver.c -I $(OBJROOT)
1584vm/diag_threshold_test_large_limit: OTHER_CFLAGS += -l darwintest_utils
1585vm/diag_threshold_test_large_limit: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1586
1587EXCLUDED_SOURCES += constrained_ctypes_tests.c
1588CUSTOM_TARGETS += constrained_ctypes_tests_enabled constrained_ctypes_tests_enacted constrained_ctypes_tests_disabled
1589constrained_ctypes_tests_enabled: OTHER_CFLAGS += -D__CCT_TEST_ENABLED
1590constrained_ctypes_tests_enabled: OTHER_LDFLAGS += -ldarwintest_utils
1591constrained_ctypes_tests_enabled: constrained_ctypes_tests.c
1592	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) constrained_ctypes_tests.c -o $(SYMROOT)/constrained_ctypes_tests_enabled
1593	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/constrained_ctypes_tests_enabled;
1594
1595install-constrained_ctypes_tests_enabled: constrained_ctypes_tests_enabled
1596	mkdir -p $(INSTALLDIR)
1597	cp $(SYMROOT)/constrained_ctypes_tests_enabled $(INSTALLDIR)/
1598
1599constrained_ctypes_tests_enacted: OTHER_CFLAGS += -D__CCT_TEST_ENABLED
1600constrained_ctypes_tests_enacted: OTHER_CFLAGS += -D__CCT_TEST_ENACTED
1601constrained_ctypes_tests_enacted: OTHER_CFLAGS += -fbounds-safety
1602constrained_ctypes_tests_enacted: OTHER_LDFLAGS += -ldarwintest_utils
1603constrained_ctypes_tests_enacted: constrained_ctypes_tests.c
1604	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) constrained_ctypes_tests.c -o $(SYMROOT)/constrained_ctypes_tests_enacted
1605	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/constrained_ctypes_tests_enacted;
1606
1607install-constrained_ctypes_tests_enacted: constrained_ctypes_tests_enacted
1608	mkdir -p $(INSTALLDIR)
1609	cp $(SYMROOT)/constrained_ctypes_tests_enacted $(INSTALLDIR)/
1610
1611
1612constrained_ctypes_tests_disabled: OTHER_LDFLAGS += -ldarwintest_utils
1613constrained_ctypes_tests_disabled: constrained_ctypes_tests.c
1614	$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) constrained_ctypes_tests.c -o $(SYMROOT)/constrained_ctypes_tests_disabled
1615	env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) $(CODESIGN) --force --sign - --timestamp=none $(SYMROOT)/constrained_ctypes_tests_disabled;
1616
1617install-constrained_ctypes_tests_disabled: constrained_ctypes_tests_disabled
1618	mkdir -p $(INSTALLDIR)
1619	cp $(SYMROOT)/constrained_ctypes_tests_disabled $(INSTALLDIR)/
1620
1621task_suspend_stats: OTHER_LDFLAGS += -ldarwintest_utils
1622task_suspend_stats: CODE_SIGN_ENTITLEMENTS = task_for_pid_entitlement.plist
1623
1624# os_atomic use throws this warning
1625setitimer: OTHER_CFLAGS += -Wno-c++98-compat -framework perfdata
1626setitimer: OTHER_LDFLAGS += -framework perfdata
1627
1628
1629include $(DEVELOPER_DIR)/AppleInternal/Makefiles/darwintest/Makefile.targets
1630
1631exception_ports_info: CODE_SIGN_ENTITLEMENTS = entitlements/set_exception_port.entitlement
1632