summaryrefslogtreecommitdiff
path: root/build-0.3/meta
diff options
context:
space:
mode:
Diffstat (limited to 'build-0.3/meta')
-rwxr-xr-xbuild-0.3/meta/autoconf84
-rw-r--r--build-0.3/meta/autoconf-functions.make23
-rw-r--r--build-0.3/meta/autoconf.m421
-rw-r--r--build-0.3/meta/autoconf.make5
-rwxr-xr-xbuild-0.3/meta/automake64
-rw-r--r--build-0.3/meta/automake-functions.make23
-rw-r--r--build-0.3/meta/automake.m421
-rw-r--r--build-0.3/meta/automake.make5
-rw-r--r--build-0.3/meta/common.m4113
-rwxr-xr-xbuild-0.3/meta/vc10proj79
-rw-r--r--build-0.3/meta/vc10proj-functions.make27
-rw-r--r--build-0.3/meta/vc10proj.m4127
-rw-r--r--build-0.3/meta/vc10proj.make5
-rw-r--r--build-0.3/meta/vc10sln-functions.make29
-rw-r--r--build-0.3/meta/vc10sln.make5
-rw-r--r--build-0.3/meta/vc11proj-functions.make27
-rw-r--r--build-0.3/meta/vc11proj.make5
-rw-r--r--build-0.3/meta/vc11sln-functions.make29
-rw-r--r--build-0.3/meta/vc11sln.make5
-rw-r--r--build-0.3/meta/vc12proj-functions.make27
-rw-r--r--build-0.3/meta/vc12proj.make5
-rw-r--r--build-0.3/meta/vc12sln-functions.make29
-rw-r--r--build-0.3/meta/vc12sln.make5
-rw-r--r--build-0.3/meta/vc8proj-functions.make27
-rw-r--r--build-0.3/meta/vc8proj.make5
-rw-r--r--build-0.3/meta/vc8sln-functions.make29
-rw-r--r--build-0.3/meta/vc8sln.make5
-rwxr-xr-xbuild-0.3/meta/vc9proj75
-rw-r--r--build-0.3/meta/vc9proj-functions.make27
-rw-r--r--build-0.3/meta/vc9proj.m4103
-rw-r--r--build-0.3/meta/vc9proj.make5
-rw-r--r--build-0.3/meta/vc9sln-functions.make29
-rw-r--r--build-0.3/meta/vc9sln.make5
-rwxr-xr-xbuild-0.3/meta/vcsln181
-rw-r--r--build-0.3/meta/vcsln.m482
-rwxr-xr-xbuild-0.3/meta/vctest143
-rw-r--r--build-0.3/meta/vctest-functions.make28
-rw-r--r--build-0.3/meta/vctest.m417
-rw-r--r--build-0.3/meta/vctest.make5
-rw-r--r--build-0.3/meta/windows-common.m449
40 files changed, 1578 insertions, 0 deletions
diff --git a/build-0.3/meta/autoconf b/build-0.3/meta/autoconf
new file mode 100755
index 0000000..2eb542f
--- /dev/null
+++ b/build-0.3/meta/autoconf
@@ -0,0 +1,84 @@
+#! /usr/bin/env bash
+
+# file : build/meta/autoconf
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process autconf configure.ac templates.
+#
+# Options:
+#
+# -b <base-dir>
+# -o <output-file>
+#
+# Arguments:
+#
+# <template-file>
+#
+trap 'exit 1' ERR
+
+function error ()
+{
+ echo "$*" 1>&2
+}
+
+base=
+output=
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -b)
+ base=$2
+ shift 2
+ ;;
+ -o)
+ output=$2
+ shift 2
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+input=$1
+
+if [ "$input" = "" ]; then
+ error "no input file"
+ exit 1
+fi
+
+if [ "$base" = "" ]; then
+ error "no base directory"
+ exit 1
+fi
+
+if [ "$output" = "" ]; then
+ error "no output file"
+ exit 1
+fi
+
+m4=m4
+
+# Assume this script is never found via PATH.
+#
+meta=`dirname $0`
+
+build="$meta/.."
+install=$build/install/install
+
+# Find all the configuration files.
+#
+files=`find $base -name 'Makefile.am' -o -name '*.in' -a ! -name '*.h.in' | \
+sed -e "s%^$base/%%" | \
+sed -e 's%\.\(am\|in\)$%%' | \
+sort -u`
+
+export config_files=$files
+
+# Make sure the output directory exist.
+#
+$install -d -m 755 `dirname $output`
+
+$m4 -P -D__meta_base__=$meta $meta/autoconf.m4 $input >$output
+chmod 644 $output
diff --git a/build-0.3/meta/autoconf-functions.make b/build-0.3/meta/autoconf-functions.make
new file mode 100644
index 0000000..a2a1d76
--- /dev/null
+++ b/build-0.3/meta/autoconf-functions.make
@@ -0,0 +1,23 @@
+# file : build/meta/autoconf-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process autoconf template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - optional template path, if doesn't start with /, assume relative
+# to src_base default is $(src_base)/configure.ac
+#
+$(out_base)/%: meta-autoconf = \
+$(call meta-autoconf-body,$(if $1,$(if $(filter \
+/%,$1),$1,$(src_base)/$1),$(src_base)/configure.ac),$(subst \
+$(src_root),,$(src_base)))
+
+# $1 - template
+# $2 - difference between src_base and src_root with leading '\'
+#
+$(out_base)/%: meta-autoconf-body = \
+$(call message,meta $(dist_prefix)$2/$(notdir $1),$(bld_root)/meta/autoconf \
+-b $(dist_prefix)$2 -o $(dist_prefix)$2/$(notdir $1) $1)
diff --git a/build-0.3/meta/autoconf.m4 b/build-0.3/meta/autoconf.m4
new file mode 100644
index 0000000..8ca5b93
--- /dev/null
+++ b/build-0.3/meta/autoconf.m4
@@ -0,0 +1,21 @@
+m4_divert(-1)
+# file : build/meta/autoconf.m4
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+m4_changequote([, ])
+
+m4_include(__meta_base__[/common.m4])
+
+m4_define([__path_impl__], [__env_impl__([$1])])
+m4_define([__path__], [m4_equote()__path_impl__([$1])[]m4_dquote()])
+
+m4_define([__file_impl__], [__env_impl__([$1])])
+m4_define([__file__], [m4_equote()__file_impl__([$1])[]m4_dquote()])
+
+# Disable comments and quoting.
+#
+m4_changecom([])
+m4_changequote([])
+
+m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/autoconf.make b/build-0.3/meta/autoconf.make
new file mode 100644
index 0000000..984ed35
--- /dev/null
+++ b/build-0.3/meta/autoconf.make
@@ -0,0 +1,5 @@
+# file : build/meta/autoconf.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/autoconf-functions.make,$(out_base))
diff --git a/build-0.3/meta/automake b/build-0.3/meta/automake
new file mode 100755
index 0000000..ede1958
--- /dev/null
+++ b/build-0.3/meta/automake
@@ -0,0 +1,64 @@
+#! /usr/bin/env bash
+
+# file : build/meta/automake
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process automake Makefile.am templates.
+#
+# Options:
+#
+# -o <output-file>
+#
+# Arguments:
+#
+# <template-file>
+#
+trap 'exit 1' ERR
+
+function error ()
+{
+ echo "$*" 1>&2
+}
+
+output=
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -o)
+ output=$2
+ shift 2
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+input=$1
+
+if [ "$input" = "" ]; then
+ error "no input file"
+ exit 1
+fi
+
+if [ "$output" = "" ]; then
+ error "no output file"
+ exit 1
+fi
+
+m4=m4
+
+# Assume this script is never found via PATH.
+#
+meta=`dirname $0`
+
+build="$meta/.."
+install=$build/install/install
+
+# Make sure the output directory exist.
+#
+$install -d -m 755 `dirname $output`
+
+$m4 -P -D__meta_base__=$meta $meta/automake.m4 $input >$output
+chmod 644 $output
diff --git a/build-0.3/meta/automake-functions.make b/build-0.3/meta/automake-functions.make
new file mode 100644
index 0000000..2f49237
--- /dev/null
+++ b/build-0.3/meta/automake-functions.make
@@ -0,0 +1,23 @@
+# file : build/meta/automake-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process automake template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - optional template path, if doesn't start with /, assume relative
+# to src_base default is $(src_base)/Makefile.am
+#
+$(out_base)/%: meta-automake = \
+$(call meta-automake-body,$(if $1,$(if $(filter \
+/%,$1),$1,$(src_base)/$1),$(src_base)/Makefile.am),$(subst \
+$(src_root),,$(src_base)))
+
+# $1 - template
+# $2 - difference between src_base and src_root with leading '\'
+#
+$(out_base)/%: meta-automake-body = \
+$(call message,meta $(dist_prefix)$2/$(notdir $1),$(bld_root)/meta/automake \
+-o $(dist_prefix)$2/$(notdir $1) $1)
diff --git a/build-0.3/meta/automake.m4 b/build-0.3/meta/automake.m4
new file mode 100644
index 0000000..56aa319
--- /dev/null
+++ b/build-0.3/meta/automake.m4
@@ -0,0 +1,21 @@
+m4_divert(-1)
+# file : build/meta/automake.m4
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+m4_changequote([, ])
+
+m4_include(__meta_base__[/common.m4])
+
+m4_define([__path_impl__], [__env_impl__([$1])])
+m4_define([__path__], [m4_equote()__path_impl__([$1])[]m4_dquote()])
+
+m4_define([__file_impl__], [__env_impl__([$1])])
+m4_define([__file__], [m4_equote()__file_impl__([$1])[]m4_dquote()])
+
+# Disable comments and quoting.
+#
+m4_changecom([])
+m4_changequote([])
+
+m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/automake.make b/build-0.3/meta/automake.make
new file mode 100644
index 0000000..67ae4ac
--- /dev/null
+++ b/build-0.3/meta/automake.make
@@ -0,0 +1,5 @@
+# file : build/meta/automake.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/automake-functions.make,$(out_base))
diff --git a/build-0.3/meta/common.m4 b/build-0.3/meta/common.m4
new file mode 100644
index 0000000..685a74a
--- /dev/null
+++ b/build-0.3/meta/common.m4
@@ -0,0 +1,113 @@
+# file : build/meta/common.m4
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# m4_strip(STRING)
+# ----------------
+# Expands into STRING with tabs and spaces singled out into a single
+# space, and removing leading and trailing spaces.
+#
+m4_define([m4_strip],
+[m4_patsubst(m4_patsubst([ $1 ], [[ ]+], [ ]), [^ \(.*\) $], [[[\1]]])])
+
+
+# m4_normalize(STRING)
+# --------------------
+# Apply m4_strip to STRING.
+#
+m4_define([m4_normalize], [m4_strip([$1])])
+
+# m4_split(STRING, [REGEXP])
+# --------------------------
+# Split STRING into an m4 list of quoted elements. The elements are
+# quoted with ] and ]. Beginning spaces and end spaces *are kept*.
+# Use m4_strip to remove them.
+#
+# REGEXP specifies where to split. Default is [\t ]+.
+#
+# If STRING is empty, the result is an empty list.
+#
+
+m4_define([m4_split],
+[m4_ifelse([$1], [], [],
+ [$2], [ ], [m4_ifelse(m4_index([$1], [ ]), [-1], [[$1]],
+ [_$0([$1], [$2], [, ])])],
+ [$2], [], [_$0([$1], [[ ]+], [, ])],
+ [_$0([$1], [$2], [, ])])])
+
+m4_define([_m4_split], [m4_patsubst([$1], [$2], [$3])])
+
+
+# Simple foreach implementation. The list elements are expected to
+# be fully expanded.
+#
+m4_define([m4_foreach], [m4_ifelse([$2], [], [],
+ [m4_pushdef([$1])_$0([$1], [$3], [], $2)m4_popdef([$1])])])
+m4_define([_m4_foreach], [m4_ifelse([$#], [3], [],
+ [m4_define([$1], [$4])$2[]$0([$1], [$2],
+ m4_shift(m4_shift(m4_shift($@))))])])
+
+# m4_foreach_w(VARIABLE, LIST, EXPRESSION)
+# ----------------------------------------
+# Like m4_foreach, but the list is whitespace separated.
+#
+m4_define([m4_foreach_w],
+[m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])
+
+# m4_strip_nl(STRING)
+# ----------------------------------------
+# Remove newlines
+#
+m4_define([m4_strip_nl], [m4_patsubst([$1], [
+], [])])
+
+# Enable/disable quoting.
+#
+m4_define([m4_equote], [m4_changequote([,])])
+m4_define([m4_dquote], [m4_changequote([])])
+
+#
+#
+m4_define([__ifelse__],
+ [m4_equote()m4_ifelse(
+ [$1],
+ [$2],
+ [m4_dquote()$3m4_equote()],
+ [m4_dquote()$4m4_equote()])[]m4_dquote()])
+
+m4_define([__foreach__],
+ [m4_equote()m4_foreach(
+ [$1],[$2],[m4_dquote()$3m4_equote()])[]m4_dquote()])
+
+m4_define([__foreach_w__],
+ [m4_equote()m4_foreach_w(
+ $1,$2,[m4_dquote()$3m4_equote()])[]m4_dquote()])
+
+#
+#
+m4_define([__env_impl__], [m4_esyscmd([/bin/echo -n $$1])])
+m4_define([__env__], [m4_equote()__env_impl__([$1])[]m4_dquote()])
+
+m4_define([__value_impl__], [__env_impl__([$1])])
+m4_define([__value__], [m4_equote()__value_impl__([$1])[]m4_dquote()])
+
+m4_define([__uuid_impl__],
+ [m4_translit(m4_strip_nl(m4_esyscmd([uuidgen])), [a-z], [A-Z])])
+m4_define([__uuid__], [m4_equote()__uuid_impl__([$1])[]m4_dquote()])
+
+m4_define([__upcase_impl__], [m4_translit([$1], [a-z], [A-Z])])
+m4_define([__upcase__], [m4_equote()__upcase_impl__([$1])[]m4_dquote()])
+
+m4_define([__xml_impl__],
+[m4_patsubst(
+ m4_patsubst(
+ m4_patsubst(
+ [$1],
+ [&],
+ [&amp;]),
+ [<],
+ [&lt;]),
+ ["],
+ [&quot;])])
+
+m4_define([__xml__], [m4_equote()__xml_impl__([$1])[]m4_dquote()])
diff --git a/build-0.3/meta/vc10proj b/build-0.3/meta/vc10proj
new file mode 100755
index 0000000..cd6b5b3
--- /dev/null
+++ b/build-0.3/meta/vc10proj
@@ -0,0 +1,79 @@
+#! /usr/bin/env bash
+
+# file : build/meta/vc10proj
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ 10 project file templates.
+#
+# Options:
+#
+# -o <output-file>
+#
+# Arguments:
+#
+# <template-file>
+#
+trap 'exit 1' ERR
+
+function error ()
+{
+ echo "$*" 1>&2
+}
+
+output=
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -o)
+ output=$2
+ shift 2
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+input=$1
+
+if [ "$input" = "" ]; then
+ error "no input file"
+ exit 1
+fi
+
+if [ "$output" = "" ]; then
+ error "no output file"
+ exit 1
+fi
+
+m4=m4
+u2d=todos
+
+# Assume this script is never found via PATH.
+#
+meta=`dirname $0`
+
+build="$meta/.."
+install=$build/install/install
+
+
+# Determine available configurations.
+#
+conf=`sed -n -e \
+'s/^[ ]*<ProjectConfiguration Include="\([^"]*\)">$/"\1",/p;d' $input`
+conf=`echo $conf | sed -e 's/,$//'`
+
+export configurations=$conf
+
+# Make sure the output directory exist.
+#
+$install -d -m 755 `dirname $output`
+
+$m4 -P -D__meta_base__=$meta $meta/vc10proj.m4 $input >$output
+$u2d $output
+chmod 644 $output
+
+$m4 -P -D__meta_base__=$meta $meta/vc10proj.m4 $input.filters >$output.filters
+$u2d $output.filters
+chmod 644 $output.filters
diff --git a/build-0.3/meta/vc10proj-functions.make b/build-0.3/meta/vc10proj-functions.make
new file mode 100644
index 0000000..8625182
--- /dev/null
+++ b/build-0.3/meta/vc10proj-functions.make
@@ -0,0 +1,27 @@
+# file : build/meta/vc10proj-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ project file template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - template path, if doesn't start with /, assume relative to src_base
+# $2 - output name (optional)
+# $3-8 - optional pairs of additional varibales and values $3=$4, $5=$6, etc
+#
+#
+$(out_base)/%: meta-vc10proj = \
+$(call meta-vc10proj-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
+$2,$2,$(notdir $1)),$(subst $(src_root),,$(src_base)),$3,$4,$5,$6,$7,$8)
+
+# $1 - template
+# $2 - output name
+# $3 - difference between src_base and src_root with leading '\'
+# $4-9 - additional varibales
+#
+$(out_base)/%: meta-vc10proj-body = \
+$(call message,meta $(dist_prefix)$3/$2,$(if $4,$4='$5'; export $4; )$(if \
+$6,$6='$7'; export $6; )$(if $8,$8='$9'; export $8; )$(bld_root)/meta/vc10proj \
+-o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc10proj.m4 b/build-0.3/meta/vc10proj.m4
new file mode 100644
index 0000000..b151f78
--- /dev/null
+++ b/build-0.3/meta/vc10proj.m4
@@ -0,0 +1,127 @@
+m4_divert(-1)
+# file : build/meta/vc10proj.m4
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+m4_changequote([, ])
+
+m4_include(__meta_base__[/common.m4])
+m4_include(__meta_base__[/windows-common.m4])
+
+# header
+#
+m4_define([__header_entry_impl__],
+[ <ClInclude Include="[$1]" />])
+
+m4_define([__header_entry__],
+[m4_equote()__header_entry_impl__([$1])[]m4_dquote()])
+
+
+m4_define([__header_entries_impl__],
+[m4_foreach_w([__f], __path_impl__([$1]), [
+__header_entry_impl__(__f)])])
+
+m4_define([__header_entries__],
+[m4_equote()__header_entries_impl__([$1])[]m4_dquote()])
+
+# header_filter
+#
+m4_define([__header_filter_entry_impl__],
+[ <ClInclude Include="[$1]">
+ <Filter>Header Files</Filter>
+ </ClInclude>])
+
+m4_define([__header_filter_entry__],
+[m4_equote()__header_filter_entry_impl__([$1])[]m4_dquote()])
+
+
+m4_define([__header_filter_entries_impl__],
+[m4_foreach_w([__f], __path_impl__([$1]), [
+__header_filter_entry_impl__(__f)])])
+
+m4_define([__header_filter_entries__],
+[m4_equote()__header_filter_entries_impl__([$1])[]m4_dquote()])
+
+# source
+#
+
+# $1 - configuration
+# $2 - directory
+#
+m4_define([__source_config_entry_impl__],
+[ <ObjectFileName m4_dnl
+Condition="'$(Configuration)|$(Platform)'==m4_dnl
+'[]m4_patsubst([$1], ["], [])'">m4_dnl
+$(IntDir)\[$2]\</ObjectFileName>])
+
+m4_define([__source_entry_body__],
+[m4_ifelse([$1], [$2],
+[ <ClCompile Include="[$1]" />],
+[ <ClCompile Include="[$1]">m4_dnl
+m4_foreach([__c],
+[__value_impl__([configurations])],
+[
+__source_config_entry_impl__(__c, [$2])])
+ </ClCompile>])])
+
+m4_define([__source_entry_impl__],
+[__source_entry_body__([$1],
+m4_patsubst([$1], [^\(.*\)\\\(.*\)$], [\1]))])
+
+m4_define([__source_entry__],
+[m4_equote()__source_entry_impl__([$1])[]m4_dquote()])
+
+m4_define([__source_entries_impl__],
+[m4_foreach_w([__f], __path_impl__([$1]), [
+__source_entry_impl__(__f)])])
+
+m4_define([__source_entries__],
+[m4_equote()__source_entries_impl__([$1])[]m4_dquote()])
+
+# source_filter
+#
+m4_define([__source_filter_entry_impl__],
+[ <ClCompile Include="[$1]">
+ <Filter>Source Files</Filter>
+ </ClCompile>])
+
+m4_define([__source_filter_entry__],
+[m4_equote()__source_filter_entry_impl__([$1])[]m4_dquote()])
+
+
+m4_define([__source_filter_entries_impl__],
+[m4_foreach_w([__f], __path_impl__([$1]), [
+__source_filter_entry_impl__(__f)])])
+
+m4_define([__source_filter_entries__],
+[m4_equote()__source_filter_entries_impl__([$1])[]m4_dquote()])
+
+# custom_build
+#
+m4_define([__custom_build_entry_tag_impl__],
+[ <[$1] Condition="'$(Configuration)|$(Platform)'==m4_dnl
+'[]m4_patsubst([$2], ["], [])'">[$3]</[$1]>])
+
+m4_define([__custom_build_entry_impl__],
+[ <CustomBuild Include="[$1]">m4_dnl
+m4_foreach([__c],
+[__value_impl__([configurations])],
+[
+__custom_build_entry_tag_impl__([Message], __c, [$2])
+__custom_build_entry_tag_impl__([Command], __c, [$3])
+__custom_build_entry_tag_impl__([Outputs], __c, [$4];%(Outputs))m4_ifelse([$5], [], [], [
+__custom_build_entry_tag_impl__([AdditionalInputs], __c, [$5])])])
+ </CustomBuild>])
+
+# (file, cmd-description, cmd, output;output[, add-dep;add-dep])
+#
+m4_define([__custom_build_entry__],
+[m4_equote()__custom_build_entry_impl__([$1],
+[$2], [$3], [$4], [$5])[]m4_dquote()])
+
+# Disable comments and quoting.
+#
+m4_changecom([])
+m4_changequote([])
+
+m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/vc10proj.make b/build-0.3/meta/vc10proj.make
new file mode 100644
index 0000000..3532e6e
--- /dev/null
+++ b/build-0.3/meta/vc10proj.make
@@ -0,0 +1,5 @@
+# file : build/meta/vc10proj.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/vc10proj-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc10sln-functions.make b/build-0.3/meta/vc10sln-functions.make
new file mode 100644
index 0000000..cb68d82
--- /dev/null
+++ b/build-0.3/meta/vc10sln-functions.make
@@ -0,0 +1,29 @@
+# file : build/meta/vc10sln-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ solution template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - template path, if doesn't start with /, assume relative to src_base
+# $2 - output name (optional)
+# $3 - project suffix (-vc10.vcxproj by default)
+# $4-9 - optional pairs of additional varibales and values $4=$5, $6=$7, etc
+#
+$(out_base)/%: meta-vc10sln = \
+$(call meta-vc10sln-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
+$2,$2,$(notdir $1)),$(subst \
+$(src_root),,$(src_base)),$(if $3,$3,-vc10.vcxproj),$4,$5,$6,$7,$8,$9)
+
+# $1 - template
+# $2 - output name
+# $3 - difference between src_base and src_root with leading '\'
+# $4 - project suffix
+# $4-10 - additional varibales
+#
+$(out_base)/%: meta-vc10sln-body = \
+$(call message,meta $(dist_prefix)$3/$2,$(if $5,$5='$6'; export $5; )$(if \
+$7,$7='$8'; export $7; )$(if $9,$9='$(10)'; export $9; )$(bld_root)/meta/vcsln \
+-v 10 -b $(dist_prefix)$3 -e '$4' -o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc10sln.make b/build-0.3/meta/vc10sln.make
new file mode 100644
index 0000000..ac4abed
--- /dev/null
+++ b/build-0.3/meta/vc10sln.make
@@ -0,0 +1,5 @@
+# file : build/meta/vc10sln.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/vc10sln-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc11proj-functions.make b/build-0.3/meta/vc11proj-functions.make
new file mode 100644
index 0000000..eff9091
--- /dev/null
+++ b/build-0.3/meta/vc11proj-functions.make
@@ -0,0 +1,27 @@
+# file : build/meta/vc11proj-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ project file template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - template path, if doesn't start with /, assume relative to src_base
+# $2 - output name (optional)
+# $3-8 - optional pairs of additional varibales and values $3=$4, $5=$6, etc
+#
+#
+$(out_base)/%: meta-vc11proj = \
+$(call meta-vc11proj-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
+$2,$2,$(notdir $1)),$(subst $(src_root),,$(src_base)),$3,$4,$5,$6,$7,$8)
+
+# $1 - template
+# $2 - output name
+# $3 - difference between src_base and src_root with leading '\'
+# $4-9 - additional varibales
+#
+$(out_base)/%: meta-vc11proj-body = \
+$(call message,meta $(dist_prefix)$3/$2,$(if $4,$4='$5'; export $4; )$(if \
+$6,$6='$7'; export $6; )$(if $8,$8='$9'; export $8; )$(bld_root)/meta/vc10proj \
+-o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc11proj.make b/build-0.3/meta/vc11proj.make
new file mode 100644
index 0000000..4cf98ea
--- /dev/null
+++ b/build-0.3/meta/vc11proj.make
@@ -0,0 +1,5 @@
+# file : build/meta/vc11proj.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/vc11proj-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc11sln-functions.make b/build-0.3/meta/vc11sln-functions.make
new file mode 100644
index 0000000..83cae1f
--- /dev/null
+++ b/build-0.3/meta/vc11sln-functions.make
@@ -0,0 +1,29 @@
+# file : build/meta/vc11sln-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ solution template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - template path, if doesn't start with /, assume relative to src_base
+# $2 - output name (optional)
+# $3 - project suffix (-vc11.vcxproj by default)
+# $4-9 - optional pairs of additional varibales and values $4=$5, $6=$7, etc
+#
+$(out_base)/%: meta-vc11sln = \
+$(call meta-vc11sln-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
+$2,$2,$(notdir $1)),$(subst \
+$(src_root),,$(src_base)),$(if $3,$3,-vc11.vcxproj),$4,$5,$6,$7,$8,$9)
+
+# $1 - template
+# $2 - output name
+# $3 - difference between src_base and src_root with leading '\'
+# $4 - project suffix
+# $4-10 - additional varibales
+#
+$(out_base)/%: meta-vc11sln-body = \
+$(call message,meta $(dist_prefix)$3/$2,$(if $5,$5='$6'; export $5; )$(if \
+$7,$7='$8'; export $7; )$(if $9,$9='$(10)'; export $9; )$(bld_root)/meta/vcsln \
+-v 11 -b $(dist_prefix)$3 -e '$4' -o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc11sln.make b/build-0.3/meta/vc11sln.make
new file mode 100644
index 0000000..8a212fe
--- /dev/null
+++ b/build-0.3/meta/vc11sln.make
@@ -0,0 +1,5 @@
+# file : build/meta/vc11sln.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/vc11sln-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc12proj-functions.make b/build-0.3/meta/vc12proj-functions.make
new file mode 100644
index 0000000..bee0cda
--- /dev/null
+++ b/build-0.3/meta/vc12proj-functions.make
@@ -0,0 +1,27 @@
+# file : build/meta/vc12proj-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ project file template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - template path, if doesn't start with /, assume relative to src_base
+# $2 - output name (optional)
+# $3-8 - optional pairs of additional varibales and values $3=$4, $5=$6, etc
+#
+#
+$(out_base)/%: meta-vc12proj = \
+$(call meta-vc12proj-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
+$2,$2,$(notdir $1)),$(subst $(src_root),,$(src_base)),$3,$4,$5,$6,$7,$8)
+
+# $1 - template
+# $2 - output name
+# $3 - difference between src_base and src_root with leading '\'
+# $4-9 - additional varibales
+#
+$(out_base)/%: meta-vc12proj-body = \
+$(call message,meta $(dist_prefix)$3/$2,$(if $4,$4='$5'; export $4; )$(if \
+$6,$6='$7'; export $6; )$(if $8,$8='$9'; export $8; )$(bld_root)/meta/vc10proj \
+-o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc12proj.make b/build-0.3/meta/vc12proj.make
new file mode 100644
index 0000000..7ac3a9a
--- /dev/null
+++ b/build-0.3/meta/vc12proj.make
@@ -0,0 +1,5 @@
+# file : build/meta/vc12proj.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/vc12proj-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc12sln-functions.make b/build-0.3/meta/vc12sln-functions.make
new file mode 100644
index 0000000..3900c01
--- /dev/null
+++ b/build-0.3/meta/vc12sln-functions.make
@@ -0,0 +1,29 @@
+# file : build/meta/vc12sln-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ solution template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - template path, if doesn't start with /, assume relative to src_base
+# $2 - output name (optional)
+# $3 - project suffix (-vc12.vcxproj by default)
+# $4-9 - optional pairs of additional varibales and values $4=$5, $6=$7, etc
+#
+$(out_base)/%: meta-vc12sln = \
+$(call meta-vc12sln-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
+$2,$2,$(notdir $1)),$(subst \
+$(src_root),,$(src_base)),$(if $3,$3,-vc12.vcxproj),$4,$5,$6,$7,$8,$9)
+
+# $1 - template
+# $2 - output name
+# $3 - difference between src_base and src_root with leading '\'
+# $4 - project suffix
+# $4-10 - additional varibales
+#
+$(out_base)/%: meta-vc12sln-body = \
+$(call message,meta $(dist_prefix)$3/$2,$(if $5,$5='$6'; export $5; )$(if \
+$7,$7='$8'; export $7; )$(if $9,$9='$(10)'; export $9; )$(bld_root)/meta/vcsln \
+-v 12 -b $(dist_prefix)$3 -e '$4' -o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc12sln.make b/build-0.3/meta/vc12sln.make
new file mode 100644
index 0000000..9e61b93
--- /dev/null
+++ b/build-0.3/meta/vc12sln.make
@@ -0,0 +1,5 @@
+# file : build/meta/vc12sln.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/vc12sln-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc8proj-functions.make b/build-0.3/meta/vc8proj-functions.make
new file mode 100644
index 0000000..695405c
--- /dev/null
+++ b/build-0.3/meta/vc8proj-functions.make
@@ -0,0 +1,27 @@
+# file : build/meta/vc8proj-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ project file template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - template path, if doesn't start with /, assume relative to src_base
+# $2 - output name (optional)
+# $3-8 - optional pairs of additional varibales and values $3=$4, $5=$6, etc
+#
+#
+$(out_base)/%: meta-vc8proj = \
+$(call meta-vc8proj-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
+$2,$2,$(notdir $1)),$(subst $(src_root),,$(src_base)),$3,$4,$5,$6,$7,$8)
+
+# $1 - template
+# $2 - output name
+# $3 - difference between src_base and src_root with leading '\'
+# $4-9 - additional varibales
+#
+$(out_base)/%: meta-vc8proj-body = \
+$(call message,meta $(dist_prefix)$3/$2,$(if $4,$4='$5'; export $4; )$(if \
+$6,$6='$7'; export $6; )$(if $8,$8='$9'; export $8; )$(bld_root)/meta/vc9proj \
+-o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc8proj.make b/build-0.3/meta/vc8proj.make
new file mode 100644
index 0000000..179db17
--- /dev/null
+++ b/build-0.3/meta/vc8proj.make
@@ -0,0 +1,5 @@
+# file : build/meta/vc8proj.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/vc8proj-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc8sln-functions.make b/build-0.3/meta/vc8sln-functions.make
new file mode 100644
index 0000000..0391a1c
--- /dev/null
+++ b/build-0.3/meta/vc8sln-functions.make
@@ -0,0 +1,29 @@
+# file : build/meta/vc8sln-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ 8 solution template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - template path, if doesn't start with /, assume relative to src_base
+# $2 - output name (optional)
+# $3 - project suffix (-vc8.vcproj by default)
+# $4-9 - optional pairs of additional varibales and values $4=$5, $6=$7, etc
+#
+$(out_base)/%: meta-vc8sln = \
+$(call meta-vc8sln-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
+$2,$2,$(notdir $1)),$(subst \
+$(src_root),,$(src_base)),$(if $3,$3,-vc8.vcproj),$4,$5,$6,$7,$8,$9)
+
+# $1 - template
+# $2 - output name
+# $3 - difference between src_base and src_root with leading '\'
+# $4 - project suffix
+# $4-10 - additional varibales
+#
+$(out_base)/%: meta-vc8sln-body = \
+$(call message,meta $(dist_prefix)$3/$2,$(if $5,$5='$6'; export $5; )$(if \
+$7,$7='$8'; export $7; )$(if $9,$9='$(10)'; export $9; )$(bld_root)/meta/vcsln \
+-v 8 -b $(dist_prefix)$3 -e '$4' -o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc8sln.make b/build-0.3/meta/vc8sln.make
new file mode 100644
index 0000000..70e0703
--- /dev/null
+++ b/build-0.3/meta/vc8sln.make
@@ -0,0 +1,5 @@
+# file : build/meta/vc8sln.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/vc8sln-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc9proj b/build-0.3/meta/vc9proj
new file mode 100755
index 0000000..03130b4
--- /dev/null
+++ b/build-0.3/meta/vc9proj
@@ -0,0 +1,75 @@
+#! /usr/bin/env bash
+
+# file : build/meta/vc9proj
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ 9 project file templates.
+#
+# Options:
+#
+# -o <output-file>
+#
+# Arguments:
+#
+# <template-file>
+#
+trap 'exit 1' ERR
+
+function error ()
+{
+ echo "$*" 1>&2
+}
+
+output=
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -o)
+ output=$2
+ shift 2
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+input=$1
+
+if [ "$input" = "" ]; then
+ error "no input file"
+ exit 1
+fi
+
+if [ "$output" = "" ]; then
+ error "no output file"
+ exit 1
+fi
+
+m4=m4
+u2d=todos
+
+# Assume this script is never found via PATH.
+#
+meta=`dirname $0`
+
+build="$meta/.."
+install=$build/install/install
+
+
+# Determine available configurations.
+#
+conf=`sed -n -e \
+'/^[ ]*<Configuration$/{n;s/[ ]*Name="\([^"]*\)"$/"\1",/p};d' $input`
+conf=`echo $conf | sed -e 's/,$//'`
+
+export configurations=$conf
+
+# Make sure the output directory exist.
+#
+$install -d -m 755 `dirname $output`
+
+$m4 -P -D__meta_base__=$meta $meta/vc9proj.m4 $input >$output
+$u2d $output
+chmod 644 $output
diff --git a/build-0.3/meta/vc9proj-functions.make b/build-0.3/meta/vc9proj-functions.make
new file mode 100644
index 0000000..987cff7
--- /dev/null
+++ b/build-0.3/meta/vc9proj-functions.make
@@ -0,0 +1,27 @@
+# file : build/meta/vc9proj-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ project file template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - template path, if doesn't start with /, assume relative to src_base
+# $2 - output name (optional)
+# $3-8 - optional pairs of additional varibales and values $3=$4, $5=$6, etc
+#
+#
+$(out_base)/%: meta-vc9proj = \
+$(call meta-vc9proj-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
+$2,$2,$(notdir $1)),$(subst $(src_root),,$(src_base)),$3,$4,$5,$6,$7,$8)
+
+# $1 - template
+# $2 - output name
+# $3 - difference between src_base and src_root with leading '\'
+# $4-9 - additional varibales
+#
+$(out_base)/%: meta-vc9proj-body = \
+$(call message,meta $(dist_prefix)$3/$2,$(if $4,$4='$5'; export $4; )$(if \
+$6,$6='$7'; export $6; )$(if $8,$8='$9'; export $8; )$(bld_root)/meta/vc9proj \
+-o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc9proj.m4 b/build-0.3/meta/vc9proj.m4
new file mode 100644
index 0000000..e8d56b4
--- /dev/null
+++ b/build-0.3/meta/vc9proj.m4
@@ -0,0 +1,103 @@
+m4_divert(-1)
+# file : build/meta/vc9proj.m4
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+m4_changequote([, ])
+
+m4_include(__meta_base__[/common.m4])
+m4_include(__meta_base__[/windows-common.m4])
+
+# file
+#
+m4_define([__file_entry_impl__],[
+ <File
+ RelativePath=".\[$1]"
+ >
+ </File>])
+
+m4_define([__file_entry__],
+[m4_equote()__file_entry_impl__([$1])[]m4_dquote()])
+
+
+m4_define([__file_entries_impl__],
+[m4_foreach_w([__f], __path_impl__([$1]), [__file_entry_impl__(__f)])])
+
+m4_define([__file_entries__],
+[m4_equote()__file_entries_impl__([$1])[]m4_dquote()])
+
+# file_custom_build
+#
+m4_define([__custom_build_entry_impl__],[
+ <FileConfiguration
+ Name=[$1]
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="[$2]"
+ CommandLine="[$3]"m4_ifelse([$5], [], [], [
+ AdditionalDependencies="$5"])
+ Outputs="[$4]"
+ />
+ </FileConfiguration>])
+
+m4_define([__file_entry_custom_build_impl__],[
+ <File
+ RelativePath=".\[$1]"
+ >m4_dnl
+m4_foreach([__c],
+[__value_impl__([configurations])],
+[__custom_build_entry_impl__(__c, [$2], [$3], [$4], [$5])])
+ </File>])
+
+# (file, cmd-description, cmd, output;output[, add-dep;add-dep])
+#
+m4_define([__file_entry_custom_build__],
+[m4_equote()__file_entry_custom_build_impl__([$1],
+[$2], [$3], [$4], [$5])[]m4_dquote()])
+
+
+# source
+#
+
+# $1 - configuration
+# $2 - directory
+#
+m4_define([__source_config_entry_impl__],[
+ <FileConfiguration
+ Name=[$1]
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\[$2]\"
+ />
+ </FileConfiguration>])
+
+m4_define([__source_config_impl__],
+[m4_ifelse([$1], [$2], [],
+[m4_foreach([__c],
+[__value_impl__([configurations])],
+[__source_config_entry_impl__(__c, [$1])])])])
+
+m4_define([__source_entry_impl__],[
+ <File
+ RelativePath=".\[$1]"
+ >m4_dnl
+__source_config_impl__(m4_patsubst([$1], [^\(.*\)\\\(.*\)$], [\1]), [$1])
+ </File>])
+
+m4_define([__source_entry__],
+[m4_equote()__source_entry_impl__([$1])[]m4_dquote()])
+
+m4_define([__source_entries_impl__],
+[m4_foreach_w([__f], __path_impl__([$1]), [__source_entry_impl__(__f)])])
+
+m4_define([__source_entries__],
+[m4_equote()__source_entries_impl__([$1])[]m4_dquote()])
+
+# Disable comments and quoting.
+#
+m4_changecom([])
+m4_changequote([])
+
+m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/vc9proj.make b/build-0.3/meta/vc9proj.make
new file mode 100644
index 0000000..03eb2c5
--- /dev/null
+++ b/build-0.3/meta/vc9proj.make
@@ -0,0 +1,5 @@
+# file : build/meta/vc9proj.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/vc9proj-functions.make,$(out_base))
diff --git a/build-0.3/meta/vc9sln-functions.make b/build-0.3/meta/vc9sln-functions.make
new file mode 100644
index 0000000..07b03c3
--- /dev/null
+++ b/build-0.3/meta/vc9sln-functions.make
@@ -0,0 +1,29 @@
+# file : build/meta/vc9sln-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ 9 solution template and write output to $(dist_prefix)/<path>.
+# Where path is computed as difference between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - template path, if doesn't start with /, assume relative to src_base
+# $2 - output name (optional)
+# $3 - project suffix (-vc9.vcproj by default)
+# $4-9 - optional pairs of additional varibales and values $4=$5, $6=$7, etc
+#
+$(out_base)/%: meta-vc9sln = \
+$(call meta-vc9sln-body,$(if $(filter /%,$1),$1,$(src_base)/$1),$(if \
+$2,$2,$(notdir $1)),$(subst \
+$(src_root),,$(src_base)),$(if $3,$3,-vc9.vcproj),$4,$5,$6,$7,$8,$9)
+
+# $1 - template
+# $2 - output name
+# $3 - difference between src_base and src_root with leading '\'
+# $4 - project suffix
+# $4-10 - additional varibales
+#
+$(out_base)/%: meta-vc9sln-body = \
+$(call message,meta $(dist_prefix)$3/$2,$(if $5,$5='$6'; export $5; )$(if \
+$7,$7='$8'; export $7; )$(if $9,$9='$(10)'; export $9; )$(bld_root)/meta/vcsln \
+-v 9 -b $(dist_prefix)$3 -e '$4' -o $(dist_prefix)$3/$2 $1)
diff --git a/build-0.3/meta/vc9sln.make b/build-0.3/meta/vc9sln.make
new file mode 100644
index 0000000..50c6b7b
--- /dev/null
+++ b/build-0.3/meta/vc9sln.make
@@ -0,0 +1,5 @@
+# file : build/meta/vc9sln.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/vc9sln-functions.make,$(out_base))
diff --git a/build-0.3/meta/vcsln b/build-0.3/meta/vcsln
new file mode 100755
index 0000000..99aaf47
--- /dev/null
+++ b/build-0.3/meta/vcsln
@@ -0,0 +1,181 @@
+#! /usr/bin/env bash
+
+# file : build/meta/vcsln
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ solution templates.
+#
+# Options:
+#
+# -b <base-dir>
+# -o <output-file>
+# -e <project-ext>
+# -v <vc-version> {8, 9, 10, 11, 12}
+#
+# Arguments:
+#
+# <template-file>
+#
+trap 'exit 1' ERR
+
+function error ()
+{
+ echo "$*" 1>&2
+}
+
+base=
+output=
+projext=
+vcver=
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -b)
+ base=$2
+ shift 2
+ ;;
+ -o)
+ output=$2
+ shift 2
+ ;;
+ -e)
+ projext=$2
+ shift 2
+ ;;
+ -v)
+ vcver=$2
+ shift 2
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+input=$1
+
+if [ "$input" = "" ]; then
+ error "no input file"
+ exit 1
+fi
+
+if [ "$base" = "" ]; then
+ error "no base directory"
+ exit 1
+fi
+
+if [ "$output" = "" ]; then
+ error "no output file"
+ exit 1
+fi
+
+if [ "$projext" = "" ]; then
+ error "no VC++ project file extension"
+ exit 1
+fi
+
+if [ "$vcver" = "" ]; then
+ error "no VC++ version"
+ exit 1
+fi
+
+m4=m4
+u2d=todos
+
+# Assume this script is never found via PATH.
+#
+meta=`dirname $0`
+
+build="$meta/.."
+install=$build/install/install
+
+# Find all the project files.
+#
+all_proj_files=`find $base -name '*'$projext`
+
+# Filter out subdirectories which already have solution files.
+#
+proj_files=
+proj_names=
+for f in $all_proj_files; do
+ n=`echo "$f" | sed -e "s%^$base/\(.*\)/.*$%\1%"`
+
+ # If there is no sub-directory for this project, then use the
+ # root directory name.
+ #
+ if [ "$n" = "$f" ]; then
+ n=`basename $base`
+ d="."
+ else
+ d=$n
+ fi
+
+ while [ "$d" != "." ]; do
+ if ls $base/$d/*.sln >/dev/null 2>&1; then
+ break
+ fi
+ d=`dirname $d`
+ done
+
+ # If we din't find any solutions, then add this file to the list.
+ #
+ if [ "$d" = "." ]; then
+ proj_names="$proj_names $n"
+ proj_files="$proj_files $f"
+ fi
+done
+
+# Determine available configurations and project uuids.
+#
+conf=
+proj_uuids=
+for f in $proj_files; do
+
+ if [ "$conf" = "" ]; then
+ if [ "$vcver" = "8" -o "$vcver" = "9" ]; then
+ conf=`cat $f | fromdos | sed -n -e \
+ '/^[ ]*<Configuration$/{n;s/[ ]*Name="\([^"]*\)"$/"\1",/p};d' -`
+ conf=`echo $conf | sed -e 's/,$//'`
+ else
+ conf=`cat $f | fromdos | sed -n -e \
+ 's/^[ ]*<ProjectConfiguration Include="\([^"]*\)">$/"\1",/p;d' -`
+ conf=`echo $conf | sed -e 's/,$//'`
+ fi
+ fi
+
+ if [ "$vcver" = "8" -o "$vcver" = "9" ]; then
+ uuid=`cat $f | fromdos | sed -n -e \
+ 's/^[ ]*ProjectGUID="{\([^}]*\)}"$/\1/p;d'`
+ else
+ uuid=`cat $f | fromdos | sed -n -e \
+ 's/^[ ]*<ProjectGuid>{\([^}]*\)}<\/ProjectGuid>$/\1/p;d'`
+ fi
+
+ if [ "$proj_uuids" = "" ]; then
+ proj_uuids=$uuid
+ else
+ proj_uuids="$proj_uuids $uuid"
+ fi
+done
+
+proj_files=`echo $proj_files | sed -e "s%$base/%%g"`
+proj_names=`echo $proj_names | sed -e "s%/%-%g"`
+
+#error $proj_files
+#error $proj_names
+#error $proj_uuids
+#error $conf
+
+export configurations=$conf
+export project_files=$proj_files
+export project_names=$proj_names
+export project_uuids=$proj_uuids
+
+# Make sure the output directory exist.
+#
+$install -d -m 755 `dirname $output`
+
+$m4 -P -D__meta_base__=$meta $meta/vcsln.m4 $input >$output
+$u2d $output
+chmod 644 $output
diff --git a/build-0.3/meta/vcsln.m4 b/build-0.3/meta/vcsln.m4
new file mode 100644
index 0000000..2299bac
--- /dev/null
+++ b/build-0.3/meta/vcsln.m4
@@ -0,0 +1,82 @@
+m4_divert(-1)
+# file : build/meta/vcsln.m4
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+m4_changequote([, ])
+
+m4_include(__meta_base__[/common.m4])
+m4_include(__meta_base__[/windows-common.m4])
+
+# solution_configuration
+#
+m4_define([__solution_configuration_entry_impl__], [ [$1] = [$1]])
+
+m4_define([__solution_configurations_impl__],
+ [m4_foreach([__c],
+ [__value_impl__([configurations])],
+ [__solution_configuration_entry_impl__(m4_patsubst(__c, ["], []))
+])])
+
+m4_define([__solution_configurations__],
+ [m4_equote()__solution_configurations_impl__()[]m4_dquote()])
+
+# project_configuration
+#
+m4_define([__project_configuration_entry_item_impl__],
+[ {[$1]}.[$2].ActiveCfg = [$2]
+ {[$1]}.[$2].Build.0 = [$2]])
+
+m4_define([__project_configuration_entry_impl__],
+ [m4_foreach(
+ [__c],
+ [__value_impl__([configurations])],
+ [__project_configuration_entry_item_impl__([$1], m4_patsubst(__c, ["], []))
+])])
+
+m4_define([__project_configurations_impl__],
+ [m4_foreach_w(
+ [__u],
+ [__value_impl__([project_uuids])],
+ [__project_configuration_entry_impl__(__u)])])
+
+m4_define([__project_configurations__],
+ [m4_equote()__project_configurations_impl__()[]m4_dquote()])
+
+# project_entry(name, file, uuid)
+#
+m4_define([__project_entry_impl__],
+[Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "[$1]", "[$2]", "{[$3]}"
+EndProject])
+
+m4_define([__project_entry__],
+ [m4_equote()__project_entry_impl__([$1], [$2], [$3])[]m4_dquote()])
+
+# projects
+#
+m4_define([__project_step_impl__],
+[__project_entry_impl__(
+ m4_substr([$1], 0, m4_ifelse(m4_index([$1], [ ]), [-1], [m4_len([$1])], [m4_index([$1], [ ])])),
+ m4_substr([$2], 0, m4_ifelse(m4_index([$2], [ ]), [-1], [m4_len([$2])], [m4_index([$2], [ ])])),
+ m4_substr([$3], 0, m4_ifelse(m4_index([$3], [ ]), [-1], [m4_len([$3])], [m4_index([$3], [ ])])))[]m4_dnl
+m4_ifelse(m4_index([$1], [ ]), [-1],, [
+__project_step_impl__(
+ m4_substr([$1], m4_incr(m4_index([$1], [ ]))),
+ m4_substr([$2], m4_incr(m4_index([$2], [ ]))),
+ m4_substr([$3], m4_incr(m4_index([$3], [ ]))))])])
+
+m4_define([__projects_impl__],
+[__project_step_impl__(
+ __value_impl__([project_names]),
+ __path_impl__([project_files]),
+ __value_impl__([project_uuids]))])
+
+m4_define([__projects__],
+ [m4_equote()__projects_impl__()[]m4_dquote()])
+
+# Disable comments and quoting.
+#
+m4_changecom([])
+m4_changequote([])
+
+m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/vctest b/build-0.3/meta/vctest
new file mode 100755
index 0000000..0502364
--- /dev/null
+++ b/build-0.3/meta/vctest
@@ -0,0 +1,143 @@
+#! /usr/bin/env bash
+
+# file : build/meta/vctest
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ test templates.
+#
+# Options:
+#
+# -b <base-dir>
+# -r <root-dir>
+# -o <output-file>
+# -t <template-file>
+#
+# Arguments:
+#
+# <solution-files>
+#
+trap 'exit 1' ERR
+
+function error ()
+{
+ echo "$*" 1>&2
+}
+
+base=
+root=
+output=
+sln=
+input=
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -b)
+ base=$2
+ shift 2
+ ;;
+ -r)
+ root=$2
+ shift 2
+ ;;
+ -o)
+ output=$2
+ shift 2
+ ;;
+ -t)
+ input=$2
+ shift 2
+ ;;
+ *)
+ sln="$sln $1"
+ shift
+ ;;
+ esac
+done
+
+
+if [ "$input" = "" ]; then
+ error "no template file"
+ exit 1
+fi
+
+if [ "$base" = "" ]; then
+ error "no base directory"
+ exit 1
+fi
+
+if [ "$root" = "" ]; then
+ error "no root directory"
+ exit 1
+fi
+
+if [ "$output" = "" ]; then
+ error "no output file"
+ exit 1
+fi
+
+if [ "$sln" = "" ]; then
+ error "no solution file"
+ exit 1
+fi
+
+
+m4=m4
+u2d=todos
+
+# Assume this script is never found via PATH.
+#
+meta=`dirname $0`
+
+build="$meta/.."
+install=$build/install/install
+
+# Figure out topdir
+#
+if [ "$base" = "$root" ]; then
+ topdir=.
+else
+ topdir=`echo $base | sed -e "s%^$root/%%" - | \
+sed -e 's%[^/][^/]*/%../%g;s%[^./][^./]*$%..%' -`
+fi
+
+#
+
+# Determine possible configurations.
+#
+for f in $sln; do
+ sln_conf=`cat $f | fromdos | sed -n -e \
+'/^[ ]*GlobalSection(SolutionConfigurationPlatforms).*$/{\
+: loop;\
+n;\
+/^[ ]*EndGlobalSection$/q;\
+s/^[ ]*\([^=]*\) = \([^=]*\)$/\1/p;\
+b loop};\
+d' -`
+ break
+done
+
+confs=
+plats=
+for c in $sln_conf; do
+ conf=`echo $c | sed -e 's/^\(.*\)|.*$/\1/'`
+ plat=`echo $c | sed -e 's/^.*|\(.*\)$/\1/'`
+
+ confs="$confs $conf"
+ plats="$plats $plat"
+done
+
+confs=`echo $confs | sed -e 's/ /\n/g' - | sort -u`
+plats=`echo $plats | sed -e 's/ /\n/g' - | sort -u`
+
+export topdir
+export configurations=$confs
+export platforms=$plats
+
+# Make sure the output directory exist.
+#
+$install -d -m 755 `dirname $output`
+
+$m4 -P -D__meta_base__=$meta $meta/vctest.m4 $input >$output
+$u2d $output
+chmod 644 $output
diff --git a/build-0.3/meta/vctest-functions.make b/build-0.3/meta/vctest-functions.make
new file mode 100644
index 0000000..e67945b
--- /dev/null
+++ b/build-0.3/meta/vctest-functions.make
@@ -0,0 +1,28 @@
+# file : build/meta/vctest-functions.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+# Process VC++ solution and test template and write output to
+# $(dist_prefix)/<path>. Where path is computed as difference
+# between src_base and src_root.
+#
+# Arguments:
+#
+# $1 - solution path, if doens't start with /, assume relative to
+# dist_prefix/<path>
+# $2 - template path, if doesn't start with /, assume relative to src_base
+# $3 - output name (optional)
+#
+$(out_base)/%: meta-vctest = \
+$(call meta-vctest-body,$1,$(if $(filter /%,$2),$2,$(src_base)/$2),$(if \
+$3,$3,$(notdir $2)),$(subst $(src_root),,$(src_base)))
+
+# $1 - solution
+# $2 - template
+# $3 - output name
+# $4 - difference between src_base and src_root with leading '\'
+#
+$(out_base)/%: meta-vctest-body = \
+$(call message,meta $(dist_prefix)$4/$3,$(bld_root)/meta/vctest \
+-r $(dist_prefix) -b $(dist_prefix)$4 -t $2 -o $(dist_prefix)$4/$3 \
+$(if $(filter /%,$1),$1,$(dist_prefix)$4/$1))
diff --git a/build-0.3/meta/vctest.m4 b/build-0.3/meta/vctest.m4
new file mode 100644
index 0000000..724a0fc
--- /dev/null
+++ b/build-0.3/meta/vctest.m4
@@ -0,0 +1,17 @@
+m4_divert(-1)
+# file : build/meta/vctest.m4
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+m4_changequote([, ])
+
+m4_include(__meta_base__[/common.m4])
+m4_include(__meta_base__[/windows-common.m4])
+
+
+# Disable comments and quoting.
+#
+m4_changecom([])
+m4_changequote([])
+
+m4_divert(0)m4_dnl
diff --git a/build-0.3/meta/vctest.make b/build-0.3/meta/vctest.make
new file mode 100644
index 0000000..1cf336c
--- /dev/null
+++ b/build-0.3/meta/vctest.make
@@ -0,0 +1,5 @@
+# file : build/meta/vctest.make
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+$(call include-once,$(bld_root)/meta/vctest-functions.make,$(out_base))
diff --git a/build-0.3/meta/windows-common.m4 b/build-0.3/meta/windows-common.m4
new file mode 100644
index 0000000..700f8e8
--- /dev/null
+++ b/build-0.3/meta/windows-common.m4
@@ -0,0 +1,49 @@
+# file : build/meta/windows-common.m4
+# copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
+# license : GNU GPL v2; see accompanying LICENSE file
+
+m4_define([__path_impl__], [m4_translit(__env_impl__([$1]),[/],[\])])
+m4_define([__path__], [m4_equote()__path_impl__([$1])[]m4_dquote()])
+
+m4_define([__file_impl__], [__env_impl__([$1])])
+m4_define([__file__], [m4_equote()__file_impl__([$1])[]m4_dquote()])
+
+# Convert POSIX shell quoting to Windows. Arguments that are in
+# single quotes (') are converted to double quotes ("). Double
+# quotes that are nested in single quotes are converted to \".
+# Quote escaping is not recognized. Single-quoted arguments
+# should be quoted as a whole, for example 'foo-bar' and not
+# foo-'bar'.
+#
+
+m4_define([__shell_quotes_convert_impl__], [m4_patsubst([$1], ["], [\\"])])
+
+# $1 string without the opening quote
+# $2 index of the closing quote
+#
+m4_define([__shell_quotes_in_quote_impl__],
+["__shell_quotes_convert_impl__(m4_substr([$1], [0], [$2]))"[]m4_dnl
+ __shell_quotes_impl__(m4_substr([$1], m4_incr([$2])))])
+
+# $1 string without the leading space
+# $2 index of the next space or -1
+#
+m4_define([__shell_quotes_in_space_impl__],
+[m4_substr([$1], [0], m4_ifelse([$2], [-1], [m4_len([$1])], [$2]))[]m4_dnl
+m4_ifelse(
+ [$2], [-1],
+ [],
+ [ __shell_quotes_impl__(m4_substr([$1], m4_incr([$2])))])])
+
+#
+#
+m4_define([__shell_quotes_impl__],
+[m4_ifelse(
+ m4_index([$1], [']), [0],
+ [__shell_quotes_in_quote_impl__(
+ m4_substr([$1], [1]),
+ m4_index(m4_substr([$1], [1]), [']))],
+ [__shell_quotes_in_space_impl__([$1], m4_index([$1], [ ]))])])
+
+m4_define([__shell_quotes__],
+[m4_equote()__shell_quotes_impl__([$1])[]m4_dquote()])