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