]> git.saurik.com Git - apple/xnu.git/blame - tools/tests/unit_tests/Makefile
xnu-2422.115.4.tar.gz
[apple/xnu.git] / tools / tests / unit_tests / Makefile
CommitLineData
39236c6e
A
1#!/usr/bin/make
2# This file lists all individual tests added over time to test various functionality.
3# The Raft TestBot framework runs the tests based on the targets listed in this file.
4# Please review the following guidelines to ensure successful execution of your test case
5#
6# == Steps followed by Raft testbot ==
7# * find target name from this Makefile. A target is identified by the string <targetname>: related files
8# * build the target with the command "make <targetname>". The current dir is same as of this Makefile
9# * The test is executed with following commands "cd BUILD/dst/; ./<targetname> "
10# * The exit value of <targetname> is logged. (0 = PASS and <any integer> = FAIL)
11# * remove the BUILD directory
12#
13# == Note about SDKROOT ==
14# The environment variable SDKROOT must be passed to select the appropriate SDK.
15# x86/OSX is the default, so to build for iphone, you must:
16#
17# 64-bit: $make SDKROOT=iphoneos.internal <targetname>
18# 32-bit: $make SDKROOT=iphoneos.internal ARCH_CONFIGS="armv7" <targetname>
19#
20# == How to add a new test ==
21# * Create a test directory based on radar #. (for example test_<number>)
22# * Put test specific files in the directory.
23# * Add an entry in this Makefile (reserved targetnames are {run_tests.sh, xnu_target_executables.list, build_*.log})
24# targetname: testdir/programname.c
25# <provide your compile command with output in $(BUILDDIR)>
26#
27# * Check if your target name is listed in the right configurations.
28# $make list_targets
29# optionally you can pass SDKROOT=iphoneos|iphoneos.internal|macosx|macosx.internal and verify
30# the built binary is of right arch and config.
31#
32# * verify that your test setup works by running the following commands
33# $make <targetname>
34# $cd BUILD/dst/
35# $./targetname
36#
37# == Easy Option ==
38# look at some example targets in this file and replicate that :)
39#
40
41ifneq ($(SRCROOT),)
42SRCDIR=$(SRCROOT)
43else
44SRCDIR?=$(shell /bin/pwd)
45endif
46
47ifneq ($(DSTROOT),)
48BUILDDIR?=$(DSTROOT)
49else
50BUILDDIR?=$(SRCDIR)/BUILD/dst
51endif
52
53# make sure we have a build directory
54$(shell [ -d "$(BUILDDIR)" ] || mkdir -p $(BUILDDIR))
55
56SDKROOT ?= /
57TARGETSDK:=$(SDKROOT)
58
59
60# setup the TARGETSDK and SDKROOT variables
61ifeq (/,$(SDKROOT))
62SDKROOTPATH=/
63else
64SDKROOTPATH:=$(shell /usr/bin/xcodebuild -sdk $(TARGETSDK) -version Path)
65endif
66
67ifeq ($(SDKROOTPATH),)
68$(error "Unable to find any SDKROOT on host. Exiting")
69endif
70
71PRIVATE_INCLUDES = $(SDKROOTPATH)/System/Library/Frameworks/System.framework/PrivateHeaders
72
73#arch configs if not provided
74ifdef RC_ARCHS
75ARCH_CONFIGS:=$(RC_ARCHS)
76endif
77ifeq ($(ARCH_CONFIGS),)
78ARCH_CONFIGS:=
79ifeq (iPhone,$(findstring iPhone,$(SDKROOTPATH)))
80ARCH_CONFIGS:=-arch armv7
81endif
82
83else
84TMP_ARCHCONF:=$(foreach argarch,$(ARCH_CONFIGS),-arch $(argarch) )
85override ARCH_CONFIGS:=$(TMP_ARCHCONF)
86endif
87
88
89#setup the compiler flags.
90ifeq (iPhone,$(findstring iPhone,$(SDKROOTPATH)))
91CFLAGS=-I$(BUILDDIR) -I. -isysroot $(SDKROOTPATH) $(ARCH_CONFIGS)
92CC=xcrun -sdk $(TARGETSDK) clang
93MIG=xcrun -sdk $(TARGETSDK) mig
94XCODEBUILD=xcodebuild -sdk iphoneos.internal $(ARCH_CONFIGS)
95CODESIGN=$(shell xcrun -sdk $(TARGETSDK) -find codesign)
96CODESIGN_ALLOCATE=$(shell xcrun -sdk $(TARGETSDK) -find codesign_allocate)
97TARGET_NAME=ios
98else
99#Compiler flags for macosx
100CFLAGS=-I$(BUILDDIR) -I. $(ARCH_CONFIGS)
101CC=clang
102MIG=xcrun mig
103XCODEBUILD=xcodebuild
104CODESIGN=codesign
105CODESIGN_ALLOCATE=$(shell xcrun -find codesign_allocate)
106TARGET_NAME=osx
107endif
108
109#Flags that define the environment
110TARGETOSVERS:=$(shell /usr/bin/xcodebuild -sdk $(TARGETSDK) -version ProductVersion)
111TARGETOSBUILDVERS:=$(shell /usr/bin/xcodebuild -sdk $(TARGETSDK) -version ProductBuildVersion)
112SDKTARGET_STR:=$(subst .,_,$(TARGETSDK))
113MORECFLAGS=-D TARGET_SDK_$(SDKTARGET_STR)=1 -D TARGET_OS_VERS=\"$(TARGETOSVERS)\" -D TARGET_OS_BUILD_VERS=\"$(TARGETOSBUILDVERS)\"
114
115#special recipe for special targets: list_targets and clean
116define _sed_target_extract_script
117/^$$/ { n
118/^[^ ]*:/p
119}
120endef
121export sed_target_extract_script=$(_sed_target_extract_script)
122all:
123 @ for TARGET in `make list_targets`; do \
124 if [ $$TARGET != all ]; then \
125 make $$TARGET DSTROOT="$(BUILDDIR)/$$TARGET"; \
126 fi \
127 done
128list_targets:
129 @ make -rpn | sed -n -e "$$sed_target_extract_script" | cut -d':' -f1 | grep -v '^clean' | grep -v '^list_targets'
130
131clean:
132 rm -fr ./BUILD/
133# == List of targets for test cases ==
134#Note: target name should be same as the executable in $(BUILDDIR)
135#And: target name has to be seperate from source directory name. Using "_src" suffix is a good idea.
136sampletest: sampletest.c
137 $(CC) -o $(BUILDDIR)/$@ $^ $(CFLAGS) $(MORECFLAGS)
138
139pipe_test_10807398: pipe_test_10807398_src/parent.c pipe_test_10807398_src/child.c
140 $(CC) -o $(BUILDDIR)/$@ pipe_test_10807398_src/parent.c $(CFLAGS)
141 $(CC) -o $(BUILDDIR)/child pipe_test_10807398_src/child.c $(CFLAGS)
142
143pipes_fill_procinfo_11179336: pipes_fill_procinfo_11179336.c
144 $(CC) -o $(BUILDDIR)/$@ pipes_fill_procinfo_11179336.c $(CFLAGS)
145
146test_wq_exit_race_panic_10970548: test_wq_exit_race_panic_10970548.c
147 $(CC) -o $(BUILDDIR)/$@ test_wq_exit_race_panic_10970548.c $(CFLAGS)
148
149ptrace_tests_10767133: ptrace_tests_10767133_src/ptrace_tests_10767133.c
150 $(CC) -O0 -o $(BUILDDIR)/ptrace_tests_10767133 ptrace_tests_10767133_src/ptrace_tests_10767133.c $(CFLAGS) -Wall
151
152ptrace_test_12507045: ptrace_test_12507045_src/ptrace_test.c
153 $(CC) -O0 -o $(BUILDDIR)/ptrace_test_12507045 $< $(CFLAGS)
154
155clock_types_6368156: clock_types_6368156.c
156 $(CC) -o $(BUILDDIR)/$@ $^ $(CFLAGS)
157
158semctl_test_8534495: semctl_test_8534495_src/semctl_test_8534495.c
159 $(CC) -o $(BUILDDIR)/semctl_test_8534495 semctl_test_8534495_src/semctl_test_8534495.c $(CFLAGS)
160
161ptcwd_test_11269991: ptcwd_test_11269991_src/ptcwd_test_11269991.c
162 $(CC) -o $(BUILDDIR)/ptcwd_test_11269991 ptcwd_test_11269991_src/ptcwd_test_11269991.c $(CFLAGS)
163
164sprace_test_11891562: sprace_test_11891562_src/sprace_test_11891562.c
165 $(CC) -o $(BUILDDIR)/sprace_test_11891562 sprace_test_11891562_src/sprace_test_11891562.c $(CFLAGS)
166
167guarded_fd_tests_11746236: guarded_fd_tests_11746236_src/mach_exc.defs guarded_fd_tests_11746236_src/guarded_test_framework.c guarded_fd_tests_11746236_src/guarded_test.c
168 $(MIG) $(CFLAGS) \
169 -user $(BUILDDIR)/mach_excUser.c \
170 -server $(BUILDDIR)/mach_excServer.c \
171 -header $(BUILDDIR)/mach_exc.h \
172 guarded_fd_tests_11746236_src/mach_exc.defs
173 $(CC) -o $(BUILDDIR)/guarded_fd_tests_11746236 \
174 guarded_fd_tests_11746236_src/guarded_test_framework.c \
175 $(BUILDDIR)/mach_excServer.c $(CFLAGS) -I$(PRIVATE_INCLUDES) -I$(BUILDDIR)
176 $(CC) -o $(BUILDDIR)/guarded_test \
177 guarded_fd_tests_11746236_src/guarded_test.c \
178 -I$(PRIVATE_INCLUDES) $(CFLAGS)
179
180thread_get_state_11918811: thread_get_state_11918811_src/thread_get_state.c
181 $(MIG) $(CFLAGS) \
182 -sheader $(BUILDDIR)/excserver.h \
183 -server $(BUILDDIR)/excserver.c \
184 -header /dev/null -user /dev/null \
185 thread_get_state_11918811_src/excserver.defs
186 $(CC) -o $(BUILDDIR)/thread_get_state_11918811 \
187 thread_get_state_11918811_src/thread_get_state.c \
188 $(BUILDDIR)/excserver.c \
189 $(CFLAGS)
190
191fcntlrangecheck_tests_11202484: fcntlrangecheck_tests_11202484_src/fcntlrangecheck_tests_11202484.c
192 $(CC) -o $(BUILDDIR)/fcntlrangecheck_tests_11202484 fcntlrangecheck_tests_11202484_src/fcntlrangecheck_tests_11202484.c $(CFLAGS)
193
194test_waitqlocktry_12053360: test_waitqlocktry_12053360.c
195 $(CC) -o $(BUILDDIR)/test_waitqlocktry_12053360 test_waitqlocktry_12053360.c $(CFLAGS)
196
197guarded_mach_port_tests_11178535: guarded_mach_port_tests_11178535_src/mach_exc.defs guarded_mach_port_tests_11178535_src/guarded_test_framework.c guarded_mach_port_tests_11178535_src/guarded_test.c
198 $(MIG) $(CFLAGS) \
199 -user $(BUILDDIR)/mach_excUser.c \
200 -server $(BUILDDIR)/mach_excServer.c \
201 -header $(BUILDDIR)/mach_exc.h \
202 guarded_mach_port_tests_11178535_src/mach_exc.defs
203 $(CC) -o $(BUILDDIR)/guarded_mach_port_tests_11178535 \
204 guarded_mach_port_tests_11178535_src/guarded_test_framework.c \
205 $(BUILDDIR)/mach_excServer.c $(CFLAGS) -I$(PRIVATE_INCLUDES) -I$(BUILDDIR)
206 $(CC) -o $(BUILDDIR)/guarded_mp_test \
207 guarded_mach_port_tests_11178535_src/guarded_test.c \
208 -I$(PRIVATE_INCLUDES) $(CFLAGS)
209
210cpu_monitor_tests_11646922: cpu_monitor_tests_11646922_src/cpumon_test_framework.c
211 $(MIG) $(CFLAGS) \
212 -sheader $(BUILDDIR)/excserver.h \
213 -server $(BUILDDIR)/excserver.c \
214 -header /dev/null -user /dev/null \
215 cpu_monitor_tests_11646922_src/mach_exc.defs
216 $(CC) -o $(BUILDDIR)/cpu_monitor_tests_11646922 \
217 cpu_monitor_tests_11646922_src/cpumon_test_framework.c \
218 $(BUILDDIR)/excserver.c \
219 $(CFLAGS) $(MORECFLAGS) -I$(PRIVATE_INCLUDES)
220 $(XCODEBUILD) -project cpu_monitor_tests_11646922_src/cpu_hog/cpu_hog.xcodeproj TARGET_BUILD_DIR=$(BUILDDIR)
221 $(CC) -o $(BUILDDIR)/mem_hog \
222 cpu_monitor_tests_11646922_src/mem_hog/mem_hog.c \
223 $(CFLAGS) $(MORECFLAGS) -I$(PRIVATE_INCLUDES)
224
225monitor_stress_12901965: monitor_stress_12901965_src/monitor_stress/monitor_stress.m
226 echo '#!/bin/sh\n./monitor_stress -e 20\n./monitor_stress -w 3 -e 20' > $(BUILDDIR)/monitor_stress_12901965
227 chmod +x $(BUILDDIR)/monitor_stress_12901965
228 $(XCODEBUILD) -target $(TARGET_NAME) -project monitor_stress_12901965_src/monitor_stress.xcodeproj TARGET_BUILD_DIR=$(BUILDDIR)
229
230codesigntests: codesigntests.c codesigntests-entitlements.plist
231 $(CC) -o $(BUILDDIR)/codesigntests codesigntests.c $(CFLAGS)
232 env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) \
233 $(CODESIGN) -s - --entitlements codesigntests-entitlements.plist $(BUILDDIR)/codesigntests
234
235libproc_privilege_test_13203438: libproc_privilege_test_13203438_src/libproc_privilege_test_13203438.c
236 $(CC) -o $(BUILDDIR)/libproc_privilege_test_13203438 libproc_privilege_test_13203438_src/libproc_privilege_test_13203438.c $(CFLAGS)
237