xref: /xnu-11215/tools/tests/execperf/Makefile (revision bb611c8f)
1include ../Makefile.common
2
3CC = $(shell xcrun -sdk "$(SDKROOT)" -find cc)
4STRIP = $(shell xcrun -sdk "$(SDKROOT)" -find strip)
5CODESIGN = $(shell xcrun -sdk "$(SDKROOT)" -find codesign)
6export CODESIGN_ALLOCATE := $(shell xcrun -sdk "$(SDKROOT)" -find codesign_allocate)
7DSYMUTIL = $(shell xcrun -sdk "$(SDKROOT)" -find dsymutil)
8CFLAGS = -O0 -g -isysroot $(SDKROOT) $(ARCH_FLAGS)
9CFLAGS += -Wl,-sectcreate,__INFO_FILTER,__disable,/dev/null
10LDFLAGS = -dead_strip \
11	-isysroot $(SDKROOT) $(ARCH_FLAGS)
12
13OBJROOT?=$(shell /bin/pwd)/BUILD/obj
14SYMROOT?=$(shell /bin/pwd)/BUILD/sym
15DSTROOT?=$(shell /bin/pwd)/BUILD/dst
16
17EXECUTABLES = exit.nodyld \
18	exit.nopie.dyld-but-no-Libsystem exit.pie.dyld-but-no-Libsystem \
19	exit.nopie.dyld-and-Libsystem exit.pie.dyld-and-Libsystem \
20	exit.nopie exit.pie \
21	printexecinfo run test
22OBJECTS = exit-asm.o exit.o printexecinfo.o run.o
23
24default: $(addprefix $(DSTROOT)/,$(EXECUTABLES))
25
26clean:
27	rm -f $(addprefix $(OBJROOT)/,$(OBJECTS))
28	rm -f $(addprefix $(SYMROOT)/,$(EXECUTABLES))
29	rm -rf $(addsuffix .dSYM,$(addprefix $(SYMROOT)/,$(EXECUTABLES)))
30	rm -f $(addprefix $(DSTROOT)/,$(EXECUTABLES))
31
32# DEPENDENCIES
33$(addprefix $(DSTROOT)/,$(EXECUTABLES)): | DSTROOT SYMROOT
34
35$(addprefix $(OBJROOT)/,$(OBJECTS)): | OBJROOT
36
37DSTROOT SYMROOT OBJROOT:
38	$(_v)mkdir -p $($@)
39
40# OBJECTS
41
42$(OBJROOT)/exit-asm.o: exit-asm.S | OBJROOT
43	$(CC) -c -o $@ $< $(CFLAGS)
44
45$(OBJROOT)/exit.o: exit.c | OBJROOT
46	$(CC) -c -o $@ $< $(CFLAGS)
47
48$(OBJROOT)/printexecinfo.o: printexecinfo.c | OBJROOT
49	$(CC) -c -o $@ $< $(CFLAGS)
50
51$(OBJROOT)/run.o: run.c | OBJROOT
52	$(CC) -c -o $@ $< $(CFLAGS)
53
54# EXECUTABLES
55
56$(DSTROOT)/exit.nodyld: $(OBJROOT)/exit-asm.o
57	$(CC) -o $@ $< $(LDFLAGS) -e _main -nostartfiles -nodefaultlibs -static -Wl,-segalign,0x4000
58	$(CODESIGN) -s - $@
59
60$(DSTROOT)/exit.nopie.dyld-but-no-Libsystem: $(OBJROOT)/exit-asm.o
61	$(CC) -o $@ $< $(LDFLAGS) -e _main -Wl,-no_pie -nostartfiles -nodefaultlibs -Wl,-no_new_main
62	$(CODESIGN) -s - $@
63
64$(DSTROOT)/exit.pie.dyld-but-no-Libsystem: $(OBJROOT)/exit-asm.o
65	$(CC) -o $@ $< $(LDFLAGS) -e _main -Wl,-pie -nostartfiles -nodefaultlibs -Wl,-no_new_main
66	$(CODESIGN) -s - $@
67
68$(DSTROOT)/exit.nopie.dyld-and-Libsystem: $(OBJROOT)/exit-asm.o
69	$(CC) -o $@ $< $(LDFLAGS) -Wl,-no_pie -nostartfiles -nodefaultlibs -lSystem
70	$(CODESIGN) -s - $@
71
72$(DSTROOT)/exit.pie.dyld-and-Libsystem: $(OBJROOT)/exit-asm.o
73	$(CC) -o $@ $< $(LDFLAGS) -Wl,-pie -nostartfiles -nodefaultlibs -lSystem
74	$(CODESIGN) -s - $@
75
76$(DSTROOT)/exit.nopie: $(OBJROOT)/exit.o
77	$(CC) -o $@ $< $(LDFLAGS) -Wl,-no_pie
78	$(CODESIGN) -s - $@
79
80$(DSTROOT)/exit.pie: $(OBJROOT)/exit.o
81	$(CC) -o $@ $< $(LDFLAGS) -Wl,-pie
82	$(CODESIGN) -s - $@
83
84$(DSTROOT)/printexecinfo: $(OBJROOT)/printexecinfo.o
85	$(CC) -o $@ $< $(LDFLAGS)
86	$(CODESIGN) -s - $@
87
88$(DSTROOT)/run: $(OBJROOT)/run.o
89	$(CC) -o $(SYMROOT)/run $< $(LDFLAGS)
90	$(DSYMUTIL) $(SYMROOT)/run
91	$(STRIP) -S -o $@ $(SYMROOT)/run
92	$(CODESIGN) -s - $@
93
94$(DSTROOT)/test: test.sh
95	install -m 755 $< $@
96