X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/490019cf9519204c5fb36b2fba54ceb983bb6b72..eb6b6ca394357805f2bdba989abae309f718b4d8:/tools/tests/personas/Makefile diff --git a/tools/tests/personas/Makefile b/tools/tests/personas/Makefile index f3421742f..ba66220c8 100644 --- a/tools/tests/personas/Makefile +++ b/tools/tests/personas/Makefile @@ -1,6 +1,8 @@ include ../Makefile.common CC:=$(shell xcrun -sdk "$(SDKROOT)" -find cc) +CODESIGN:=$(shell xcrun -sdk "$(SDKROOT)" -find codesign) +CODESIGN_ALLOCATE:=$(shell xcrun -sdk "$(SDKROOT)" -find codesign_allocate) SYMROOT?=$(shell /bin/pwd) @@ -16,8 +18,13 @@ ifdef RC_ARCHS endif endif -ARCH_32 := $(filter-out %64, $(ARCHS)) -ARCH_64 := $(filter %64, $(ARCHS)) +# These are convenience functions for filtering based on substrings, as the +# normal filter functions only accept one wildcard. +FILTER_OUT_SUBSTRING=$(strip $(foreach string,$(2),$(if $(findstring $(1),$(string)),,$(string)))) +FILTER_SUBSTRING=$(strip $(foreach string,$(2),$(if $(findstring $(1),$(string)),$(string),))) + +ARCH_32:=$(call FILTER_OUT_SUBSTRING,64,$(ARCHS)) +ARCH_64:=$(call FILTER_SUBSTRING,64,$(ARCHS)) ARCH_32_FLAGS := $(patsubst %, -arch %, $(ARCH_32)) ARCH_64_FLAGS := $(patsubst %, -arch %, $(ARCH_64)) @@ -25,13 +32,23 @@ ARCH_FLAGS := $(if $(ARCH_64), $(ARCH_64_FLAGS)) $(if $(ARCH_32), $(ARCH_32_FLAG DSTROOT?=$(shell /bin/pwd) -TARGETS := persona_mgr persona_spawn +TARGETS := persona_mgr persona_spawn persona_test_run.sh persona_spawn_unentitled all: $(addprefix $(DSTROOT)/, $(TARGETS)) -$(DSTROOT)/persona_%: persona_%.c persona_test.h Makefile +$(DSTROOT)/persona_%: persona_%.c persona_test.h Makefile persona-entitlements.plist ${CC} ${CFLAGS} ${ARCH_FLAGS} -o $(SYMROOT)/$(notdir $@) $< + env CODESIGN_ALLOCATE=$(CODESIGN_ALLOCATE) \ + $(CODESIGN) -s - --entitlements persona-entitlements.plist $(SYMROOT)/$(notdir $@) if [ ! -e $@ ]; then ditto $(SYMROOT)/$(notdir $@) $@; fi +$(DSTROOT)/persona_spawn_unentitled: persona_spawn.c persona_test.h Makefile + ${CC} ${CFLAGS} ${ARCH_FLAGS} -o $(SYMROOT)/$(notdir $@) $< + if [ ! -e $@ ]; then ditto $(SYMROOT)/$(notdir $@) $@; fi + +$(DSTROOT)/persona_test_run.sh: persona_test_run_src.sh + cp $? $@ + chmod +x $@ + clean: rm -rf $(addprefix $(DSTROOT)/,$(TARGETS)) $(addprefix $(SYMROOT)/,$(TARGETS)) $(SYMROOT)/*.dSYM