|
|
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.