###############################################################################
#  NeXT Makefile.postamble
#  Copyright 1996, NeXT Software, Inc.
#
#  This Makefile is used for configuring the standard app makefiles associated
#  with ProjectBuilder.  
#  
#  Use this template to set attributes for a project, sub-project, bundle, or
#  palette.  Each node in the project's tree of sub-projects and bundles 
#  should have it's own Makefile.preamble and Makefile.postamble.  Additional
#  rules (e.g., after_install) that are defined by the developer should be
#  defined in this file.
#
###############################################################################
# 
# Here are the variables exported by the common "app" makefiles that can be 
# used in any customizations you make to the template below:
# 
#	PRODUCT_ROOT - Name of the directory to which resources are copied.
#	OFILE_DIR - Directory into which .o object files are generated.
#		    (Note that this name is calculated based on the target 
#		     architectures specified in Project Builder).
#	DERIVED_SRC_DIR - Directory used for all other derived files
#	ALL_CFLAGS - All the flags passed to the cc(1) driver for compilations
#
#	NAME - name of application, bundle, subproject, palette, etc.
#	LANGUAGE - langage in which the project is written (default "English")
#	LOCAL_RESOURCES - localized resources (e.g. nib's, images) of project
#	GLOBAL_RESOURCES - non-localized resources of project
#	PROJECTVERSION - version of ProjectBuilder project (NS3.X = 1.1, NS4.0 = 2.0)
#	ICONSECTIONS - Specifies icon sections when linking executable 
#
#	CLASSES - Class implementation files in project.
#	HFILES - Header files in project.
#	MFILES - Other Objective-C source files in project. 
#	CFILES - Other C source files in project. 
#	PSWFILES - .psw files in the project
#	PSWMFILES - .pswm files in the project
#	SUBPROJECTS - Subprojects of this project
#	BUNDLES - Bundle subprojects of this project
#	OTHERSRCS - Other miscellaneous sources of this project
#	OTHERLINKED - Source files not matching a standard source extention
#
#	LIBS - Libraries to link with when making app target
#	DEBUG_LIBS - Libraries to link with when making debug target
#	PROF_LIBS - Libraries to link with when making profile target
#	OTHERLINKEDOFILES - Other relocatable files to (always) link in.
#
#	APP_MAKEFILE_DIR - Directory in which to find generic set of Makefiles
#	MAKEFILEDIR - Directory in which to find $(MAKEFILE)
#	MAKEFILE - Top level mechanism Makefile (e.g., app.make, bundle.make)
#	INSTALLDIR - Directory app will be installed into by 'install' target
#
###############################################################################


# Change defaults assumed by the standard makefiles here.  Edit the 
# following default values as appropriate. (Note that if no Makefile.postamble 
# exists, these values will have defaults set in common.make).

# Versioning of frameworks, libraries, bundles, and palettes:
#CURRENTLY_ACTIVE_VERSION = YES
       # Set to "NO" to produce a compatibility binary
#DEPLOY_WITH_VERSION_NAME = A
       # This should be incremented as your API changes.
#COMPATIBILITY_PROJECT_VERSION = 1
       # This should be incremented as your API grows.
#CURRENT_PROJECT_VERSION = 1       
       # Defaults to using the "vers_string" hack.

# Some compiler flags can be easily overridden here, but onlytake effect at 
# the top-level:
#OPTIMIZATION_CFLAG = -O
#DEBUG_SYMBOLS_CFLAG = -g
#WARNING_CFLAGS = -Wmost
#DEBUG_BUILD_CFLAGS = -DDEBUG
#PROFILE_BUILD_CFLAGS = -pg -DPROFILE

# This definition will suppress stripping of debug symbols when an executable
# is installed.  By default it is YES.
# STRIP_ON_INSTALL = NO

# Flags passed to yacc
#YFLAGS = -d

# Library and Framework projects only:
# 1. If you want something other than the default .dylib name, override it here
#DYLIB_INSTALL_NAME = lib$(NAME).dylib

# 2. If you want to change the -install_name flag from the absolute
#    path to the development area, change it here.  One good choice is the
#    installation directory.  Another one might be none at all.
#DYLIB_INSTALL_DIR = $(INSTALLDIR)

# Ownership and permissions of files installed by 'install' target
#INSTALL_AS_USER = root
        # User/group ownership 
#INSTALL_AS_GROUP = wheel
        # (probably want to set both of these) 
#INSTALL_PERMISSIONS =
        # If set, 'install' chmod's executable to this

# Options to strip for various project types. Note: -S strips
#    debugging symbols (executables can be stripped down further with
#    -x or, if they load no bundles, with no options at all).
#APP_STRIP_OPTS = -S
#TOOL_STRIP_OPTS = -S
#LIBRARY_STRIP_OPTS = -S
        # for .a archives
#DYNAMIC_STRIP_OPTS = -S
        # for bundles and shared libraries

#########################################################################
# Put rules to extend the behavior of the standard Makefiles here.  "Official" 
# user-defined rules are:
#   * before_install
#   * after_install
#   * after_installhdrs
# You should avoid redefining things like "install" or "app", as they are
# owned by the top-level Makefile API and no context has been set up for where 
# derived files should go.
#
# Note: on MS Windows, executables, have an extension, so rules and dependencies
#       for generated tools should use $(EXECUTABLE_EXT) on the end.

# Populate these directories with appropriate symlinks to anything we need.
populate: banner-for-populate $(RECURSABLE_DIRS:%=populate@%)

$(RECURSABLE_DIRS:%=populate@%): banner-for-populate

# Create a Makefile.config containing the same information of config.h.
# The easier way is using Good Old Perl on config.status. This of course
# hardwire us on the format of the latter... XXX better way?
#
# The resulting chunk of makefile will contain lots of macros, in the
# form
#   AC_name_of_autoconf_define = computed_value
#
MAKEIFY_CONFIG :=							\
$$done = {};								\
while (<>) {								\
  if (/^s%@/) {								\
    ($$dummy, $$var, $$value) = split ("%", $$_);			\
    $$var = substr ($$var, 1, length ($$var)-2);			\
    }									\
  elsif (/^\$$\{ac/) {							\
    ($$dummy, $$var, $$var, $$value) = split (/\$$\{ac_..\}/);		\
    }									\
  else { next; }							\
  if (! defined($$done{$$var})) {					\
    ($$value = $$value) =~ s/\$$\{([^\}]*)\}/\$$\{AC_\1\}/g;		\
    print "AC_", $$var, " = ", $$value, "\n";				\
    $$done{$$var} = 1;							\
  }									\
}

Makefile.config: $(PY_SOURCE_DIR)/config.status
	perl -e '$(MAKEIFY_CONFIG)' $> > $@
	$(MAKE) populate

banner-for-all: Makefile.config

banner-for-install: Makefile.config
