]>
Commit | Line | Data |
---|---|---|
1 | SDKROOT ?= / | |
2 | Product=$(shell tconf --product) | |
3 | Embedded=$(shell tconf --test TARGET_OS_EMBEDDED) | |
4 | ||
5 | ifeq "$(Embedded)" "YES" | |
6 | XILogFLAG = | |
7 | SDKPATH = $(shell xcodebuild -sdk $(SDKROOT) -version | grep Path | cut -f 2 -d " ") | |
8 | CFLAGS += -isysroot $(SDKPATH) | |
9 | LIBFLAGS += -isysroot $(SDKPATH) | |
10 | else | |
11 | XILogFLAG = -framework XILog | |
12 | endif | |
13 | ||
14 | HOSTCC = gcc | |
15 | CC = xcrun -sdk $(SDKROOT) gcc | |
16 | ||
17 | ifdef RC_BUILDIT | |
18 | DOING_BUILDIT=yes | |
19 | endif | |
20 | ||
21 | ifdef RC_OS | |
22 | DOING_BUILDIT=yes | |
23 | endif | |
24 | ||
25 | ifdef DOING_BUILDIT | |
26 | include $(MAKEFILEPATH)/CoreOS/ReleaseControl/Common.make | |
27 | MY_ARCH = $(patsubst %, -arch %, $(RC_ARCHS)) | |
28 | install:: xnu_quick_test | |
29 | else | |
30 | ifndef SRCROOT | |
31 | SRCROOT=$(shell /bin/pwd) | |
32 | endif | |
33 | ifndef OBJROOT | |
34 | OBJROOT=$(SRCROOT)/BUILD/obj | |
35 | endif | |
36 | ifndef DSTROOT | |
37 | DSTROOT=$(SRCROOT)/BUILD/dst | |
38 | endif | |
39 | ||
40 | ifndef ARCH | |
41 | ARCH=i386 x86_64 ppc | |
42 | # this hack should be removed once tconf gets | |
43 | # <rdar://problem/6618734> | |
44 | ifeq "$(Product)" "iPhone" | |
45 | ARCH=armv6 | |
46 | endif | |
47 | ifeq "$(Product)" "AppleTV" | |
48 | ARCH=i386 | |
49 | endif | |
50 | endif | |
51 | ||
52 | ifdef ARCH | |
53 | MY_ARCH = $(patsubst %, -arch %, $(ARCH)) # allows building multiple archs. | |
54 | endif | |
55 | ||
56 | CFLAGS += $(MY_ARCH) | |
57 | endif | |
58 | ||
59 | CFLAGS += -g -I $(SDKPATH)/System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders/ -F/AppleInternal/Library/Frameworks/ $(MORECFLAGS) | |
60 | LIBFLAGS += -I $(SDKPATH)/System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders -F/AppleInternal/Library/Frameworks/ $(XILogFLAG) | |
61 | ||
62 | MY_OBJECTS = $(OBJROOT)/main.o $(OBJROOT)/memory_tests.o $(OBJROOT)/misc.o \ | |
63 | $(OBJROOT)/sema_tests.o $(OBJROOT)/shared_memory_tests.o \ | |
64 | $(OBJROOT)/socket_tests.o $(OBJROOT)/tests.o \ | |
65 | $(OBJROOT)/xattr_tests.o $(OBJROOT)/kqueue_tests.o \ | |
66 | $(OBJROOT)/machvm_tests.o | |
67 | ||
68 | ifneq "$(Product)" "iPhone" | |
69 | MY_OBJECTS += $(OBJROOT)/32bit_inode_tests.o | |
70 | endif | |
71 | ||
72 | # In networked home directories, the chown will fail; we notice and print a helpful message | |
73 | CHOWN_COMMAND=sudo chown root $(DSTROOT)/xnu_quick_test | |
74 | PERM_ADVICE="\tYou'll have to set the executable's permissions yourself: chown to root and chmod to 4755. You may need to move to a local volume to do that." | |
75 | xnu_quick_test : $(OBJROOT) $(DSTROOT) $(MY_OBJECTS) helpers | |
76 | sudo rm -rf $(DSTROOT)/xnu_quick_test | |
77 | $(CC) $(MY_ARCH) $(LIBFLAGS) -o $(DSTROOT)/xnu_quick_test $(MY_OBJECTS) | |
78 | @echo $(CHOWN_COMMAND) # Hack so we don't echo help-message echo | |
79 | @$(CHOWN_COMMAND) || echo $(PERM_ADVICE) | |
80 | sudo chmod 4755 $(DSTROOT)/xnu_quick_test | |
81 | ||
82 | # The helper binaries are used to test exec()'ing between 64bit and 32bit. | |
83 | # Creates test binaries with page zero sizes = 4KB and 4GB. Also creates 32-bit | |
84 | # helper processes for the 64-bit version of xnu_quick_test to test the conversion | |
85 | # from a 32-bit process to a 64-bit process. | |
86 | helpers : helpers/sleep.c helpers/launch.c helpers/arch.c helpers/data_exec.c helperdir $(OBJROOT)/misc.o | |
87 | ifneq "$(Product)" "iPhone" | |
88 | $(CC) -arch i386 helpers/sleep.c -o $(DSTROOT)/helpers/sleep-i386 | |
89 | endif | |
90 | ifeq "$(Product)" "MacOSX" | |
91 | $(CC) -arch x86_64 -pagezero_size 0x100000000 helpers/sleep.c -o $(DSTROOT)/helpers/sleep-x86_64-4G | |
92 | $(CC) -arch x86_64 -pagezero_size 0x1000 helpers/sleep.c -o $(DSTROOT)/helpers/sleep-x86_64-4K | |
93 | $(CC) -arch ppc helpers/sleep.c -o $(DSTROOT)/helpers/sleep-ppc32 | |
94 | endif | |
95 | ifneq "$(Product)" "iPhone" | |
96 | $(CC) $(LIBFLAGS) -arch i386 $(OBJROOT)/misc.o helpers/launch.c -o $(DSTROOT)/helpers/launch-i386 | |
97 | endif | |
98 | ifeq "$(Product)" "MacOSX" | |
99 | $(CC) $(LIBFLAGS) -arch x86_64 $(OBJROOT)/misc.o helpers/launch.c -o $(DSTROOT)/helpers/launch-x86_64 | |
100 | $(CC) $(LIBFLAGS) -arch ppc $(OBJROOT)/misc.o helpers/launch.c -o $(DSTROOT)/helpers/launch-ppc | |
101 | $(CC) $(MY_ARCH) helpers/arch.c -o $(DSTROOT)/helpers/arch | |
102 | $(CC) $(MY_ARCH) helpers/data_exec.c -o $(DSTROOT)/helpers/data_exec | |
103 | ||
104 | endif | |
105 | ifeq "$(Product)" "iPhone" | |
106 | $(CC) -arch armv6 -isysroot $(SDKROOT) $(CFLAGS) helpers/sleep.c -o $(DSTROOT)/helpers/sleep-arm | |
107 | $(CC) $(LIBFLAGS) -arch armv6 -isysroot $(SDKROOT) $(OBJROOT)/misc.o helpers/launch.c -o $(DSTROOT)/helpers/launch-arm | |
108 | endif | |
109 | ||
110 | ||
111 | helperdir : | |
112 | mkdir -p $(DSTROOT)/helpers | |
113 | ||
114 | $(OBJROOT) : | |
115 | mkdir -p $(OBJROOT); | |
116 | ||
117 | $(DSTROOT) : | |
118 | mkdir -p $(DSTROOT); | |
119 | ||
120 | $(OBJROOT)/main.o : main.c tests.h | |
121 | $(CC) $(CFLAGS) -c main.c -o $@ | |
122 | ||
123 | $(OBJROOT)/memory_tests.o : memory_tests.c tests.h | |
124 | $(CC) $(CFLAGS) -c memory_tests.c -o $@ | |
125 | ||
126 | # misc.o has to be built 3-way for the helpers to link | |
127 | $(OBJROOT)/misc.o : misc.c tests.h | |
128 | ifeq "$(Product)" "iPhone" | |
129 | $(CC) -arch armv6 $(CFLAGS) -c misc.c -o $@ | |
130 | else | |
131 | $(CC) -arch i386 -arch x86_64 -arch ppc $(CFLAGS) -c misc.c -o $@ | |
132 | endif | |
133 | ||
134 | $(OBJROOT)/sema_tests.o : sema_tests.c tests.h | |
135 | $(CC) $(CFLAGS) -c sema_tests.c -o $@ | |
136 | ||
137 | $(OBJROOT)/shared_memory_tests.o : shared_memory_tests.c tests.h | |
138 | $(CC) $(CFLAGS) -c shared_memory_tests.c -o $@ | |
139 | ||
140 | $(OBJROOT)/socket_tests.o : socket_tests.c tests.h | |
141 | $(CC) $(CFLAGS) -c socket_tests.c -o $@ | |
142 | ||
143 | $(OBJROOT)/tests.o : tests.c tests.h | |
144 | $(CC) $(CFLAGS) -c tests.c -o $@ | |
145 | ||
146 | $(OBJROOT)/xattr_tests.o : xattr_tests.c tests.h | |
147 | $(CC) $(CFLAGS) -c xattr_tests.c -o $@ | |
148 | ||
149 | $(OBJROOT)/machvm_tests.o : machvm_tests.c tests.h | |
150 | $(CC) $(CFLAGS) -c machvm_tests.c -o $@ | |
151 | ||
152 | $(OBJROOT)/kqueue_tests.o : kqueue_tests.c tests.h | |
153 | $(CC) $(CFLAGS) -c kqueue_tests.c -o $@ | |
154 | ||
155 | $(OBJROOT)/32bit_inode_tests.o : 32bit_inode_tests.c tests.h | |
156 | $(CC) $(CFLAGS) -c 32bit_inode_tests.c -o $@ | |
157 | ||
158 | ifndef DOING_BUILDIT | |
159 | .PHONY : clean | |
160 | clean : | |
161 | sudo rm -Rf $(DSTROOT)/xnu_quick_test | |
162 | sudo rm -Rf $(DSTROOT)/helpers/* | |
163 | rm -Rf $(OBJROOT)/*.o | |
164 | endif |