bullet3/mk/msvcgen/control.tlib
2006-05-25 19:18:29 +00:00

168 lines
6.7 KiB
Plaintext

[% 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'],
snpreprocessor => 'SN_TARGET_PS3;NDEBUG;__GCC__',
snadditional => '-O2 -Wall -fno-exceptions',
defineskey => 'define',
cflagskey => 'cflags',
incdirskey => 'include',
lflagskey => 'lflags',
libskey => 'library',
libdirskey => 'libdir',
priority => 100
},
{
tag => 'debug',
name => 'Debug',
defines => ['_DEBUG'],
snpreprocessor => 'SN_TARGET_PS3;_DEBUG;__GCC__',
snadditional => '-g -O0 -Wall -fno-exceptions',
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']
}
};
END %]