moved files around

This commit is contained in:
ejcoumans
2006-05-25 19:18:29 +00:00
commit e061ec1ebf
1024 changed files with 349445 additions and 0 deletions

167
mk/msvcgen/control.tlib Normal file
View File

@@ -0,0 +1,167 @@
[% 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 %]

301
mk/msvcgen/macros.tlib Normal file
View File

@@ -0,0 +1,301 @@
[% FILTER null;
#==============================================================================
# TemplateToolkit2 utility macros for MSVC 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.
#
#==============================================================================
#------------------------------------------------------------------------------
# Return input string with forward slashes changed to backward slashes.
#------------------------------------------------------------------------------
MACRO slash(s) GET s.replace('/','\\');
#------------------------------------------------------------------------------
# Given a path, strip off any prefix found in the my.doc.striproot[] array.
# For example, if my.doc.striproot[] contains '/usr/local/', and this macro is
# invoked as striproot('/usr/local/foo.bar'), then the return value will be
# 'foo.bar'.
#------------------------------------------------------------------------------
MACRO striproot(p) BLOCK;
IF my.doc.striproot;
UNLESS my.doc.striprootpat;
r = [];
FOREACH c IN my.doc.striproot;
IF c != '.';
c = c.replace('[/\\\\]?$', '/?') IF c != './';
r.push(c.replace('[.]', '\\.'));
END;
END;
my.doc.striprootpat = '^(?i:' _ r.join('|') _ ')';
END;
p.replace(my.doc.striprootpat, '');
ELSE;
GET p;
END;
END;
#------------------------------------------------------------------------------
# Given an array of paths, invoke striproot() upon each and return the results.
# Note that, because TemplateToolkit macros can not return true lists, the
# return value is actually a string with the elements delimited by the token
# `|'; thus clients must split() the return value if a real list result is
# desired. For instance: myfiles = striproots(allfiles).split('|')
#------------------------------------------------------------------------------
MACRO striproots(p) BLOCK;
r = [];
FOREACH c IN p;
r.push(striproot(c));
END;
r.join('|');
END;
#------------------------------------------------------------------------------
# Given an array of path components, return the concatenation of the components
# (using backslash '\' as a delimiter) after possibly stripping an optional
# prefix from each component. The list of prefixes which may be stripped are
# found in the my.doc.striproot[] array. For example, if my.doc.striproot[]
# contains '/usr/local/', and this macro is invoked as
# path(['/usr/local/foo', 'bar', 'cow.baz']), then the return value will be
# 'foo\bar\cow.baz'.
#------------------------------------------------------------------------------
MACRO path(p) BLOCK;
r = [];
FOREACH c IN p;
r.push(striproot(c));
END;
slash(r.join('\\'));
END;
#------------------------------------------------------------------------------
# Given a string specifying a set of options for a tool (compiler, linker,
# etc.) of the form `/opt1 "arg1" /opt2 "arg2"' (or `/opt1:arg1 /opt2:arg2', or
# the like), translate forward slashes in `arg' (which is assumed to be a
# pathname) to backward slashes. For example, given
# `/I "foo/bar" /out:cow/baz', returns `/I "foo\bar" /out:cow\baz'.
#------------------------------------------------------------------------------
MACRO flags(s) GET slash(s).replace('\A\\\\','/').replace('\s\\\\',' /');
#------------------------------------------------------------------------------
# Given an array of items, return only the items which match the set of regular
# expressions in my.doc.accept[] and which do not match the set of expressions
# in my.doc.reject[]. For example, if my.doc.accept[] contains the one pattern
# '\.cpp$', and my.doc.reject[] contains the one pattern 'ow', then, given the
# list ['foo.h', 'bar.cpp', 'cow.cpp'], the list of returned items will be
# ['bar.cpp']. Note that, because TemplateToolkit macros can not return true
# lists, the return value is actually a string with the elements delimited by
# the token `|'; thus clients must split() the return value if a real list
# result is desired. For instance: myfiles = filter(allfiles).split('|')
#------------------------------------------------------------------------------
MACRO filter(x) BLOCK;
IF my.doc.accept;
UNLESS my.doc.acceptpat;
my.doc.acceptpat = my.doc.accept.join('|');
END;
x = x.grep(my.doc.acceptpat);
END;
IF my.doc.reject;
UNLESS my.doc.acceptpat;
my.doc.rejectpat = my.doc.reject.join('|');
END;
y = [];
FOREACH i IN x;
UNLESS i.match(my.doc.rejectpat);
y.push(i);
END;
END;
y.join('|');
ELSE;
x.join('|');
END;
END;
#------------------------------------------------------------------------------
# Given an input string, return a globally unique identifier (GUID)
# representing the string (essentially a textual representation of an MD5
# checksum). The returned string has the form
# XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, where each `X' represents some
# (uppercase) hexadecimal digit.
#------------------------------------------------------------------------------
MACRO guid(s) BLOCK;
USE md5 = Digest::MD5;
CALL md5.add(s);
digest = md5.hexdigest.chunk(4);
GET digest.0 _
digest.1 _ '-' _
digest.2 _ '-' _
digest.3 _ '-' _
digest.4 _ '-' _
digest.5 _
digest.6 _
digest.7 | upper;
END;
#------------------------------------------------------------------------------
# Given an arbitrary identifier (the `tag'), attempt to locate macros named
# after variations of that tag and the current build mode and project type;
# then invoke any discovered macros and concatenate their results, delimited by
# `delim' (which may be omitted if no explicit delimiter is needed). Macro
# names are composed of `tag', the current build mode (given by the global
# `build.mode' property, where `build' typically is a reference to a hash
# contained in the global builds[] array), and the current project type as
# indicated by the global my.doc.projtype.0 property. The full list of macros
# consulted by interpolate() is presented below. The macros are invoked in the
# order shown.
#
# tag_build
# tag_projtype
# tag_projtype_build
#------------------------------------------------------------------------------
MACRO interpolate(tag, delim) BLOCK;
p = [];
s = ${"${tag}_${build.tag}"};
p.push(s) IF s.length > 0;
s = ${"${tag}_${my.doc.projtype.0}"};
p.push(s) IF s.length > 0;
s = ${"${tag}_${my.doc.projtype.0}_${build.tag}"};
p.push(s) IF s.length > 0;
GET p.join(delim);
END;
#------------------------------------------------------------------------------
# Given an array of strings, return the concatenation of the elements,
# delimited by `delim'. Prior to concatenation, `prefix' and `suffix' (if
# provided) are attached to each element. For example,
# glue(['foo','bar'],':','<','>') returns "<foo>:<bar>".
#------------------------------------------------------------------------------
MACRO glue(array, delim, prefix, suffix) BLOCK;
delim = suffix _ delim _ prefix;
s = array.join(delim);
IF s.length > 0;
s = prefix _ s _ suffix;
END;
GET s;
END;
#------------------------------------------------------------------------------
# Given an arbitrary identifier (the `tag'), attempt to access several in-scope
# or globally visible arrays in order to extract additional options for a given
# build mode and project type. The elements of the accessed arrays, along with
# a `seed' array, are concatentated, delimited by `delim'. Each element is
# optionally modified by `prefix' and `suffix' as described in the glue()
# macro. The actual list of arrays consulted is:
#
# build.tag
# projtypes.projtype.tag
# my.doc.tagkey
#
# The above list assumes that a hash named `build' is in scope. Typically,
# this is a reference to an element of the global builds[] array
# (control.tlib). Furthermore, `projtype' is shorthand for my.doc.projtype.0,
# which is assumed to exist globally, and is specific to the project being
# generated. Finally, `tagkey' is actually the value of the "${tag}key" key
# within the `build' hash. As a practical example, if generating a project
# file for a "plugin" and emitting the "debug" configuration, given a `tag' of
# "cflags", then the following arrays may be consulted:
#
# build.cflags
# projtypes.plugin.cflags
# my.doc.cflagsdebug
#
# In this example, the name "cflagsdebug" comes from the
# builds['debug'].cflagskey property (control.tlib).
#------------------------------------------------------------------------------
MACRO compose(tag, seed, delim, prefix, suffix) BLOCK;
p = [];
p = p.merge(build.$tag).
merge(projtypes.${my.doc.projtype.0}.$tag).
merge(my.doc.${${"build.${tag}key"}}).
merge(seed);
GET glue(p, delim, prefix, suffix);
END;
#------------------------------------------------------------------------------
# Given an arbitrary `tag', concatenate the list of pathnames in my.doc.tag[],
# along with a `seed' list, delimited by `delim'. Each item is mutated by
# path() prior to concatenation. The optional `prefix' and `suffix' modify
# each item as described in the glue() macro. For example, if my.doc.libdir[]
# contains the elements "foo/bar" and "baz/snorz", then the invocation
# composepaths('libdir',['cow/fish'],' ','/I "','"') will return the string
# `/I "cow\fish" /I "foo\bar" /I "baz\snorz"'. Likewise,
# composepaths('libdir',[],',') will return `foo\bar,baz\snorz'.
#------------------------------------------------------------------------------
MACRO composepaths(tag, seed, delim, prefix, suffix) BLOCK;
p = seed;
FOREACH d IN my.doc.$tag;
p.push(path([d]).replace('\\\\$',''));
END;
GET glue(p, delim, prefix, suffix);
END;
#------------------------------------------------------------------------------
# Loads a data file containing key/value tuples and stores the tuples in the
# hash named my.tag, where `tag' is provided by the caller. The key/value
# tuples appear one per line in the data file, and the key must be separated
# from the value via a literal '|'. The very first line of the data file
# _must_ be the literal string "key|value" (sans quotes). Each key in the data
# file becomes a key in the my.tag hash. Typically, the name "doc" is used for
# `tag', and is meant to represent attributes (such as special compiler and
# linker flags, list of files, etc.) of the current "project file document"
# under construction. Indeed, many of the macros defined here (macros.tlib)
# assume the presence of the my.doc hash, and consult it to learn about
# properties specific to the project file being synthesized. It is legal for
# the same key to appear multiple times in the data file; this is how an array
# of values is defined for a given key. In fact, _all_ values in the hash are
# assumed to be arrays. Consequently, even if you know that a particular key
# will appear in the data file only a single time, you must still perform an
# array access to obtain its value (for instance, `my.doc.projtype.0'). Values
# from the loaded data file are typically accessed via the FOREACH directive
# (for example, `FOREACH cflag IN my.doc.cflags'), but can also be accessed
# individually (`my.doc.cflags.0', `my.doc.cflags.1', etc.).
#------------------------------------------------------------------------------
MACRO load(path, tag) BLOCK;
my.$tag = {};
USE f = datafile(path, delim = '|');
FOREACH r IN f;
IF my.$tag.exists(r.key);
my.$tag.${r.key}.push(r.value);
ELSE;
my.$tag.${r.key} = [ r.value ];
END;
END;
END;
#------------------------------------------------------------------------------
# Build-specific path composition macros.
#
# workroot
# Return the root of the directory hierarchy in which build temporaries
# and some targets will be placed.
# worklibout
# Return the location where built static libraries will be placed.
# workbuild
# Return the location of a build temporary. If `tail' is omitted, then
# this will be the directory into which temporary build output will be
# placed (a subdirectory of `workroot'). If `tail', an array of
# pathname components, is provided, then it can specify a directory or
# file beneath the `workbuild' directory. The elements of `tail' are
# concatenated without any delimiter. For example, workbuild([]) might
# return "..\out\build", whereas workbuild(['myapp']) would return
# "..\out\build\myapp", and workbuild(['myapp/test','.obj']) would
# return "..\out\build\myapp\test.obj".
#------------------------------------------------------------------------------
MACRO workroot GET path([my.doc.buildroot.0, 'out', glue([build.tag, my.doc.msvcversion.0])]);
MACRO worklibout GET path([workroot, 'libs']);
MACRO workbuild(tail)
GET path([workroot, 'build', my.doc.project.0, tail.join('')]);
END %]

