|
|
1.1 root 1: ##
2: # Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3: #
4: # @APPLE_LICENSE_HEADER_START@
5: #
6: # Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
7: # Reserved. This file contains Original Code and/or Modifications of
8: # Original Code as defined in and that are subject to the Apple Public
9: # Source License Version 1.1 (the "License"). You may not use this file
10: # except in compliance with the License. Please obtain a copy of the
11: # License at http://www.apple.com/publicsource and read it before using
12: # this file.
13: #
14: # The Original Code and all software distributed under the License are
15: # distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16: # EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17: # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18: # FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
19: # License for the specific language governing rights and limitations
20: # under the License.
21: #
22: # @APPLE_LICENSE_HEADER_END@
23: ##
24:
25: #
26: # Release build parameters
27: #
28: # installhdrs parameters
29: #
30: # Machine-dependent headers to install
31: # (The first of the list is the arch that is used to source the
32: # machine independent headers.)
33: #
34: HEADER_ARCHS = PPC I386
35:
36: #
37: # install parameters
38: #
39: # Kernel type to install
40: #
41: INSTALL_TYPE = RELEASE
42:
43: #
44: # Location of tftpboot directory to link kernel to.
45: #
46: TFTPDIR = /private/tftpboot
47:
48: #
49: # "Post new_vers" parameters
50: #
51: BUILD_ARCHS = PPC I386
52: BUILD_TYPES = RELEASE
53:
54: # TAG_ARCHS = PPC I386
55: # TAG_TYPE = RELEASE
56:
57: #
58: # Defaults for build all
59: # Host machine -- Default architecture
60: #
61: DEFAULT_TYPE = RELEASE
62: DEFAULT_ARCH= `arch | awk '/ppc/ { printf("PPC") } /i386/ { printf("I386") }'`
63:
64: #
65: # Type and architecture for this build -- often overridden from
66: # command line on recursive makes
67: #
68: TYPE = $(DEFAULT_TYPE)
69: ARCH = $(DEFAULT_ARCH)
70: BUILD_DIR= $(TYPE)_$(ARCH)
71:
72: ifneq "" "$(wildcard /bin/mkdirs)"
73: MKDIRS = /bin/mkdirs
74: else
75: MKDIRS = /bin/mkdir -p
76: endif
77:
78: #
79: # Build all architectures for TYPE
80: #
81: all: tools ALWAYS
82: @for arch in $(BUILD_ARCHS); \
83: do \
84: echo Making mach_kernel for $(TYPE)_$$arch; \
85: ${MAKE} ARCH=$$arch TYPE=$(TYPE) mach_kernel.kernel \
86: OBJROOT=${OBJROOT} SYMROOT=${SYMROOT}; \
87: done
88:
89: #
90: # Easy way to build all architectures for a particular type
91: #
92: debug release profile DEBUG RELEASE PROFILE: tools ALWAYS
93: @for arch in $(BUILD_ARCHS); \
94: do \
95: type=`echo $@ | tr a-z A-Z`; \
96: ${MAKE} ARCH=$$arch TYPE=$$type mach_kernel.kernel \
97: OBJROOT=${OBJROOT} SYMROOT=${SYMROOT}; \
98: done
99:
100: #
101: # Easy way to build all types for a particular architecture
102: #
103: ppc PPC i386 I386 : tools ALWAYS
104: @for type in $(BUILD_TYPES); \
105: do \
106: arch=`echo $@ | tr a-z A-Z`; \
107: ${MAKE} ARCH=$$arch TYPE=$$type mach_kernel.kernel \
108: OBJROOT=${OBJROOT} SYMROOT=${SYMROOT}; \
109: done
110:
111: #
112: # Somethings to say after a new_vers (but say it from ..)
113: #
114: kernels: tools ALWAYS
115: @for type in $(BUILD_TYPES); \
116: do \
117: ${MAKE} -k TYPE=$$type all \
118: OBJROOT=${OBJROOT} SYMROOT=${SYMROOT}; \
119: done
120: $(MAKE) tags OBJROOT=${OBJROOT} SYMROOT=${SYMROOT}
121:
122: tags: tools ALWAYS
123: -@for arch in $(TAG_ARCHS); \
124: do \
125: ${MAKE} ARCH=$$arch TYPE=$(TAG_TYPE) tags.kernel \
126: OBJROOT=${OBJROOT} SYMROOT=${SYMROOT}; \
127: done
128:
129:
130: #
131: # Clean the world
132: #
133: clean: ALWAYS
134: -@for arch in $(BUILD_ARCHS); \
135: do \
136: for type in $(BUILD_TYPES); \
137: do \
138: echo make clean for $${type}_$${arch}; \
139: rm -rf $(OBJROOT)/$${type}_$${arch}; \
140: rm -rf $(OBJROOT)/config.$${type}_$${arch}; \
141: rm -rf $(OBJROOT)/config.$${type}_$${arch}.old; \
142: rm -f $${type}_$${arch} $${type}_$${arch}.old; \
143: done; \
144: done
145: @CWD=`pwd`; \
146: cd ${OBJROOT}; OBJROOT=`pwd`; cd $$CWD; \
147: cd ${SYMROOT}; SYMROOT=`pwd`; cd $$CWD; \
148: cd ${VERSDIR}; VERSDIR=`pwd`; cd $$CWD; \
149: ( \
150: cd tools; \
151: ${MAKE} clean \
152: OBJROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
153: SYMROOT=`relpath -d $$VERSDIR . $$SYMROOT` \
154: )
155:
156: #
157: # Clobber the world, rm tag files, too
158: #
159: clobber: clean ALWAYS
160: -@for arch in $(BUILD_ARCHS); \
161: do \
162: rm -f ../tags.$$arch ../TAGS.$$arch; \
163: done; \
164: rm -rf $(OBJROOT) \
165: rm -f ../tags ../TAGS
166:
167: #
168: # Install kernel based on RC_ARCHS for all INSTALL_TYPES
169: # Install kernel header files based on RC_ARCHS
170: #
171: install: tools DSTROOT installhdrs mach_kernel
172: rm -f ${DSTROOT}/mach_kernel
173: $(MKDIRS) ${DSTROOT}${TFTPDIR}
174: install -c -m 444 ${SYMROOT}/mach_kernel ${DSTROOT}/mach_kernel
175: ln -f ${DSTROOT}/mach_kernel ${DSTROOT}${TFTPDIR}/mach_kernel
176: @for arch in $(RC_ARCHS); \
177: do \
178: ARCH=`echo $$arch | tr a-z A-Z`; \
179: ${MAKE} ARCH=$$ARCH TYPE=$(INSTALL_TYPE) \
180: install_md.kernel \
181: OBJROOT=${OBJROOT} SYMROOT=${SYMROOT} \
182: DSTROOT=${DSTROOT}; \
183: done
184: #
185: # Build FAT kernel based on RC_ARCHS for INSTALL_TYPE
186: #
187: mach_kernel: tools
188: @lipo_args=""; \
189: for arch in $(RC_ARCHS); \
190: do \
191: ARCH=`echo $$arch | tr a-z A-Z`; \
192: $(MAKE) ARCH=$$ARCH TYPE=$(INSTALL_TYPE) \
193: mach_kernel.kernel \
194: OBJROOT=${OBJROOT} SYMROOT=${SYMROOT} \
195: DSTROOT=${DSTROOT}; \
196: lipo_args="$$lipo_args ${OBJROOT}/$(INSTALL_TYPE)_$$ARCH/mach_kernel"; \
197: done; \
198: $(MKDIRS) $(SYMROOT); \
199: echo rm -f $(SYMROOT)/mach_kernel; \
200: rm -f $(SYMROOT)/mach_kernel; \
201: if [ "`echo $(RC_ARCHS) | wc -w`" -eq 1 ]; then \
202: echo cp ${OBJROOT}/$(INSTALL_TYPE)_$$ARCH/mach_kernel \
203: $(SYMROOT)/mach_kernel; \
204: cp ${OBJROOT}/$(INSTALL_TYPE)_$$ARCH/mach_kernel \
205: $(SYMROOT)/mach_kernel; \
206: else \
207: echo lipo -create -o $(SYMROOT)/mach_kernel $$lipo_args; \
208: lipo -create -o $(SYMROOT)/mach_kernel $$lipo_args; \
209: fi
210:
211: #
212: # Install kernel header files based on HEADER_ARCHS
213: #
214: installhdrs: pre_install DSTROOT
215: @set $(HEADER_ARCHS); \
216: ARCH=`echo $$1 | tr a-z A-Z`; \
217: ${MAKE} ARCH=$$ARCH TYPE=$(INSTALL_TYPE) DSTROOT=$$DSTROOT \
218: install_mi_hdrs.kernel \
219: OBJROOT=${OBJROOT} SYMROOT=${SYMROOT} \
220: DSTROOT=${DSTROOT}
221: for arch in $(HEADER_ARCHS); \
222: do \
223: ARCH=`echo $$arch | tr a-z A-Z`; \
224: ${MAKE} ARCH=$$ARCH TYPE=$(INSTALL_TYPE) DSTROOT=$$DSTROOT \
225: install_md_hdrs.kernel \
226: OBJROOT=${OBJROOT} SYMROOT=${SYMROOT} \
227: DSTROOT=${DSTROOT}; \
228: done
229:
230: #
231: # Internal rules
232: #
233: VERSDIR=..
234:
235: OBJROOT=$(VERSDIR)/BUILD
236: SYMROOT=$(VERSDIR)/BUILD
237:
238: #
239: # Get a usable version of doconf for the installhdrs target.
240: #
241: pre_install: ALWAYS OBJROOT
242: @CWD=`pwd`; \
243: cd ${OBJROOT}; OBJROOT=`pwd`; cd $$CWD; \
244: cd ${SYMROOT}; SYMROOT=`pwd`; cd $$CWD; \
245: cd ${VERSDIR}; VERSDIR=`pwd`; cd $$CWD; \
246: echo '#################' make $@ for tools '###################'; \
247: ( \
248: cd tools; \
249: ${MAKE} pre_install \
250: OBJROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
251: SYMROOT=`relpath -d $$VERSDIR . $$SYMROOT` \
252: DSTROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
253: )
254:
255: tools: ALWAYS
256: @CWD=`pwd`; \
257: cd ${OBJROOT}; OBJROOT=`pwd`; cd $$CWD; \
258: cd ${SYMROOT}; SYMROOT=`pwd`; cd $$CWD; \
259: cd ${VERSDIR}; VERSDIR=`pwd`; cd $$CWD; \
260: ( \
261: cd tools; \
262: ${MAKE} install \
263: OBJROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
264: SYMROOT=`relpath -d $$VERSDIR . $$SYMROOT` \
265: DSTROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
266: )
267:
268: #
269: # Build something in the build directory making sure that the
270: # build directory exists!
271: #
272: install.kernel install_kernel.kernel install_md.kernel \
273: installhdrs.kernel install_mi_hdrs.kernel install_md_hdrs.kernel: ALWAYS
274: ${MAKE} ARCH=$(ARCH) TYPE=$(TYPE) arch=`echo $(ARCH) | tr A-Z a-z` \
275: builddir OBJROOT=${OBJROOT} SYMROOT=${SYMROOT}
276: @CWD=`pwd`; \
277: cd ${DSTROOT}; DSTROOT=`pwd`; cd $$CWD; \
278: cd ${OBJROOT}; OBJROOT=`pwd`; cd $$CWD; \
279: cd ${SYMROOT}; SYMROOT=`pwd`; cd $$CWD; \
280: cd ${VERSDIR}; VERSDIR=`pwd`; cd $$CWD; \
281: echo cd $(OBJROOT)/$(BUILD_DIR); \
282: cd $(OBJROOT)/$(BUILD_DIR); \
283: echo ${MAKE} ${@:.kernel=} \
284: OBJROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
285: SYMROOT=`relpath -d $$VERSDIR . $$SYMROOT` \
286: DSTROOT=$$DSTROOT; \
287: ${MAKE} ${@:.kernel=} \
288: OBJROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
289: SYMROOT=`relpath -d $$VERSDIR . $$SYMROOT` \
290: DSTROOT=$$DSTROOT
291:
292: tags.kernel: ALWAYS
293: ${MAKE} ARCH=$(ARCH) TYPE=$(TYPE) arch=`echo $(ARCH) | tr A-Z a-z` \
294: builddir OBJROOT=${OBJROOT} SYMROOT=${SYMROOT}
295: @CWD=`pwd`; \
296: cd ${OBJROOT}; OBJROOT=`pwd`; cd $$CWD; \
297: cd ${SYMROOT}; SYMROOT=`pwd`; cd $$CWD; \
298: cd ${VERSDIR}; VERSDIR=`pwd`; cd $$CWD; \
299: echo cd $(OBJROOT)/$(BUILD_DIR); \
300: cd $(OBJROOT)/$(BUILD_DIR); \
301: echo ${MAKE} ${@:.kernel=} \
302: OBJROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
303: SYMROOT=`relpath -d $$VERSDIR . $$SYMROOT`; \
304: ${MAKE} ${@:.kernel=} \
305: OBJROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
306: SYMROOT=`relpath -d $$VERSDIR . $$SYMROOT`
307:
308: mach_kernel.kernel: ALWAYS
309: ${MAKE} ARCH=$(ARCH) TYPE=$(TYPE) arch=`echo $(ARCH) | tr A-Z a-z` \
310: builddir OBJROOT=${OBJROOT} SYMROOT=${SYMROOT}
311: @CWD=`pwd`; \
312: cd ${OBJROOT}; OBJROOT=`pwd`; cd $$CWD; \
313: cd ${SYMROOT}; SYMROOT=`pwd`; cd $$CWD; \
314: cd ${VERSDIR}; VERSDIR=`pwd`; cd $$CWD; \
315: echo cd $(OBJROOT)/$(BUILD_DIR); \
316: cd $(OBJROOT)/$(BUILD_DIR); \
317: echo ${MAKE} ${@:.kernel=} \
318: OBJROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
319: SYMROOT=`relpath -d $$VERSDIR . $$SYMROOT`; \
320: ${MAKE} ${@:.kernel=} \
321: OBJROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
322: SYMROOT=`relpath -d $$VERSDIR . $$SYMROOT`; \
323: if [ $(SYMROOT) != $(OBJROOT) ]; \
324: then \
325: $(MKDIRS) $$SYMROOT; \
326: echo cp mach_kernel.sys $$SYMROOT/mach_kernel.$(BUILD_DIR); \
327: cp mach_kernel.sys $$SYMROOT/mach_kernel.$(BUILD_DIR); \
328: fi
329:
330: boot: ALWAYS
331: ${MAKE} ARCH=$(ARCH) TYPE=$(TYPE) arch=`echo $(ARCH) | tr A-Z a-z` \
332: builddir OBJROOT=${OBJROOT} SYMROOT=${SYMROOT}
333: @CWD=`pwd`; \
334: cd ${OBJROOT}; OBJROOT=`pwd`; cd $$CWD; \
335: cd ${SYMROOT}; SYMROOT=`pwd`; cd $$CWD; \
336: cd ${VERSDIR}; VERSDIR=`pwd`; cd $$CWD; \
337: echo cd $(OBJROOT)/$(BUILD_DIR); \
338: cd $(OBJROOT)/$(BUILD_DIR); \
339: echo ${MAKE} $@ \
340: OBJROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
341: SYMROOT=`relpath -d $$VERSDIR . $$SYMROOT`; \
342: ${MAKE} $@ \
343: OBJROOT=`relpath -d $$VERSDIR . $$OBJROOT` \
344: SYMROOT=`relpath -d $$VERSDIR . $$SYMROOT`
345:
346: #
347: # Make sure the "build directory" for TYPE and ARCH exists
348: # and the kernel is configured
349: #
350: builddir: $(OBJROOT)/$(BUILD_DIR)/Makefile
351:
352: $(OBJROOT)/$(BUILD_DIR)/Makefile: MASTER MASTER.$(arch) \
353: Makefile.template Makefile.$(arch) files.$(arch) files
354: -rm -f $(OBJROOT)/$(BUILD_DIR) $(OBJROOT)/$(BUILD_DIR).old
355: -rm -f $(OBJROOT)/$(BUILD_DIR)/Makefile
356: $(OBJROOT)/doconf -c -cpu $(arch) -d $(OBJROOT) $(TYPE)
357:
358: DSTROOT OBJROOT: ALWAYS
359: @if [ -n "${$@}" ]; \
360: then \
361: exit 0; \
362: else \
363: echo Must define $@; \
364: exit 1; \
365: fi
366:
367: ALWAYS:
368:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.