moved files around
This commit is contained in:
167
mk/msvcgen/control.tlib
Normal file
167
mk/msvcgen/control.tlib
Normal 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
301
mk/msvcgen/macros.tlib
Normal 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
129
mk/msvcgen/project6.tlib
Normal 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
146
mk/msvcgen/project7.tlib
Normal 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
141
mk/msvcgen/projectsn71.tlib
Normal 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=""$(SN_PS3_PATH)\ppu\include\sn";"$(SCE_PS3_ROOT)\target\ppu\include";"$(SCE_PS3_ROOT)\target\common\include";[% 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=""$(SCE_PS3_ROOT)\target\ppu\lib\libm.a"; "$(SCE_PS3_ROOT)\target\ppu\lib\libspurs.a"; "$(SCE_PS3_ROOT)\target\ppu\lib\libio.a"; "$(SCE_PS3_ROOT)\target\ppu\lib\libpad.a"; "$(SCE_PS3_ROOT)\target\ppu\lib\libusbd.a"; "$(SCE_PS3_ROOT)\target\ppu\lib\libkb.a"; "$(SCE_PS3_ROOT)\target\ppu\lib\libmouse.a"; "$(SCE_PS3_ROOT)\target\ppu\lib\libnet.a"; "$(SCE_PS3_ROOT)\target\ppu\lib\libgcm.a"; "$(SCE_PS3_ROOT)\target\ppu\lib\PSGL\RSX\opt\libPSGL.a"; "$(SCE_PS3_ROOT)\target\ppu\lib\PSGL\RSX\opt\libPSGLU.a"; "$(SCE_PS3_ROOT)\target\ppu\lib\libsysutil.a" ;[% 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
99
mk/msvcgen/projectx6.tlib
Normal 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
121
mk/msvcgen/projectx7.tlib
Normal 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('') %]
|
||||
121
mk/msvcgen/projectxsn71.tlib
Normal file
121
mk/msvcgen/projectxsn71.tlib
Normal 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('') %]
|
||||
65
mk/msvcgen/workspace6.tlib
Normal file
65
mk/msvcgen/workspace6.tlib
Normal 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>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
66
mk/msvcgen/workspace7.tlib
Normal file
66
mk/msvcgen/workspace7.tlib
Normal 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
|
||||
66
mk/msvcgen/workspacesn71.tlib
Normal file
66
mk/msvcgen/workspacesn71.tlib
Normal 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
|
||||
Reference in New Issue
Block a user