Annotation of driverkit/MakefileDir/Makefile.common_driver, revision 1.1.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.