Rewrite make_ctests and runtest in shell.
diff --git a/Make.rules.in b/Make.rules.in
index 4076da6..8174c1d 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -64,7 +64,7 @@
MKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs
WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi_check/winapi_check
WINEWRAPPER = $(TOPSRCDIR)/tools/winewrapper
-RUNTEST = $(TOPSRCDIR)/programs/winetest/runtest
+RUNTEST = $(TOPSRCDIR)/tools/runtest
WINEBUILD = $(TOOLSDIR)/tools/winebuild/winebuild
MAKEDEP = $(TOOLSDIR)/tools/makedep
WRC = $(TOOLSDIR)/tools/wrc/wrc
@@ -105,7 +105,7 @@
# Implicit rules
-.SUFFIXES: .mc .rc .mc.rc .res .res.o .spec .spec.c .spec.def .pl .ok .cross.o
+.SUFFIXES: .mc .rc .mc.rc .res .res.o .spec .spec.c .spec.def .ok .cross.o
.c.o:
$(CC) -c $(ALLCFLAGS) -o $@ $<
@@ -137,9 +137,6 @@
.c.ok:
$(RUNTEST) $(RUNTESTFLAGS) $< && touch $@
-.pl.ok:
- $(RUNTEST) $(RUNTESTFLAGS) $< && touch $@
-
# 'all' target first in case the enclosing Makefile didn't define any target
all: Makefile
diff --git a/dlls/Maketest.rules.in b/dlls/Maketest.rules.in
index 4c7a77f..08ab0cc 100644
--- a/dlls/Maketest.rules.in
+++ b/dlls/Maketest.rules.in
@@ -45,7 +45,7 @@
# Rules for building test list
$(TESTLIST): Makefile.in
- $(TOPSRCDIR)/programs/winetest/make_ctests $(CTESTS) >$(TESTLIST) || $(RM) $(TESTLIST)
+ $(TOPSRCDIR)/tools/make_ctests $(CTESTS) >$(TESTLIST) || $(RM) $(TESTLIST)
# Rules for checking that no imports are missing
diff --git a/tools/make_ctests b/tools/make_ctests
new file mode 100755
index 0000000..0a9d5ca
--- /dev/null
+++ b/tools/make_ctests
@@ -0,0 +1,60 @@
+#!/bin/sh
+#
+# Script to generate a C file containing a list of tests
+#
+# Copyright 2002 Alexandre Julliard
+# Copyright 2002 Dimitrie O. Paun
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+cat <<EOF
+/* Automatically generated file; DO NOT EDIT!! */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "winbase.h"
+
+EOF
+
+for file in "$@"; do
+ test=`basename "$file" .c`
+ echo "extern void func_$test(void);"
+done
+
+cat <<EOF
+
+struct test
+{
+ const char *name;
+ void (*func)(void);
+};
+
+static const struct test winetest_testlist[] =
+{
+EOF
+
+for file in "$@"; do
+ test=`basename "$file" .c`
+ echo " { \"$test\", func_$test },"
+done
+
+cat <<EOF
+ { 0, 0 }
+};
+
+#define WINETEST_WANT_MAIN
+#include "wine/test.h"
+EOF
diff --git a/tools/runtest b/tools/runtest
new file mode 100755
index 0000000..14cb50a
--- /dev/null
+++ b/tools/runtest
@@ -0,0 +1,116 @@
+#!/bin/sh
+#
+# Wrapper script to run tests from inside the Wine tree
+#
+# Usage: runtest [options] input_file
+#
+# Copyright 2002 Alexandre Julliard
+# Copyright 2002 Dimitrie O. Paun
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+usage()
+{
+ cat >2 <<EOF
+
+Usage: $0 [options] input_file
+
+Options:
+ -q quiet mode
+ -v verbose mode (can be specified multiple times)
+ -s announce successful tests
+ -p prog name of the program to run for C tests
+ -P name set the current platform name
+ -M names set the module names to be tested
+ -T dir set Wine tree top directory (autodetected if not specified)
+
+EOF
+ exit 1
+}
+
+# Default values
+platform=$WINETEST_PLATFORM
+WINETEST_DEBUG=${WINETEST_DEBUG:-1}
+
+# parse command-line options
+while [ "$#" != 0 ]; do
+ case "$1" in
+ -h)
+ usage
+ ;;
+ -p)
+ shift; program="$1"
+ ;;
+ -q)
+ WINETEST_DEBUG=0
+ ;;
+ -v)
+ WINETEST_DEBUG=`expr $WINETEST_DEBUG + 1`
+ ;;
+ -s)
+ WINETEST_REPORT_SUCCESS=1
+ export WINETEST_REPORT_SUCCESS
+ ;;
+ -P)
+ shift; platform="$1"
+ ;;
+ -M)
+ shift; modules="$1"
+ ;;
+ -T)
+ shift; topobjdir="$1"
+ if [ -d "$topobjdir" ]; then :; else usage; fi
+ ;;
+ *)
+ infile="$1"
+ esac
+ shift
+done
+
+# we must have found an input file
+if [ -f "$infile" ]; then :; else usage; fi
+
+# set program to the .c file base name if not specified otherwise
+if [ -z "$program" ]; then
+ program=`basename "$infile" .c`
+fi
+
+# check/detect topobjdir
+if [ -n "$topobjdir" ]; then
+ if [ -f "$topobjdir/server/wineserver" ]
+ then :
+ else
+ echo "Wrong -T argument, $topobjdir/server/wineserver does not exist" 2>&1
+ usage
+ fi
+else
+ if [ -f "./server/wineserver" ]; then topobjdir="."
+ elif [ -f "../server/wineserver" ]; then topobjdir=".."
+ elif [ -f "../../server/wineserver" ]; then topobjdir="../.."
+ elif [ -f "../../../server/wineserver" ]; then topobjdir="../../.."
+ fi
+fi
+
+# set environment variables needed for Wine
+
+if [ -n "$modules" ]; then
+ WINEOPTIONS="$WINEOPTIONS --dll $modules=b"
+ export WINEOPTIONS
+fi
+WINETEST_PLATFORM=${platform:-wine}
+export WINETEST_PLATFORM WINETEST_DEBUG
+
+exec "$topobjdir/wine" "$program" "$infile" "$@"