]>
Commit | Line | Data |
---|---|---|
6d2010ae | 1 | SDKROOT ?= / |
fe8ab488 A |
2 | ifeq "$(RC_TARGET_CONFIG)" "iPhone" |
3 | Embedded?=YES | |
4 | else | |
5 | Embedded?=$(shell echo $(SDKROOT) | grep -iq iphoneos && echo YES || echo NO) | |
6 | endif | |
7 | ||
8 | ifdef RC_ARCHS | |
9 | ARCHS:=$(RC_ARCHS) | |
10 | else | |
11 | ifeq "$(Embedded)" "YES" | |
12 | ARCHS:=armv7 armv7s arm64 | |
13 | else | |
14 | ARCHS:=x86_64 i386 | |
15 | endif | |
16 | endif | |
17 | ||
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) | |
6d2010ae | 23 | CFLAGS = -O0 -g -isysroot $(SDKROOT) $(patsubst %, -arch %,$(ARCHS)) |
fe8ab488 | 24 | LDFLAGS = -dead_strip \ |
6d2010ae | 25 | -isysroot $(SDKROOT) $(patsubst %, -arch %,$(ARCHS)) |
fe8ab488 A |
26 | |
27 | OBJROOT?=$(shell /bin/pwd)/BUILD/obj | |
28 | SYMROOT?=$(shell /bin/pwd)/BUILD/sym | |
29 | DSTROOT?=$(shell /bin/pwd)/BUILD/dst | |
6d2010ae A |
30 | |
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 \ | |
34 | exit.nopie exit.pie \ | |
fe8ab488 A |
35 | printexecinfo run test |
36 | OBJECTS = exit-asm.o exit.o printexecinfo.o run.o | |
6d2010ae | 37 | |
fe8ab488 | 38 | default: $(addprefix $(DSTROOT)/,$(EXECUTABLES)) |
6d2010ae A |
39 | |
40 | clean: | |
fe8ab488 A |
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)) | |
6d2010ae | 45 | |
fe8ab488 A |
46 | # DEPENDENCIES |
47 | $(addprefix $(DSTROOT)/,$(EXECUTABLES)): DSTROOT SYMROOT | |
6d2010ae | 48 | |
fe8ab488 A |
49 | $(addprefix $(OBJROOT)/,$(OBJECTS)): OBJROOT |
50 | ||
51 | DSTROOT SYMROOT OBJROOT: | |
52 | mkdir -p $($@) | |
6d2010ae A |
53 | |
54 | # OBJECTS | |
55 | ||
fe8ab488 | 56 | $(OBJROOT)/exit-asm.o: exit-asm.S OBJROOT |
6d2010ae A |
57 | $(CC) -c -o $@ $< $(CFLAGS) |
58 | ||
fe8ab488 | 59 | $(OBJROOT)/exit.o: exit.c OBJROOT |
6d2010ae A |
60 | $(CC) -c -o $@ $< $(CFLAGS) |
61 | ||
fe8ab488 A |
62 | $(OBJROOT)/printexecinfo.o: printexecinfo.c OBJROOT |
63 | $(CC) -c -o $@ $< $(CFLAGS) | |
64 | ||
65 | $(OBJROOT)/run.o: run.c OBJROOT | |
6d2010ae A |
66 | $(CC) -c -o $@ $< $(CFLAGS) |
67 | ||
68 | # EXECUTABLES | |
69 | ||
fe8ab488 A |
70 | $(DSTROOT)/exit.nodyld: $(OBJROOT)/exit-asm.o |
71 | $(CC) -o $@ $< $(LDFLAGS) -e _main -nostartfiles -nodefaultlibs -static -Wl,-segalign,0x4000 | |
6d2010ae A |
72 | $(CODESIGN) -s - $@ |
73 | ||
fe8ab488 A |
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 | |
6d2010ae A |
76 | $(CODESIGN) -s - $@ |
77 | ||
fe8ab488 A |
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 | |
6d2010ae A |
80 | $(CODESIGN) -s - $@ |
81 | ||
fe8ab488 A |
82 | $(DSTROOT)/exit.nopie.dyld-and-Libsystem: $(OBJROOT)/exit-asm.o |
83 | $(CC) -o $@ $< $(LDFLAGS) -Wl,-no_pie -nostartfiles -nodefaultlibs -lSystem | |
6d2010ae A |
84 | $(CODESIGN) -s - $@ |
85 | ||
fe8ab488 A |
86 | $(DSTROOT)/exit.pie.dyld-and-Libsystem: $(OBJROOT)/exit-asm.o |
87 | $(CC) -o $@ $< $(LDFLAGS) -Wl,-pie -nostartfiles -nodefaultlibs -lSystem | |
6d2010ae A |
88 | $(CODESIGN) -s - $@ |
89 | ||
fe8ab488 A |
90 | $(DSTROOT)/exit.nopie: $(OBJROOT)/exit.o |
91 | $(CC) -o $@ $< $(LDFLAGS) -Wl,-no_pie | |
6d2010ae A |
92 | $(CODESIGN) -s - $@ |
93 | ||
fe8ab488 A |
94 | $(DSTROOT)/exit.pie: $(OBJROOT)/exit.o |
95 | $(CC) -o $@ $< $(LDFLAGS) -Wl,-pie | |
6d2010ae A |
96 | $(CODESIGN) -s - $@ |
97 | ||
fe8ab488 | 98 | $(DSTROOT)/printexecinfo: $(OBJROOT)/printexecinfo.o |
6d2010ae A |
99 | $(CC) -o $@ $< $(LDFLAGS) |
100 | $(CODESIGN) -s - $@ | |
101 | ||
fe8ab488 A |
102 | $(DSTROOT)/run: $(OBJROOT)/run.o |
103 | $(CC) -o $(SYMROOT)/run $< $(LDFLAGS) | |
104 | $(DSYMUTIL) $(SYMROOT)/run | |
105 | $(STRIP) -S -o $@ $(SYMROOT)/run | |
106 | $(CODESIGN) -s - $@ | |
6d2010ae | 107 | |
fe8ab488 A |
108 | $(DSTROOT)/test: test.sh |
109 | install -m 755 $< $@ |