129
mk/msvcgen/project6.tlib Normal file
View File

@@ -0,0 +1,129 @@
[% FILTER null;
#==============================================================================
# TemplateToolkit2 template for MSVC6 project (dsp) file.
# 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.
#
#==============================================================================
PROCESS macros.tlib;
PROCESS control.tlib;
PROCESS projectx6.tlib;
MACRO composedefs(defs) GET compose('defines', defs, ' ', '/D "', '"');
MACRO composedirs(tag, seed, directive) BLOCK;
prefix = directive _ '"';
GET composepaths(${"build.${tag}key"}, seed, ' ', prefix, '"');
END;
my = {};
load(respfile, 'doc');
FOREACH f IN my.doc.customize; PROCESS $f | null; END;
files = striproots(filter(my.doc.file).split('\|')).split('\|').sort;
builds = builds.nsort('priority');
END -%]
# Microsoft Developer Studio Project File - Name="[% my.doc.project.0 %]" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) [% projtypes.${my.doc.projtype.0}.type %]" [% projtypes.${my.doc.projtype.0}.typecode %]
CFG=[% my.doc.project.0 %] - Win32 [% builds.0.name %]
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "[% my.doc.project.0 %].mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "[% my.doc.project.0 %].mak" CFG="[% my.doc.project.0 %] - Win32 [% builds.0.name %]"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
[% # MSVC6 uses the last listed build mode as default, so we reverse the list.
FOREACH build IN builds.reverse -%]
!MESSAGE "[% my.doc.project.0 %] - Win32 [% build.name %]" (based on "Win32 (x86) [% projtypes.${my.doc.projtype.0}.type %]")
[% END -%]
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
[% FOREACH build IN builds -%]
![% IF loop.first; 'IF'; ELSE; 'ELSEIF'; END %] "$(CFG)" == "[% my.doc.project.0 %] - Win32 [% build.name %]"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries [% interpolate('usedebuglibs') %]
# PROP BASE Output_Dir "[% build.tag %]"
# PROP BASE Intermediate_Dir "[% build.tag %]"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries [% interpolate('usedebuglibs') %]
# PROP Output_Dir "[% workbuild([]) %]"
# PROP Intermediate_Dir "[% workbuild([]) %]"
[% interpolate('ignoreexportlib') -%]
# PROP Target_Dir ""
# ADD BASE CPP /nologo /vmb /vms /W3 /Gm /G5 /D "WIN32" /FD /c
# ADD CPP /nologo /vmb /vms /W3 /Gm /GX /G5 /FD /c [% interpolate('addcpp', ' ') %] /D "_MT" /D "_MBCS" [% composedefs(['WIN32']) %] [% flags(compose('cflags', [], ' ')) %] [% composedirs('incdirs', ['.'], '/I ') %]
# ADD BASE MTL /nologo /mktyplib203 /o "NUL" /win32
# ADD MTL /nologo /mktyplib203 /o "NUL" /win32 [% composedefs([]) %]
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409 /fo".\[% workbuild([my.doc.project.0,'.res']) %]" [% composedirs('incdirs', ['.'], '/i ') %]
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo [% interpolate('addlib32') %]
LINK32=link.exe
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib /nologo /machine:I386
# ADD LINK32 shell32.lib user32.lib gdi32.lib advapi32.lib [% compose('libs', [], ' ') %] [% interpolate('delaylibs', ' ') %] /nologo /version:4.0 /machine:I386 [% interpolate('linkeropts', ' ') %] [% interpolate('addlink32') %] [% composedirs('libdirs', [], '/libpath:') %] [% flags(compose('lflags', [], ' ')) %]
# Begin Special Build Tool
SOURCE="$(InputPath)"
[% interpolate('postbuild') -%]
# End Special Build Tool
[% END -%]
!ENDIF
# Begin Target
[% FOREACH build IN builds -%]
# Name "[% my.doc.project.0 %] - Win32 [% build.name %]"
[% END -%]
[% FOREACH group IN groups -%]
[% items = files.grep(group.types) -%]
[% IF items.size > 0 -%]
# Begin Group "[% group.name %]"
# PROP Default_Filter ""
[% FOREACH file IN items -%]
# Begin Source File
SOURCE=[% path([my.doc.sourceroot.0, file]) %]
# End Source File
[% END -%]
# End Group
[% END -%]
[% END -%]
# End Target
# End Project

