From c832963ebe7939393f1108d31aa569723190177c Mon Sep 17 00:00:00 2001
From: Boris Kolpackov <boris@codesynthesis.com>
Date: Wed, 16 Jul 2014 09:39:06 +0200
Subject: Add Windows test scripts (VC and MinGW)

---
 test/windows/all          |  53 +++++++++++++++++++
 test/windows/all-vcver    |   3 ++
 test/windows/build.bat    | 130 ++++++++++++++++++++++++++++++++++++++++++++++
 test/windows/mingw/build  |  62 ++++++++++++++++++++++
 test/windows/mingw/unpack |   3 ++
 test/windows/setenv.bat   |  34 ++++++++++++
 test/windows/unpack       |  43 +++++++++++++++
 7 files changed, 328 insertions(+)
 create mode 100755 test/windows/all
 create mode 100755 test/windows/all-vcver
 create mode 100755 test/windows/build.bat
 create mode 100755 test/windows/mingw/build
 create mode 100755 test/windows/mingw/unpack
 create mode 100644 test/windows/setenv.bat
 create mode 100755 test/windows/unpack

(limited to 'test')

diff --git a/test/windows/all b/test/windows/all
new file mode 100755
index 0000000..31d5773
--- /dev/null
+++ b/test/windows/all
@@ -0,0 +1,53 @@
+#! /usr/bin/env bash
+
+trap 'exit 1' ERR
+
+function error ()
+{
+  echo "$*" 1>&2
+}
+
+function usage ()
+{
+  error "usage: $0 vc-version conf plat [action]"
+  error "  valid configurations are: {Debug,Release}|all"
+  error "  valid platforms are: {Win32,x64}|all"
+  error "  valid actions are: /Build (default), /Clean, and /Rebuild"
+}
+
+if [ "$1" = "" ]; then
+  error vc version expected
+  usage
+  exit 1
+fi
+
+if [ "$2" = "" ]; then
+  error configuration expected
+  usage
+  exit 1
+fi
+
+if [ "$3" = "" ]; then
+  error platform expected
+  usage
+  exit 1
+fi
+
+action=$4
+if [ "$action" == "" ]; then
+  action=/Build
+fi
+
+cd xsd-i686-windows
+
+cmd.exe /C ..\\setenv.bat "$1" ..\\build.bat "$1" "$2" "$3" "$action"
+
+cd examples/cxx/tree
+cmd.exe /C ..\\..\\..\\..\\setenv.bat "$1" test.bat
+cd ../../..
+
+cd examples/cxx/parser
+cmd.exe /C ..\\..\\..\\..\\setenv.bat "$1" test.bat
+cd ../../..
+
+cd ..
diff --git a/test/windows/all-vcver b/test/windows/all-vcver
new file mode 100755
index 0000000..fccce22
--- /dev/null
+++ b/test/windows/all-vcver
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+for v in 8 9 10 11 12; do ./unpack && ./all $v all all 2>&1 | tee all-$v.log; done
diff --git a/test/windows/build.bat b/test/windows/build.bat
new file mode 100755
index 0000000..dc427ab
--- /dev/null
+++ b/test/windows/build.bat
@@ -0,0 +1,130 @@
+@echo off
+rem
+rem build.bat vc-version conf plat [/Build|/Clean|/Rebuild]
+rem
+rem conf: {Debug,Release}|all
+rem plat: {Win32,x64}|all
+rem
+
+setlocal
+
+if "_%1_" == "__" (
+  echo no VC++ version specified
+  goto usage
+)
+
+if "_%~2_" == "__" (
+  echo no configuration specified
+  goto usage
+)
+
+if "_%~3_" == "__" (
+  echo no platform specified
+  goto usage
+)
+
+set "failed="
+
+if "_%1_" == "_8_" set "vcver=8"
+if "_%1_" == "_9_" set "vcver=9"
+if "_%1_" == "_10_" set "vcver=10"
+if "_%1_" == "_11_" set "vcver=11"
+if "_%1_" == "_12_" set "vcver=12"
+
+if "_%vcver%_" == "__" (
+  echo unknown VC++ version %1
+  goto usage
+)
+
+set "confs=%~2"
+set "plats=%~3"
+
+if "_%confs%_" == "_all_" set "confs=Debug Release"
+if "_%plats%_" == "_all_" set "plats=Win32 x64"
+
+set "action=%4"
+if "_%action%_" == "__" set "action=/Build"
+
+set "devenv=%DEVENV%"
+if "_%devenv%_" == "__" set "devenv=devenv.com"
+
+goto start
+
+rem
+rem %1 - solution name
+rem %2 - configuration to build
+rem %3 - platform to build
+rem
+:run_build
+  echo.
+  echo building %1 %3 %2
+  "%devenv%" %1 %action% "%2|%3" 2>&1
+  if errorlevel 1 set "failed=%failed% %1\%3\%2"
+goto :eof
+
+:start
+
+for %%c in (%confs%) do (
+  for %%p in (%plats%) do (
+    call :run_build examples/cxx/tree/tree-vc%vcver%.sln %%c %%p
+  )
+)
+
+if not "_%failed%_" == "__" goto error
+
+for %%c in (%confs%) do (
+  for %%p in (%plats%) do (
+    call :run_build examples/cxx/tree/embedded/embedded-vc%vcver%.sln %%c %%p
+  )
+)
+
+if not "_%failed%_" == "__" goto error
+
+for %%c in (%confs%) do (
+  for %%p in (%plats%) do (
+    call :run_build examples/cxx/tree/custom/custom-vc%vcver%.sln %%c %%p
+  )
+)
+
+if not "_%failed%_" == "__" goto error
+
+for %%c in (%confs%) do (
+  for %%p in (%plats%) do (
+    call :run_build examples/cxx/tree/custom/calendar/calendar-vc%vcver%.sln %%c %%p
+  )
+)
+
+if not "_%failed%_" == "__" goto error
+
+for %%c in (%confs%) do (
+  for %%p in (%plats%) do (
+    call :run_build examples/cxx/parser/parser-vc%vcver%.sln %%c %%p
+  )
+)
+
+if not "_%failed%_" == "__" goto error
+
+echo.
+echo ALL BUILDS SUCCEEDED
+echo.
+goto end
+
+:usage
+echo.
+echo usage: build.bat vc-version conf plat [action]
+echo   valid configurations are: {Debug,Release}|all
+echo   valid platforms are: {Win32,x64}|all
+echo   valid actions are: /Build (default), /Clean, and /Rebuild
+echo.
+
+:error
+if not "_%failed%_" == "__" (
+  echo.
+  for %%t in (%failed%) do echo FAILED: %%t
+  echo.
+)
+endlocal
+exit /b 1
+
+:end
+endlocal
diff --git a/test/windows/mingw/build b/test/windows/mingw/build
new file mode 100755
index 0000000..b309908
--- /dev/null
+++ b/test/windows/mingw/build
@@ -0,0 +1,62 @@
+#! /usr/bin/env bash
+
+# Build XSD examples for MinGW.
+#
+# -rebuild
+# -test
+#
+trap 'exit 1' ERR
+
+function error ()
+{
+  echo "$*" 1>&2
+}
+
+# Xerces-C++ installation directory (not build directory).
+#
+XERCESROOT=/c/projects/xerces-mingw32
+
+CPPFLAGS="-I$XERCESROOT/include"
+CXXFLAGS="-W -Wall"
+LDFLAGS="-L$XERCESROOT/lib -Wl,--enable-auto-import"
+PATH="$XERCESROOT/lib:$PATH"
+
+test=n
+rebuild=n
+
+while [ $# -gt 0 ]; do
+  case $1 in
+    -rebuild)
+      rebuild=y
+      shift
+      ;;
+    -test)
+      test=y
+      shift
+      ;;
+    *)
+      error "unknown option: $1"
+      exit 1
+      ;;
+  esac
+done
+
+cd xsd-i686-windows/examples
+
+# Clean everything up if we are rebuilding.
+#
+if [ $rebuild = y ]; then
+  make clean
+fi
+
+# Build.
+#
+make CPPFLAGS="$CPPFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS"
+
+# Test.
+#
+if [ $test = y ]; then
+  make test
+fi
+
+cd ../..
diff --git a/test/windows/mingw/unpack b/test/windows/mingw/unpack
new file mode 100755
index 0000000..ff24c84
--- /dev/null
+++ b/test/windows/mingw/unpack
@@ -0,0 +1,3 @@
+#! /usr/bin/env bash
+
+../unpack -mingw
diff --git a/test/windows/setenv.bat b/test/windows/setenv.bat
new file mode 100644
index 0000000..411f931
--- /dev/null
+++ b/test/windows/setenv.bat
@@ -0,0 +1,34 @@
+@echo off
+
+if "_%1_" == "__" (
+  echo no VC++ version specified
+  goto usage
+)
+
+set ROOT=c:\projects
+set "DIFF=c:\cygwin\bin\diff.exe -ubB"
+
+if "_%1_" == "_8_" set "DEVENV=c:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE\devenv.com"
+if "_%1_" == "_9_" set "DEVENV=c:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.com"
+if "_%1_" == "_10_" set "DEVENV=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.com"
+if "_%1_" == "_11_" set "DEVENV=c:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.com"
+if "_%1_" == "_12_" set "DEVENV=c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.com"
+
+set PATH=%ROOT%\xsd\xsd-i686-windows\bin;%PATH%
+set PATH=%ROOT%\xerces-vc\bin;%PATH%
+set PATH=%ROOT%\xerces-vc\bin64;%PATH%
+
+if "_%2_" == "__" goto end
+
+%2 %3 %4 %5 %6 %7 %8 %9
+goto end
+
+:usage
+echo.
+echo usage: setenv.bat vc-version ...
+echo.
+
+:error
+exit /b 1
+
+:end
diff --git a/test/windows/unpack b/test/windows/unpack
new file mode 100755
index 0000000..9d4d7f7
--- /dev/null
+++ b/test/windows/unpack
@@ -0,0 +1,43 @@
+#! /usr/bin/env bash
+
+# Unpack XSD for Windows.
+#
+# -mingw  unpack for MinGW
+#
+
+trap 'exit 1' ERR
+
+function error ()
+{
+  echo "$*" 1>&2
+}
+
+mingw=n
+
+while [ $# -gt 0 ]; do
+  case $1 in
+    -mingw)
+      mingw=y
+      shift
+      ;;
+    *)
+      error "unknown option: $1"
+      exit 1
+      ;;
+  esac
+done
+
+if [ $mingw = y ]; then
+  base=/t
+else
+  base=/cygdrive/t
+fi
+
+rm -rf xsd-i686-windows xsd-*-i686-windows
+
+v=`echo $base/xsd-*.*.*-i686-windows.zip | sed -e "s%$base/xsd-\([^-]*\).*.zip%\1%"`
+
+echo unpacking xsd-$v-i686-windows from $base
+
+unzip -q $base/xsd-$v-i686-windows.zip
+mv xsd-$v-i686-windows xsd-i686-windows
-- 
cgit v1.1