Annotation of objc/common.make, revision 1.1.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.