VPATH = $(SRCROOT):$(OBJROOT):$(SYMROOT):$(DSTROOT)
SOURCES_c := $(notdir $(wildcard $(SRCROOT)/*.c))
SOURCES_m := $(notdir $(wildcard $(SRCROOT)/*.m))
ifndef TARGETS
TARGETS_c := $(filter-out $(OTHER_TARGETS),$(patsubst %.c,%,$(SOURCES_c)))
TARGETS_m := $(filter-out $(OTHER_TARGETS),$(patsubst %.m,%,$(SOURCES_m)))
TARGETS := $(TARGETS_c) $(TARGETS_m) $(OTHER_TARGETS)
else
TARGETS_c := $(filter-out $(OTHER_TARGETS),$(filter $(TARGETS),$(patsubst %.c,%,$(SOURCES_c))))
TARGETS_m := $(filter-out $(OTHER_TARGETS),$(filter $(TARGETS),$(patsubst %.m,%,$(SOURCES_m))))
endif
TESTS := $(patsubst %,test-%,$(TARGETS))
ifeq ($(Simulator),YES)
TARGETS :=
TESTS :=
endif
all: $(TARGETS)
% :: %.c
$(CC) $(OTHER_CFLAGS) $(CFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
% :: %.m
$(CC) $(OTHER_CFLAGS) $(CFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $(OBJCFLAGS) $< -o $(SYMROOT)/$@
$(TARGETS_c): % : %.c
$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $< -o $(SYMROOT)/$@
$(TARGETS_m): % : %.m
$(CC) $(DT_CFLAGS) $(OTHER_CFLAGS) $(CFLAGS) $(DT_LDFLAGS) $(OTHER_LDFLAGS) $(LDFLAGS) $(OBJCFLAGS) $< -o $(SYMROOT)/$@
installhdrs:
install: all bats.plist
ifneq ($(TARGETS),)
mkdir -p $(INSTALLDIR)
cp $(patsubst %,$(SYMROOT)/%,$(TARGETS)) $(INSTALLDIR)/
mkdir -p $(DSTROOT)/AppleInternal/CoreOS/BATS/unit_tests
cp $(SYMROOT)/bats.plist $(DSTROOT)/AppleInternal/CoreOS/BATS/unit_tests/$(PROJECT).plist
endif
clean:
rm -rf $(wildcard $(OBJROOT)/*) $(wildcard $(SYMROOT)/*)
define _bats_plist_generation_script
BEGIN {
print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
print "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">"
print "<plist version=\"1.0\">"
print "<dict>"
print " <key>BATSConfigVersion</key>"
print " <string>0.1.0</string>"
print " <key>Project</key>"
print " <string>$(PROJECT)</string>"
print " <key>Timeout</key>"
print " <integer>300</integer> "
print " <key>Tests</key>"
print " <array>"
}
{
print " <dict>"
print " <key>TestName</key>"
print " <string>" $$1 "</string>"
print " <key>WorkingDirectory</key>"
print " <string>$(INSTALLPATH)</string>"
print " <key>Arch</key>"
print " <string>platform-native</string>"
print " <key>AsRoot</key>"
print " <true/>"
print " <key>Command</key>"
print " <array>"
print " <string>./" $$1 "</string>"
print " </array>"
print " <key>Timeout</key>"
print " <integer>60</integer>"
print " </dict>"
}
END {
print " </array>"
print "</dict>"
print "</plist>"
}
endef
export bats_plist_generation_script=$(_bats_plist_generation_script)
bats.plist:
ifneq ($(TARGETS),)
@echo $(TARGETS) | tr ' ' '\n' | awk "$$bats_plist_generation_script" > $(SYMROOT)/$@
endif
$(TESTS): test-%: %
@$(TEST_ENV) $<
@echo
test: $(TESTS)
.PHONY: all test clean install bats.plist $(TESTS)