###############################################################################
#  NeXT Makefile.preamble
#  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.  Each node in a project
#  tree of sub-projects, tools, etc. should have its own Makefile.preamble and 
#  Makefile.postamble.
#
###############################################################################
## Configure the flags passed to $(CC) here.  These flags will also be 
## inherited by all nested sub-projects and bundles.  Put your -I, -D, -U, and
## -L flags in ProjectBuilder's Build Options inspector if at all possible.
## To change the default flags that get passed to ${CC} 
## (e.g. change -O to -O2), see Makefile.postamble.

# Flags passed to compiler (in addition to -g, -O, etc)
OTHER_CFLAGS = 
# Flags passed to ld (in addition to -ObjC, etc.)
OTHER_LDFLAGS =	
# Flags passed to libtool when building libraries
OTHER_LIBTOOL_FLAGS =
# For ordering named sections on NEXTSTEP (see ld(1))
SECTORDER_FLAGS =

# If you do not want any headers exported before compilations begin,
# uncomment the following line.  This can be a big time saver.
#SKIP_EXPORTING_HEADERS = YES

# Stuff related to exporting headers from this project that isn't already 
# handled by PB.
OTHER_PUBLIC_HEADERS =
OTHER_PROJECT_HEADERS =
OTHER_PRIVATE_HEADERS =

# Set these two macros if you want a precomp to be built as part of
# installation. The cc -precomp will be run in the public header directory
# on the specified public header files with the specified additional flags.
PUBLIC_PRECOMPILED_HEADERS =
PUBLIC_PRECOMPILED_HEADERS_CFLAGS =

# Set this for library projects if you want to publish header files.  If your 
# app or tool project exports headers  Don't
# include $(DSTROOT); this is added for you automatically.
PUBLIC_HEADER_DIR =
PRIVATE_HEADER_DIR =

# If, in a subproject, you want to append to the parent's PUBLIC_HEADER_DIR# 
# (say, to add a subdirectory like "/sys"), you can use:
PUBLIC_HEADER_DIR_SUFFIX = 
PRIVATE_HEADER_DIR_SUFFIX = 

# Set this for dynamic library projects on platforms where code which references
# a dynamic library must link against an import library (i.e., Windows NT)
# Don't include $(DSTROOT); this is added for you automatically.
IMPORT_LIBRARY_DIR = 

# Additional (non-localized) resources for this project, which can be generated
OTHER_RESOURCES = 

# Uncomment this to produce a static archive-style (.a) library
#LIBRARY_STYLE = STATIC

# Set this to YES if you don't want a final libtool call for a library/framework.
BUILD_OFILES_LIST_ONLY = 

# Additional relocatables to be linked into this project
OTHER_OFILES = 
# Additional libraries to link against
OTHER_LIBS = 
# To include a version string, project source must exist in a directory named 
# $(NAME).%d[.%d][.%d] and the following line must be uncommented.
# OTHER_GENERATED_OFILES = $(VERS_OFILE)

## Configure how things get built here.  Additional dependencies, source files, 
## derived files, and build order should be specified here.

# Other dependencies of this project
OTHER_PRODUCT_DEPENDS =	
# Built *before* building subprojects/bundles
OTHER_INITIAL_TARGETS = 
# Other source files maintained by .pre/postamble
OTHER_SOURCEFILES = 
# Additional files to be removed by `make clean' 
OTHER_GARBAGE = 

# Targets to build before installation
OTHER_INSTALL_DEPENDS =	

# More obscure flags you might want to set for pswrap, yacc, lex, etc.
PSWFLAGS = 
YFLAGS = --yacc
LFLAGS = 

## Delete this line if you want fast and loose cleans that will not remove 
## things like precomps and user-defined OTHER_GARBAGE in subprojects.
CLEAN_ALL_SUBPROJECTS = YES

## Add more obscure source files here to cause them to be automatically 
## processed by the appropriate tool.  Note that these files should also be
## added to "Supporting Files" in ProjectBuilder.  The desired .o files that 
## result from these files should also be added to OTHER_OFILES above so they
## will be linked in.

# .msg files that should have msgwrap run on them
MSGFILES = 
# .defs files that should have mig run on them
DEFSFILES = 
# .mig files (no .defs files) that should have mig run on them
MIGFILES = 
# .x files that should have rpcgen run on them
RPCFILES =

## Add additional Help directories here (add them to the project as "Other 
## Resources" in Project Builder) so that they will be compressed into .store
## files and copied into the app wrapper.  If the help directories themselves
## need to also be in the app wrapper, then a cp command will need to be added
## in an after_install target.
OTHER_HELP_DIRS = 

# After you have saved your project using the 4.0 PB, you will automatically 
# start using the makefiles in $(SYSTEM_DEVELOPER_DIR)/Makefiles/project.  If you should 
# need to revert back to the old 3.3 Makefile behavior, override MAKEFILEDIR to
# be $(SYSTEM_DEVELOPER_DIR)/Makefiles/app.

# Don't add more rules here unless you want the first one to be the default
# target for make!  Put all your targets in Makefile.postamble.

