|
|
1.1 ! root 1: # ! 2: # Common makefile fragment for use by driverkit-based driver projects. ! 3: # ! 4: ! 5: # ! 6: # OBJROOT and SYMROOT are overridden by RC tools for builds from read-only ! 7: # source. ! 8: # ! 9: SRCROOT = . ! 10: OBJROOT = . ! 11: SYMROOT = . ! 12: OFILE_DIR = $(OBJROOT) ! 13: SYM_DIR = $(SYMROOT)/sym ! 14: PRODUCT_ROOT = $(SYMROOT) ! 15: TAR = /usr/bin/gnutar ! 16: RM = /bin/rm ! 17: ifneq "" "$(wildcard /bin/mkdirs)" ! 18: MKDIRS = /bin/mkdirs ! 19: else ! 20: MKDIRS = /bin/mkdir -p ! 21: endif ! 22: # ! 23: # Macros used for compiling. ! 24: # ! 25: DRIVER_CFILES= $(COMMON_CFILES) $(OTHER_CFILES) ! 26: DRIVER_MFILES= $(COMMON_MFILES) $(OTHER_MFILES) ! 27: ! 28: OFILES= $(DRIVER_CFILES:.c=.o) $(DRIVER_MFILES:.m=.o) $(OTHER_OFILES) $(INSTANCE_VAR).o ! 29: ! 30: # ! 31: # For installsrc and tags. ! 32: # ! 33: COMMONSOURCE= $(DRIVER_CFILES) $(DRIVER_MFILES) \ ! 34: $(COMMON_PUBLIC_HFILES) $(COMMON_PRIVATE_HFILES) $(OTHER_SOURCE) ! 35: ! 36: ! 37: VPATH = $(PRODUCT_ROOT):$(OFILE_DIR):$(SYM_DIR):$(OPT_VPATH) ! 38: ! 39: all tool:: project tags always ! 40: ! 41: # ! 42: # For building kern-loadable modules. ! 43: # ! 44: relocrelease: $(SYMROOT) $(OBJROOT) always ! 45: @echo '******** Building $(BUILD_NAME) ********'; \ ! 46: if [ -n "$(ARCHS)" ]; then \ ! 47: my_rc_cflags=""; \ ! 48: for i in "$(ARCHS)"; do \ ! 49: my_rc_cflags="$$my_rc_cflags -arch $$i"; \ ! 50: done; \ ! 51: else \ ! 52: my_rc_cflags=$(RC_CFLAGS); \ ! 53: fi; \ ! 54: $(MAKE) $(BUILD_NAME) \ ! 55: "OBJROOT=$(OBJROOT)" \ ! 56: "SYMROOT=$(SYMROOT)" \ ! 57: "PRODUCT_ROOT=$(PRODUCT_ROOT)" \ ! 58: "OFILE_DIR=$(OFILE_DIR)/relocrelease" \ ! 59: "SYM_DIR=$(SYM_DIR)" \ ! 60: "LIBS=$(RELEASE_KERN_LIBS)" \ ! 61: "LDFLAGS= $(KL_RELEASE_FLAGS) $$my_rc_cflags" \ ! 62: "EXTRA_CFLAGS=$(RELEASE_CFLAGS) $$my_rc_cflags $(OTHER_CFLAGS)" ! 63: ! 64: # ! 65: # For building debug versions of kern-loadable modules. ! 66: # ! 67: relocdebug: $(SYMROOT) $(OBJROOT) always ! 68: @echo '******** Building debug $(BUILD_NAME) ********'; \ ! 69: if [ -n "$(ARCHS)" ]; then \ ! 70: my_rc_cflags=""; \ ! 71: for i in "$(ARCHS)"; do \ ! 72: my_rc_cflags="$$my_rc_cflags -arch $$i"; \ ! 73: done; \ ! 74: else \ ! 75: my_rc_cflags=$(RC_CFLAGS); \ ! 76: fi; \ ! 77: $(MAKE) $(BUILD_NAME) \ ! 78: "OBJROOT=$(OBJROOT)" \ ! 79: "SYMROOT=$(SYMROOT)" \ ! 80: "PRODUCT_ROOT=$(PRODUCT_ROOT)" \ ! 81: "OFILE_DIR=$(OFILE_DIR)/relocdebug" \ ! 82: "SYM_DIR=$(SYM_DIR)" \ ! 83: "LIBS=$(DEBUG_KERN_LIBS)" \ ! 84: "LDFLAGS= $(KL_DEBUG_FLAGS) $$my_rc_cflags" \ ! 85: "EXTRA_CFLAGS=$(DEBUG_CFLAGS) $$my_rc_cflags $(OTHER_CFLAGS)" ! 86: ! 87: project: relocrelease ! 88: ! 89: debug: relocdebug ! 90: ! 91: installsrc:: SRCROOT ! 92: @($(MAKE) copy "DEST=$(SRCROOT)") ! 93: ! 94: copy:: DEST $(DEST) ! 95: $(TAR) cf - $(COMMONSOURCE) | (cd $(DEST); $(TAR) xpBf -) ! 96: chown -Rf root.wheel $(DEST) ! 97: ! 98: installhdrs:: DSTROOT $(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR) ! 99: @if [ -n "${COMMON_PUBLIC_HFILES}" ]; \ ! 100: then \ ! 101: install -c -m 644 $(COMMON_PUBLIC_HFILES) \ ! 102: $(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR); \ ! 103: fi ! 104: ! 105: $(OFILE_DIR) $(PRODUCT_ROOT) $(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR) \ ! 106: $(OBJROOT) $(SRCROOT) $(SYMROOT) $(DEST): ! 107: @$(MKDIRS) $@ ! 108: ! 109: tags: $(OBJROOT) always ! 110: $(RM) -f tags ! 111: ctags -d -o $(OBJROOT)/tags $(COMMONSOURCE) ! 112: ! 113: always: ! 114: ! 115: depend:: ! 116: ! 117: clean: ! 118: $(RM) -rf $(OFILE_DIR)/*relocdebug $(OFILE_DIR)/*relocrelease \ ! 119: $(BUILD_NAME) $(SYM_DIR) *.d Makedep *~ tags \ ! 120: $(OTHER_CLEAN_FILES) ! 121: ! 122: # ! 123: # Build kern-loadable relocatable. ! 124: # Main Makefile Must define: ! 125: # SERVER_NAME ! 126: # INSTANCE_VAR ! 127: # ! 128: # May define: ! 129: # OTHER_DEPENDS (typically which will force a mig run). ! 130: # ! 131: $(BUILD_NAME): $(PRODUCT_ROOT) $(OFILE_DIR) $(OFILES) \ ! 132: $(LOAD_COMMAND_FILE) $(UNLOAD_COMMAND_FILE) $(OTHER_DEPENDS) ! 133: $(KL_LD) $(LDFLAGS) -o $(PRODUCT_ROOT)/$@ $(OFILES) $(LIBS) \ ! 134: -n $(SERVER_NAME) $(LOAD_COMMANDS) $(UNLOAD_COMMANDS) -i $(INSTANCE_VAR) ! 135: ! 136: # ! 137: # Make the global instance ! 138: # ! 139: $(INSTANCE_VAR).m: ! 140: @echo Creating $(INSTANCE_VAR).m; \ ! 141: echo "#import <objc/Object.h>\n#import <kernserv/kern_server_types.h>\n\nkern_server_t $(INSTANCE_VAR);\n\n@interface $(SERVER_NAME)KernelServerInstance : Object\n{}\n+ (kern_server_t *)kernelServerInstance;\n@end\n\n@implementation $(SERVER_NAME)KernelServerInstance\n+ (kern_server_t *)kernelServerInstance\n{\n\treturn &$(INSTANCE_VAR);\n}\n@end\n" > $(OFILE_DIR)/$@ ! 142: ! 143: strip:: ! 144: @echo $(STRIP) $(RELOCATABLE_STRIP_OPTS) \ ! 145: $(DSTROOT)$(PARENT_DIR)/$(NAME); \ ! 146: $(STRIP) $(RELOCATABLE_STRIP_OPTS) \ ! 147: $(DSTROOT)$(PARENT_DIR)/$(NAME) ! 148: ! 149: # ! 150: # The additional -I here picks up possible header files which are ! 151: # created in the build directory (say, by MIG). ! 152: # ! 153: .c.o .m.o: ! 154: $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -I$(OFILE_DIR) \ ! 155: -o $(OFILE_DIR)/$@ -dependency-file $(OFILE_DIR)/$(*F).d ! 156: ! 157: SRCROOT DSTROOT DEST: ! 158: @if [ ! -n "${$@}" ]; \ ! 159: then \ ! 160: echo Must define $@; \ ! 161: exit 1; \ ! 162: fi ! 163: ! 164: -include Makedep
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.