146
mk/msvcgen/project7.tlib Normal file
View File

@@ -0,0 +1,146 @@
[% FILTER null;
#==============================================================================
# TemplateToolkit2 template for MSVC7 project (vcproj) file.
# 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.
#
#==============================================================================
PROCESS macros.tlib;
PROCESS control.tlib;
PROCESS projectx7.tlib;
MACRO composedefs(defs) GET compose('defines', defs, ';');
MACRO composedirs(tag, seed) GET composepaths(${"build.${tag}key"},seed,';');
my = {};
load(respfile, 'doc');
FOREACH f IN my.doc.customize; PROCESS $f | null; END;
files = striproots(filter(my.doc.file).split('\|')).split('\|').sort;
END -%]
<?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="[% my.doc.formatversion.0 %]"
Name="[% my.doc.project.0 %]"
ProjectGUID="{[% guid(my.doc.project.0) %]}"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
[% FOREACH build IN builds -%]
<Configuration
Name="[% build.name %]|Win32"
OutputDirectory="[% workbuild([]) %]"
IntermediateDirectory="[% workbuild([]) %]"
[% interpolate('global') -%]
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="FALSE">
<Tool
Name="VCCLCompilerTool"
[% interpolate('compiler') -%]
PreprocessorDefinitions="
[%- composedefs(['WIN32']) %]"
OptimizeForProcessor="1"
ExceptionHandling="0"
AdditionalOptions="[% flags(compose('cflags', [], ' ')) | html %] [% flags(compose('cflags7', [], ' ')) | html %]"
AdditionalIncludeDirectories="[% composedirs('incdirs', ['.']) %]"
PrecompiledHeaderFile="[% workbuild([my.doc.project.0,'.pch']) %]"
AssemblerListingLocation="[% workbuild([]) %]"
ObjectFile="[% workbuild([]) %]"
ProgramDataBaseFileName="[% workbuild([my.doc.rawtarget.0,'.pdb']) %]"
WarningLevel="3"
SuppressStartupBanner="TRUE"
Detect64BitPortabilityProblems="TRUE"
TreatWChar_tAsBuiltInType="false"
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
[% interpolate('linker') -%]
AdditionalOptions="[% flags(compose('lflags', [], ' ')) | html %] [% flags(compose('lflags7', [], ' ')) | html %]"
AdditionalDependencies="[% compose('libs', [], ' ') %]"
IgnoreImportLibrary="TRUE"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="[% composedirs('libdirs', []) %]"
ProgramDatabaseFile="[% workbuild([my.doc.rawtarget.0,'.pdb']) %]"
TargetMachine="1"/>
<Tool
Name="VCLibrarianTool"
[% interpolate('librarian') -%]
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="[% composedefs([]) %]"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName="[% workbuild([my.doc.project.0,'.tlb']) %]"/>
<Tool
Name="VCPostBuildEventTool"
[% interpolate('postbuild') -%]
/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="[% composedefs([glue (['PROJECTGEN_VERSION', my.doc.msvcversion.0], '=')]) %]"
AdditionalIncludeDirectories="[% composedirs('incdirs', ['.']) %]"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
[% END -%]
</Configurations>
<Files>
[%- FOREACH group IN groups %]
[%- items = files.grep(group.types) %]
[%- IF items.size > 0 %]
<Filter
Name="[% group.name %]"
Filter="">
[%- FOREACH file IN items %]
<File
RelativePath="[% path([my.doc.sourceroot.0, file]) %]">
[%- IF my.doc.static %]
[%- UNLESS file.match('\\.(h|hpp|rc)$') %]
[%- FOREACH build IN builds %]
<FileConfiguration
Name="[% build.name %]|Win32">
<Tool
Name="VCCLCompilerTool"
ObjectFile="[% workbuild([file.replace('/', '_'), '.obj']) %]"/>
</FileConfiguration>
[%- END %]
[%- END %]
[%- END %]
</File>
[%- END %]
</Filter>
[%- END %]
[%- END %]
</Files>
<Globals>
</Globals>
</VisualStudioProject>

