[% FILTER null; #============================================================================== # TemplateToolkit2 common control values for MSVC6 and MSVC7 project generation # Copyright (C) 2004 by Eric Sunshine # # 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 => 'release_dll', name => 'ReleaseDll', 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 => 'release_dbl', name => 'ReleaseDoublePrecision', defines => ['NDEBUG','BT_USE_DOUBLE_PRECISION'], 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 }, { tag => 'debug_dll', name => 'DebugDll', 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 }, { tag => 'debug_dbl', name => 'DebugDoublePrecision', defines => ['_DEBUG','BT_USE_DOUBLE_PRECISION'], 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','_CRT_SECURE_NO_DEPRECATE','_CRT_NONSTDC_NO_DEPRECATE'] }, appgui => { defines = ['_WINDOWS','_CRT_SECURE_NO_DEPRECATE','_CRT_NONSTDC_NO_DEPRECATE'] }, group => { }, library => { defines = ['_LIB', '_WINDOWS','_CRT_SECURE_NO_DEPRECATE','_CRT_NONSTDC_NO_DEPRECATE'] } }; END %]