|
|
1.1 ! root 1: # ! 2: # Makefile for libDriver. ! 3: # ! 4: # Builds up to 32 targets: ! 5: # i386 and ppc ! 6: # both DEBUG and RELEASE ! 7: # both kernel and user mode ! 8: # both stripped and unstripped ! 9: # ! 10: # Currently the stripped versions are installed in /usr/local/lib/driverkit. ! 11: # Eventually they'll be installed in /usr/lib/driverkit. ! 12: # ! 13: ! 14: MAKEFILEDIR = $(MAKEFILEPATH)/pb_makefiles ! 15: include $(MAKEFILEDIR)/platform.make ! 16: ! 17: BUILD_NAME=libDriver ! 18: BUILD_VERS=.A ! 19: COMPAT_VERS=122 ! 20: ! 21: ifneq "" "$(wildcard /bin/mkdirs)" ! 22: MKDIRS = /bin/mkdirs ! 23: else ! 24: MKDIRS = /bin/mkdir -p ! 25: endif ! 26: ! 27: INSTALL_DIR= /usr/lib/ ! 28: INSTALL_LOCAL_DIR= /usr/local/lib/ ! 29: INSTALLHDRS_LOCAL_DIR=$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/Versions/B/PrivateHeaders/driverkit ! 30: AUDIOHDRS_LOCAL_DIR=$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/Versions/B/PrivateHeaders/audio ! 31: ! 32: # ! 33: # OBJROOT and SYMROOT are overridden by RC tools for builds from read-only ! 34: # source. OBJDIR is where libraries are built. .o files are placed in ! 35: # OBJROOT/xxx, where xxx is something like 68kDebug or i386Release. ! 36: # ! 37: # ! 38: OBJROOT= . ! 39: SYMROOT= . ! 40: OBJDIR=$(OBJROOT)/libs ! 41: SYMDIR=$(SYMROOT)/syms ! 42: ! 43: # ! 44: # Directories containing 'mode-dependent' source. ! 45: # ! 46: SOURCE_DIRS= User Kernel ppc i386 eisa pci pcmcia ! 47: ! 48: AR= ar ! 49: LD= ld ! 50: CC= cc ! 51: MIG= /usr/bin/mig ! 52: ! 53: MACHINE=i386 ! 54: MACHINE_LIST=ppc i386 ! 55: BUS_LIST=eisa pci pcmcia ! 56: ! 57: ARFLAGS= rucv ! 58: ARCHFULL_RC_CFLAGS = $(foreach X, $(RC_ARCHS),$(addprefix -arch , $(X))) ! 59: ARCHLESS_RC_CFLAGS = $(filter-out $(ARCHFULL_RC_CFLAGS), $(RC_CFLAGS)) ! 60: ! 61: #COMMON_CFLAGS = -g $(ARCHLESS_RC_CFLAGS) -fno-omit-frame-pointer -I.. -I. -MD -I$(LOCAL_DEVELOPER_DIR)/Headers -Wformat -Wno-precomp -D_POSIX_SOURCE -static ! 62: ! 63: COMMON_CFLAGS = -g -nostdinc $(ARCHLESS_RC_CFLAGS) -fno-omit-frame-pointer -I.. -I. -MD -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/Headers -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders/bsd -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders/machdep -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/Headers/bsd -F$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks -Wformat -Wno-precomp -traditional-cpp ! 64: ! 65: DEBUG_CFLAGS= -g -DDEBUG -DDDM_DEBUG ! 66: PROFILE_CFLAGS= -pg ! 67: RELEASE_CFLAGS= -g -O2 ! 68: ! 69: #KERN_CFLAGS= -D_KERNEL -DKERNEL -DMACH_USER_API -DDRIVER_PRIVATE ! 70: KERN_CFLAGS= -static -DNCPUS=1 -D_KERNEL -DKERNEL -DMACH_USER_API -DDRIVER_PRIVATE ! 71: USER_CFLAGS= ! 72: ppc_CFLAGS= -msoft-float -force_cpusubtype_ALL -mcpu=604 -finline -fno-keep-inline-functions -Wno-four-char-constants ! 73: i386_CFLAGS= -force_cpusubtype_ALL ! 74: MD_CFLAGS= $(${MACHINE}_CFLAGS) ! 75: ! 76: INSTALLFLAGS= -c -m 644 ! 77: LIBINSTALLFLAGS= -c -m 555 -S "-S" ! 78: KERNLIBINSTALLFLAGS= -c -m 555 ! 79: INSTALL= /usr/bin/install ! 80: ! 81: # ! 82: # Source files common to all builds. ! 83: # ! 84: COMMON_MFILES= IODevice.m ! 85: COMMON_CFILES= ! 86: ! 87: # ! 88: # Debug-only source files. ! 89: # ! 90: DEBUG_MFILES= ! 91: DEBUG_CFILES= ! 92: ! 93: # ! 94: # Kernel/user dependent, machine independent source files appearing in ! 95: # both User/ and Kernel/. ! 96: # ! 97: # 8-Nov-91 - NX*Lock now in libsys... ! 98: # ! 99: MODE_MFILES= IOConfigTable.m generalFuncs.m ! 100: MODE_CFILES= memcpy.c ! 101: ! 102: # ! 103: # Kernel-only and User-only source files. ! 104: # ! 105: KERNEL_MFILES= IODisk.m IOLogicalDisk.m IODiskPartition.m volCheck.m \ ! 106: IODeviceDescription.m IODirectDevice.m NXSpinLock.m \ ! 107: NXConditionLock.m NXLock.m generalFuncsPrivate.m IOBufDevice.m \ ! 108: IONetwork.m IONetbufQueue.m devswAndVfssw.m IOEthernet.m \ ! 109: IOEthernetDebugger.m IOSCSIController.m kernelDiskMethods.m \ ! 110: SCSIDisk.m SCSIDiskPrivate.m SCSIDiskThread.m SCSIGeneric.m \ ! 111: SCSIGlobals.m IODisplay.m IOMemoryContainer.m \ ! 112: IOMemoryDescriptor.m IOSimpleMemoryDescriptor.m EventDriver.m \ ! 113: EventInput.m EventIO.m IOEventSource.m KeyMap.m IOAudio.m \ ! 114: AudioChannel.m AudioStream.m InputStream.m OutputStream.m \ ! 115: AudioCommand.m audio_kern_server.m audio_server.m snd_server.m \ ! 116: IOBuffer.m ! 117: KERNEL_CFILES= disk_label.c dma.c label_subr.c snd_reply.c audio_mix.c \ ! 118: audio_peak.c audio_mulaw.c ! 119: ! 120: USER_MFILES= IODeviceMaster.m NXConditionLock.m NXLock.m NXSpinLock.m ! 121: USER_CFILES= ! 122: ! 123: # ! 124: # MI bus files ! 125: # ! 126: eisa_BUS_MFILES= IOEISADirectDevice.m IOEISADeviceDescription.m \ ! 127: IOEISADMATransferBuffer.m ! 128: eisa_BUS_CFILES= ! 129: ! 130: pci_BUS_MFILES= IOPCIDirectDevice.m IOPCIDeviceDescription.m ! 131: pci_BUS_CFILES= ! 132: ! 133: pcmcia_BUS_MFILES= IOPCMCIADirectDevice.m IOPCMCIADeviceDescription.m \ ! 134: IOPCMCIATuple.m ! 135: pcmcia_BUS_CFILES= ! 136: ! 137: ! 138: # ! 139: # User C files generated by mig. ! 140: # ! 141: CONFIG_CFILES= ConfigUser.c ! 142: DRIVER_SERVER_CFILES= driverServerUser.c ! 143: USER_MIG_CFILES= $(DRIVER_SERVER_CFILES) ! 144: ! 145: # ! 146: # Kernel C files generated by mig ! 147: # ! 148: EVENT_CFILES= EventServer.c ! 149: KERNEL_MIG_CFILES= $(EVENT_CFILES) ! 150: AUDIO_SERVER_CFILES= audioServer.c ! 151: AUDIO_REPLY_CFILES= audioReplyUser.c ! 152: AUDIO_CFILES= $(AUDIO_SERVER_CFILES) $(AUDIO_REPLY_CFILES) ! 153: KERNEL_MIG_CFILES= $(EVENT_CFILES) $(AUDIO_CFILES) ! 154: ! 155: # ! 156: # Force mig to run before audio source is compiled. ! 157: # ! 158: OTHER_KERN_DEPENDS= $(AUDIO_CFILES) ! 159: ! 160: # ! 161: # Mig source. ! 162: # ! 163: CONFIG_MIG_SOURCE= Config.defs ! 164: DRIVER_SERVER_MIG_SOURCE= driverServer.defs ! 165: EVENT_MIG_SOURCE= Event.defs ! 166: AUDIO_SERVER_MIG_SOURCE= audio.defs ! 167: AUDIO_REPLY_MIG_SOURCE= audioReply.defs ! 168: ! 169: # ! 170: # machine dependent source files - user, kernel, common. ! 171: # ! 172: i386_KERN_CFILES= $(eisa_BUS_CFILES) $(pci_BUS_CFILES) $(pcmcia_BUS_CFILES) ! 173: i386_USER_CFILES= ! 174: i386_CFILES= ! 175: i386_KERN_MFILES= $(eisa_BUS_MFILES) $(pci_BUS_MFILES) $(pcmcia_BUS_MFILES)\ ! 176: IOFrameBufferDisplay.m \ ! 177: IOSVGADisplay.m IOVPCodeDisplay.m \ ! 178: IOMallocLow.m machdepFuncs.m ! 179: i386_USER_MFILES= ! 180: i386_MFILES= ! 181: ! 182: ppc_USER_CFILES= ! 183: ppc_CFILES= ! 184: ppc_KERN_MFILES= IOPPCDirectDevice.m IOPPCDeviceDescription.m IOPropertyTable.m \ ! 185: IODeviceTreeBus.m IOTreeDevice.m IOFramebuffer.m IODBDMA.m \ ! 186: IOMacRiscPCI.m IOPCIDevice.m \ ! 187: IOSmartDisplay.m IONDRVFramebuffer.m IONDRVInterface.m IONDRVLibraries.m ! 188: ppc_KERN_CFILES= IOPEFLoader.c IOPEFInternals.c ! 189: ! 190: ppc_USER_MFILES= ! 191: ppc_MFILES= ! 192: ! 193: MD_KERN_CFILES= $(${MACHINE}_KERN_CFILES) ! 194: MD_USER_CFILES= $(${MACHINE}_USER_CFILES) ! 195: MD_CFILES= $(${MACHINE}_CFILES) ! 196: MD_KERN_MFILES= $(${MACHINE}_KERN_MFILES) ! 197: MD_USER_MFILES= $(${MACHINE}_USER_MFILES) ! 198: MD_MFILES= $(${MACHINE}_MFILES) ! 199: ! 200: # ! 201: # Other files to installsrc (in addition to *.[mch]). ! 202: # ! 203: OTHER_SOURCE= Makefile $(DRIVER_SERVER_MIG_SOURCE) \ ! 204: Kernel/$(EVENT_MIG_SOURCE) \ ! 205: Kernel/$(AUDIO_SERVER_MIG_SOURCE) \ ! 206: Kernel/$(AUDIO_REPLY_MIG_SOURCE) ! 207: # ! 208: # Common targets. ! 209: # ! 210: first debug: $(MACHINE)kernrelease ! 211: debug: $(MACHINE)kerndebug ! 212: release: $(MACHINE)release ! 213: profile: $(MACHINE)profile ! 214: kerndebug: $(MACHINE)kerndebug ! 215: kernrelease: $(MACHINE)kernrelease ! 216: kernprofile: $(MACHINE)kernprofile ! 217: libs: libraries lipoize ! 218: all: libs ! 219: TARGET_LIST= release kernrelease profile ! 220: ! 221: VPATH = $(BUILD_DIR):$(OBJDIR):$(SYMDIR):$(MODE_DIRS) ! 222: ! 223: BUILD_DIRS = ppcRelease i386Release \ ! 224: ppcProfile i386Profile \ ! 225: ppcDebug i386Debug \ ! 226: ppcKernRelease i386KernRelease \ ! 227: ppcKernDebug i386KernDebug ! 228: ! 229: # ! 230: # Object files. ! 231: # ! 232: COMMON_OFILES= $(COMMON_MFILES:.m=.o) \ ! 233: $(COMMON_CFILES:.c=.o) \ ! 234: $(MODE_MFILES:.m=.o) \ ! 235: $(MODE_CFILES:.c=.o) ! 236: ! 237: DEBUG_OFILES= $(DEBUG_MFILES:.m=.o) \ ! 238: $(DEBUG_CFILES:.c=.o) ! 239: ! 240: KERNEL_OFILES= $(KERNEL_MFILES:.m=.o) \ ! 241: $(KERNEL_CFILES:.c=.o) \ ! 242: $(KERNEL_MIG_CFILES:.c=.o) ! 243: ! 244: BUS_OFILES= $(BUS_MFILES:.m=.o) \ ! 245: $(BUS_CFILES:.c=.o) ! 246: ! 247: USER_OFILES= $(USER_MFILES:.m=.o) \ ! 248: $(USER_CFILES:.c=.o) \ ! 249: $(USER_MIG_CFILES:.c=.o) ! 250: ! 251: MD_OFILES= $(MD_MFILES:.m=.o) \ ! 252: $(MD_CFILES:.c=.o) ! 253: ! 254: # ! 255: # Enumerate all object files for each target. ! 256: # ! 257: KERN_MD_OFILES= $(COMMON_OFILES) \ ! 258: $(KERNEL_OFILES) \ ! 259: $(BUS_OFILES) \ ! 260: $(MD_OFILES) \ ! 261: $(MD_KERN_MFILES:.m=.o) \ ! 262: $(MD_KERN_CFILES:.c=.o) ! 263: ! 264: ! 265: USER_MD_OFILES= $(COMMON_OFILES) \ ! 266: $(USER_OFILES) \ ! 267: $(MD_OFILES) \ ! 268: $(MD_USER_MFILES:.m=.o) \ ! 269: $(MD_USER_CFILES:.c=.o) ! 270: ! 271: ! 272: # ! 273: # Enumerate mode directories for each target. These get added to VPATH. ! 274: # ! 275: USER_DIRS= User ! 276: KERNEL_DIRS= Kernel:eisa:pci:pcmcia ! 277: ! 278: # ! 279: # Recursive rules to invoke various target builds. ! 280: # ! 281: # $(MACHINE) must resolve to exactly one of {i386,ppc} ! 282: # at this time. ! 283: # ! 284: # ! 285: ! 286: $(MACHINE)release: $(SYMDIR) always ! 287: @echo '********** Building $(BUILD_NAME)$(MACHINE).dylib **********' ! 288: ARCH_DIR="$(MACHINE)"; \ ! 289: $(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE).dylib \ ! 290: "BUILD_DIR=$(OBJROOT)/$(MACHINE)Release" \ ! 291: "MODE_DIRS=$(USER_DIRS):$$ARCH_DIR" \ ! 292: "OBJROOT=$(OBJROOT)" \ ! 293: "SYMROOT=$(SYMROOT)" \ ! 294: "MACHINE=$(MACHINE)" \ ! 295: "FRAMEWORK=System" \ ! 296: "OFILES=$(USER_MD_OFILES)" \ ! 297: "OTHER_CFLAGS=$(RELEASE_CFLAGS) $(USER_CFLAGS) \ ! 298: $(MD_CFLAGS) -arch $(MACHINE)" ! 299: ! 300: $(MACHINE)profile: $(SYMDIR) always ! 301: @echo '********** Building $(BUILD_NAME)$(MACHINE)_profile.dylib **********' ! 302: ARCH_DIR="$(MACHINE)"; \ ! 303: $(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_profile.dylib \ ! 304: "BUILD_DIR=$(OBJROOT)/$(MACHINE)Profile" \ ! 305: "MODE_DIRS=$(USER_DIRS):$$ARCH_DIR" \ ! 306: "OBJROOT=$(OBJROOT)" \ ! 307: "SYMROOT=$(SYMROOT)" \ ! 308: "MACHINE=$(MACHINE)" \ ! 309: "FRAMEWORK=System,_profile" \ ! 310: "OFILES=$(USER_MD_OFILES)" \ ! 311: "OTHER_CFLAGS=$(PROFILE_CFLAGS) $(USER_CFLAGS) \ ! 312: $(MD_CFLAGS) -arch $(MACHINE)" ! 313: ! 314: $(MACHINE)debug: $(SYMDIR) always ! 315: @echo '********** Building $(BUILD_NAME)$(MACHINE)_g.dylib ***********' ! 316: ARCH_DIR="$(MACHINE)"; \ ! 317: $(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_g.dylib \ ! 318: "BUILD_DIR=$(OBJROOT)/$(MACHINE)Debug" \ ! 319: "MODE_DIRS=$(USER_DIRS):$$ARCH_DIR" \ ! 320: "OBJROOT=$(OBJROOT)" \ ! 321: "SYMROOT=$(SYMROOT)" \ ! 322: "MACHINE=$(MACHINE)" \ ! 323: "FRAMEWORK=System" \ ! 324: "OFILES=$(USER_MD_OFILES) $(DEBUG_OFILES)" \ ! 325: "OTHER_CFLAGS=$(DEBUG_CFLAGS) $(USER_CFLAGS) \ ! 326: $(MD_CFLAGS) -arch $(MACHINE)" ! 327: ! 328: $(MACHINE)kernrelease: $(SYMDIR) always ! 329: @echo '********** Building $(BUILD_NAME)$(MACHINE)_kern.o **********' ! 330: ARCH_DIR="$(MACHINE)"; \ ! 331: $(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_kern.o \ ! 332: "BUILD_DIR=$(OBJROOT)/$(MACHINE)KernRelease" \ ! 333: "OFILES=$(KERN_MD_OFILES)" \ ! 334: "OBJROOT=$(OBJROOT)" \ ! 335: "SYMROOT=$(SYMROOT)" \ ! 336: "MACHINE=$(MACHINE)" \ ! 337: "MODE_DIRS=$(KERNEL_DIRS):$$ARCH_DIR" \ ! 338: "OTHER_CFLAGS=$(RELEASE_CFLAGS) $(KERN_CFLAGS) \ ! 339: $(MD_CFLAGS) -arch $(MACHINE)" ! 340: ! 341: $(MACHINE)kernprofile: $(SYMDIR) always ! 342: @echo '********** Building $(BUILD_NAME)$(MACHINE)_kern.o **********' ! 343: ARCH_DIR="$(MACHINE)"; \ ! 344: $(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_kern.o \ ! 345: "BUILD_DIR=$(OBJROOT)/$(MACHINE)KernProfile" \ ! 346: "OFILES=$(KERN_MD_OFILES)" \ ! 347: "OBJROOT=$(OBJROOT)" \ ! 348: "SYMROOT=$(SYMROOT)" \ ! 349: "MACHINE=$(MACHINE)" \ ! 350: "MODE_DIRS=$(KERNEL_DIRS):$$ARCH_DIR" \ ! 351: "OTHER_CFLAGS=$(PROFILE_CFLAGS) $(KERN_CFLAGS) \ ! 352: $(MD_CFLAGS) -arch $(MACHINE)" ! 353: ! 354: $(MACHINE)kerndebug: $(SYMDIR) always ! 355: @echo '********** Building $(BUILD_NAME)$(MACHINE)_kern_g.o **********' ! 356: ARCH_DIR="$(MACHINE)"; \ ! 357: $(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_kern_g.o \ ! 358: "BUILD_DIR=$(OBJROOT)/$(MACHINE)KernDebug" \ ! 359: "OFILES=$(KERN_MD_OFILES) $(DEBUG_OFILES)" \ ! 360: "OBJROOT=$(OBJROOT)" \ ! 361: "SYMROOT=$(SYMROOT)" \ ! 362: "MACHINE=$(MACHINE)" \ ! 363: "MODE_DIRS=$(KERNEL_DIRS):$$ARCH_DIR" \ ! 364: "OTHER_CFLAGS=$(DEBUG_CFLAGS) $(KERN_CFLAGS) \ ! 365: $(MD_CFLAGS) -arch $(MACHINE)" ! 366: ! 367: # ! 368: # Project management make rules. ! 369: # ! 370: # Note that this clean rule doesn't delete the build directories ! 371: # in OBJROOT, but I think that's OK; RC does that for us. ! 372: clean: always ! 373: rm -rf $(BUILD_DIRS) *.d *~ libs syms Makedep tags ! 374: ! 375: tags: always ! 376: rm -f tags ! 377: ctags -o $(SYMROOT)/tags *.[hm] ! 378: @for i in $(SOURCE_DIRS); \ ! 379: do \ ! 380: echo ================= make $@ for $$i =================; \ ! 381: (cd $$i; ${MAKE} $@) || exit $?; \ ! 382: done ! 383: ! 384: always: ! 385: ! 386: installsrc: SRCROOT $(SRCROOT) ! 387: # ! 388: # first install the common source (in this directory). ! 389: # ! 390: gnutar cf - *.[mch] $(OTHER_SOURCE) | (cd $(SRCROOT); gnutar xpf -) ! 391: # ! 392: # now install all of the mode-dependent source. ! 393: # ! 394: @for i in $(SOURCE_DIRS); \ ! 395: do \ ! 396: echo ================= make $@ for $$i =================; \ ! 397: (cd $$i; ${MAKE} SRCROOT=$(SRCROOT)/$$i $@) || exit $?; \ ! 398: done ! 399: ! 400: ! 401: USER_EXPORT_LIB_SUFFIXES= .dylib _profile.dylib ! 402: USER_LOCAL_LIB_SUFFIXES= ! 403: KERN_LIB_SUFFIXES= _kern.o ! 404: USER_LIB_SUFFIXES= $(USER_EXPORT_LIB_SUFFIXES) $(USER_LOCAL_LIB_SUFFIXES) ! 405: ! 406: # ! 407: # We only export release versions of the user library to /usr/lib. All ! 408: # others go to /usr/local/lib. ! 409: # ! 410: EXPORT_LIB_SUFFIXES= $(USER_EXPORT_LIB_SUFFIXES) ! 411: LOCAL_LIB_SUFFIXES= $(KERN_LIB_SUFFIXES) $(USER_LOCAL_LIB_SUFFIXES) ! 412: ! 413: install: DSTROOT $(DSTROOT)$(INSTALL_DIR) libraries lipoize install_only ! 414: ! 415: # ! 416: # Target to just install, not build. Fat libraries must exist; this doesn't ! 417: # build them. ! 418: # ! 419: # FIXME - strip the archives on the way out to DSTROOT. ! 420: # ! 421: install_only: installhdrs DSTROOT $(DSTROOT)$(INSTALL_DIR) \ ! 422: $(DSTROOT)$(INSTALL_LOCAL_DIR) ALWAYS ! 423: # ! 424: # Now our binaries. ! 425: # ! 426: @for libsuffix in $(EXPORT_LIB_SUFFIXES); do \ ! 427: libname=`echo $(BUILD_NAME)$$libsuffix | sed -e 's/\./$(BUILD_VERS)./'`; \ ! 428: liblinkname=$(BUILD_NAME)$$libsuffix; \ ! 429: CWD=`pwd`; \ ! 430: echo cd $(SYMROOT)/syms; \ ! 431: cd $(SYMROOT)/syms; \ ! 432: echo install $(LIBINSTALLFLAGS) $$libname \ ! 433: $(DSTROOT)$(INSTALL_DIR); \ ! 434: $(INSTALL) $(LIBINSTALLFLAGS) $$libname \ ! 435: $(DSTROOT)$(INSTALL_DIR); \ ! 436: echo cd $(DSTROOT)$(INSTALL_DIR); \ ! 437: cd $(DSTROOT)$(INSTALL_DIR); \ ! 438: echo ln -sf $$libname $$liblinkname; \ ! 439: ln -sf $$libname $$liblinkname; \ ! 440: echo cd $$CWD; \ ! 441: cd $$CWD; \ ! 442: done ! 443: @for libsuffix in $(LOCAL_LIB_SUFFIXES); do \ ! 444: libname=$(BUILD_NAME)$$libsuffix; \ ! 445: CWD=`pwd`; \ ! 446: echo cd $(SYMROOT)/syms; \ ! 447: cd $(SYMROOT)/syms; \ ! 448: echo install $(KERNLIBINSTALLFLAGS) $$libname $(DSTROOT)$(INSTALL_LOCAL_DIR); \ ! 449: $(INSTALL) $(KERNLIBINSTALLFLAGS) $$libname \ ! 450: $(DSTROOT)$(INSTALL_LOCAL_DIR); \ ! 451: echo cd $$CWD; \ ! 452: cd $$CWD; \ ! 453: done ! 454: ! 455: # ! 456: # Build all of the individual archives as appropriate. ! 457: # ! 458: libraries: ALWAYS ! 459: @if [ -n "$(RC_ARCHS)" ]; then \ ! 460: machines="$(RC_ARCHS)"; \ ! 461: elif [ -n "$(MACHINE_LIST)" ]; then \ ! 462: machines="$(MACHINE_LIST)"; \ ! 463: elif [ -n "$(MACHINE)" ]; then \ ! 464: machines="$(MACHINE)"; \ ! 465: else \ ! 466: echo no machine list found; \ ! 467: exit 1; \ ! 468: fi; \ ! 469: echo Building architecture-specific libraries for $$machines...; \ ! 470: for machine in $$machines; do \ ! 471: $(MAKE) $(TARGET_LIST) \ ! 472: "MACHINE=$$machine" \ ! 473: "OBJROOT=$(OBJROOT)" \ ! 474: "SYMROOT=$(SYMROOT)" \ ! 475: "DSTROOT=$(DSTROOT)"; \ ! 476: done ! 477: ! 478: # ! 479: # Lipo the libraries for the various architectures together. This target ! 480: # assumes that the constituent libraries have already been built. ! 481: # ! 482: lipoize: ALWAYS ! 483: @if [ -n "$(RC_ARCHS)" ]; then \ ! 484: machines="$(RC_ARCHS)"; \ ! 485: elif [ -n "$(MACHINE_LIST)" ]; then \ ! 486: machines="$(MACHINE_LIST)"; \ ! 487: elif [ -n "$(MACHINE)" ]; then \ ! 488: machines="$(MACHINE)"; \ ! 489: else \ ! 490: echo no machine list found; \ ! 491: exit 1; \ ! 492: fi; \ ! 493: echo Building fat user archives...; \ ! 494: echo cd $(SYMROOT)/syms; \ ! 495: cd $(SYMROOT)/syms; \ ! 496: for libsuffix in $(USER_LIB_SUFFIXES); do \ ! 497: args=""; \ ! 498: libname=`echo $(BUILD_NAME)$$libsuffix | sed -e 's/\./$(BUILD_VERS)./'`; \ ! 499: for machine in $$machines; do \ ! 500: args="$$args $(BUILD_NAME)""$$machine""$$libsuffix"; \ ! 501: done; \ ! 502: echo lipo -create -o $$libname $$args; \ ! 503: lipo -create -o $$libname $$args; \ ! 504: done; \ ! 505: echo Building fat kernel relocatables...; \ ! 506: for libsuffix in $(KERN_LIB_SUFFIXES); do \ ! 507: args=""; \ ! 508: libname=$(BUILD_NAME)$$libsuffix; \ ! 509: for machine in $$machines; do \ ! 510: args="$$args $(BUILD_NAME)""$$machine""$$libsuffix"; \ ! 511: done; \ ! 512: echo lipo -create -o $$libname $$args; \ ! 513: lipo -create -o $$libname $$args; \ ! 514: echo touch $$libname; \ ! 515: touch $$libname; \ ! 516: done ! 517: ! 518: installhdrs: $(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR) \ ! 519: $(DSTROOT)/$(AUDIOHDRS_LOCAL_DIR) ! 520: # ! 521: # install mig source. ! 522: # ! 523: $(INSTALL) $(INSTALLFLAGS) $(DRIVER_SERVER_MIG_SOURCE) $(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR) ! 524: $(INSTALL) $(INSTALLFLAGS) Kernel/$(EVENT_MIG_SOURCE) $(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR) ! 525: $(INSTALL) $(INSTALLFLAGS) Kernel/$(AUDIO_SERVER_MIG_SOURCE) $(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR) ! 526: $(INSTALL) $(INSTALLFLAGS) Kernel/$(AUDIO_REPLY_MIG_SOURCE) $(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR) ! 527: $(INSTALL) $(INSTALLFLAGS) Kernel/audio_msgs.h $(DSTROOT)$(AUDIOHDRS_LOCAL_DIR) ! 528: ! 529: ALWAYS: ! 530: ! 531: $(BUILD_DIR) $(SRCROOT) $(DSTROOT)$(HEADER_DIR) $(OBJDIR) \ ! 532: $(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR) \ ! 533: $(DSTROOT)/$(AUDIOHDRS_LOCAL_DIR) \ ! 534: $(SYMDIR) $(DSTROOT)$(INSTALL_DIR) $(DSTROOT)$(INSTALL_LOCAL_DIR): ! 535: $(MKDIRS) $@ ! 536: ! 537: SRCROOT DSTROOT: ! 538: @if [ -n "${$@}" ]; \ ! 539: then \ ! 540: exit 0; \ ! 541: else \ ! 542: echo Must define $@; \ ! 543: exit 1; \ ! 544: fi ! 545: ! 546: .c.o: ! 547: $(CC) $(COMMON_CFLAGS) $(OTHER_CFLAGS) -c $< \ ! 548: -I$(BUILD_DIR) \ ! 549: -dependency-file $(BUILD_DIR)/$(*F).d -o $(BUILD_DIR)/$(*F).o ! 550: md -u $(BUILD_DIR)/Makedep -f -d $(BUILD_DIR)/$(*F).d ! 551: ! 552: .m.o: ! 553: $(CC) $(COMMON_CFLAGS) $(OTHER_CFLAGS) -c $< \ ! 554: -I$(BUILD_DIR) \ ! 555: -dependency-file $(BUILD_DIR)/$(*F).d -o $(BUILD_DIR)/$(*F).o ! 556: md -u $(BUILD_DIR)/Makedep -f -d $(BUILD_DIR)/$(*F).d ! 557: ! 558: # ! 559: # Mig rules. We copy mig source down to the build directory because ! 560: # mig writes its output to cwd. ! 561: # ! 562: $(DRIVER_SERVER_CFILES): $(DRIVER_SERVER_MIG_SOURCE) ! 563: rm -f $(BUILD_DIR)/$(DRIVER_SERVER_CFILES) ! 564: rm -f $(BUILD_DIR)/$(DRIVER_SERVER_MIG_SOURCE) ! 565: cp $(DRIVER_SERVER_MIG_SOURCE) $(BUILD_DIR) ! 566: (cd $(BUILD_DIR); \ ! 567: ${MIG} -arch $(MACHINE) -server /dev/null \ ! 568: $(DRIVER_SERVER_MIG_SOURCE)) ! 569: ! 570: $(CONFIG_CFILES): ../Config/$(CONFIG_MIG_SOURCE) ! 571: rm -f $(BUILD_DIR)/$(CONFIG_CFILES) ! 572: rm -f $(BUILD_DIR)/$(CONFIG_MIG_SOURCE) ! 573: cp ../Config/$(CONFIG_MIG_SOURCE) $(BUILD_DIR) ! 574: (cd $(BUILD_DIR); \ ! 575: ${MIG} -arch $(MACHINE) -server /dev/null $(CONFIG_MIG_SOURCE)) ! 576: ! 577: $(EVENT_CFILES): Kernel/$(EVENT_MIG_SOURCE) ! 578: rm -f $(BUILD_DIR)/$(EVENT_CFILES) ! 579: rm -f $(BUILD_DIR)/$(EVENT_MIG_SOURCE) ! 580: cp Kernel/$(EVENT_MIG_SOURCE) $(BUILD_DIR) ! 581: (cd $(BUILD_DIR); \ ! 582: ${MIG} -arch $(MACHINE) -user /dev/null \ ! 583: $(EVENT_MIG_SOURCE)) ! 584: ! 585: $(AUDIO_SERVER_CFILES): Kernel/$(AUDIO_SERVER_MIG_SOURCE) ! 586: rm -f $(BUILD_DIR)/$(AUDIO_SERVER_CFILES) ! 587: rm -f $(BUILD_DIR)/$(AUDIO_SERVER_MIG_SOURCE) ! 588: cp Kernel/$(AUDIO_SERVER_MIG_SOURCE) $(BUILD_DIR) ! 589: (cd $(BUILD_DIR); \ ! 590: ${MIG} -arch $(MACHINE) -user /dev/null \ ! 591: $(AUDIO_SERVER_MIG_SOURCE)) ! 592: ! 593: # ! 594: # FIXME: get rid of this sed hack to set timeout and SEND_SWITCH. ! 595: # ! 596: $(AUDIO_REPLY_CFILES): Kernel/$(AUDIO_REPLY_MIG_SOURCE) ! 597: rm -f $(BUILD_DIR)/$(AUDIO_REPLY_CFILES) ! 598: rm -f $(BUILD_DIR)/$(AUDIO_REPLY_MIG_SOURCE) ! 599: cp Kernel/$(AUDIO_REPLY_MIG_SOURCE) $(BUILD_DIR) ! 600: (cd $(BUILD_DIR); \ ! 601: ${MIG} -arch $(MACHINE) -server /dev/null \ ! 602: $(AUDIO_REPLY_MIG_SOURCE)) ! 603: sed '/msg_send/s/MSG_OPTION_NONE, 0/SEND_TIMEOUT|SEND_SWITCH, 1000/' \ ! 604: $(BUILD_DIR)/audioReplyUser.c > $(BUILD_DIR)/tempr_user.c ! 605: rm -f $(BUILD_DIR)/audioReplyUser.c ! 606: sed '/msg_rpc/s/RCV_TIMEOUT, 0/RCV_TIMEOUT|SEND_SWITCH, 1000/' \ ! 607: $(BUILD_DIR)/tempr_user.c > $(BUILD_DIR)/audioReplyUser.c ! 608: rm -f $(BUILD_DIR)/tempr_user.c ! 609: ! 610: vers.o: $(OFILES) ! 611: rm -f $(BUILD_DIR)/vers.c ! 612: vers_string -l $(BUILD_NAME) > $(BUILD_DIR)/vers.c ! 613: $(CC) -arch $(MACHINE) $(ARCHLESS_RC_CFLAGS) -c $(BUILD_DIR)/vers.c \ ! 614: -o $(BUILD_DIR)/vers.o ! 615: ! 616: # ! 617: # Rules to build the libraries. Kernel versions only build and install ! 618: # unstripped .o's; the kernel project strips the end result when it ! 619: # installs. (Note we build .o's for the kernel version to ensure that ! 620: # all object files are linked in, even those which might only be needed ! 621: # by loadable modules.) User versions build stripped versions in OBJDIR and ! 622: # unstripped in SYMDIR for debug. Stripped archives eventually get ! 623: # installed in INSTALL_DIR. ! 624: # ! 625: # Kernel versions: ! 626: # ! 627: $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_kern.o \ ! 628: $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_kern_g.o: $(BUILD_DIR) \ ! 629: $(OTHER_KERN_DEPENDS) $(OFILES) vers.o ! 630: @echo ----building kernel library---- ! 631: $(LD) -r -o $@ $(OFILES) vers.o ! 632: ! 633: # ! 634: # User versions: ! 635: # ! 636: $(SYMDIR)/$(BUILD_NAME)$(MACHINE).dylib \ ! 637: $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_profile.dylib \ ! 638: $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_g.dylib: $(BUILD_DIR) $(OFILES) vers.o ! 639: @echo ----building user library---- ! 640: @if [ -z "`vers_string -n`" ]; then \ ! 641: echo libtool -o $@ $(OFILES) vers.o -dynamic -framework $(FRAMEWORK)\ ! 642: -install_name $(INSTALL_DIR)$(BUILD_NAME)$(BUILD_VERS).dylib\ ! 643: -compatibility_version $(COMPAT_VERS); \ ! 644: libtool -o $@ $(OFILES) vers.o -dynamic -framework $(FRAMEWORK) \ ! 645: -install_name $(INSTALL_DIR)$(BUILD_NAME)$(BUILD_VERS).dylib\ ! 646: -seg1addr 0x66700000 \ ! 647: -compatibility_version $(COMPAT_VERS); \ ! 648: else \ ! 649: echo libtool -o $@ $(OFILES) vers.o -dynamic -framework $(FRAMEWORK)\ ! 650: -install_name $(INSTALL_DIR)$(BUILD_NAME)$(BUILD_VERS).dylib\ ! 651: -compatibility_version $(COMPAT_VERS) \ ! 652: -current_version "`vers_string -n`"; \ ! 653: libtool -o $@ $(OFILES) vers.o -dynamic -framework $(FRAMEWORK) \ ! 654: -install_name $(INSTALL_DIR)$(BUILD_NAME)$(BUILD_VERS).dylib\ ! 655: -compatibility_version $(COMPAT_VERS) \ ! 656: -seg1addr 0x66700000 \ ! 657: -current_version "`vers_string -n`"; \ ! 658: fi ! 659: ! 660: -include $(BUILD_DIR)/Makedep
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.