141
mk/msvcgen/projectsn71.tlib Normal file
View File

@@ -0,0 +1,141 @@
[% FILTER null;
#==============================================================================
# TemplateToolkit2 template for MSVC7 project (vcproj) file.
# 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.
#
#==============================================================================
PROCESS macros.tlib;
PROCESS control.tlib;
PROCESS projectxsn71.tlib;
MACRO composedefs(defs) GET compose('defines', defs, ';');
MACRO composedirs(tag, seed) GET composepaths(${"build.${tag}key"},seed,';');
my = {};
load(respfile, 'doc');
FOREACH f IN my.doc.customize; PROCESS $f | null; END;
files = striproots(filter(my.doc.file).split('\|')).split('\|').sort;
END -%]
<?xml version="1.0" encoding = "Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="[% my.doc.formatversion.0 %]"
Name="[% my.doc.project.0 %]"
ProjectGUID="{[% guid(my.doc.project.0) %]}"
SccProjectName=""
SccLocalPath="">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
[% FOREACH build IN builds -%]
<Configuration
Name="[% build.name %]|Win32"
OutputDirectory="[% workbuild([]) %]"
IntermediateDirectory="[% workbuild([]) %]"
[% interpolate('global') -%]>
<Tool
Name="VCCLCompilerTool"
[% interpolate('compiler') -%]
PreprocessorDefinitions="[% build.snpreprocessor %]"
ExceptionHandling="FALSE"
OptimizeForProcessor="1"
AdditionalOptions="[% build.snadditional %] [% flags(compose('cflags', [], ' ')) | html %] [% flags(compose('cflags7', [], ' ')) | html %]"
AdditionalIncludeDirectories="&quot;$(SN_PS3_PATH)\ppu\include\sn&quot;;&quot;$(SCE_PS3_ROOT)\target\ppu\include&quot;;&quot;$(SCE_PS3_ROOT)\target\common\include&quot;;[% composedirs('incdirs', ['.']) %]"
PrecompiledHeaderFile="[% workbuild([my.doc.project.0,'.pch']) %]"
AssemblerListingLocation="[% workbuild([]) %]"
ObjectFile="[% workbuild([]) %]"
ProgramDataBaseFileName=" "
CompileAs="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
[% interpolate('linker') -%]
AdditionalOptions="-fno-exceptions [% flags(compose('lflags', [], ' ')) | html %] [% flags(compose('lflags7', [], ' ')) | html %]"
AdditionalDependencies="&quot;$(SCE_PS3_ROOT)\target\ppu\lib\libm.a&quot;; &quot;$(SCE_PS3_ROOT)\target\ppu\lib\libspurs.a&quot;; &quot;$(SCE_PS3_ROOT)\target\ppu\lib\libio.a&quot;; &quot;$(SCE_PS3_ROOT)\target\ppu\lib\libpad.a&quot;; &quot;$(SCE_PS3_ROOT)\target\ppu\lib\libusbd.a&quot;; &quot;$(SCE_PS3_ROOT)\target\ppu\lib\libkb.a&quot;; &quot;$(SCE_PS3_ROOT)\target\ppu\lib\libmouse.a&quot;; &quot;$(SCE_PS3_ROOT)\target\ppu\lib\libnet.a&quot;; &quot;$(SCE_PS3_ROOT)\target\ppu\lib\libgcm.a&quot;; &quot;$(SCE_PS3_ROOT)\target\ppu\lib\PSGL\RSX\opt\libPSGL.a&quot;; &quot;$(SCE_PS3_ROOT)\target\ppu\lib\PSGL\RSX\opt\libPSGLU.a&quot;; &quot;$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil.a&quot; ;[% compose('libs', [], ' ') %]"
IgnoreImportLibrary="TRUE"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories="[% composedirs('libdirs', []) %]"
ProgramDatabaseFile="[% workbuild([my.doc.rawtarget.0,'.pdb']) %]"
TargetMachine="1"/>
<Tool
Name="VCLibrarianTool"
[% interpolate('librarian') -%]
SuppressStartupBanner="TRUE"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="[% build.snpreprocessor %];[% composedefs([]) %]"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"
TypeLibraryName="[% workbuild([my.doc.project.0,'.tlb']) %]"/>
<Tool
Name="VCPostBuildEventTool"
[% interpolate('postbuild') -%]
/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="SN_TARGET_PS3;_DEBUG;__GCC__;[% composedefs([glue (['PROJECTGEN_VERSION', my.doc.msvcversion.0], '=')]) %]"
AdditionalIncludeDirectories="[% composedirs('incdirs', ['.']) %]"
Culture="1033"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
</Configuration>
[% END -%]
</Configurations>
<Files>
[%- FOREACH group IN groups %]
[%- items = files.grep(group.types) %]
[%- IF items.size > 0 %]
<Filter
Name="[% group.name %]"
Filter="">
[%- FOREACH file IN items %]
<File
RelativePath="[% path([my.doc.sourceroot.0, file]) %]">
[%- IF my.doc.static %]
[%- UNLESS file.match('\\.(h|hpp|rc)$') %]
[%- FOREACH build IN builds %]
<FileConfiguration
Name="[% build.name %]|Win32">
<Tool
Name="VCCLCompilerTool"
ObjectFile="[% workbuild([file.replace('/', '_'), '.o']) %]"/>
</FileConfiguration>
[%- END %]
[%- END %]
[%- END %]
</File>
[%- END %]
</Filter>
[%- END %]
[%- END %]
</Files>
<Globals>
</Globals>
</VisualStudioProject>

