[% FILTER null;
#==============================================================================
# TemplateToolkit2 common control values for MSVC6 and MSVC7 project generation
# Copyright (C) 2004 by Eric Sunshine <sunshine@sunshineco.com>
#
#    This library is free software; you can redistribute it and/or modify it
#    under the terms of the GNU Library General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or (at your
#    option) any later version.
#
#    This library is distributed in the hope that it will be useful, but
#    WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
#    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
#    License for more details.
#
#    You should have received a copy of the GNU Library General Public License
#    along with this library; if not, write to the Free Software Foundation,
#    Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#==============================================================================

#------------------------------------------------------------------------------
# Within the project, the listing of files comprising that project is broken
# into groups based upon file types.  The groups[] array of hashes defines the
# groups into which the file will be placed.  Each hash contains the following
# keys:
#
#    name
#        Provides a human-readable name for the group within the project file.
#    types
#        Regular expression controlling which files will be used to populate
#        the group.  Filenames matching `types' will be included in the group.
#------------------------------------------------------------------------------
groups = [
  {
    name => 'Source Files'
    types => '\.(?i:c|cc|cpp|cxx|m|mm)$'
  },
  {
    name => 'Header Files'
    types => '\.(?i:h|hh|hpp|hxx)$'
  },
  {
    name => 'Resource Files'
    types => '\.(?!(?i:h|hh|hpp|hxx|c|cc|cpp|cxx|m|mm)$)\w*$'
  }
];

#------------------------------------------------------------------------------
# Each project file can support multiple build configurations, such as Release
# and Debug.  The builds[] array of hashes defines the build modes which will
# appear in the project file.  Each hash provides fine-grained control of
# settings specific to a particular build modes.  Other than `tag', `name', and
# `priority', the hash keys are fairly arbitrary.  The remaining keys are
# accessed by the compose() macro (macros.tlib) based upon an essentially
# arbitrary name given to compose() upon each invocation.
#
#    tag
#        String often used in construction of pathnames for temporary
#        build-time files in order to prevent one build configuration from
#        stomping upon the files of another.  Also used in composition of macro
#        names by interpolate() (macros.tlib) when searching for customizations
#        contained in the projectx{6,7}.tlib files.
#    name
#        Human-readable name of this configuration.
#    priority
#        Assign a relative priority to this build mode over others.  Lower
#        numbers indicate higher priority.  MSVC6 determines the "default"
#        build mode based upon the (reverse) order in which it encounters build
#        mode names in the project file header, so the MSVC6 project template
#        utilizes this field to ensure that the mode with the highest priority
#        is the one chosen by default by MSVC6.
#
# These keys are optional; they are accessed by the compose() macro
# (macros.tlib) when compose() is invoked by the project template to retrieve a
# list of preprocessor #defines, compiler flags, etc.
#
#    defines
#        Array of additional preprocessor #defines for this build mode.
#    defineskey
#        Name of key in `my.doc' hash specifying array of additional #defines
#        for this build mode for the specific project being generated.
#    cflags
#        Array of additional compiler flags for this build mode.
#    cflagsskey
#        Name of key in `my.doc' hash specifying array of additional compiler
#        flags for this build mode for the specific project being generated.
#    incdirskey
#        Name of the key in `my.doc' hash specifying array of additional header
#        search directories for this build mode for the specific project being
#        generated.
#    lflags
#        Array of additional linker flags for this build mode.
#    lflagskey
#        Name of key in `my.doc' hash specifying array of additional linker
#        flags for this build mode for the specific project being generated.
#    libs
#        Array of additional library dependencies (including .lib suffix) for
#        this build mode.
#    libskey
#        Name of key in `my.doc' hash specifying array of additional library
#        dependencies for this build mode for the specific project being
#        generated.
#    libdirskey
#        Name of the key in `my.doc' hash specifying array of additional
#        library search directories for this build mode for the specific
#        project being generated.
#------------------------------------------------------------------------------
builds = [
  {
    tag => 'release',
    name => 'Release',
    defines => ['NDEBUG'],
    defineskey => 'define',
    cflagskey => 'cflags',
    incdirskey => 'include',
    lflagskey => 'lflags',
    libskey => 'library',
    libdirskey => 'libdir',
    priority => 100
  },
  {
    tag => 'debug',
    name => 'Debug',
    defines => ['_DEBUG'],
    defineskey => 'definedebug',
    cflagskey => 'cflagsdebug',
    incdirskey => 'includedebug',
    lflagskey => 'lflagsdebug',
    libskey => 'librarydebug',
    libdirskey => 'libdirdebug',
    priority => 200
  }
];

#------------------------------------------------------------------------------
# The projtypes[] array defines the different types of built targets (GUI
# application, DLL, library, etc.) which a project file might represent.  The
# client will choose one of these keys as the type of project desired.  The
# value of each key is a hash specifying additional customization of the
# project based upon its type.  The keys of the subhash are the same as the
# optional keys described above for the builds[] array ('defines', 'cflags',
# and so forth; but not the 'defineskey', 'cflagskey', etc.).
#------------------------------------------------------------------------------
projtypes = {
  appcon =>
  {
    defines = ['_CONSOLE']
  },
  appgui =>
  {
    defines = ['_WINDOWS']
  },
  group =>
  {
  },
  library =>
  {
    defines = ['_LIB', '_WINDOWS']
  },
  plugin =>
  {
    defines = ['_WINDOWS'],
    libs = ['delayimp.lib']
  }
};

END %]
