1include Makefile.common 2 3ifndef SRCROOT 4export SRCROOT := $(shell /bin/pwd) 5endif 6ifndef OBJROOT 7export OBJROOT = $(SRCROOT)/BUILD/obj 8endif 9ifndef DSTROOT 10export DSTROOT = $(SRCROOT)/BUILD/dst 11endif 12ifndef SYMROOT 13export SYMROOT = $(SRCROOT)/BUILD/sym 14endif 15 16ifdef RC_ProjectName 17DSTSUBPATH = $(DSTROOT)/AppleInternal/CoreOS/tests/xnu 18BATS_CONFIG_PATH = $(DSTROOT)/AppleInternal/CoreOS 19else 20DSTSUBPATH = $(DSTROOT) 21BATS_CONFIG_PATH = $(DSTROOT) 22endif 23 24DSTSUBPATH_KEXTS = $(DSTROOT)/System/AppleInternal/Library/AuxiliaryExtensions 25 26COMMON_TARGETS = unit_tests \ 27 MPMMTest \ 28 packetdrill \ 29 affinity \ 30 superpages \ 31 zero-to-n \ 32 jitter \ 33 perf_index \ 34 personas \ 35 unixconf \ 36 kernpost_test_report \ 37 38KEXT_TARGETS = pgokext.kext 39 40IPHONE_TARGETS = 41 42MAC_TARGETS = 43 44BATS_TARGET = $(BATS_CONFIG_PATH)/BATS 45 46ifeq "$(Embedded)" "YES" 47TARGETS = $(addprefix $(DSTSUBPATH)/, $(COMMON_TARGETS) $(IPHONE_TARGETS)) $(addprefix $(DSTSUBPATH_KEXTS)/, $(KEXT_TARGETS)) 48else 49TARGETS = $(addprefix $(DSTSUBPATH)/, $(COMMON_TARGETS) $(MAC_TARGETS)) $(addprefix $(DSTSUBPATH_KEXTS)/, $(KEXT_TARGETS)) 50endif 51 52all: $(BATS_TARGET) $(TARGETS) 53 54.PHONY: always 55 56always: 57 58# NOTE: RC_ARCHES nonsense is here because code signing will fail on kexts if we include a i386 slice 59# <rdar://problem/29878263> CoreOSLobo: xnu_tests-4026 fails to codesign 60 61$(DSTSUBPATH_KEXTS)/pgokext.kext: always 62 xcodebuild -configuration Debug -project $(SRCROOT)/testkext/testkext.xcodeproj -target pgokext DSTROOT=$(DSTSUBPATH_KEXTS) SYMROOT=$(SYMROOT)/testkext SRCROOT=$(SRCROOT)/testkext OBJROOT=$(OBJROOT)/testkext SDKROOT=$(SDKROOT) RC_ARCHS="$(subst i386,,$(RC_ARCHS))" install 63 64$(DSTSUBPATH)/%: always 65 $(_v)echo Building $@ 66 $(_v)mkdir -p $@ 67 $(_v)mkdir -p $(OBJROOT)/$(notdir $@) 68 $(_v)mkdir -p $(SYMROOT)/$(notdir $@) 69 $(_v)$(MAKE) -C $(SRCROOT)/$(notdir $@) SRCROOT=$(SRCROOT)/$(notdir $@) DSTROOT=$@ OBJROOT=$(OBJROOT)/$(notdir $@) SYMROOT=$(SYMROOT)/$(notdir $@) SDKROOT=$(SDKROOT) BASEDSTROOT=$(DSTROOT) 70 $(_v)find $@ -type d -name "*.dSYM" -exec cp -a {} $(SYMROOT)/ ';' 71 72$(BATS_TARGET): $(TARGETS) 73 $(_v)mkdir -p $@ 74 $(_v)mkdir -p $(OBJROOT)/$(notdir $@) 75 $(_v)mkdir -p $(SYMROOT) 76 $(_v)$(MAKE) -C $(SRCROOT)/$(notdir $@) SRCROOT=$(SRCROOT)/$(notdir $@) DSTROOT=$@ OBJROOT=$(OBJROOT)/$(notdir $@) SDKROOT=$(SDKROOT) BASEDSTROOT=$(DSTROOT) BASEDSTSUBPATH=$(DSTSUBPATH) 77