99
mk/msvcgen/projectx6.tlib Normal file
View File

@@ -0,0 +1,99 @@
#==============================================================================
# TemplateToolkit2 template extension for MSVC6 project (vcproj) file.
# 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.
#
#==============================================================================
#------------------------------------------------------------------------------
# This file, projectx6.tlib, provides additional support for the main MSVC6
# project file template, project6.tlib, in the form of macros which customize
# the file generation based upon combinations of build mode and target type.
#
# project6.tlib will look for macros named "tag_build", "tag_type", and
# "tag_type_build". `tag' is an arbitrary name, such as "addcpp", "addlink32",
# or "linkeropts". which project6.tlib will use when looking for
# customizations for a particular section of the project file (such as the
# compiler or linker sections, for instance). `build' is one of the build mode
# tag names (typically "release" or "debug") from the build[] array
# (control.tlib). `type' is one of the project types (typically "appcon",
# "appgui", "group", "library", or "plugin") named by the projtypes[] array
# (control.tlib).
#
# For example, to add customization entries to the post-build portion of the
# project file in release mode for all project types, provide a macro named
# "postbuild_release". To customize the post-build for plugins only but for
# all build modes, provide the macro "postbuild_plugin". To add customizations
# for the post-build in debug mode for GUI application projects only, provide a
# macro named "postbuild_appgui_debug".
#------------------------------------------------------------------------------
[%
projtypes.appcon.type = 'Console Application';
projtypes.appcon.typecode = '0x0103';
projtypes.appgui.type = 'Application';
projtypes.appgui.typecode = '0x0101';
projtypes.group.type = 'Static Library';
projtypes.group.typecode = '0x0104';
projtypes.library.type = 'Static Library';
projtypes.library.typecode = '0x0104';
projtypes.plugin.type = 'Dynamic-Link Library';
projtypes.plugin.typecode = '0x0102';
%]
[% MACRO delaylibs_plugin
GET glue(my.doc.librarydelay,' ','/DELAYLOAD:','.dll') %]
[% MACRO linkeropts_release GET '/OPT:NOREF' %]
[% MACRO linkeropts_debug GET '/debug /pdbtype:sept' %]
[% MACRO linkeropts_plugin GET '/dll' %]
[% MACRO usedebuglibs_release GET '0' %]
[% MACRO usedebuglibs_debug GET '1' %]
[% MACRO addcpp_release GET '/Gy /GF /MD /Ob2 /Og /Oi /Ot /Oy' %]
[% MACRO addcpp_debug GET '/GR /MDd /ZI /Od' %]
[% MACRO addcpp_library GET '/D "_LIB"' %]
[% MACRO ignoreexportlib_common(bool) BLOCK -%]
# PROP Ignore_Export_Lib [% bool %]
[% END %]
[% MACRO ignoreexportlib_appcon_release GET ignoreexportlib_common('0') %]
[% MACRO ignoreexportlib_appcon_debug GET ignoreexportlib_common('1') %]
[% MACRO ignoreexportlib_appgui_release GET ignoreexportlib_common('0') %]
[% MACRO ignoreexportlib_appgui_debug GET ignoreexportlib_common('1') %]
[% MACRO ignoreexportlib_group GET ignoreexportlib_common('0') %]
[% MACRO ignoreexportlib_library GET ignoreexportlib_common('0') %]
[% MACRO ignoreexportlib_plugin GET ignoreexportlib_common('1') %]
[% MACRO addlib32_outfile(suffix) BLOCK -%]
/out:"[% worklibout %]\[% my.doc.project.0 %][% suffix %].lib"
[%- END %]
[% MACRO addlib32_library_release GET addlib32_outfile('') %]
[% MACRO addlib32_library_debug GET addlib32_outfile('_d') %]
[% MACRO addlib32_group GET addlib32_outfile('') %]
[% MACRO addlink32_subsystem(subsys) BLOCK -%]
/subsystem:[% subsys %]
[%- END %]
[% MACRO addlink32_common(subsys) BLOCK -%]
/out:"[% path([my.doc.buildroot.0, my.doc.target.0]) %]" [%
addlink32_subsystem(subsys) %]
[%- END %]
[% MACRO addlink32_appcon GET addlink32_common('console') %]
[% MACRO addlink32_appgui_release GET addlink32_common('windows') %]
[% MACRO addlink32_appgui_debug GET addlink32_common('console') %]
[% MACRO addlink32_library GET addlink32_subsystem('windows') %]
[% MACRO addlink32_plugin GET addlink32_common('windows') %]

