diff options
Diffstat (limited to 'build-0.3/meta/vctest')
-rwxr-xr-x | build-0.3/meta/vctest | 143 |
1 files changed, 143 insertions, 0 deletions
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 |