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 238