121
mk/msvcgen/projectx7.tlib Normal file
View File

@@ -0,0 +1,121 @@
#==============================================================================
# TemplateToolkit2 template extension for MSVC7 project (vcproj) file.
# 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.
#
#==============================================================================
#------------------------------------------------------------------------------
# This file, projectx7.tlib, provides additional support for the main MSVC7
# project file template, project7.tlib, in the form of macros which customize
# the file generation based upon combinations of build mode and target type.
#
# project7.tlib will look for macros named "tag_build", "tag_type", and
# "tag_type_build". `tag' is an arbitrary name, such as "compiler" or "linker"
# which project7.tlib will use when looking for customizations for a particular
# section of the project file (such as the compiler or linker sections, for
# instance). `build' is one of the build mode tag names (typically "release"
# or "debug") from the build[] array (control.tlib). `type' is one of the
# project types (typically "appcon", "appgui", "group", "library", or "plugin")
# named by the projtypes[] array (control.tlib).
#
# For example, to add customization entries to the compiler portion of the
# project file in release mode for all project types, provide a macro named
# "compiler_release". To customize linker for plugins only but for all build
# modes, provide the macro "linker_plugin". To add customizations for the
# compiler in debug mode for GUI application projects only, provide a macro
# named "compiler_appgui_debug".
#------------------------------------------------------------------------------
[% MACRO global_app BLOCK -%]
ConfigurationType="1"
CharacterSet="2"
[% END %]
[% MACRO global_app_release BLOCK -%]
WholeProgramOptimization="1"
[% END %]
[% MACRO global_appcon GET global_app %]
[% MACRO global_appcon_release GET global_app_release %]
[% MACRO global_appgui GET global_app %]
[% MACRO global_appgui_release GET global_app_release %]
[% MACRO global_group BLOCK -%]
ConfigurationType="4"
[% END %]
[% MACRO global_library BLOCK -%]
ConfigurationType="4"
[% END %]
[% MACRO global_plugin BLOCK -%]
ConfigurationType="2"
[% END %]
[% MACRO global_plugin_release BLOCK -%]
WholeProgramOptimization="1"
[% END %]
[% MACRO compiler_release BLOCK -%]
Optimization="2"
StringPooling="TRUE"
EnableFunctionLevelLinking="TRUE"
RuntimeLibrary="2"
DebugInformationFormat="3"
BufferSecurityCheck="FALSE"
[% END %]
[% MACRO compiler_debug BLOCK -%]
Optimization="0"
MinimalRebuild="TRUE"
DebugInformationFormat="4"
RuntimeTypeInfo="TRUE"
RuntimeLibrary="3"
[% END %]
[% MACRO linker_release BLOCK -%]
LinkIncremental="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD"
[% END %]
[% MACRO linker_debug BLOCK -%]
LinkIncremental="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD,MSVCRT"
[% END %]
[% MACRO linker_common BLOCK -%]
OutputFile="[% path([my.doc.buildroot.0, my.doc.target.0]) %]"
[% END %]
[% MACRO linker_app(subsys) BLOCK -%]
[% linker_common -%]
SubSystem="[% subsys %]"
[% END %]
[% MACRO linker_appcon GET linker_app(1) %]
[% MACRO linker_appgui_release GET linker_app(2) %]
[% MACRO linker_appgui_debug GET linker_app(1) %]
[% MACRO linker_plugin BLOCK -%]
[% linker_common -%]
DelayLoadDLLs="[% glue(my.doc.librarydelay,';','','.dll') %]"
ImportLibrary="[% workbuild([my.doc.project.0,'.lib']) %]"
[% END %]
[% MACRO library_outfile(suffix) BLOCK -%]
OutputFile="[% worklibout %]\[% my.doc.project.0 %][% suffix %].lib"
[% END %]
[% MACRO librarian_library_release GET library_outfile('') %]
[% MACRO librarian_library_debug GET library_outfile('_d') %]
[% MACRO librarian_group GET library_outfile('') %]

