Annotation of driverkit/MakefileDir/Makefile.common_driver, revision 1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.