]> granicus.if.org Git - graphviz/commitdiff
first cut at a SWIG-based binding to R, currently disabled because the generated...
authorellson <devnull@localhost>
Wed, 28 Nov 2007 01:55:22 +0000 (01:55 +0000)
committerellson <devnull@localhost>
Wed, 28 Nov 2007 01:55:22 +0000 (01:55 +0000)
configure.ac
graphviz.spec.in
tclpkg/gv/Makefile.am
tclpkg/gv/gv_doc_langs.tcl

index f136c85e47487f69b6bdefc1903b56b104e779a8..ce604fa62a1852a6faa942ae6bfb8a875ea712e1 100644 (file)
@@ -463,7 +463,7 @@ AC_ARG_ENABLE(sharp,
 if test "x$enable_sharp" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-csharp *- Generate'` = 0; then
        SHARP=
-       AC_MSG_WARN([swig does not support csharp. The SHARP packages will not be built])
+       AC_MSG_WARN([swig does not support -csharp. The SHARP packages will not be built])
 else
 AC_CHECK_PROG(SHARP,mcs,mcs)
 SHARP_INCLUDES=
@@ -485,7 +485,7 @@ AC_ARG_ENABLE(guile,
 if test "x$enable_guile" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-guile *- Generate'` = 0; then
        GUILE=
-       AC_MSG_WARN([swig does not support guile. The GUILE packages will not be built])
+       AC_MSG_WARN([swig does not support -guile. The GUILE packages will not be built])
 else
 AC_CHECK_PROG(GUILE,guile,guile)
 if test "x$GUILE" != "x"; then
@@ -529,7 +529,7 @@ AC_ARG_ENABLE(io,
 if test "x$enable_io" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-io *- Generate'` = 0; then
        IO=
-       AC_MSG_WARN([swig does not support io. The IO packages will not be built])
+       AC_MSG_WARN([swig does not support -io. The IO packages will not be built])
 else
 AC_CHECK_PROG(IO,io,io)
 IO_INCLUDES=
@@ -551,7 +551,7 @@ AC_ARG_ENABLE(java,
 if test "x$enable_java" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-java *- Generate'` = 0; then
        JAVA=
-       AC_MSG_WARN([swig does not support java. The JAVA packages will not be built])
+       AC_MSG_WARN([swig does not support -java. The JAVA packages will not be built])
 else
 AC_CHECK_PROG(JAVA,java,java)
 JAVA_INCLUDES=
@@ -577,7 +577,7 @@ AC_ARG_ENABLE(lua,
 if test "x$enable_lua" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-lua *- Generate'` = 0; then
        LUA=
-       AC_MSG_WARN([swig does not support lua. The LUA packages will not be built])
+       AC_MSG_WARN([swig does not support -lua. The LUA packages will not be built])
        enable_lua=no
 fi
 fi
@@ -718,7 +718,7 @@ AC_ARG_ENABLE(ocaml,
 if test "x$enable_ocaml" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-ocaml *- Generate'` = 0; then
        OCAML=
-       AC_MSG_WARN([swig does not support ocaml. The OCAML packages will not be built])
+       AC_MSG_WARN([swig does not support -ocaml. The OCAML packages will not be built])
 else
 AC_CHECK_PROG(OCAML,ocaml,ocaml)
 AC_CHECK_PROG(OCAML_OPT,ocamlopt,ocamlopt)
@@ -754,7 +754,7 @@ if test -n "$PERL" && $PERL -e 'exit !($] <= 5.004)' > /dev/null 2>&1 ; then
 fi
 if test `$SWIG -help 2>&1 | $GREP -c '\-perl *- Generate'` = 0; then
        PERL=
-       AC_MSG_WARN([swig does not support perl. The PERL packages will not be built])
+       AC_MSG_WARN([swig does not support -perl. The PERL packages will not be built])
 fi
 if test "x$PERL" != "x"; then
   PERL_ARCHLIB=`$PERL -e 'use Config; print $Config{archlib};'`
@@ -784,7 +784,7 @@ AC_ARG_ENABLE(php,
 if test "x$enable_php" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-php5[[ ]]*- Generate'` = 0; then
        PHP=
-       AC_MSG_WARN([swig does not support php5. The PHP packages will not be built])
+       AC_MSG_WARN([swig does not support -php5. The PHP packages will not be built])
 else
 AC_CHECK_PROG(PHP,php,php)
 if test -d /usr/include/php5; then
@@ -817,7 +817,7 @@ AC_ARG_ENABLE(python,
 if test "x$enable_python" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-python *- Generate'` = 0; then
        PYTHON=
-       AC_MSG_WARN([swig does not support python. The PYTHON packages will not be built])
+       AC_MSG_WARN([swig does not support -python. The PYTHON packages will not be built])
 else
 AC_CHECK_PROG(PYTHON,python,python)
 if test "x$PYTHON" != "x"; then
@@ -870,7 +870,7 @@ AC_ARG_ENABLE(python23,
 if test "x$enable_python23" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-python *- Generate'` = 0; then
        PYTHON23=
-       AC_MSG_WARN([swig does not support python23. The PYTHON23 packages will not be built])
+       AC_MSG_WARN([swig does not support -python. The PYTHON23 packages will not be built])
 else
 AC_CHECK_PROG(PYTHON23,python2.3,python2.3)
 if test "x$PYTHON23" != "x"; then
@@ -923,7 +923,7 @@ AC_ARG_ENABLE(python24,
 if test "x$enable_python24" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-python *- Generate'` = 0; then
        PYTHON24=
-       AC_MSG_WARN([swig does not support python24. The PYTHON24 packages will not be built])
+       AC_MSG_WARN([swig does not support -python. The PYTHON24 packages will not be built])
 else
 AC_CHECK_PROG(PYTHON24,python2.4,python2.4)
 if test "x$PYTHON24" != "x"; then
@@ -976,7 +976,7 @@ AC_ARG_ENABLE(python25,
 if test "x$enable_python25" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-python *- Generate'` = 0; then
        PYTHON25=
-       AC_MSG_WARN([swig does not support python25. The PYTHON25 packages will not be built])
+       AC_MSG_WARN([swig does not support -python. The PYTHON25 packages will not be built])
 else
 AC_CHECK_PROG(PYTHON25,python2.5,python2.5)
 if test "x$PYTHON25" != "x"; then
@@ -1019,6 +1019,29 @@ fi
 fi
 AM_CONDITIONAL(WITH_PYTHON25, [test "x$PYTHON25" != "x"])
 
+dnl -----------------------------------
+dnl INCLUDES and LIBS for R (disabled for now - swig generated gv_r.cpp doesn't compile)
+
+if test "x$SWIG" != "x"; then
+AC_ARG_ENABLE(r,
+  [AC_HELP_STRING([--enable-r=no], [R language bindings])],
+  [], [enable_r=no])
+if test "x$enable_r" = "xyes"; then
+if test `$SWIG -help 2>&1 | $GREP -c '\-r *- Generate'` = 0; then
+       AC_MSG_WARN([swig does not support -r. The R packages will not be built])
+else
+PKG_CHECK_MODULES(R, [libR],
+        [R=1],
+        [AC_MSG_WARN(R library not available.)])
+
+
+fi
+fi
+fi
+AC_SUBST(R_CFLAGS)
+AC_SUBST(R_LIBS)
+AM_CONDITIONAL(WITH_R, [test "x$R" != "x"])
+
 dnl -----------------------------------
 dnl INCLUDES and LIBS for RUBY
 
@@ -1029,7 +1052,7 @@ AC_ARG_ENABLE(ruby,
 if test "x$enable_ruby" = "xyes"; then
 if test `$SWIG -help 2>&1 | $GREP -c '\-ruby *- Generate'` = 0; then
        RUBY=
-       AC_MSG_WARN([swig does not support ruby. The RUBY packages will not be built])
+       AC_MSG_WARN([swig does not support -ruby. The RUBY packages will not be built])
 else
 AC_CHECK_PROG(RUBY,ruby,ruby)
 if test "x$RUBY" != "x"; then
index 23a5bfab7a2521b80a51876f50b0c7f7dabda61f..fb97f3f9c6eca0ad3545dae5519b49aca13a57bd 100644 (file)
@@ -38,6 +38,7 @@ Prefix: /usr
 %define PHP    0
 %define PYTHON 0
 %define RUBY   0
+%define R_LANG 0
 %define TCL    1
 %define IPSEPCOLA --without-ipsepcola
 %define MYLIBGD --with-mylibgd
@@ -145,6 +146,10 @@ BuildRequires: cairo-devel >= 1.1.10 pango-devel gmp-devel lua-devel gtk2-devel
 %define GDK_PIXBUF --with-gdk-pixbuf
 BuildRequires: gd gd-devel perl-devel DevIL-devel
 %endif
+%if "%fedora" >= "8"
+#define R_LANG 1
+#BuildRequires: R
+%endif
 %if "%fedora" >= "9"
 %define MING 1
 BuildRequires: ming ming-devel
@@ -415,6 +420,23 @@ Python extension for graphviz.
 %{_mandir}/mann/gv_python.n*
 %endif
 
+#-- graphviz-r rpm ---------------------------------------------
+%if %{R_LANG}
+%package r
+Group:          Applications/Multimedia
+Summary:        R extension for graphviz
+Requires:       graphviz = %{version}-%{release} r
+
+%description r
+R extension for graphviz.
+
+%files r
+%defattr(-,root,root,-)
+%dir %{_libdir}/graphviz/r
+%{_libdir}/graphviz/r/*
+%{_mandir}/mann/gv_r.n*
+%endif
+
 #-- graphviz-ruby rpm ---------------------------------------------
 %if %{RUBY}
 %package ruby
@@ -533,6 +555,9 @@ Provides some additional PDF and HTML documentation for graphviz.
 %if ! %{PYTHON}
 %define NO_PYTHON --disable-python
 %endif
+%if ! %{R_LANG}
+%define NO_R_LANG --disable-r
+%endif
 %if ! %{RUBY}
 %define NO_RUBY --disable-ruby
 %endif
@@ -562,7 +587,7 @@ CFLAGS="$RPM_OPT_FLAGS" \
        --disable-static \
         --disable-dependency-tracking \
        %{MYLIBGD} %{IPSEPCOLA} %{PANGOCAIRO} %{GDK_PIXBUF} \
-        %{?NO_SHARP} %{?NO_GUILE} %{?NO_IO} %{?NO_JAVA} %{?NO_LUA} %{?NO_OCAML} %{?NO_PERL} %{?NO_PHP} %{?NO_PYTHON} %{?NO_RUBY} %{?NO_TCL} %{?NO_DEVIL} %{?NO_MING}
+        %{?NO_SHARP} %{?NO_GUILE} %{?NO_IO} %{?NO_JAVA} %{?NO_LUA} %{?NO_OCAML} %{?NO_PERL} %{?NO_PHP} %{?NO_PYTHON} %{?NO_R_LANG} %{?NO_RUBY} %{?NO_TCL} %{?NO_DEVIL} %{?NO_MING}
 make %{?_smp_mflags}
 
 %install
index 5c9185e8c787f9a29cefde5d12f33a8baf918cbc..5902ec2b8bc66c924bd020d5f3c590ab1fbac2f3 100644 (file)
@@ -9,7 +9,7 @@ AM_CPPFLAGS = \
        -I$(top_srcdir)/lib/common \
        -I$(top_srcdir)/lib/graph \
        -I$(top_srcdir)/lib/cdt \
-       -I$(top_srcdir)/lib/pathplan $(PERL_INCLUDES) $(OCAML_INCLUDES) $(PHP_INCLUDES) $(PYTHON_INCLUDES) $(RUBY_INCLUDES) $(TCL_INCLUDES) $(LUA_INCLUDES) $(GUILE_INCLUDES)
+       -I$(top_srcdir)/lib/pathplan $(GUILE_INCLUDES) $(LUA_INCLUDES) $(OCAML_INCLUDES) $(PERL_INCLUDES) $(PHP_INCLUDES) $(PYTHON_INCLUDES) $(R_CFLAGS) $(RUBY_INCLUDES) $(TCL_INCLUDES)
 
 LIBS =  @LIBS@ -lc
 
@@ -145,6 +145,16 @@ libgv_python25_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
 libgv_python25_la_LIBADD = $(BASELIBS) @PYTHON25_LIBS@
 libgv_python25_la_LDFLAGS = -module -avoid-version
 
+pkgrdir = $(pkglibdir)/r
+R_data = 
+nodist_libgv_r_la_SOURCES = gv_r.cpp $(R_data)
+libgv_r_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_r_la_LIBADD = $(BASELIBS) @R_LIBS@
+libgv_r_la_LDFLAGS = -module -avoid-version
+$(R_data): gv_r.cpp
+gv_r.cpp: gv.i
+       $(SWIG) -c++ -r -o gv_r.cpp $(srcdir)/gv.i
+
 pkgrubydir = $(pkglibdir)/ruby
 RUBY_data = 
 nodist_libgv_ruby_la_SOURCES = gv_ruby.cpp $(RUBY_data)
@@ -255,6 +265,13 @@ man_MANS += gv_python.n
 pkgpython25_LTLIBRARIES = libgv_python25.la
 #DEVTSTS += test_python25
 endif
+if WITH_R
+pkgr_DATA = $(R_data)
+man_MANS += gv_r.n
+#pdf_DATA += gv_r.pdf
+pkgr_LTLIBRARIES = libgv_r.la
+DEVTSTS += test_r
+endif
 if WITH_RUBY
 pkgruby_DATA = $(RUBY_data)
 man_MANS += gv_ruby.n
@@ -277,7 +294,7 @@ endif
 endif
 
 man = gv_sharp.n gv_guile.n gv_io.n gv_java.n gv_lua.n gv_ocaml.n \
-       gv_perl.n gv_php.n gv_python.n gv_ruby.n gv_tcl.n
+       gv_perl.n gv_php.n gv_python.n gv_r.n gv_ruby.n gv_tcl.n
 
 #pdf = gv_sharp.pdf gv_guile.pdf gv_io.pdf gv_java.pdf gv_lua.pdf gv_ocaml.pdf \
 #      gv_perl.pdf gv_php.pdf gv_python.pdf gv_ruby.pdf gv_tcl.pdf
@@ -295,6 +312,7 @@ install-data-hook:
        (cd $(DESTDIR)$(pkgpython23dir); rm -f _gv.so; $(LN_S) libgv_python23.so _gv.so;)
        (cd $(DESTDIR)$(pkgpython24dir); rm -f _gv.so; $(LN_S) libgv_python24.so _gv.so;)
        (cd $(DESTDIR)$(pkgpython25dir); rm -f _gv.so; $(LN_S) libgv_python25.so _gv.so;)
+       (cd $(DESTDIR)$(pkgrdir);   rm -f gv.so;  $(LN_S) libgv_r.so gv.so;)
        (cd $(DESTDIR)$(pkgrubydir);   rm -f gv.so;  $(LN_S) libgv_ruby.so gv.so;)
        (cd $(DESTDIR)$(pkgtcldir);    rm -f gv.so;  $(LN_S) libgv_tcl.so gv.so;)
 
@@ -305,6 +323,7 @@ uninstall-hook:
        (cd $(DESTDIR)$(pkgpython23dir); rm -f _gv.so;)
        (cd $(DESTDIR)$(pkgpython24dir); rm -f _gv.so;)
        (cd $(DESTDIR)$(pkgpython25dir); rm -f _gv.so;)
+       (cd $(DESTDIR)$(pkgrdir);   rm -f gv.so;)
        (cd $(DESTDIR)$(pkgrubydir);   rm -f gv.so;)
        (cd $(DESTDIR)$(pkgtcldir);    rm -f gv.so;)
 
@@ -377,6 +396,13 @@ test_python: libgv_python.la
                ln -fs ../$(srcdir)/*.dot ../$(srcdir)/*.py .; \
                PYTHONPATH=. $(PYTHON) test.py)
 
+.PHONY: test_r
+test_r: libgv_r.la
+       -(mkdir -p test_r; cd test_r; \
+               ln -fs ../.libs/libgv_ruby.so gv.so; \
+               ln -fs ../$(srcdir)/*.dot ../$(srcdir)/*.rb .; \
+               $(R) test.rb)
+
 .PHONY: test_ruby
 test_ruby: libgv_ruby.la
        -(mkdir -p test_ruby; cd test_ruby; \
@@ -406,6 +432,7 @@ CLEANFILES = test_*/* pkgIndex.tcl \
        gv_python23.cpp $(PYTHON23_data) gv.pyc \
        gv_python24.cpp $(PYTHON24_data) gv.pyc \
        gv_python25.cpp $(PYTHON25_data) gv.pyc \
+       gv_r.cpp $(R_data) \
        gv_ruby.cpp $(RUBY_data) \
        gv_tcl.cpp $(TCL_data) pkgIndex.tcl
 
index 640fb2a5a9fd85c9abf9686c51bad27fb783b0ef..f2649fa711fb02ef62a539d3ac1230dfc5084609 100644 (file)
@@ -324,6 +324,26 @@ array set LANGS {
                USAGE {
                }
        }
+       r {
+               TYPES {
+                       Agraph_t* SWIGTYPE_p_Agraph_t
+                       Agnode_t* SWIGTYPE_p_Agnode_t
+                       Agedge_t* SWIGTYPE_p_Agedge_t
+                       Agsym_t* SWIGTYPE_p_Agsym_t
+                       char* string
+                       FILE* SWIGTYPE_p_FILE
+                       bool bool
+                       void {}
+               }
+               SYNTAX {
+                       gv.  (  {, }   {);}
+               }
+               SYNOPSIS {
+                       {System.loadLibrary("gv");}
+               }
+               USAGE {
+               }
+       }
        ruby {
                TYPES {
                        {Agraph_t* g} graph_handle