View File

@@ -0,0 +1,121 @@
#==============================================================================
# TemplateToolkit2 template extension for MSVC7 project (vcproj) file.
# 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.
#
#==============================================================================
#------------------------------------------------------------------------------
# This file, projectx7.tlib, provides additional support for the main MSVC7
# project file template, project7.tlib, in the form of macros which customize
# the file generation based upon combinations of build mode and target type.
#
# project7.tlib will look for macros named "tag_build", "tag_type", and
# "tag_type_build". `tag' is an arbitrary name, such as "compiler" or "linker"
# which project7.tlib will use when looking for customizations for a particular
# section of the project file (such as the compiler or linker sections, for
# instance). `build' is one of the build mode tag names (typically "release"
# or "debug") from the build[] array (control.tlib). `type' is one of the
# project types (typically "appcon", "appgui", "group", "library", or "plugin")
# named by the projtypes[] array (control.tlib).
#
# For example, to add customization entries to the compiler portion of the
# project file in release mode for all project types, provide a macro named
# "compiler_release". To customize linker for plugins only but for all build
# modes, provide the macro "linker_plugin". To add customizations for the
# compiler in debug mode for GUI application projects only, provide a macro
# named "compiler_appgui_debug".
#------------------------------------------------------------------------------
[% MACRO global_app BLOCK -%]
ConfigurationType="1"
CharacterSet="2"
[% END %]
[% MACRO global_app_release BLOCK -%]
WholeProgramOptimization="1"
[% END %]
[% MACRO global_appcon GET global_app %]
[% MACRO global_appcon_release GET global_app_release %]
[% MACRO global_appgui GET global_app %]
[% MACRO global_appgui_release GET global_app_release %]
[% MACRO global_group BLOCK -%]
ConfigurationType="4"
[% END %]
[% MACRO global_library BLOCK -%]
ConfigurationType="4"
[% END %]
[% MACRO global_plugin BLOCK -%]
ConfigurationType="2"
[% END %]
[% MACRO global_plugin_release BLOCK -%]
WholeProgramOptimization="1"
[% END %]
[% MACRO compiler_release BLOCK -%]
Optimization="2"
StringPooling="TRUE"
EnableFunctionLevelLinking="TRUE"
RuntimeLibrary="2"
DebugInformationFormat="3"
BufferSecurityCheck="FALSE"
[% END %]
[% MACRO compiler_debug BLOCK -%]
Optimization="0"
MinimalRebuild="TRUE"
DebugInformationFormat="4"
RuntimeTypeInfo="TRUE"
RuntimeLibrary="3"
[% END %]
[% MACRO linker_release BLOCK -%]
LinkIncremental="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD"
[% END %]
[% MACRO linker_debug BLOCK -%]
LinkIncremental="2"
GenerateDebugInformation="TRUE"
IgnoreDefaultLibraryNames="LIBC,LIBCD,LIBCMT,LIBCMTD,MSVCRT"
[% END %]
[% MACRO linker_common BLOCK -%]
OutputFile="[% path([my.doc.buildroot.0, my.doc.target.0]) %]"
[% END %]
[% MACRO linker_app(subsys) BLOCK -%]
[% linker_common -%]
SubSystem="[% subsys %]"
[% END %]
[% MACRO linker_appcon GET linker_app(1) %]
[% MACRO linker_appgui_release GET linker_app(2) %]
[% MACRO linker_appgui_debug GET linker_app(1) %]
[% MACRO linker_plugin BLOCK -%]
[% linker_common -%]
DelayLoadDLLs="[% glue(my.doc.librarydelay,';','','.dll') %]"
ImportLibrary="[% workbuild([my.doc.project.0,'.a']) %]"
[% END %]
[% MACRO library_outfile(suffix) BLOCK -%]
OutputFile="[% worklibout %]\[% my.doc.project.0 %][% suffix %].a"
[% END %]
[% MACRO librarian_library_release GET library_outfile('') %]
[% MACRO librarian_library_debug GET library_outfile('_d') %]
[% MACRO librarian_group GET library_outfile('') %]

