summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Jezabek <jezabek@poczta.onet.pl>2008-08-13 12:55:51 +0000
committerJan Jezabek <jezabek@poczta.onet.pl>2008-08-13 12:55:51 +0000
commit4ad2eed0a872c26bd7cd486979b7c8161ee9a0dc (patch)
treea4085a1045c7a63e70d02571fb5c2f8587b1773d
parente7e337ed1302dca96279c1449cbe568820511c07 (diff)
downloadswig-4ad2eed0a872c26bd7cd486979b7c8161ee9a0dc.tar.gz
Made some changes to configure.in to support Cygwin. Added support for using .vbs scripts for run tests. Added a vbs run test for virtual_poly (currently having some problems, possibly due to a memory management bug).
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2008-jezabek@10756 626c5289-ae23-0410-ae9c-e8d60b6d4f22
-rw-r--r--Examples/Makefile.in10
-rw-r--r--Examples/test-suite/com/Makefile.in17
-rw-r--r--Examples/test-suite/com/virtual_poly_runme.c7
-rw-r--r--Examples/test-suite/com/virtual_poly_runme.vbs59
-rw-r--r--configure.in37
5 files changed, 115 insertions, 15 deletions
diff --git a/Examples/Makefile.in b/Examples/Makefile.in
index 25f28bde9..8b00987b5 100644
--- a/Examples/Makefile.in
+++ b/Examples/Makefile.in
@@ -1097,15 +1097,17 @@ r_clean:
# COM intermediate files
COM_RC_FILE = $(INTERFACE:.i=_rc.rc)
-COM_RES_FILE = $(INTERFACE:.i=_rc.res)
+COM_RES_FILE = $(INTERFACE:.i=_rc@COM_RES_SUFFIX@)
COM_IDL_FILE = $(INTERFACE:.i=.idl)
COM_DEF_FILE = $(INTERFACE:.i=.def)
+COM_TLB_FILE = $(INTERFACE:.i=.tlb)
COM_IDL = @COM_IDL@
COM_RC = @COM_RC@
COM_CC = @COM_CC@
COM_CXX = @COM_CXX@
COM_LIBS = @COM_LIBS@
-COM_IDL_SWITCHES = @COM_IDL_SWITCHES@
+COM_IDL_COMMON_SWITCHES = @COM_IDL_COMMON_SWITCHES@
+COM_IDL_TLB_SWITCHES = @COM_IDL_TLB_SWITCHES@
COM_RC_IN_SWITCHES = @COM_RC_IN_SWITCHES@
COM_RC_OUT_SWITCHES = @COM_RC_OUT_SWITCHES@
COM_CC_SHARED_SWITCHES = @COM_CC_SHARED_SWITCHES@
@@ -1117,13 +1119,13 @@ COM_EXEC_SUFFIX = @COM_EXEC_SUFFIX@
com: $(SRCS)
$(SWIG) -com $(SWIGOPT) $(INTERFACE)
- $(COMPILETOOL) $(COM_IDL) $(COM_IDL_SWITCHES) $(COM_IDL_FILE)
+ $(COMPILETOOL) $(COM_IDL) $(COM_IDL_COMMON_SWITCHES) $(COM_IDL_TLB_SWITCHES) $(COM_TLB_FILE) $(COM_IDL_FILE)
$(COMPILETOOL) $(COM_RC) $(COM_RC_IN_SWITCHES) $(COM_RC_FILE) $(COM_RC_OUT_SWITCHES) $(COM_RES_FILE)
$(COMPILETOOL) $(COM_CC) $(COM_CC_SHARED_SWITCHES) $(COM_CC_OUT_SWITCHES)$(TARGET).dll$(COM_EXEC_SUFFIX) $(SRCS) $(ISRCS) $(COM_RES_FILE) $(COM_DEF_FILE) $(COM_LIBS) $(INCLUDES)
com_cpp: $(SRCS)
$(SWIG) -com -c++ $(SWIGOPT) $(INTERFACE)
- $(COMPILETOOL) $(COM_IDL) $(COM_IDL_SWITCHES) $(COM_IDL_FILE)
+ $(COMPILETOOL) $(COM_IDL) $(COM_IDL_COMMON_SWITCHES) $(COM_IDL_TLB_SWITCHES) $(COM_TLB_FILE) $(COM_IDL_FILE)
$(COMPILETOOL) $(COM_RC) $(COM_RC_IN_SWITCHES) $(COM_RC_FILE) $(COM_RC_OUT_SWITCHES) $(COM_RES_FILE)
$(COMPILETOOL) $(COM_CXX) $(COM_CXX_SHARED_SWITCHES) $(COM_CXX_OUT_SWITCHES)$(TARGET).dll$(COM_EXEC_SUFFIX) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(COM_RES_FILE) $(COM_DEF_FILE) $(COM_LIBS) $(INCLUDES)
diff --git a/Examples/test-suite/com/Makefile.in b/Examples/test-suite/com/Makefile.in
index 422f828f4..c8ac7297b 100644
--- a/Examples/test-suite/com/Makefile.in
+++ b/Examples/test-suite/com/Makefile.in
@@ -4,11 +4,16 @@
LANGUAGE = com
SCRIPTSUFFIX = _runme.c
+SCRIPTSUFFIX2 = _runme.vbs
COM_CYGPATH_W = @COM_CYGPATH_W@
COM_EXEC_SUFFIX = @COM_EXEC_SUFFIX@
COM_RUNTOOL = @COM_RUNTOOL@
COM_IDL = @COM_IDL@
+COM_IDL_COMMON_SWITCHES = @COM_IDL_COMMON_SWITCHES@
COM_IDL_HEADER_SWITCHES = @COM_IDL_HEADER_SWITCHES@
+COM_IDL_IID_SWITCHES = @COM_IDL_IID_SWITCHES@
+COM_CSCRIPT = @COM_CSCRIPT@
+COM_CSCRIPT_SWITCHES = @COM_CSCRIPT_SWITCHES@
srcdir = @srcdir@
top_srcdir = @top_srcdir@/..
top_builddir = @top_builddir@/..
@@ -65,7 +70,7 @@ unregister_component = \
# Generates headers from the IDL file
generate_headers = \
- $(COMPILETOOL) $(COM_IDL) $(COM_IDL_HEADER_SWITCHES) $*/$*_generated.h $*/$*.idl;
+ $(COMPILETOOL) $(COM_IDL) $(COM_IDL_COMMON_SWITCHES) $(COM_IDL_HEADER_SWITCHES) $*/$*_generated.h $(COM_IDL_IID_SWITCHES) $*/$*_i.c $*/$*.idl;
# Compiles COM files then runs the testcase. A testcase is only run if
# a file is found which has _runme.c appended after the testcase name.
@@ -73,10 +78,14 @@ run_testcase = \
if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then ( \
$(MAKE) -f $*/$(top_builddir)/$(EXAMPLES)/Makefile \
TARGET='$*_runme.exe' \
- COMSRCS=`$(COM_CYGPATH_W) $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX)` \
+ COMSRCS='`$(COM_CYGPATH_W) $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) $(srcdir)/$*/$*_i.c`' \
com_compile && \
- $(RUNTOOL) $(COM_RUNTOOL) $*_runme.exe$(COM_EXEC_SUFFIX); ) \
- fi;
+ $(RUNTOOL) $(COM_RUNTOOL) $(srcdir)/$*_runme.exe$(COM_EXEC_SUFFIX); ) \
+ fi; \
+ if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX2) ]; then ( \
+ $(RUNTOOL) $(COM_CSCRIPT) $(COM_CSCRIPT_SWITCHES) `$(COM_CYGPATH_W) $(srcdir)/$*_runme.vbs` )\
+ fi;
+
# Clean: remove testcase directories
%.clean:
diff --git a/Examples/test-suite/com/virtual_poly_runme.c b/Examples/test-suite/com/virtual_poly_runme.c
index 8c21f6b27..4c5e411b5 100644
--- a/Examples/test-suite/com/virtual_poly_runme.c
+++ b/Examples/test-suite/com/virtual_poly_runme.c
@@ -1,7 +1,12 @@
#define CINTERFACE
#include <stdio.h>
#include <windows.h>
-#include <initguid.h>
+
+#ifndef MSVC
+/* This is a workaround for a VC specific attribute */
+#define __RPC__deref_out
+#endif
+
#include "virtual_poly/virtual_poly_generated.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
diff --git a/Examples/test-suite/com/virtual_poly_runme.vbs b/Examples/test-suite/com/virtual_poly_runme.vbs
new file mode 100644
index 000000000..6b5b67e4a
--- /dev/null
+++ b/Examples/test-suite/com/virtual_poly_runme.vbs
@@ -0,0 +1,59 @@
+Dim vp
+
+Set vp = WScript.CreateObject("virtual_poly.virtual_poly")
+
+Dim d, i
+Set d = vp.NDouble.new_NDouble(3.5)
+Set i = vp.NInt.new_NInt(2)
+
+
+Rem We are using IDispatch/OLE Automation - no downcast should be needed
+Rem for covariant functions
+
+Dim dc, ic
+Set dc = d.copy()
+Set ic = i.copy()
+
+Dim ddc, dic
+Set ddc = vp.NDouble.narrow(dc)
+Set dic = vp.NInt.narrow(ic)
+
+
+Rem This fails, probably due to a bug in memory management code
+Set dc = ddc
+Set ic = dic
+
+vp.incr(dic)
+
+If (i.get() + 1) <> ic.get() Then
+ WScript.Echo "incr test failed"
+ WScript.Quit(1)
+End If
+
+
+Rem Checking a pure user downcast
+
+Dim n1, n2, dn1, dn2
+Set n1 = d.copy()
+Set n2 = d.nnumber()
+Set dn1 = vp.NDouble.narrow(n1)
+Set dn2 = vp.NDouble.narrow(n2)
+
+If dn1.get() <> dn2.get() Then
+ WScript.Echo "copy/narrow test failed"
+ WScript.Quit(1)
+End If
+
+
+Rem Checking the ref polymorphic case
+
+Dim nr, dr1, dr2
+Set nr = d.ref_this()
+Set dr1 = vp.NDouble.narrow(nr)
+Set dr2 = d.ref_this()
+
+If dr1.get() <> dr2.get() Then
+ WScript.Echo "copy/narrow test failed"
+ WScript.Quit(1)
+End If
+
diff --git a/configure.in b/configure.in
index 01edb84d4..c4354b35b 100644
--- a/configure.in
+++ b/configure.in
@@ -1839,7 +1839,8 @@ AC_ARG_WITH(com-runtool, [ --with-com-runtool=path Set location of the
AC_ARG_WITH(com-cc, [ --with-com-cc=path Set location of C compiler for COM], [COM_CC="$withval"], [COM_CC=])
AC_ARG_WITH(com-cxx, [ --with-com-cxx=path Set location of C++ compiler for COM], [COM_CXX="$withval"], [COM_CXX=])
AC_ARG_WITH(com-idl, [ --with-com-idl=path Set location of COM IDL compiler], [COM_IDL="$withval"], [COM_IDL=])
-AC_ARG_WITH(com-rc, [ --with-com-rc=path Set location of Resource Compiler fom COM], [COM_RC="$withval"], [COM_RC=])
+AC_ARG_WITH(com-rc, [ --with-com-rc=path Set location of Resource Compiler for COM], [COM_RC="$withval"], [COM_RC=])
+AC_ARG_WITH(com-cscript, [ --with-com-cscript=path Set location of the cscript interpreter], [COM_CSCRIPT="$withval"], [COM_CSCRIPT=])
# Check if COM is requested
if test x"${with_com}" = xno -o x"${with_alllang}" = xno ; then
@@ -1867,6 +1868,9 @@ case $host in
if test -z "$COM_RC" ; then
AC_CHECK_PROGS(COM_RC, windres rc wrc)
fi
+ if test -z "$COM_CSCRIPT" ; then
+ AC_CHECK_PROGS(COM_CSCRIPT, cscript)
+ fi
;;
*)
COM_CYGPATH_W=echo
@@ -1886,15 +1890,22 @@ case $host in
if test -z "$COM_RC" ; then
AC_CHECK_PROGS(COM_RC, wrc i586-mingw32msvc-windres)
fi
+ if test -z "$COM_CSCRIPT" ; then
+ AC_CHECK_PROGS(COM_CSCRIPT, cscript echo)
+ fi
;;
esac
if test "widl" = "$COM_IDL" ; then
- COM_IDL_SWITCHES='-I /usr/include/wine/windows -t'
- COM_IDL_HEADER_SWITCHES='-I /usr/include/wine/windows -h -H'
+ COM_IDL_COMMON_SWITCHES='-I /usr/include/wine/windows'
+ COM_IDL_TLB_SWITCHES='-t -T'
+ COM_IDL_HEADER_SWITCHES='-h -H'
+ COM_IDL_IID_SWITCHES='-u -U'
elif test "midl" = "$COM_IDL" ; then
- COM_IDL_SWITCHES=
- COM_IDL_HEADER_SWITCHES='/notlb /h'
+ COM_IDL_COMMON_SWITCHES=
+ COM_IDL_TLB_SWITCHES='/tlb'
+ COM_IDL_HEADER_SWITCHES='/h'
+ COM_IDL_IID_SWITCHES='/iid'
fi
if test "rc" = "$COM_RC" ; then
@@ -1912,8 +1923,10 @@ if test "gcc" = "$COM_CC" -o "i586-mingw32msvc-gcc" = "$COM_CC" -o "winegcc" = "
COM_LIBS='-lole32 -luuid -ladvapi32 -loleaut32'
if test "winegcc" = "$COM_CC" ; then
COM_EXEC_SUFFIX=.so
+ COM_RES_SUFFIX=.res
else
COM_EXEC_SUFFIX=
+ COM_RES_SUFFIX=.o
fi
elif test "cl" = "$COM_CC" ; then
COM_CC_SHARED_SWITCHES=/LD
@@ -1921,6 +1934,7 @@ elif test "cl" = "$COM_CC" ; then
COM_CC_SWITCHES=
COM_LIBS='ole32.lib uuid.lib advapi32.lib oleaut32.lib'
COM_EXEC_SUFFIX=
+ COM_RES_SUFFIX=.res
fi
if test "g++" = "$COM_CXX" -o "i586-mingw32msvc-g++" = "$COM_CXX" -o "wineg++" = "$COM_CXX" ; then
@@ -1931,6 +1945,12 @@ elif test "cl" = "$COM_CC" ; then
COM_CXX_OUT_SWITCHES=/Fe
fi
+if test "cscript" = "$COM_CSCRIPT" ; then
+ COM_CSCRIPT_SWITCHES=//Nologo
+else
+ COM_CSCRIPT_SWITCHES=
+fi
+
fi
AC_SUBST(COM_RUNTOOL)
@@ -1938,9 +1958,12 @@ AC_SUBST(COM_CC)
AC_SUBST(COM_CXX)
AC_SUBST(COM_IDL)
AC_SUBST(COM_RC)
+AC_SUBST(COM_CSCRIPT)
AC_SUBST(COM_LIBS)
-AC_SUBST(COM_IDL_SWITCHES)
+AC_SUBST(COM_IDL_COMMON_SWITCHES)
+AC_SUBST(COM_IDL_TLB_SWITCHES)
AC_SUBST(COM_IDL_HEADER_SWITCHES)
+AC_SUBST(COM_IDL_IID_SWITCHES)
AC_SUBST(COM_RC_IN_SWITCHES)
AC_SUBST(COM_RC_OUT_SWITCHES)
AC_SUBST(COM_CC_SHARED_SWITCHES)
@@ -1949,6 +1972,8 @@ AC_SUBST(COM_CXX_SHARED_SWITCHES)
AC_SUBST(COM_CXX_OUT_SWITCHES)
AC_SUBST(COM_CC_SWITCHES)
AC_SUBST(COM_EXEC_SUFFIX)
+AC_SUBST(COM_RES_SUFFIX)
+AC_SUBST(COM_CSCRIPT_SWITCHES)
AC_SUBST(COM_CYGPATH_W)
#----------------------------------------------------------------