diff options
author | Jan Jezabek <jezabek@poczta.onet.pl> | 2008-08-13 12:55:51 +0000 |
---|---|---|
committer | Jan Jezabek <jezabek@poczta.onet.pl> | 2008-08-13 12:55:51 +0000 |
commit | 4ad2eed0a872c26bd7cd486979b7c8161ee9a0dc (patch) | |
tree | a4085a1045c7a63e70d02571fb5c2f8587b1773d | |
parent | e7e337ed1302dca96279c1449cbe568820511c07 (diff) | |
download | swig-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.in | 10 | ||||
-rw-r--r-- | Examples/test-suite/com/Makefile.in | 17 | ||||
-rw-r--r-- | Examples/test-suite/com/virtual_poly_runme.c | 7 | ||||
-rw-r--r-- | Examples/test-suite/com/virtual_poly_runme.vbs | 59 | ||||
-rw-r--r-- | configure.in | 37 |
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) #---------------------------------------------------------------- |