Annotation of objc/common.make, revision 1.1

1.1     ! root        1: ###############################################################################
        !             2: #  NeXT common.make
        !             3: #  Copyright 1992, NeXT Computer, Inc.
        !             4: #
        !             5: #  This makefile is common to all project-types (apps, subprojects,
        !             6: #  bundles, and palettes).  It can also prove useful to custom Makefiles
        !             7: #  needing generic project-building functionality, but users should be aware
        !             8: #  that interfaces supported at this level are private to the app makefiles
        !             9: #  and may change from release to release.
        !            10: #  
        !            11: ###############################################################################
        !            12: 
        !            13: 
        !            14: 
        !            15: SUPPORTFILES = IB.nproj Makefile makefile $(NAME).iconheader \
        !            16:        Makefile.preamble Makefile.postamble *.project
        !            17: 
        !            18: SRCFILES = $(CLASSES) $(MFILES) $(CFILES) \
        !            19:        $(CCFILES) $(CAPCFILES) $(CAPMFILES) $(CXXFILES) $(CPPFILES) \
        !            20:        $(HFILES) $(PSWFILES) $(PSWMFILES) $(DBMODELAFILES) \
        !            21:        $(GLOBAL_RESOURCES) \
        !            22:        $(OTHERSRCS) $(OTHERLINKED) $(OTHER_SOURCEFILES)
        !            23: 
        !            24: ### Compute all the possible derived files and directories for them:
        !            25: 
        !            26: SRCROOT = .
        !            27: DERIVED_SRC_DIR_NAME = derived_src
        !            28: 
        !            29: # Directory for .o files (can be thrown away) 
        !            30: OFILE_DIR = $(OBJROOT)/obj
        !            31: # Directory for all other derived files (contains symbol info. for debugging)
        !            32: SYM_DIR = $(SYMROOT)/$(DERIVED_SRC_DIR_NAME)
        !            33: # Directory for all public headers of the entire project tree
        !            34: LOCAL_HEADER_DIR = $(SYMROOT)/Headers/$(NAME)
        !            35: 
        !            36: # For compatibility:
        !            37: DERIVED_DIR = $(OFILE_DIR)
        !            38: DERIVED_SRC_DIR = $(SYM_DIR)
        !            39: 
        !            40: $(OFILE_DIR) $(SYM_DIR) $(PUBLIC_HEADER_DIR) $(DSTROOT)$(INSTALLDIR) $(PRODUCT_ROOT):
        !            41:        @$(MKDIRS) $@
        !            42: 
        !            43: MSGOFILES = $(MSGFILES:.msg=Speaker.o) $(MSGFILES:.msg=Listener.o)
        !            44: MSGDERIVEDMFILES = $(MSGFILES:.msg=Speaker.m) $(MSGFILES:.msg=Listener.m)
        !            45: 
        !            46: ALLMIGFILES = $(MIGFILES) $(DEFSFILES)
        !            47: 
        !            48: MIGOFILES = $(MIGFILES:.mig=User.o) $(MIGFILES:.mig=Server.o)
        !            49: DEFSOFILES = $(DEFSFILES:.defs=User.o) $(DEFSFILES:.defs=Server.o)
        !            50: ALLMIGOFILES = $(MIGOFILES) $(DEFSOFILES)
        !            51: 
        !            52: MIGDERIVEDCFILES = $(MIGFILES:.mig=User.c) $(MIGFILES:.mig=Server.c)
        !            53: DEFSDERIVEDCFILES = $(DEFSFILES:.defs=User.c) $(DEFSFILES:.defs=Server.c)
        !            54: ALLMIGDERIVEDCFILES = $(MIGDERIVEDCFILES) $(DEFSDERIVEDCFILES)
        !            55: 
        !            56: EARLY_HFILES = $(PSWFILES:.psw=.h) $(PSWMFILES:.pswm=.h)
        !            57: EARLY_OFILES = $(PSWFILES:.psw=.o) $(PSWMFILES:.pswm=.o)
        !            58: 
        !            59: ALL_PRECOMPS = $(PRECOMPILED_HEADERS:.h=.p) $(PRECOMPS)
        !            60: INITIAL_TARGETS = $(OFILE_DIR) $(SYM_DIR) $(EARLY_HFILES) $(MSGOFILES) $(ALLMIGOFILES) $(ALL_PRECOMPS) refresh_precomps export_headers $(OTHER_INITIAL_TARGETS)
        !            61: 
        !            62: SUBPROJ_OFILES = $(SUBPROJECTS:.subproj=_subproj.o)
        !            63: SUBPROJ_OFILELISTS = $(SUBPROJECTS:.subproj=_subproj.ofileList)
        !            64: NON_SUBPROJ_OFILES = $(CLASSES:.m=.o) $(MFILES:.m=.o) $(CFILES:.c=.o) \
        !            65:        $(CCFILES:.cc=.o) $(CAPCFILES:.C=.o) $(CAPMFILES:.M=.o) \
        !            66:        $(CXXFILES:.cxx=.o) $(CPPFILES:.cpp=.o) $(EARLY_OFILES) \
        !            67:        $(OTHERLINKEDOFILES) 
        !            68: OFILES = $(SUBPROJ_OFILES) $(NON_SUBPROJ_OFILES) 
        !            69:  
        !            70: #    Note: It would be nice to put $(OTHERRELOCATABLES) in this list someday
        !            71: #          when PB provides full paths for the contents of this variable.
        !            72: 
        !            73: # Derived resources:
        !            74: DBMODELS = $(DBMODELAFILES:.dbmodela=.dbmodel)
        !            75: 
        !            76: HELP_DIRS = Help
        !            77: HELP_STORES = $(HELP_DIRS:=.store) $(OTHER_HELP_DIRS:=.store)
        !            78: 
        !            79: ### Set defaults for many values used throughout the app Makefiles
        !            80: 
        !            81: # Default extension for bundles (directories containing object code and resources)
        !            82: 
        !            83: MAKEFILES = Makefile
        !            84: 
        !            85: PRODUCT_DEPENDS = $(OFILES) $(OTHER_OFILES) $(DBMODELS) \
        !            86:        $(ICONHEADER) $(APPICON) $(DOCICONS) $(MAKEFILES) \
        !            87:        $(OTHER_PRODUCT_DEPENDS)
        !            88: 
        !            89: GARBAGE = $(PROJECT_TYPE_SPECIFIC_GARBAGE) \
        !            90:        $(OBJROOT)/*_obj $(OFILE_DIR) \
        !            91:        $(SYMROOT)/$(DERIVED_SRC_DIR_NAME) $(SYMROOT)/sym \
        !            92:        *~ $(LANGUAGE).lproj/*~ $(VERS_FILE) \
        !            93:        Makefile.dependencies $(SYMROOT)/$(CHANGES_FILE_BASE)* gmon.out \
        !            94:        $(ALL_PRECOMPS) $(OTHER_INITIAL_TARGETS) $(OTHER_GARBAGE)
        !            95: 
        !            96: GARBAGE_TO_BE = \
        !            97:        $(DEV_PUBLIC_HEADER_DIR) $(DEV_PROJECT_HEADER_DIR) \
        !            98:        $(DEV_PRIVATE_HEADER_DIR)
        !            99: 
        !           100: # Default name for file to use as "reference time of last build"
        !           101: CHANGES_FILE_BASE = .lastBuildTime
        !           102: 
        !           103: # Defaults for who to chown executables to when installing
        !           104: INSTALL_AS_USER = root
        !           105: INSTALL_AS_GROUP = wheel
        !           106: 
        !           107: # Compiler flags that may be overridden
        !           108: OPTIMIZATION_CFLAG = -O
        !           109: DEBUG_SYMBOLS_CFLAG = -g
        !           110: WARNING_CFLAGS = -Wall
        !           111: DEBUG_BUILD_CFLAGS = -DDEBUG
        !           112: PROFILE_BUILD_CFLAGS = -pg -DPROFILE
        !           113: POSIX_BUILD_CFLAGS = -D_POSIX_LIB
        !           114: SHLIB_BUILD_CFLAGS =  -I/LocalDeveloper/Headers/libsys -i/LocalDeveloper/Headers/libsys/shlib.h -DSHLIB
        !           115: 
        !           116: # Default compiler options
        !           117: ALL_FRAMEWORK_CFLAGS = $(FRAMEWORK_PATHS) $(PROPOGATED_FRAMEWORK_CFLAGS)
        !           118: PROJECT_SPECIFIC_CFLAGS = $(CFLAGS) $(OTHER_CFLAGS) $(HEADER_PATHS) $(PB_CFLAGS) 
        !           119: PROJ_CFLAGS = $(PROJECT_SPECIFIC_CFLAGS)
        !           120: COMMON_CFLAGS = $(DEBUG_SYMBOLS_CFLAG) $(WARNING_CFLAGS) $(PROJECT_SPECIFIC_CFLAGS)   
        !           121: all_target_CFLAGS = $(COMMON_CFLAGS) $(OPTIMIZATION_CFLAG)
        !           122: debug_target_CFLAGS = $(COMMON_CFLAGS) $(DEBUG_BUILD_CFLAGS)
        !           123: profile_target_CFLAGS = $(COMMON_CFLAGS) $(PROFILE_BUILD_CFLAGS) $(OPTIMIZATION_CFLAG) 
        !           124: app_target_CFLAGS = $(all_target_CFLAGS)
        !           125: library_target_CFLAGS = $(all_target_CFLAGS)
        !           126: framework_target_CFLAGS = $(all_target_CFLAGS)
        !           127: bundle_target_CFLAGS = $(all_target_CFLAGS)
        !           128: posix_target_CFLAGS = $(COMMON_CFLAGS) $(POSIX_BUILD_CFLAGS) $(OPTIMIZATION_CFLAG) 
        !           129: shlib_target_CFLAGS = $(COMMON_CFLAGS) $(SHLIB_BUILD_CFLAGS) $(OPTIMIZATION_CFLAG) 
        !           130: OBJCFLAG = -ObjC
        !           131: 
        !           132: # ...and the actual flags used in compilation (see basicrules.make)
        !           133: ALL_CFLAGS = $(ALL_FRAMEWORK_CFLAGS) $(PROJ_CFLAGS) $(PROPOGATED_CFLAGS) -I$(DEV_PROJECT_HEADER_DIR) -I$(SYM_DIR) $(RC_CFLAGS)
        !           134: ALL_PRECOMP_CFLAGS = $(ALL_FRAMEWORK_CFLAGS) $(PROJ_CFLAGS) $(PROPOGATED_CFLAGS) -I$(SYM_DIR) $(ALL_ARCH_FLAGS)
        !           135: 
        !           136: # Link editor options:
        !           137: CUMULATIVE_LDFLAGS = $(LIBRARY_PATHS) $(PB_LDFLAGS) $(LDFLAGS) $(OTHER_LDFLAGS)
        !           138: ALL_LDFLAGS = $(CUMULATIVE_LDFLAGS) $(PROPOGATED_LDFLAGS) $(PROJECT_SPECIFIC_LDFLAGS) 
        !           139: 
        !           140: # Yacc options
        !           141: YFLAGS = -d
        !           142: 
        !           143: # Defaults strip options
        !           144: INTERFACE_DESC_FILE = /NextDeveloper/Makefiles/project/interface.symbols
        !           145: #DYLD_EXEC_STRIP_OPTS = -s $(INTERFACE_DESC_FILE) -u -A
        !           146: DYLD_EXEC_STRIP_OPTS = -S
        !           147: APP_STRIP_OPTS = $(DYLD_EXEC_STRIP_OPTS)
        !           148: TOOL_STRIP_OPTS =  $(DYLD_EXEC_STRIP_OPTS) 
        !           149: LIBRARY_STRIP_OPTS = -S   # Note: -S strips debugging symbols
        !           150: DYNAMIC_STRIP_OPTS = -S
        !           151: 
        !           152: # Various commands:
        !           153: SHELL  = /bin/sh
        !           154: FASTCP = /usr/lib/fastcp
        !           155: FASTLN = /usr/lib/fastln
        !           156: CHANGES = /usr/lib/changes
        !           157: ARCH_TOOL = /usr/lib/arch_tool
        !           158: OFILE_LIST_TOOL = /usr/lib/ofileListTool -removePrefix ../ -removePrefix $(OBJROOT)/
        !           159: DEARCHIFY = $(ARCH_TOOL) -dearchify
        !           160: ARCHIFY = $(ARCH_TOOL) -archify_list
        !           161: CHOWN  = /etc/chown
        !           162: CHMOD  = /bin/chmod
        !           163: TAR    = /usr/bin/gnutar
        !           164: LIBTOOL = /bin/libtool
        !           165: STRIP  = /bin/strip
        !           166: RM     = /bin/rm
        !           167: LN     = /bin/ln -s
        !           168: CP     = /bin/cp
        !           169: INSTALL_HEADERS_CMD = $(CP) -p
        !           170: ECHO   = /bin/echo
        !           171: MKDIRS = /bin/mkdirs
        !           172: TOUCH  = /usr/bin/touch
        !           173: AWK    = /bin/awk
        !           174: PSWRAP = /usr/bin/pswrap
        !           175: MSGWRAP = /usr/bin/msgwrap
        !           176: MIG    = /usr/bin/mig
        !           177: DBC    = /NextDeveloper/Apps/DBModeler.app/dbcompiler
        !           178: COMPRESSHELP = /usr/bin/compresshelp
        !           179: FIXPRECOMPS = /usr/bin/fixPrecomps
        !           180: LIBTOOL = /bin/libtool
        !           181: 
        !           182: PUSHD = pushed_dir=`pwd` ; cd 
        !           183: POPD = cd $$pushed_dir
        !           184: 
        !           185: ADAPTOR_SEARCH_PATH = $(HOME)/Library/Adaptors /LocalLibrary/Adaptors /NextLibrary/Adaptors
        !           186: 
        !           187: DEFAULT_BUNDLE_EXTENSION = bundle
        !           188: 
        !           189: # Set VPATH via a variable so clients of common.make can reuse it when overriding VPATH
        !           190: NORMAL_VPATH = $(OFILE_DIR):$(SYM_DIR):$(LANGUAGE).lproj:$(PRODUCT_ROOT):$(PRODUCT_ROOT)/$(LANGUAGE).lproj
        !           191: VPATH = $(VPATH_PREAMBLE)$(NORMAL_VPATH)$(VPATH_POSTAMBLE)
        !           192: 
        !           193: 
        !           194: # Generation of a version string if project lives in correct directory name
        !           195: # To activate this feature, put your source code in a directory named 
        !           196: # $(NAME).%d[.%d][.%d] and set OTHER_GENERATED_OFILES = $(VERS_OFILES).
        !           197: VERS_FILE = $(SYM_DIR)/$(NAME)_vers.c
        !           198: VERS_OFILE = $(OFILE_DIR)/$(NAME)_vers.o
        !           199: $(VERS_FILE): 
        !           200:        $(RM) -f $(VERS_FILE) ; \
        !           201:        vers_string -c $(NAME) \
        !           202:                | sed s/SGS_VERS/$(NAME)_VERS_STRING/ \
        !           203:                | sed s/VERS_NUM/$(NAME)_VERS_NUM/ > $@
        !           204: 
        !           205: ALL_OTHER_OFILES = $(OTHER_OFILES) $(OTHER_GENERATED_OFILES)
        !           206: 
        !           207: ### Use a set of basic suffix-style rules:
        !           208: 
        !           209: COMMON_APP_MAKEFILE_DIR = /NextDeveloper/Makefiles/project
        !           210: include $(COMMON_APP_MAKEFILE_DIR)/basicrules.make
        !           211: 
        !           212: ### Some utility definitions used throughout the PB Makefiles
        !           213: 
        !           214: process_target_archs = \
        !           215:        if [ -n "$(TARGET_ARCHS)" ] ; then \
        !           216:                archs="$(TARGET_ARCHS)" ; \
        !           217:        else \
        !           218:            if [ -n "$(RC_ARCHS)" ] ; then \
        !           219:                archs="$(RC_ARCHS)" ; \
        !           220:            else \
        !           221:                archs=`/usr/bin/arch` ; \
        !           222:            fi ; \
        !           223:        fi ; \
        !           224:        if [ -z "$$archs" ] ; then \
        !           225:                archs=`/usr/bin/arch` ; \
        !           226:        fi ; \
        !           227:         archless_rcflags=`$(DEARCHIFY) $(RC_CFLAGS)` ; \
        !           228:         arch_flags=`$(ARCHIFY) $$archs` ; \
        !           229:        $(set_build_output_dirs)
        !           230: 
        !           231: set_build_output_dirs = \
        !           232:        if [ -n "$(BUILD_OUTPUT_DIR)" ] ; then \
        !           233:                build_output_dir="$(BUILD_OUTPUT_DIR)" ; \
        !           234:        else \
        !           235:                build_output_dir="." ; \
        !           236:        fi ; \
        !           237:        if [ -n "$(SYMROOT)" ] ; then \
        !           238:                symroot="$(SYMROOT)" ; \
        !           239:        else \
        !           240:                symroot=$$build_output_dir ; \
        !           241:        fi ; \
        !           242:        if [ -n "$(OBJROOT)" ] ; then \
        !           243:                objroot="$(OBJROOT)" ; \
        !           244:        else \
        !           245:                objroot=$$build_output_dir ; \
        !           246:        fi
        !           247: 
        !           248: set_bundle_ext = \
        !           249:        if [ -z "$(BUNDLE_EXTENSION)" ] ; then \
        !           250:           bundle_ext=$(DEFAULT_BUNDLE_EXTENSION) ; \
        !           251:        else \
        !           252:           bundle_ext=$(BUNDLE_EXTENSION) ; \
        !           253:        fi 
        !           254: 
        !           255: DYNAMIC_CFLAGS = -fno-common
        !           256: DYNAMIC_LDFLAGS = # -all_load
        !           257: 
        !           258: set_language_flags = \
        !           259:        if [ -n "$(RC_KANJI)" -o "$(JAPANESE)" = "YES" ] ; then \
        !           260:                language_cflags='-DKANJI' ; \
        !           261:                libs="$(LIBS:lNeXT_s=lNeXTJ_s)" ; \
        !           262:                other_libs="$(OTHER_LIBS:lNeXT_s=lNeXTJ_s)" ; \
        !           263:                other_japanese_libs="$(OTHER_JAPANESE_LIBS)" ; \
        !           264:        else \
        !           265:                language_cflags='' ; \
        !           266:                libs="$(LIBS)" ; \
        !           267:                other_libs="$(OTHER_LIBS)" ; \
        !           268:                other_japanese_libs=""; \
        !           269:        fi
        !           270: 
        !           271: set_dynamic_flags = \
        !           272:        if [ "$@" = "shlib" ] ; then \
        !           273:            dynamic_cflags="-static" ; \
        !           274:        else \
        !           275:            if [ "$(CODE_GEN_STYLE)" = "DYNAMIC" ] ; then \
        !           276:                 buildtype="dynamic"                         ; \
        !           277:                 dynamic_cflags="-dynamic $(DYNAMIC_CFLAGS)" ; \
        !           278:                library_ext="dylib" ; \
        !           279:            else \
        !           280:                 buildtype="static"          ; \
        !           281:                 dynamic_cflags="-static" ; \
        !           282:                library_ext="a" ; \
        !           283:            fi ; \
        !           284:         fi ; \
        !           285:        if [ "$@" = "shlib" -o "$@" = "posix" ] ; then \
        !           286:             buildtype="$@"          ; \
        !           287:         fi ; \
        !           288:                libname="lib$(NAME).$$library_ext"
        !           289: 
        !           290: 
        !           291: set_dynamic_link_flags = \
        !           292:         if [ "$(CODE_GEN_STYLE)" = "DYNAMIC" ]; then \
        !           293:                 dynamic_libtool_flags="-dynamic -install_name $(DYLIB_INSTALL_DIR)/$(DYLIB_INSTALL_NAME)" ; \
        !           294:                 dynamic_ldflags="$(DYNAMIC_LDFLAGS)" ; \
        !           295:         else \
        !           296:                 dynamic_libtool_flags="-static" ; \
        !           297:         fi
        !           298: 
        !           299: 
        !           300: set_objdir = \
        !           301:        if [ "$@" = "debug" -o "$@" = "profile" ] ; then \
        !           302:                objdir="$@_obj" ; \
        !           303:        else \
        !           304:                objdir="obj" ; \
        !           305:        fi
        !           306: 
        !           307: set_build_for_arch = \
        !           308:        build_for_arch=yes; \
        !           309:        for excluded_arch in $(EXCLUDED_ARCHS) none ; do \
        !           310:            if [ "$$arch" = "$$excluded_arch" ] ; then \
        !           311:                build_for_arch=no; \
        !           312:            fi ; \
        !           313:        done ; \
        !           314:        if [ -n "$(INCLUDED_ARCHS)" ] ; then \
        !           315:           build_for_arch=no; \
        !           316:           for included_arch in $(INCLUDED_ARCHS) none ; do \
        !           317:               if [ "$$arch" = "$$included_arch" ] ; then \
        !           318:                  build_for_arch=yes; \
        !           319:               fi ; \
        !           320:           done ; \
        !           321:        fi
        !           322: 
        !           323: 
        !           324: ### Define all the targets necessary at every level of the project-hierarchy:
        !           325: 
        !           326: # The following rules and rule fragments do the recursion into "sub" projects
        !           327: # of this project and does a 'make project' for each one in its
        !           328: # respective directories.  This insures that we do not rely on the directory
        !           329: # timestamp or "hack" file to know whether or not something has changed.  
        !           330: 
        !           331: CHANGES_COMMAND = $(CHANGES) $(TOP_PRODUCT_ROOT)/$(CHANGES_FILE_BASE).$(TARGET_ARCH) "$(OFILE_DIR)"
        !           332: 
        !           333: use_default_directory_args = \
        !           334:        top_prod_root=`echo $(TOP_PRODUCT_ROOT) | sed '/^[^/]/s:^:../:'` ; \
        !           335:        prod_root=`echo $(PRODUCT_ROOT) | sed '/^[^/]/s:^:../:'` ; \
        !           336:        ofile_dir=`echo $(OFILE_DIR) | sed '/^[^/]/s:^:../:'` ; \
        !           337:        sym_dir=`echo $(SYM_DIR) | sed '/^[^/]/s:^:../:'` ; \
        !           338:        header_base=`echo $(DEV_HEADER_DIR_BASE) | sed '/^[^/]/s:^:../:'` ; \
        !           339:        project_header_base=`echo $(DEV_PROJECT_HEADER_DIR_BASE) | sed '/^[^/]/s:^:../:'` ; \
        !           340:         propogated_cflags=`echo $(PROPOGATED_CFLAGS) | sed 's:-I../:-I../../:g'` 
        !           341: 
        !           342: use_absolute_directory_args = \
        !           343:       $(PUSHD) $(PRODUCT_ROOT) ; abs_prod_root=`pwd` ; $(POPD) ; \
        !           344:       prod_root=$$abs_prod_root ; \
        !           345:       $(PUSHD) $(TOP_PRODUCT_ROOT) ; abs_top_prod_root=`pwd` ; $(POPD) ; \
        !           346:       top_prod_root=$$abs_top_prod_root ; \
        !           347:       $(PUSHD) $(OFILE_DIR) ; abs_ofile_dir=`pwd` ; $(POPD) ; \
        !           348:       ofile_dir=$$abs_ofile_dir ; \
        !           349:       $(PUSHD) $(SYM_DIR) ; abs_sym_dir=`pwd` ; $(POPD) ; \
        !           350:       sym_dir=$$abs_sym_dir ; \
        !           351:       $(PUSHD) $(DEV_HEADER_DIR_BASE) ; abs_header_base=`pwd` ; $(POPD) ; \
        !           352:       header_base=$$abs_header_base ; \
        !           353:       $(PUSHD) $(DEV_PROJECT_HEADER_DIR_BASE) ; abs_project_header_base=`pwd` ; $(POPD) ; \
        !           354:       project_header_base=$$abs_project_header_base ; \
        !           355:       propogated_cflags="$(PROPOGATED_CFLAGS)"
        !           356: 
        !           357: 
        !           358: ALL_SUBPROJECTS = $(BUILD_TOOLS) $(SUBPROJECTS) $(BUNDLES) $(FRAMEWORK_SUBPROJECTS) $(LIBRARIES) $(TOOLS) $(LEGACIES)
        !           359: IS_TOPLEVEL = 
        !           360: 
        !           361: # may not be right if tool is renamed without renaming directory name
        !           362: TOOL_NAMES = $(TOOLS=.tproj=)
        !           363: 
        !           364: all_subprojects: $(TOP_PRODUCT_ROOT)
        !           365:        @(if [ -z "$(ONLY_SUBPROJECT)" ] ; then \
        !           366:            if [ -n "$(BUILD_ALL_SUBPROJECTS)" ] ; then \
        !           367:                subdirectories="$(ALL_SUBPROJECTS)" ; \
        !           368:            else \
        !           369:                subdirectories=`$(CHANGES_COMMAND) $(ALL_SUBPROJECTS)` ; \
        !           370:            fi ; \
        !           371:        else \
        !           372:            subdirectories="$(ONLY_SUBPROJECT)" ; \
        !           373:        fi ; \
        !           374:        target=project; \
        !           375:        beginning_msg="Making" ; ending_msg="Finished making" ; \
        !           376:        actual_prod_root=$(PRODUCT_ROOT) ; \
        !           377:        $(recurse_on_subdirectories) ; \
        !           378:        $(check_tools) ; \
        !           379:        if [ -n "$(IS_TOPLEVEL)" -a -z "$(ONLY_SUBPROJECT)" ] ; then \
        !           380:           $(RM) -f $(TOP_PRODUCT_ROOT)/$(CHANGES_FILE_BASE).$(TARGET_ARCH) ; \
        !           381:           $(TOUCH) $(TOP_PRODUCT_ROOT)/$(CHANGES_FILE_BASE).$(TARGET_ARCH) ; \
        !           382:        fi)
        !           383: 
        !           384: $(SUBPROJ_OFILES):
        !           385:        @(subdirectories="$(SUBPROJECTS)"; \
        !           386:        target=project; \
        !           387:        beginning_msg="Making" ; ending_msg="Finished making" ; \
        !           388:        $(recurse_on_subdirectories))
        !           389: 
        !           390: TOOL_NAMES = $(TOOLS:.tproj=)
        !           391: check_tools = \
        !           392:        for tool in $(TOOL_NAMES) none ; do \
        !           393:           if [ $$tool = "none" ] ; then break; fi ; \
        !           394:           tool_file="$$actual_prod_root/$$tool.$(TARGET_ARCH)" ; \
        !           395:           if [ ! -s $$tool_file ] ; then \
        !           396:              echo $$tool_file no longer exists...; \
        !           397:              subdirectories=$$tool.tproj; \
        !           398:              target=project; \
        !           399:              beginning_msg="Making" ; ending_msg="Finished making" ; \
        !           400:              $(recurse_on_subdirectories) ; \
        !           401:           fi ; \
        !           402:        done
        !           403: 
        !           404: recurse_on_subdirectories = \
        !           405:        $(use_default_directory_args) ;\
        !           406:        for sub in $$subdirectories none ; do \
        !           407:           if [ $$sub = "none" ] ; then break; fi ; \
        !           408:           if [ -h $$sub ] ; then \
        !           409:                $(use_absolute_directory_args) ; \
        !           410:           fi ; \
        !           411:            $(PUSHD) $$sub; \
        !           412:           if [ -n "$$beginning_msg" ] ; then \
        !           413:                $(ECHO) $$beginning_msg $$sub ; \
        !           414:           fi ; \
        !           415:           $(MAKE) $$target $(exported_vars) ; \
        !           416:           $(POPD) ; \
        !           417:           if [ -n "$$ending_msg" ] ; then \
        !           418:                $(ECHO) $$ending_msg $$sub ; \
        !           419:           fi ; \
        !           420:        done
        !           421: 
        !           422: 
        !           423: exported_vars = \
        !           424:        "PRODUCT_ROOT = $$prod_root" \
        !           425:        "TOP_PRODUCT_ROOT = $$top_prod_root" \
        !           426:        "OFILE_DIR = $$ofile_dir/$$sub" \
        !           427:        "PRODUCT_PREFIX = $$ofile_dir/$$sub" \
        !           428:        "BUNDLE_DIR = $$prod_root/$$sub" \
        !           429:        "REL_BUNDLE_DIR = $$sub" \
        !           430:        "SYM_DIR = $$sym_dir/$$sub" \
        !           431:        "CODE_GEN_STYLE = $(CODE_GEN_STYLE)" \
        !           432:        "BUILD_OFILES_LIST_ONLY = $(BUILD_OFILES_LIST_ONLY)" \
        !           433:        "TARGET_ARCH = $(TARGET_ARCH)" \
        !           434:        "COMMON_APP_MAKEFILE_DIR = $(COMMON_APP_MAKEFILE_DIR)" \
        !           435:        "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
        !           436:        "MAKEFILEDIR = $(MAKEFILEDIR)" \
        !           437:        "SRCROOT = $(SRCROOT)" \
        !           438:        "OBJROOT = $(OBJROOT)" \
        !           439:        "SYMROOT = $(SYMROOT)" \
        !           440:        "PROPOGATED_CFLAGS = $(PROJ_CFLAGS) $$propogated_cflags -I$$sym_dir" \
        !           441:        "PROPOGATED_FRAMEWORK_CFLAGS = $(ALL_FRAMEWORK_CFLAGS)" \
        !           442:        "PROPOGATED_LDFLAGS = $(PROJECT_SPECIFIC_LDFLAGS) $(PROPOGATED_LDFLAGS)" \
        !           443:        "DEV_HEADER_DIR_BASE = $$header_base" \
        !           444:        "DEV_PROJECT_HEADER_DIR_BASE = $$project_header_base" \
        !           445:        "MULTIPLE_ARCHS = $(MULTIPLE_ARCHS)" \
        !           446:        "SINGLE_ARCH = $(SINGLE_ARCH)" \
        !           447:        "DEPENDENCIES =" \
        !           448:        "ONLY_SUBPROJECT =" \
        !           449:        "RC_ARCHS = $(RC_ARCHS)" \
        !           450:        "RC_CFLAGS = $(RC_CFLAGS)" \
        !           451:        "ALL_ARCH_FLAGS = $(ALL_ARCH_FLAGS)" \
        !           452:        $(projectType_specific_exported_vars)
        !           453: 
        !           454: configure_for_target_archs_exported_vars = \
        !           455:        $(exported_vars) \
        !           456:        $(extra_configure_for_target_archs_exported_vars)
        !           457: 
        !           458: # Finalizing build (e.g. lipo/ln the arch-specific binaries into place)
        !           459: 
        !           460: configure_for_target_archs::
        !           461:        @(subdirectories="$(ALL_SUBPROJECTS)"; \
        !           462:        target=configure_for_target_archs ; \
        !           463:        $(use_default_directory_args) ;\
        !           464:        for sub in $$subdirectories none ; do \
        !           465:           if [ $$sub = "none" ] ; then break; fi ; \
        !           466:           if [ -h $$sub ] ; then \
        !           467:                $(use_absolute_directory_args) ; \
        !           468:           fi ; \
        !           469:            $(PUSHD) $$sub; \
        !           470:           $(MAKE) $$target $(configure_for_target_archs_exported_vars) ; \
        !           471:           $(POPD) ; \
        !           472:        done)
        !           473: 
        !           474: 
        !           475: 
        !           476: # Finalizing installation
        !           477: 
        !           478: STRIP_ON_INSTALL = YES
        !           479: 
        !           480: finalize_install_exported_vars = \
        !           481:        "DSTROOT = $(DSTROOT)" \
        !           482:        "OBJROOT = $(OBJROOT)" \
        !           483:        "SYMROOT = $(SYMROOT)" \
        !           484:        "SYM_DIR = $(SYM_DIR)" \
        !           485:        "DEVROOT = $(DEVROOT)" \
        !           486:        "INSTALLDIR = $(INSTALLDIR)" \
        !           487:        "PRODUCT_ROOT = $(PRODUCT_ROOT)" \
        !           488:        "PRODUCT = $(PRODUCT)" \
        !           489:        "OFILE_DIR = $(OFILE_DIR)" \
        !           490:        "PROJ_CFLAGS = $(PROJ_CFLAGS)" \
        !           491:         "COMMON_APP_MAKEFILE_DIR = $(COMMON_APP_MAKEFILE_DIR)" \
        !           492:        "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
        !           493:        "MAKEFILEDIR = $(MAKEFILEDIR)" \
        !           494:        "RC_CFLAGS = $(RC_CFLAGS)" \
        !           495:        "RC_ARCHS = $(RC_ARCHS)" \
        !           496:        $(extra_finalize_install_exported_vars)
        !           497: 
        !           498: # Finalizing build (e.g. lipo/ln the arch-specific binaries into place)
        !           499: 
        !           500: finalize_install:: strip_myself after_install
        !           501:        @(subdirectories="$(ALL_SUBPROJECTS)"; \
        !           502:        target=finalize_install ; \
        !           503:        $(use_default_directory_args) ;\
        !           504:        for sub in $$subdirectories none ; do \
        !           505:           if [ $$sub = "none" ] ; then break; fi ; \
        !           506:           if [ -h $$sub ] ; then \
        !           507:                $(use_absolute_directory_args) ; \
        !           508:           fi ; \
        !           509:            $(PUSHD) $$sub; \
        !           510:           $(MAKE) $$target $(finalize_install_exported_vars) ; \
        !           511:           $(POPD) ; \
        !           512:        done)
        !           513: 
        !           514: strip_myself::
        !           515: 
        !           516: after_install::
        !           517: 
        !           518: 
        !           519: # Resources stuff:
        !           520: 
        !           521: GENERATED_RESOURCES = `echo *.info > /dev/null 2>&1`
        !           522: 
        !           523: # The following rule insures that resources for this particular level in the project hierarchy get copied over to the appropriate place in the PRODUCT_ROOT.  Note that we depend on VPATH including $(LANGUAGE).lproj so that the LOCAL_RESOURCES are found correctly.  FASTCP is used to minimize the copying of files, since most resources are likely to be up to date most of the time.
        !           524: 
        !           525: resources:: $(LOCAL_RESOURCES) $(GLOBAL_RESOURCES) $(HELP_STORES) $(OTHER_RESOURCES)
        !           526:        @(if [ "$(PRODUCT_ROOT)" != "." ] ; then \
        !           527:                $(MKDIRS) $(PRODUCT_ROOT)/$(LANGUAGE).lproj ; \
        !           528:        fi ; \
        !           529:        if [ "$(LOCAL_RESOURCES)" != "" ] ; then \
        !           530:           locals="" ; \
        !           531:           for resource in $(LOCAL_RESOURCES) none ; do   \
        !           532:              insert="true"; \
        !           533:              for helpdir in $(HELP_DIRS) $(OTHER_HELP_DIRS) none ; do \
        !           534:                 if [ "$$resource" = "$$helpdir" ] ; \
        !           535:                    then insert="false"; \
        !           536:                 fi ; \
        !           537:              done ; \
        !           538:              if [ "$$insert" = "true" ] ; then \
        !           539:                 locals="$$locals $$resource" ; \
        !           540:              fi ; \
        !           541:           done ; \
        !           542:           $(FASTCP) $$locals $(PRODUCT_ROOT)/$(LANGUAGE).lproj ; \
        !           543:        fi ; \
        !           544:        $(FASTCP) $(GLOBAL_RESOURCES) $(GENERATED_RESOURCES) $(PRODUCT_ROOT))
        !           545: 
        !           546: 
        !           547: # rules for copying, cleaning and making dependencies
        !           548: 
        !           549: installsrc:: SRCROOT
        !           550:        @($(MAKE) copy "DEST=$(SRCROOT)" \
        !           551:                       "COMMON_APP_MAKEFILE_DIR = $(COMMON_APP_MAKEFILE_DIR)" \
        !           552:                       "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
        !           553:                       "MAKEFILEDIR = $(MAKEFILEDIR)" )
        !           554: 
        !           555: copy:: $(NAME).copy $(BUNDLES:.bproj=.copy) \
        !           556:                    $(SUBPROJECTS:.subproj=.copy) \
        !           557:                    $(TOOLS:.tproj=.copy)
        !           558: 
        !           559: $(NAME).copy:: DEST $(DEST) $(SRCFILES)
        !           560:        @(if [ "$(SRCFILES)" != "" ] ; then \
        !           561:               $(ECHO) "$(TAR) cf - $(SRCFILES) | (cd $(DEST); $(TAR) xf -)" ; \
        !           562:               $(TAR) cf - $(SRCFILES) | (cd $(DEST); $(TAR) xf -) ; \
        !           563:        fi ; \
        !           564:        $(MKDIRS) $(DEST)/$(LANGUAGE).lproj ; \
        !           565:        if [ "$(LOCAL_RESOURCES)" != "" ] ; then \
        !           566:           $(ECHO) "(cd $(LANGUAGE).lproj; $(TAR) cf - $(LOCAL_RESOURCES)) | (cd $(DEST)/$(LANGUAGE).lproj; $(TAR) xf - )" ; \
        !           567:           (cd $(LANGUAGE).lproj; $(TAR) cf - $(LOCAL_RESOURCES)) | (cd $(DEST)/$(LANGUAGE).lproj; $(TAR) xf -) ; \
        !           568:        fi ; \
        !           569:        supportfiles="" ; \
        !           570:        for i in $(SUPPORTFILES) $(APPICON) $(DOCICONS) none ; do \
        !           571:            if [ -r $$i -a ! -r $(DEST)/$$i ] ; then \
        !           572:                supportfiles="$$supportfiles $$i" ; \
        !           573:            fi ; \
        !           574:        done ; \
        !           575:        if [ "$$supportfiles" != "" ] ; then \
        !           576:           $(ECHO) "$(TAR) cf - $$supportfiles | (cd $(DEST); $(TAR) xf -)" ; \
        !           577:           $(TAR) cf - $$supportfiles | (cd $(DEST); $(TAR) xf -) ; \
        !           578:        fi)
        !           579: 
        !           580: .bproj.copy .subproj.copy .tproj.copy:
        !           581:        @(cd $<; $(MAKE) copy "NAME=$*" "DEST=$(DEST)/$<")
        !           582: 
        !           583: .bproj.clean .subproj.clean .tproj.clean:
        !           584:        @(echo Cleaning $<... ; cd $<; \
        !           585:          $(MAKE) clean "NAME=$*")
        !           586: 
        !           587: .bproj.depend .subproj.depend .tproj.depend:
        !           588:        @(sym_dir=`echo $(SYM_DIR) | sed '/^[^/]/s:^:../:'` ; \
        !           589:        cd $<; \
        !           590:        $(MAKE) depend "NAME=$*" \
        !           591:                       "PROPOGATED_CFLAGS = $(PROJ_CFLAGS) $(PROPOGATED_CFLAGS) -I$$sym_dir/$<" )
        !           592: 
        !           593: 
        !           594: 
        !           595: # Build a set of dependencies for current level into Makefile.depndencies 
        !           596:    
        !           597: Makefile.dependencies:: $(CLASSES) $(MFILES) $(CFILES) $(CCFILES) $(CAPCFILES) $(CAPMFILES) $(CXXFILES) $(CPPFILES) $(INITIAL_TARGETS)
        !           598:        @($(RM) -f Makefile.dependencies ; \
        !           599:        if [ "`$(ECHO) $(CLASSES) $(MFILES) $(CFILES) $(CCFILES) $(CAPCFILES) $(CAPMFILES) $(CXXFILES) $(CPPFILES) | wc -w`" != "       0" ] ; then \
        !           600:                if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
        !           601:                        language_cflags="" ; \
        !           602:                else \
        !           603:                        language_cflags="-DKANJI" ; \
        !           604:                fi ; \
        !           605:                $(ECHO) "$(CC) -MM $(PROJ_CFLAGS) $(PROPOGATED_CFLAGS) -I$(SYM_DIR)  $$language_cflags $(CLASSES) $(MFILES) $(CFILES) $(CCFILES) $(CAPCFILES) $(CAPMFILES) $(CXXFILES) $(CPPFILES) > Makefile.dependencies" ; \
        !           606:                $(CC) -MM $(PROJ_CFLAGS) $(PROPOGATED_CFLAGS) -I$(SYM_DIR)  $$language_cflags $(CLASSES) $(MFILES) $(CFILES) $(CCFILES) $(CAPCFILES) $(CAPMFILES) $(CXXFILES) $(CPPFILES) > Makefile.dependencies || ($(RM) -f Makefile.dependencies ; exit 1) ; \
        !           607:        fi );
        !           608: 
        !           609: 
        !           610: SRCROOT DEST:
        !           611:        @if [ -n "${$@}" ]; then exit 0; \
        !           612:        else $(ECHO) Must define $@; exit 1; fi
        !           613: 
        !           614: $(DEST)::
        !           615:        -$(RM) -rf $(DEST)
        !           616:        @$(MKDIRS) $(DEST)
        !           617: 
        !           618:                
        !           619: # Header stuff:
        !           620: 
        !           621: DEV_HEADER_DIR_BASE = $(SYMROOT)
        !           622: DEV_PROJECT_HEADER_DIR_BASE = $(SYMROOT)
        !           623: DEV_PUBLIC_HEADER_DIR  = $(DEV_HEADER_DIR_BASE)/Headers
        !           624: DEV_PROJECT_HEADER_DIR = $(DEV_PROJECT_HEADER_DIR_BASE)/ProjectHeaders
        !           625: DEV_PRIVATE_HEADER_DIR = $(DEV_HEADER_DIR_BASE)/PrivateHeaders
        !           626: 
        !           627: installhdrs::  
        !           628:        @(echo == Making installhdrs for $(NAME) == ; \
        !           629:        $(MAKE) copy_all_headers \
        !           630:                 "PUBLIC_HEADER_DEST_DIR = $(DSTROOT)$(PUBLIC_HEADER_DIR)" \
        !           631:                 "PROJECT_HEADER_DEST_DIR =" \
        !           632:                 "PRIVATE_HEADER_DEST_DIR = $(DSTROOT)$(PRIVATE_HEADER_DIR)" \
        !           633:                 "HEADER_COPY_CMD = $(FASTCP)" \
        !           634:                 "COMMON_APP_MAKEFILE_DIR = $(COMMON_APP_MAKEFILE_DIR)" \
        !           635:                "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
        !           636:                "MAKEFILEDIR = $(MAKEFILEDIR)" \
        !           637:                "RC_CFLAGS = $(RC_CFLAGS)" \
        !           638:                "SYMROOT = $(SYMROOT)" \
        !           639:                "DSTROOT = $(DSTROOT)")
        !           640: 
        !           641: copy_all_headers:: copy_my_headers after_installhdrs
        !           642:        @(for dir in $(ALL_SUBPROJECTS) none ; do \
        !           643:          if [ $$dir = "none" ] ; then break; fi ; \
        !           644:          $(PUSHD) $$dir; $(ECHO) Installing headers for $$dir ; \
        !           645:          $(MAKE) copy_all_headers \
        !           646:                   "PUBLIC_HEADER_DEST_DIR = $(PUBLIC_HEADER_DEST_DIR)" \
        !           647:                   "PROJECT_HEADER_DEST_DIR = $(PROJECT_HEADER_DEST_DIR)" \
        !           648:                   "PRIVATE_HEADER_DEST_DIR = $(PRIVATE_HEADER_DEST_DIR)" \
        !           649:                   "HEADER_COPY_CMD = $(HEADER_COPY_CMD)" \
        !           650:                    "COMMON_APP_MAKEFILE_DIR = $(COMMON_APP_MAKEFILE_DIR)" \
        !           651:                   "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
        !           652:                   "MAKEFILEDIR = $(MAKEFILEDIR)" \
        !           653:                   "DSTROOT = $(DSTROOT)" \
        !           654:                   "SRCROOT = $(SRCROOT)" \
        !           655:                   "OBJROOT = $(OBJROOT)" \
        !           656:                   "SYMROOT = $(SYMROOT)" ; \
        !           657:           $(POPD) ; \
        !           658:        done)
        !           659: 
        !           660: 
        !           661: export_headers:
        !           662:        @(if [ "$(IS_TOPLEVEL)" = "YES" \
        !           663:               -a "$(EXPORT_PROJECT_HEADERS)" = "YES" ] ; then \
        !           664:                $(ECHO) Exporting project headers... ; \
        !           665:                $(MAKE) export_project_headers \
        !           666:                        "DEV_PUBLIC_HEADER_DIR =" \
        !           667:                        "DEV_PRIVATE_HEADER_DIR =" \
        !           668:                                "COMMON_APP_MAKEFILE_DIR = $(COMMON_APP_MAKEFILE_DIR)"\
        !           669:                        "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
        !           670:                        "MAKEFILEDIR = $(MAKEFILEDIR)" \
        !           671:                        "DSTROOT = $(DSTROOT)" \
        !           672:                        "SRCROOT = $(SRCROOT)" \
        !           673:                        "OBJROOT = $(OBJROOT)" \
        !           674:                        "SYMROOT = $(SYMROOT)" ; \
        !           675:                $(ECHO) Finished exporting project headers. ; \
        !           676:        fi)
        !           677: 
        !           678: export_project_headers:
        !           679:        @($(MAKE) copy_my_headers \
        !           680:                "PUBLIC_HEADER_DEST_DIR = $(DEV_PUBLIC_HEADER_DIR)" \
        !           681:                "PROJECT_HEADER_DEST_DIR = $(DEV_PROJECT_HEADER_DIR)" \
        !           682:                "PRIVATE_HEADER_DEST_DIR = $(DEV_PRIVATE_HEADER_DIR)" \
        !           683:                "HEADER_COPY_CMD = $(FASTLN)" \
        !           684:                 "COMMON_APP_MAKEFILE_DIR = $(COMMON_APP_MAKEFILE_DIR)" \
        !           685:                "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
        !           686:                "MAKEFILEDIR = $(MAKEFILEDIR)" \
        !           687:                "DSTROOT = $(DSTROOT)" \
        !           688:                "SRCROOT = $(SRCROOT)" \
        !           689:                "OBJROOT = $(OBJROOT)" \
        !           690:                "SYMROOT = $(SYMROOT)" ; \
        !           691:                subdirectories="$(ALL_SUBPROJECTS)"; \
        !           692:                target=export_project_headers ; \
        !           693:                $(recurse_on_subdirectories))
        !           694:                         
        !           695: copy_my_headers:: $(PUBLIC_HEADERS) $(OTHER_PUBLIC_HEADERS) $(PROJECT_HEADERS) $(OTHER_PROJECT_HEADERS) $(PRIVATE_HEADERS) $(OTHER_PRIVATE_HEADERS)
        !           696:        @(if [ \( -n "$(PUBLIC_HEADERS)" -o \
        !           697:               -n "$(OTHER_PUBLIC_HEADERS)" \) -a \
        !           698:               -n "$(PUBLIC_HEADER_DEST_DIR)" ] ; then \
        !           699:           $(MKDIRS) $(PUBLIC_HEADER_DEST_DIR) ; \
        !           700:           $(HEADER_COPY_CMD) $(PUBLIC_HEADERS) $(OTHER_PUBLIC_HEADERS) $(PUBLIC_HEADER_DEST_DIR) ; \
        !           701:        fi ; \
        !           702:        if [ \( -n "$(PROJECT_HEADERS)" -o \
        !           703:             -n "$(OTHER_PROJECT_HEADERS)" \) -a \
        !           704:             -n "$(PROJECT_HEADER_DEST_DIR)" ] ; then \
        !           705:           $(MKDIRS) $(PROJECT_HEADER_DEST_DIR) ; \
        !           706:           $(HEADER_COPY_CMD) $(PROJECT_HEADERS) $(OTHER_PROJECT_HEADERS) $(PROJECT_HEADER_DEST_DIR) ; \
        !           707:        fi ; \
        !           708:        if [ \( -n "$(PRIVATE_HEADERS)" -o \
        !           709:             -n "$(OTHER_PRIVATE_HEADERS)" \) -a \
        !           710:             -n "$(PRIVATE_HEADER_DEST_DIR)" ] ; then \
        !           711:           $(MKDIRS) $(PRIVATE_HEADER_DEST_DIR) ; \
        !           712:           $(HEADER_COPY_CMD) $(PRIVATE_HEADERS) $(OTHER_PRIVATE_HEADERS) $(PRIVATE_HEADER_DEST_DIR) ; \
        !           713:        fi)
        !           714: 
        !           715: after_installhdrs::
        !           716:        @(if [ -n "$(PUBLIC_PRECOMPILED_HEADERS)" -a -n "$(PUBLIC_HEADER_DIR)" ] ; then \
        !           717:           cd $(DSTROOT)/$(PUBLIC_HEADER_DIR) ; \
        !           718:           for header in $(PUBLIC_PRECOMPILED_HEADERS) none ; do \
        !           719:              if [ $$header = "none" ] ; then break; fi ; \
        !           720:              cmd="cc -precomp $(PUBLIC_PRECOMPILED_HEADERS_CFLAGS) $(RC_CFLAGS) $$header";\
        !           721:              $(ECHO) $$cmd ; $$cmd ; \
        !           722:           done ; \
        !           723:        fi)
        !           724: 
        !           725: 
        !           726: # Cleaning stuff:      
        !           727: 
        !           728: clean:: 
        !           729:        @(echo == Making clean for $(NAME) == ; \
        !           730:        $(set_bundle_ext) ; \
        !           731:        $(process_target_archs) ; \
        !           732:        if [ -n "$(CLEAN_ALL_SUBPROJECTS)" ] ; then \
        !           733:           $(MAKE) actual_clean really_clean \
        !           734:                   "DEV_HEADER_DIR_BASE = $(DEV_HEADER_DIR_BASE)" \
        !           735:                   "BUNDLE_EXTENSION = $$bundle_ext" \
        !           736:                   "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
        !           737:                           "COMMON_APP_MAKEFILE_DIR = $(COMMON_APP_MAKEFILE_DIR)" \
        !           738:                    "SYMROOT = $$symroot" \
        !           739:                    "OBJROOT = $$objroot" ; \
        !           740:        else \
        !           741:           $(MAKE) actual_clean "BUNDLE_EXTENSION = $$bundle_ext" \
        !           742:                   "DEV_HEADER_DIR_BASE = $(DEV_HEADER_DIR_BASE)" \
        !           743:                   "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
        !           744:                           "COMMON_APP_MAKEFILE_DIR = $(COMMON_APP_MAKEFILE_DIR)" \
        !           745:                    "SYMROOT = $$symroot" \
        !           746:                    "OBJROOT = $$objroot" ; \
        !           747:        fi )
        !           748:        
        !           749: actual_clean:: $(NAME).clean 
        !           750: 
        !           751: really_clean::         
        !           752:        @(subdirectories="$(ALL_SUBPROJECTS)" ;\
        !           753:        target="actual_clean really_clean"; \
        !           754:        beginning_msg="Cleaning" ; ending_msg="Finished cleaning" ; \
        !           755:        $(recurse_on_subdirectories))
        !           756: 
        !           757: $(NAME).clean::
        !           758:        @if [ ! -w . ] ; then $(ECHO) '***' project write-protected; exit 1 ; fi
        !           759:        $(RM) -rf $(GARBAGE)
        !           760: 
        !           761: 
        !           762: # Misc. old stuff:
        !           763: 
        !           764: writable::
        !           765:        @chmod -R +w *
        !           766: 
        !           767: protected::
        !           768:        @chmod -R a-w *
        !           769: 
        !           770: 

unix.superglobalmegacorp.com

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