View File

@@ -0,0 +1,65 @@
[% FILTER null;
#==============================================================================
# TemplateToolkit2 template for MSVC6 workspace (dsw) file.
# 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.
#
#==============================================================================
PROCESS macros.tlib;
PROCESS control.tlib;
my = {};
load(respfile, 'doc');
FOREACH f IN my.doc.customize; PROCESS $f | null; END;
projects = filter(my.doc.project).split('\|').sort;
END -%]
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
[% FOREACH project IN projects -%]
###############################################################################
Project: "[% project %]"=.\[% project %].dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
[% FOREACH dep IN filter(my.doc.$project).split('\|').sort -%]
Begin Project Dependency
Project_Dep_Name [% dep %]
End Project Dependency
[% END -%]
}}}
[% END -%]
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -0,0 +1,66 @@
[% FILTER null;
#==============================================================================
# TemplateToolkit2 template for MSVC7 solution (sln) file.
# 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.
#
#==============================================================================
PROCESS macros.tlib;
PROCESS control.tlib;
my = {};
load(respfile, 'doc');
FOREACH f IN my.doc.customize; PROCESS $f | null; END;
projects = filter(my.doc.project).split('\|').sort;
guids = {};
FOREACH project IN projects;
guids.$project = guid(project);
END;
END -%]
Microsoft Visual Studio Solution File, Format Version [% my.doc.formatversion.0 %]
# Visual C++ Express 2005
[% FOREACH project IN projects -%]
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "[% project %]", "
[%- project %].vcproj", "{[% guids.$project %]}"
EndProject
[% END -%]
Global
GlobalSection(SolutionConfiguration) = preSolution
[% n = 0; FOREACH build IN builds -%]
ConfigName.[% n; n = n + 1 %] = [% build.name %]
[% END -%]
EndGlobalSection
GlobalSection(ProjectDependencies) = postSolution
[% FOREACH project IN projects; g = guids.$project; n = 0 -%]
[% FOREACH dep IN filter(my.doc.$project).split('\|').sort -%]
{[% g %]}.[% n; n = n + 1 %] = {[% guids.$dep %]}
[% END -%]
[% END -%]
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
[% FOREACH project IN projects; g = guids.$project -%]
[% FOREACH build IN builds -%]
{[% g %]}.[% build.name %].ActiveCfg = [% build.name %]|Win32
{[% g %]}.[% build.name %].Build.0 = [% build.name %]|Win32
[% END -%]
[% END -%]
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,66 @@
[% FILTER null;
#==============================================================================
# TemplateToolkit2 template for MSVC7 solution (sln) file.
# 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.
#
#==============================================================================
PROCESS macros.tlib;
PROCESS control.tlib;
my = {};
load(respfile, 'doc');
FOREACH f IN my.doc.customize; PROCESS $f | null; END;
projects = filter(my.doc.project).split('\|').sort;
guids = {};
FOREACH project IN projects;
guids.$project = guid(project);
END;
END -%]
Microsoft Visual Studio Solution File, Format Version [% my.doc.formatversion.0 %]
# Visual C++ Express 2005
[% FOREACH project IN projects -%]
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "[% project %]", "
[%- project %].vcproj", "{[% guids.$project %]}"
EndProject
[% END -%]
Global
GlobalSection(SolutionConfiguration) = preSolution
[% n = 0; FOREACH build IN builds -%]
ConfigName.[% n; n = n + 1 %] = [% build.name %]
[% END -%]
EndGlobalSection
GlobalSection(ProjectDependencies) = postSolution
[% FOREACH project IN projects; g = guids.$project; n = 0 -%]
[% FOREACH dep IN filter(my.doc.$project).split('\|').sort -%]
{[% g %]}.[% n; n = n + 1 %] = {[% guids.$dep %]}
[% END -%]
[% END -%]
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
[% FOREACH project IN projects; g = guids.$project -%]
[% FOREACH build IN builds -%]
{[% g %]}.[% build.name %].ActiveCfg = [% build.name %]|Win32
{[% g %]}.[% build.name %].Build.0 = [% build.name %]|Win32
[% END -%]
[% END -%]
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal