1SDKROOT ?= /
2Embedded?=$(shell echo $(SDKROOT) | grep -iq iphoneos && echo YES || echo NO)
3CC:=$(shell xcrun -sdk "$(SDKROOT)" -find cc)
4CFLAGS:=-c -Wall -pedantic -Os
5LDFLAGS:=
6
7SRCROOT?=$(shell /bin/pwd)
8DSTROOT?=$(shell /bin/pwd)/BUILD/dst
9OBJROOT?=$(shell /bin/pwd)/BUILD/obj
10SYMROOT?=$(shell /bin/pwd)/BUILD/sym
11
12ifdef RC_ARCHS
13	ARCHS:=$(RC_ARCHS)
14else
15	ifeq ($(ARCHS),)
16	ifeq "$(Embedded)" "YES"
17	ARCHS:=armv7 armv7s arm64
18else
19	ARCHS:=x86_64 i386
20endif
21endif
22endif
23
24
25ifeq "$(Embedded)" "YES"
26	TARGET_NAME:=PerfIndex.bundle-ios
27	XCODEBUILD=xcodebuild -sdk iphoneos.internal
28else
29	TARGET_NAME:=PerfIndex.bundle-osx
30	XCODEBUILD=xcodebuild
31endif
32
33CFLAGS += $(patsubst %, -arch %, $(ARCHS))
34LDFLAGS += $(patsubst %, -arch %, $(ARCHS))
35
36all: $(DSTROOT) $(OBJROOT) $(SYMROOT) \
37	$(DSTROOT)/perf_index \
38	$(DSTROOT)/perfindex-cpu.dylib \
39	$(DSTROOT)/perfindex-memory.dylib \
40	$(DSTROOT)/perfindex-syscall.dylib \
41	$(DSTROOT)/perfindex-fault.dylib \
42	$(DSTROOT)/perfindex-zfod.dylib \
43	$(DSTROOT)/perfindex-file_create.dylib \
44	$(DSTROOT)/perfindex-file_read.dylib \
45	$(DSTROOT)/perfindex-file_write.dylib \
46	$(DSTROOT)/perfindex-ram_file_create.dylib \
47	$(DSTROOT)/perfindex-ram_file_read.dylib \
48	$(DSTROOT)/perfindex-ram_file_write.dylib \
49	$(DSTROOT)/perfindex-iperf.dylib \
50	$(DSTROOT)/perfindex-compile.dylib \
51	$(DSTROOT)/PerfIndex.bundle
52
53$(DSTROOT)/perfindex-cpu.dylib: $(OBJROOT)/md5.o
54$(DSTROOT)/perfindex-fault.dylib: $(OBJROOT)/test_fault_helper.o
55$(DSTROOT)/perfindex-zfod.dylib: $(OBJROOT)/test_fault_helper.o
56$(DSTROOT)/perfindex-file_create.dylib: $(OBJROOT)/test_file_helper.o
57$(DSTROOT)/perfindex-file_read.dylib: $(OBJROOT)/test_file_helper.o
58$(DSTROOT)/perfindex-file_write.dylib: $(OBJROOT)/test_file_helper.o
59$(DSTROOT)/perfindex-ram_file_create.dylib: $(OBJROOT)/test_file_helper.o $(OBJROOT)/ramdisk.o
60$(DSTROOT)/perfindex-ram_file_read.dylib: $(OBJROOT)/test_file_helper.o $(OBJROOT)/ramdisk.o
61$(DSTROOT)/perfindex-ram_file_write.dylib: $(OBJROOT)/test_file_helper.o $(OBJROOT)/ramdisk.o
62
63$(DSTROOT)/perf_index: $(OBJROOT)/perf_index.o
64	$(CC) $(LDFLAGS) $? -o $@
65
66$(DSTROOT)/PerfIndex.bundle: $(SRCROOT)/PerfIndex_COPS_Module/PerfIndex.xcodeproj
67	$(XCODEBUILD) -target $(TARGET_NAME) OBJROOT=$(OBJROOT) SYMROOT=$(SYMROOT) TARGET_TEMP_DIR=$(OBJROOT) TARGET_BUILD_DIR=$(DSTROOT) -project $? CLANG_ENABLE_MODULES=NO
68
69$(DSTROOT)/%.dylib: $(OBJROOT)/%.o
70	$(CC) $(LDFLAGS) -dynamiclib $? -o $@
71
72$(OBJROOT)/%.o: $(SRCROOT)/%.c
73	$(CC) $(CFLAGS) $? -o $@
74
75$(DSTROOT):
76	mkdir -p $(DSTROOT);
77
78$(OBJROOT):
79	mkdir -p $(OBJROOT);
80
81$(SYMROOT):
82	mkdir -p $(SYMROOT);
83
84clean:
85	rm -rf $(OBJROOT)
86	rm -rf $(DSTROOT)
87	rm -rf $(SYMROOT)
88