2 ifeq "$(RC_TARGET_CONFIG)" "iPhone"
5 Embedded?=$(shell echo $(SDKROOT) | grep -iq iphoneos && echo YES || echo NO)
11 ifeq "$(Embedded)" "YES"
12 ARCHS:=armv7 armv7s arm64
18 CC = $(shell xcrun -sdk "$(SDKROOT)" -find cc)
19 STRIP = $(shell xcrun -sdk "$(SDKROOT)" -find strip)
20 CODESIGN = $(shell xcrun -sdk "$(SDKROOT)" -find codesign)
21 export CODESIGN_ALLOCATE := $(shell xcrun -sdk "$(SDKROOT)" -find codesign_allocate)
22 DSYMUTIL = $(shell xcrun -sdk "$(SDKROOT)" -find dsymutil)
23 CFLAGS = -O0 -g -isysroot $(SDKROOT) $(patsubst %, -arch %,$(ARCHS))
24 LDFLAGS = -dead_strip \
25 -isysroot $(SDKROOT) $(patsubst %, -arch %,$(ARCHS))
27 OBJROOT?=$(shell /bin/pwd)/BUILD/obj
28 SYMROOT?=$(shell /bin/pwd)/BUILD/sym
29 DSTROOT?=$(shell /bin/pwd)/BUILD/dst
31 EXECUTABLES = exit.nodyld \
32 exit.nopie.dyld-but-no-Libsystem exit.pie.dyld-but-no-Libsystem \
33 exit.nopie.dyld-and-Libsystem exit.pie.dyld-and-Libsystem \
35 printexecinfo run test
36 OBJECTS = exit-asm.o exit.o printexecinfo.o run.o
38 default: $(addprefix $(DSTROOT)/,$(EXECUTABLES))
41 rm -f $(addprefix $(OBJROOT)/,$(OBJECTS))
42 rm -f $(addprefix $(SYMROOT)/,$(EXECUTABLES))
43 rm -rf $(addsuffix .dSYM,$(addprefix $(SYMROOT)/,$(EXECUTABLES)))
44 rm -f $(addprefix $(DSTROOT)/,$(EXECUTABLES))
47 $(addprefix $(DSTROOT)/,$(EXECUTABLES)): DSTROOT SYMROOT
49 $(addprefix $(OBJROOT)/,$(OBJECTS)): OBJROOT
51 DSTROOT SYMROOT OBJROOT:
56 $(OBJROOT)/exit-asm.o: exit-asm.S OBJROOT
57 $(CC) -c -o $@ $< $(CFLAGS)
59 $(OBJROOT)/exit.o: exit.c OBJROOT
60 $(CC) -c -o $@ $< $(CFLAGS)
62 $(OBJROOT)/printexecinfo.o: printexecinfo.c OBJROOT
63 $(CC) -c -o $@ $< $(CFLAGS)
65 $(OBJROOT)/run.o: run.c OBJROOT
66 $(CC) -c -o $@ $< $(CFLAGS)
70 $(DSTROOT)/exit.nodyld: $(OBJROOT)/exit-asm.o
71 $(CC) -o $@ $< $(LDFLAGS) -e _main -nostartfiles -nodefaultlibs -static -Wl,-segalign,0x4000
74 $(DSTROOT)/exit.nopie.dyld-but-no-Libsystem: $(OBJROOT)/exit-asm.o
75 $(CC) -o $@ $< $(LDFLAGS) -e _main -Wl,-no_pie -nostartfiles -nodefaultlibs -Wl,-no_new_main
78 $(DSTROOT)/exit.pie.dyld-but-no-Libsystem: $(OBJROOT)/exit-asm.o
79 $(CC) -o $@ $< $(LDFLAGS) -e _main -Wl,-pie -nostartfiles -nodefaultlibs -Wl,-no_new_main
82 $(DSTROOT)/exit.nopie.dyld-and-Libsystem: $(OBJROOT)/exit-asm.o
83 $(CC) -o $@ $< $(LDFLAGS) -Wl,-no_pie -nostartfiles -nodefaultlibs -lSystem
86 $(DSTROOT)/exit.pie.dyld-and-Libsystem: $(OBJROOT)/exit-asm.o
87 $(CC) -o $@ $< $(LDFLAGS) -Wl,-pie -nostartfiles -nodefaultlibs -lSystem
90 $(DSTROOT)/exit.nopie: $(OBJROOT)/exit.o
91 $(CC) -o $@ $< $(LDFLAGS) -Wl,-no_pie
94 $(DSTROOT)/exit.pie: $(OBJROOT)/exit.o
95 $(CC) -o $@ $< $(LDFLAGS) -Wl,-pie
98 $(DSTROOT)/printexecinfo: $(OBJROOT)/printexecinfo.o
99 $(CC) -o $@ $< $(LDFLAGS)
102 $(DSTROOT)/run: $(OBJROOT)/run.o
103 $(CC) -o $(SYMROOT)/run $< $(LDFLAGS)
104 $(DSYMUTIL) $(SYMROOT)/run
105 $(STRIP) -S -o $@ $(SYMROOT)/run
108 $(DSTROOT)/test: test.sh