home *** CD-ROM | disk | FTP | other *** search
Makefile | 1995-03-21 | 9.4 KB | 268 lines |
- #
- # driver.make
- #
-
- PRODUCT = $(PRODUCT_ROOT)/$(NAME:.tproj=)
-
- $(PRODUCT_ROOT):
- @$(MKDIRS) $(PRODUCT_ROOT)
-
- APP_MAKEFILE_DIR = /NextDeveloper/Makefiles/app
- include $(APP_MAKEFILE_DIR)/common.make
-
- KL_LD = /usr/bin/kl_ld
-
- BUILD_NAME=$(NAME:.tproj=)
- SERVER_NAME=$(BUILD_NAME:_reloc=)
- INSTANCE_VAR=$(SERVER_NAME)_instance
-
- #
- # Specify name of load_commands and unload_commands text files for
- # kern-loadable module.
- #
- LOAD_COMMAND_FILE = Load_Commands.sect
- LOAD_COMMANDS = -l $(LOAD_COMMAND_FILE)
-
- #
- # Options to kl_ld for generating kern-loadable.
- #
- KL_DEBUG_FLAGS= -d $(SERVER_NAME)_loadable
- KL_RELEASE_FLAGS=
-
- CFLAGS = -pipe -Wno-format -nostdinc -I. -I.. -I/NextDeveloper/Headers -I/NextDeveloper/Headers/ansi -I/NextDeveloper/Headers/bsd -DKERNEL -DMACH_USER_API -DKERNEL_SERVER_INSTANCE=$(INSTANCE_VAR) -static
-
- DEBUG_CFLAGS = $(COMMON_CFLAGS) -DDEBUG -DDDM_DEBUG
-
- -include Makefile.driver_preamble
-
- all:: tool
-
- app:: tool
-
- tool::
- @($(MKDIRS) $(SYMROOT) ; \
- $(process_target_archs)_obj ; \
- $(set_bundle_ext) ; \
- if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
- language_cflags="" ; \
- libs="$(LIBS)" ; \
- other_libs="$(OTHER_LIBS)" ; \
- else \
- language_cflags="-DKANJI" ; \
- libs="$(LIBS:lNeXT_s=lNeXTJ_s)" ; \
- other_libs="$(OTHER_LIBS:lNeXT_s=lNeXTJ_s)" ; \
- fi ; \
- $(MAKE) project \
- "PRODUCT_ROOT = $(SYMROOT)" \
- "PRODUCT = $(SYMROOT)/$(NAME)" \
- "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
- "PROJ_CFLAGS = $(NORMAL_CFLAGS) $$language_cflags" \
- "LIBS = $$libs" \
- "LDFLAGS = $(LDFLAGS) $(KL_RELEASE_FLAGS)" \
- "OTHER_LIBS = $$other_libs" \
- "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
- "BUNDLE_EXTENSION = $$bundle_ext" \
- "RC_CFLAGS = $$arch_cflags" \
- "RC_ARCHS = $$archs" \
- "SRCROOT = $(SRCROOT)" \
- "OBJROOT = $(OBJROOT)" \
- "SYMROOT = $(SYMROOT)/sym" \
- "SYM_DIR = $(SYMROOT)/sym" )
-
- debug::
- @($(MKDIRS) $(SYMROOT) ; \
- $(process_target_archs)_debug_obj ; \
- $(set_bundle_ext) ; \
- if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
- language_cflags="" ; \
- libs="$(DEBUG_LIBS)" ; \
- other_libs="$(OTHER_DEBUG_LIBS)" ; \
- other_japanese_libs="" ; \
- else \
- language_cflags="-DKANJI" ; \
- libs="$(DEBUG_LIBS:lNeXT_s=lNeXTJ_s)" ; \
- other_libs="$(OTHER_DEBUG_LIBS:lNeXT_s=lNeXTJ_s)" ; \
- other_japanese_libs="$(OTHER_JAPANESE_DEBUG_LIBS)" ; \
- fi ; \
- $(MAKE) project \
- "PRODUCT_ROOT = $(SYMROOT)" \
- "PRODUCT = $(SYMROOT)/$(NAME)" \
- "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
- "PROJ_CFLAGS = $(DEBUG_CFLAGS) $$language_cflags" \
- "LDFLAGS = $(LDFLAGS) $(KL_DEBUG_FLAGS)" \
- "LIBS = $$libs" "OTHER_LIBS = $$other_libs" \
- "OTHER_JAPANESE_LIBS = $$other_japanese_libs" \
- "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
- "BUNDLE_EXTENSION = $$bundle_ext" \
- "RC_CFLAGS = $$arch_cflags" \
- "RC_ARCHS = $$archs" \
- "SRCROOT = $(SRCROOT)" \
- "OBJROOT = $(OBJROOT)" \
- "SYMROOT = $(SYMROOT)/sym" \
- "SYM_DIR = $(SYMROOT)/sym" )
-
- profile::
- @($(MKDIRS) $(SYMROOT) ; \
- $(process_target_archs)_profile_obj ; \
- $(set_bundle_ext) ; \
- if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
- language_cflags="" ; \
- libs="$(PROF_LIBS)" ; \
- other_libs="$(OTHER_PROF_LIBS)" ; \
- other_japanese_libs="" ; \
- else \
- language_cflags="-DKANJI" ; \
- libs="$(PROF_LIBS:lNeXT_s=lNeXTJ_s)" ; \
- other_libs="$(OTHER_PROF_LIBS:lNeXT_s=lNeXTJ_s)" ; \
- other_japanese_libs="$(OTHER_JAPANESE_PROF_LIBS)" ; \
- fi ; \
- $(MAKE) project \
- "PRODUCT_ROOT = $(SYMROOT)" \
- "PRODUCT = $(SYMROOT)/$(NAME)" \
- "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
- "PROJ_CFLAGS = $(PROFILE_CFLAGS) $$language_cflags" \
- "LIBS = $$libs" "OTHER_LIBS = $$other_libs" \
- "OTHER_JAPANESE_LIBS = $$other_japanese_libs" \
- "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
- "BUNDLE_EXTENSION = $$bundle_ext" \
- "RC_CFLAGS = $$arch_cflags" \
- "RC_ARCHS = $$archs" \
- "SRCROOT = $(SRCROOT)" \
- "OBJROOT = $(OBJROOT)" \
- "SYMROOT = $(SYMROOT)/sym" \
- "SYM_DIR = $(SYMROOT)/sym" )
-
-
-
- depend:: Makefile.dependencies $(SUBPROJECTS:.subproj=.depend) # Note: tools can not have bundles.
-
- project:: $(INITIAL_TARGETS) toplevel_subcomponents resources $(PRODUCT)
-
- # Tools can have no bundles; there's no ".tool" wrapper to store it in
- toplevel_subcomponents:: $(PRODUCT_ROOT) subprojs # bundles
- -@($(RM) -f $(PRODUCT_ROOT)/$(CHANGES_FILE) ; \
- $(ECHO) "$(OFILE_DIR)" > $(PRODUCT_ROOT)/$(CHANGES_FILE))
-
- $(PRODUCT): $(PRODUCT_DEPENDS) $(OTHER_PRODUCT_DEPENDS) $(INSTANCE_VAR).o
- @(adaptors="" ; \
- for adaptor in $(OTHERRELOCATABLES) none ; do \
- if [ $$adaptor = "none" ] ; then break; fi ; \
- for path in $(ADAPTOR_SEARCH_PATH) none ; do \
- if [ $$path = "none" ] ; then break; fi ;\
- if [ -r $$path/$$adaptor ] ; then \
- adaptors="$$adaptors $$path/$$adaptor" ; \
- break ; \
- fi ; \
- done ; \
- done ; \
- if [ "`$(ECHO) $(OFILES) $(OTHER_OFILES) | wc -w`" != " 0" ] ; then \
- if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
- other_japanese_libs=""; \
- else \
- other_japanese_libs="$(OTHER_JAPANESE_LIBS)" ; \
- fi ; \
- cmd="$(KL_LD) $(OBJCFLAG) $(LDFLAGS) $(OTHER_LDFLAGS) \
- -o $(PRODUCT) $(OFILES) $(OTHER_OFILES) $(INSTANCE_VAR).o \
- $$adaptors $$other_japanese_libs $(OTHER_LIBS) $(LIBS) \
- -n $(SERVER_NAME) $(LOAD_COMMANDS) $(UNLOAD_COMMANDS) -i $(INSTANCE_VAR)";\
- echo $$cmd ; \
- $$cmd ; \
- fi )
-
-
- $(DSTROOT)$(INSTALLDIR) $(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR):
- $(MKDIRS) $@
-
- strip_myself::
- $(STRIP) $(RELOCATABLE_STRIP_OPTS) $(DSTROOT)/$(PARENT_DIR)/$(NAME)
-
- before_install:: $(DSTROOT)$(INSTALLDIR)
- $(RM) -rf $(DSTROOT)$(INSTALLDIR)/$(NAME)
-
- after_install::
-
- installhdrs:: $(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR)
- @if [ -n "${COMMON_PUBLIC_HFILES}" ]; \
- then \
- install -c -u -m 444 $(COMMON_PUBLIC_HFILES) \
- $(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR); \
- fi
-
- install:: tool before_install installhdrs $(OTHER_INSTALL_DEPENDS)
- (cd $(SYMROOT); $(TAR) chf - $(NAME)) | (cd $(DSTROOT)$(INSTALLDIR); $(TAR) xf -)
- $(STRIP) $(RELOCATABLE_STRIP_OPTS) $(DSTROOT)$(INSTALLDIR)/$(NAME)
- -$(CHOWN) -Rf $(INSTALL_AS_USER).$(INSTALL_AS_GROUP) \
- $(DSTROOT)$(INSTALLDIR)/$(NAME)
- -$(CHMOD) -Rf go-w $(DSTROOT)$(INSTALLDIR)/$(NAME)
- @(if [ "$(INSTALL_PERMISSIONS)" != "" ] ; then \
- $(ECHO) $(CHMOD) -f $(INSTALL_PERMISSIONS) \
- $(DSTROOT)$(INSTALLDIR)/$(NAME); \
- $(CHMOD) -f $(INSTALL_PERMISSIONS) \
- $(DSTROOT)$(INSTALLDIR)/$(NAME); \
- fi)
- @($(process_target_archs)_obj ; \
- if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
- language_cflags="" ; \
- else \
- language_cflags="-DKANJI" ; \
- fi ; \
- $(MAKE) after_install "DSTROOT=$(DSTROOT)" \
- "OBJROOT=$(OBJROOT)" \
- "SYMROOT = $(SYMROOT)/sym" \
- "SYM_DIR = $(SYMROOT)/sym" \
- "PRODUCT_ROOT = $(PRODUCT_ROOT)" \
- "PRODUCT = $(PRODUCT_ROOT)/$(NAME)" \
- "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
- "PROJ_CFLAGS = $(NORMAL_CFLAGS) $$language_cflags" \
- "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
- "RC_CFLAGS = $$arch_cflags" \
- "RC_ARCHS = $$archs" )
-
- #
- # Make the global instance
- #
- $(INSTANCE_VAR).m:
- @echo Creating $(INSTANCE_VAR).m; \
- echo "#import <driverkit/IODevice.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\n@interface $(SERVER_NAME)Version : IODevice\n{}\n+ (int)driverKitVersionFor$(SERVER_NAME);\n@end\n\n@implementation $(SERVER_NAME)Version\n+ (int)driverKitVersionFor$(SERVER_NAME)\n{\n\treturn IO_DRIVERKIT_VERSION;\n}\n@end\n" > $(OFILE_DIR)/$@
-
- #.DEFAULT
-
- help:
- @if (test "$<"); then \
- $(ECHO) 'ERROR: Unrecognized Makefile target "$<"'; \
- fi
- @$(ECHO) 'The following targets are available:'
- @$(ECHO)
- @$(ECHO) ' all Makes the tool target (below). This is the default target.'
- @$(ECHO)
- @$(ECHO) ' tool Compiles and links an optimized (and debuggable) version of the'
- @$(ECHO) ' project, ready to install, into <ProjectName>.'
- @$(ECHO)
- @$(ECHO) ' debug Compiles (with all warnings and -DDEBUG on) and links a '
- @$(ECHO) ' fully-debuggable version of the project into a <ProjectName>_d.'
- @$(ECHO)
- @$(ECHO) ' profile Compiles (with all warnings and -DPROFILE on) and links a'
- @$(ECHO) ' version of the project into <ProjectName>_p'
- @$(ECHO) ' that will, when run, generate a gprof report.'
- @$(ECHO)
- @$(ECHO) ' depend Generates an optional Makefile.dependencies file for every level'
- @$(ECHO) ' of the project to reflect the complete dependency graph'
- @$(ECHO) ' (including headers).'
- @$(ECHO)
- @$(ECHO) ' install Builds (if needed) and copies <ProjectName> into the'
- @$(ECHO) ' installation directory, setting permissions and owners as'
- @$(ECHO) ' appropriate.'
- @$(ECHO)
- @$(ECHO) ' installsrc Installs the source files for the project into the directory'
- @$(ECHO) ' specified in the SRCROOT variable in a command-line argument.'
- @$(ECHO) ' Note: the target directory will be removed and recreated.'
- @$(ECHO)
- @$(ECHO) ' installhdrs Installs the source files for the project.'
- @$(ECHO)
- @$(ECHO) ' clean Removes all files in the project derived from previous builds.'
- @$(ECHO)
- @$(ECHO) ' help Lists these targets with their descriptions.'
- @$(ECHO)
- @$(ECHO) 'For more details, see the comments in /NextDeveloper/Makefiles/app/*.make.'
-
-