|
|
1.1 ! root 1: # ! 2: # Common makefile fragment for use by driverkit-based driver projects. ! 3: # ! 4: ! 5: MAKEFILEDIR = $(MAKEFILEPATH)/pb_makefiles ! 6: include $(MAKEFILEDIR)/platform.make ! 7: ! 8: ifneq "" "$(wildcard /bin/mkdirs)" ! 9: MKDIRS = /bin/mkdirs ! 10: else ! 11: MKDIRS = /bin/mkdir -p ! 12: endif ! 13: ! 14: # ! 15: # OBJROOT and SYMROOT are overridden by RC tools for builds from read-only ! 16: # source. ! 17: # ! 18: OBJROOT= . ! 19: SYMROOT= . ! 20: ! 21: # ! 22: # Macros used for compiling. ! 23: # ! 24: CFILES= $(COMMON_CFILES) $(MACHINE_COMMON_CFILES) ! 25: MFILES= $(COMMON_MFILES) $(MACHINE_COMMON_MFILES) ! 26: MD_CFILES=$(${MACHINE}_CFILES) ! 27: MD_MFILES=$(${MACHINE}_MFILES) ! 28: ! 29: COMMON_OFILES= $(CFILES:.c=.o) $(MFILES:.m=.o) ! 30: KERNEL_OFILES= $(KERNEL_CFILES:.c=.o) $(KERNEL_MFILES:.m=.o) ! 31: USER_OFILES= $(USER_CFILES:.c=.o) $(USER_MFILES:.m=.o) ! 32: MD_OFILES= $(MD_CFILES:.c=.o) $(MD_MFILES:.m=.o) ! 33: ! 34: IO_SERVER= ! 35: #IO_SERVER= -DIOSERVER ! 36: ! 37: # ! 38: # For installsrc and tags. ! 39: # ! 40: COMMONSOURCE= $(COMMON_MFILES) $(COMMON_CFILES) \ ! 41: $(USER_MFILES) $(USER_CFILES) $(KERNEL_MFILES) $(KERNEL_CFILES) \ ! 42: $(COMMON_PUBLIC_HFILES) $(COMMON_PRIVATE_HFILES) $(OTHER_SOURCE) ! 43: ! 44: ! 45: CFLAGS= -g -O -Wall -Wnoformat -I. -I.. -MD ! 46: VPATH = $(OBJROOT)/$(BUILD_DIR):$(SYMROOT)/$(BUILD_DIR):$(MACHINE):$(OPT_VPATH) ! 47: EXEC_LD= /bin/cc ! 48: RELOC_LD= /bin/ld ! 49: KL_LD= /usr/bin/kl_ld ! 50: ! 51: m88k_CFLAGS= ! 52: m68k_CFLAGS= ! 53: i386_CFLAGS= ! 54: MD_CFLAGS= $(${MACHINE}_CFLAGS) ! 55: ! 56: # ! 57: # For building user-level executable .o file. ! 58: # ! 59: # Forcing dependency on both SYMROOT and OBJROOT is necessary here to avoid ! 60: # making actual binary builds dependent on the modify date of the directory ! 61: # they are in - in such a case, successive makes would repeatedly build the ! 62: # binary since the modify time of one of its dependencies keeps getting ! 63: # changed. If SYMROOT and OBJROOT are identical (as in normal developement ! 64: # builds, in which case they're both '.'), we'll get a warning because ! 65: # there will be two rules for building '.'. This won't break anything. ! 66: # ! 67: # NRW_BUILD is currently defined to allow testing of IODeviceNRW stuff on ! 68: # 68k platforms. ! 69: # ! 70: release: $(SYMROOT) $(OBJROOT) always ! 71: @echo '********** Building $(MACHINE) release $(BUILD_NAME) **********' ! 72: $(MAKE) $(BUILD_NAME) \ ! 73: "BUILD_DIR=$(MACHINE)release" \ ! 74: "OBJROOT=$(OBJROOT)" \ ! 75: "SYMROOT=$(SYMROOT)" \ ! 76: "MACHINE=$(MACHINE)" \ ! 77: "LIBS=$(RELEASE_LIBS)" \ ! 78: "OFILES= $(COMMON_OFILES) $(USER_OFILES) $(MD_OFILES)" \ ! 79: "LDFLAGS= $(RELEASE_LDFLAGS)" \ ! 80: "OTHER_CFLAGS=$(RELEASE_CFLAGS) $(MD_CFLAGS) \ ! 81: -arch $(MACHINE) $(IO_SERVER) " ! 82: ! 83: debug: $(SYMROOT) $(OBJROOT) always ! 84: @echo '********** Building $(MACHINE) debug $(BUILD_NAME) **********' ! 85: $(MAKE) $(BUILD_NAME) \ ! 86: "BUILD_DIR=$(MACHINE)debug" \ ! 87: "OBJROOT=$(OBJROOT)" \ ! 88: "SYMROOT=$(SYMROOT)" \ ! 89: "MACHINE=$(MACHINE)" \ ! 90: "CFLAGS=-DDEBUG -DDDM_DEBUG $(CFLAGS)" \ ! 91: "LIBS=$(DEBUG_LIBS)" \ ! 92: "OFILES= $(COMMON_OFILES) $(USER_OFILES) $(MD_OFILES)" \ ! 93: "LDFLAGS= $(DEBUG_LDFLAGS)" \ ! 94: "OTHER_CFLAGS=$(DEBUG_CFLAGS) $(MD_CFLAGS) \ ! 95: -arch $(MACHINE) $(IO_SERVER) " ! 96: ! 97: # ! 98: # For building kern-loadable modules. ! 99: # ! 100: relocrelease: $(SYMROOT) $(OBJROOT) always ! 101: @echo '******** Building $(MACHINE) $(BUILD_NAME)_reloc ********' ! 102: $(MAKE) $(BUILD_NAME)_reloc \ ! 103: "BUILD_DIR=$(MACHINE)relocrelease" \ ! 104: "OBJROOT=$(OBJROOT)" \ ! 105: "SYMROOT=$(SYMROOT)" \ ! 106: "MACHINE=$(MACHINE)" \ ! 107: "LIBS=$(RELEASE_KERN_LIBS)" \ ! 108: "OFILES= $(COMMON_OFILES) $(KERNEL_OFILES) $(MD_OFILES)" \ ! 109: "LDFLAGS= $(KL_RELEASE_FLAGS)" \ ! 110: "OTHER_CFLAGS=$(RELEASE_CFLAGS) -arch $(MACHINE) \ ! 111: -DKERNEL -DMACH_USER_API -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders" ! 112: ! 113: relocdebug: $(SYMROOT) $(OBJROOT) always ! 114: @echo '******** Building $(MACHINE) debug $(BUILD_NAME)_reloc ********' ! 115: $(MAKE) $(BUILD_NAME)_reloc \ ! 116: "BUILD_DIR=$(MACHINE)relocdebug" \ ! 117: "OBJROOT=$(OBJROOT)" \ ! 118: "SYMROOT=$(SYMROOT)" \ ! 119: "MACHINE=$(MACHINE)" \ ! 120: "LIBS=$(DEBUG_KERN_LIBS)" \ ! 121: "OFILES= $(COMMON_OFILES) $(KERNEL_OFILES) $(MD_OFILES)" \ ! 122: "LDFLAGS= $(KL_DEBUG_FLAGS)" \ ! 123: "OTHER_CFLAGS=$(DEBUG_CFLAGS) -arch $(MACHINE) \ ! 124: -DKERNEL -DMACH_USER_API -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders \ ! 125: -DDEBUG -DDDM_DEBUG" ! 126: ! 127: all: targets lipoize tags ! 128: ! 129: # ! 130: # Build all targets. ! 131: # ! 132: targets: always ! 133: @if [ -n "$(RC_ARCHS_LOCAL)" ]; then \ ! 134: machines="$(RC_ARCHS_LOCAL)"; \ ! 135: elif [ -n "$(RC_ARCHS)" ]; then \ ! 136: machines="$(RC_ARCHS)"; \ ! 137: elif [ -n "$(MACHINE_LIST)" ]; then \ ! 138: machines="$(MACHINE_LIST)"; \ ! 139: elif [ -n "$(MACHINE)" ]; then \ ! 140: machines="$(MACHINE)"; \ ! 141: else \ ! 142: echo no machine list found; \ ! 143: exit 1; \ ! 144: fi; \ ! 145: for machine in $$machines; do \ ! 146: echo "========== Building all for $$machine =========="; \ ! 147: $(MAKE) $(TARGET_LIST) \ ! 148: "MACHINE=$$machine" \ ! 149: "OBJROOT=$(OBJROOT)" \ ! 150: "SYMROOT=$(SYMROOT)" \ ! 151: "DSTROOT=$(DSTROOT)"; \ ! 152: done ! 153: ! 154: # ! 155: # Create fat versions if necessary. If there is more than ! 156: # one machine in INSTALL_MACHINES, lipo together all ! 157: # architectures for each INSTALL_TARGET. In either case, ! 158: # installable target(s) are left in $(SYMROOT). ! 159: # ! 160: lipoize: always ! 161: @if [ -n "$(RC_ARCHS_LOCAL)" ]; then \ ! 162: machines="$(RC_ARCHS_LOCAL)"; \ ! 163: elif [ -n "$(RC_ARCHS)" ]; then \ ! 164: machines="$(RC_ARCHS)"; \ ! 165: elif [ -n "$(INSTALL_MACHINES)" ]; then \ ! 166: machines="$(INSTALL_MACHINES)"; \ ! 167: elif [ -n "$(MACHINE)" ]; then \ ! 168: machines="$(MACHINE)"; \ ! 169: else \ ! 170: echo no machine list found; \ ! 171: exit 1; \ ! 172: fi; \ ! 173: for target in $(TARGET_LIST); do \ ! 174: if [ $$target = relocrelease ]; then \ ! 175: modname="$(BUILD_NAME)_reloc"; \ ! 176: elif [ $$target = relocdebug ]; then \ ! 177: modname="$(BUILD_NAME)_reloc"; \ ! 178: else \ ! 179: modname="$(BUILD_NAME)"; \ ! 180: fi; \ ! 181: echo rm -f $(SYMROOT)/$$modname; \ ! 182: rm -f $(SYMROOT)/$$modname; \ ! 183: if [ "`echo $$machines | wc -w`" -eq 1 ]; then \ ! 184: machine=$$machines; \ ! 185: echo cp -p $(OBJROOT)/$$machine"`echo $$target`"/$$modname $(SYMROOT); \ ! 186: cp -p $(OBJROOT)/$$machine"`echo $$target`"/$$modname $(SYMROOT); \ ! 187: else \ ! 188: args=""; \ ! 189: for machine in $$machines; do \ ! 190: args="$$args $(OBJROOT)/$$machine$$target""/$$modname"; \ ! 191: done; \ ! 192: echo lipo -create -output $(SYMROOT)/$$modname $$args; \ ! 193: lipo -create -output $(SYMROOT)/$$modname $$args; \ ! 194: fi; \ ! 195: done ! 196: ! 197: install: DSTROOT $(DSTROOT)/$(INSTALL_BIN_DIR) targets lipoize \ ! 198: installhdrs other_install ! 199: @echo cd $(SYMROOT); \ ! 200: cd $(SYMROOT); \ ! 201: for target in `echo $(INSTALL_TARGETS)`; do \ ! 202: if [ $$target = relocrelease ]; then \ ! 203: modname="$(BUILD_NAME)_reloc"; \ ! 204: elif [ $$target = relocdebug ]; then \ ! 205: modname="$(BUILD_NAME)_reloc"; \ ! 206: else \ ! 207: modname="$(BUILD_NAME)"; \ ! 208: fi; \ ! 209: echo install $(INSTALLFLAGS) $$modname $(DSTROOT)$(INSTALL_BIN_DIR); \ ! 210: install $(INSTALLFLAGS) $$modname \ ! 211: $(DSTROOT)$(INSTALL_BIN_DIR); \ ! 212: done ! 213: ! 214: installsrc: SRCROOT $(SRCROOT) ! 215: # ! 216: # first install the common source (in this directory). ! 217: # ! 218: gnutar cf - $(COMMONSOURCE) Makefile | (cd $(SRCROOT); gnutar xpf -) ! 219: # ! 220: # now install all of the machine-dependent source (if there is any). ! 221: # ! 222: @if [ -n "${SOURCE_SUBDIRS}" ]; \ ! 223: then \ ! 224: SUBDIRS="$(SOURCE_SUBDIRS)"; \ ! 225: else \ ! 226: SUBDIRS=foo; \ ! 227: fi; \ ! 228: if [ -n "${SOURCE_SUBDIRS}" ]; \ ! 229: then \ ! 230: for i in $$SUBDIRS; \ ! 231: do \ ! 232: echo ================= make $@ for $$i =================; \ ! 233: (cd $$i; ${MAKE} SRCROOT=$(SRCROOT)/$$i $@) || exit $?; \ ! 234: done \ ! 235: fi ! 236: ! 237: installhdrs: DSTROOT $(DSTROOT)/$(INSTALL_HDR_DIR) ! 238: # ! 239: # first install the public header files from this directory. ! 240: @if [ -n "${COMMON_PUBLIC_HFILES}" ]; \ ! 241: then \ ! 242: echo install -c -m 644 $(COMMON_PUBLIC_HFILES) $(DSTROOT)$(INSTALL_HDR_DIR); \ ! 243: install -c -m 644 $(COMMON_PUBLIC_HFILES) \ ! 244: $(DSTROOT)$(INSTALL_HDR_DIR); \ ! 245: fi ! 246: # ! 247: # now install all of the machine-dependent headers (if there are any). ! 248: # ! 249: @if [ -n "${SOURCE_SUBDIRS}" ]; \ ! 250: then \ ! 251: SUBDIRS="$(SOURCE_SUBDIRS)"; \ ! 252: else \ ! 253: SUBDIRS=foo; \ ! 254: fi; \ ! 255: if [ -n "${SOURCE_SUBDIRS}" ]; \ ! 256: then \ ! 257: for i in $$SUBDIRS; \ ! 258: do \ ! 259: echo ================= make $@ for $$i =================; \ ! 260: (cd $$i; ${MAKE} DSTDIR=$(DSTROOT)$(INSTALL_HDR_DIR) $@) || exit $?; \ ! 261: done \ ! 262: fi; ! 263: ! 264: $(OBJROOT)/$(BUILD_DIR) $(SYMROOT)/$(BUILD_DIR) \ ! 265: $(DSTROOT)/$(INSTALL_BIN_DIR) $(DSTROOT)/$(INSTALL_HDR_DIR) \ ! 266: $(OBJROOT) $(SRCROOT) $(SYMROOT): ! 267: $(MKDIRS) $@ ! 268: ! 269: tags: $(OBJROOT) always ! 270: rm -f tags ! 271: ctags -o $(OBJROOT)/tags $(COMMONSOURCE) ! 272: ! 273: always: ! 274: ! 275: clean: ! 276: -rm -rf $(OBJROOT)/*debug \ ! 277: $(OBJROOT)/*release \ ! 278: $(OBJROOT)/*kerndebug \ ! 279: $(OBJROOT)/*kernrelease \ ! 280: $(OBJROOT)/*relocdebug \ ! 281: $(OBJROOT)/*relocrelease \ ! 282: $(SYMROOT)/$(BUILD_NAME) $(SYMROOT)/$(BUILD_NAME)_reloc \ ! 283: *.d Makedep *~ tags $(OTHER_CLEAN_FILES) ! 284: @if [ -n "${SOURCE_SUBDIRS}" ]; \ ! 285: then \ ! 286: SUBDIRS="$(SOURCE_SUBDIRS)"; \ ! 287: else \ ! 288: SUBDIRS=foo; \ ! 289: fi; \ ! 290: if [ -n "${SOURCE_SUBDIRS}" ]; \ ! 291: then \ ! 292: for i in $$SUBDIRS; \ ! 293: do \ ! 294: echo ================= make $@ for $$i =================; \ ! 295: (cd $$i; ${MAKE} $@) || exit $?; \ ! 296: done \ ! 297: fi ! 298: ! 299: # ! 300: # Build executable and relocatable .o. ! 301: # ! 302: # setting LDFLAGS to '-r' in the device-specific Makefile prevents ! 303: # an executable from being generated. ! 304: # ! 305: # Main Makefile may define OTHER_DEPENDS. ! 306: # ! 307: $(BUILD_NAME): $(OBJROOT)/$(BUILD_DIR) $(OTHER_DEPENDS) $(OFILES) ! 308: $(LD) -arch $(MACHINE) $(LDFLAGS) -o $(OBJROOT)/$(BUILD_DIR)/$@ \ ! 309: $(OFILES) $(LIBS) ! 310: ! 311: # ! 312: # Build kern-loadable relocatable. ! 313: # Main Makefile Must define: ! 314: # SERVER_NAME ! 315: # KS_VAR_NAME ! 316: # ! 317: # May define: ! 318: # OTHER_DEPENDS (typically which will force a mig run). ! 319: # ! 320: $(BUILD_NAME)_reloc: $(OBJROOT)/$(BUILD_DIR) \ ! 321: $(OTHER_DEPENDS) $(OFILES) $(LOAD_COMMANDS) \ ! 322: $(UNLOAD_COMMANDS) ! 323: @if [ -n "${UNLOAD_COMMANDS}" ]; \ ! 324: then \ ! 325: UNLOAD="-u $(UNLOAD_COMMANDS)"; \ ! 326: else \ ! 327: UNLOAD=" "; \ ! 328: fi; \ ! 329: echo $(KL_LD) -n $(SERVER_NAME) -l $(LOAD_COMMANDS) \ ! 330: $$UNLOAD -i $(KS_VAR_NAME) $(LDFLAGS) \ ! 331: -o $(OBJROOT)/$(BUILD_DIR)/$@ $(OFILES) $(LIBS); \ ! 332: $(KL_LD) -n $(SERVER_NAME) -l $(LOAD_COMMANDS) \ ! 333: $$UNLOAD -i $(KS_VAR_NAME) $(LDFLAGS) \ ! 334: -o $(OBJROOT)/$(BUILD_DIR)/$@ $(OFILES) $(LIBS) ! 335: ! 336: # ! 337: # The additional -I here picks up possible header files which are ! 338: # created in the build directory (say, by MIG). ! 339: # ! 340: .c.o: ! 341: $(CC) $(CFLAGS) $(OTHER_CFLAGS) -c $(*F).c \ ! 342: -I$(OBJROOT)/$(BUILD_DIR) \ ! 343: -dependency-file $(OBJROOT)/$(BUILD_DIR)/$(*F).d \ ! 344: -o $(OBJROOT)/$(BUILD_DIR)/$(*F).o ! 345: md -u $(OBJROOT)/$(BUILD_DIR)/Makedep -d $(OBJROOT)/$(BUILD_DIR)/$(*F).d ! 346: ! 347: .m.o: ! 348: $(CC) $(CFLAGS) $(OTHER_CFLAGS) -c $(*F).m \ ! 349: -I$(OBJROOT)/$(BUILD_DIR) \ ! 350: -dependency-file $(OBJROOT)/$(BUILD_DIR)/$(*F).d \ ! 351: -o $(OBJROOT)/$(BUILD_DIR)/$(*F).o ! 352: md -u $(OBJROOT)/$(BUILD_DIR)/Makedep -d $(OBJROOT)/$(BUILD_DIR)/$(*F).d ! 353: ! 354: SRCROOT DSTROOT: ! 355: @if [ -n "${$@}" ]; \ ! 356: then \ ! 357: exit 0; \ ! 358: else \ ! 359: echo Must define $@; \ ! 360: exit 1; \ ! 361: fi ! 362: ! 363: -include Makedep ! 364:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.