Skip to content

gitGNU/gnu_g-wrap

Repository files navigation

G-Wrap -- A tool for exporting C libraries into Scheme interpreters
===================================================================

G-Wrap is a tool (and guile library) for generating function wrappers
for inter-language calls. It currently only supports generating Guile
wrappers for C functions. Other languages may be supported in the
future, possibly on both sides.

Installing
==========

Prerequisites
-------------

    - Autoconf >= 2.61
    - Automake >= 1.12
    - libffi
    - Guile-2.0 or Guile-2.2
    - Guile-Lib >= 0.2.2	http://www.nongnu.org/guile-lib/

In addition, if you build G-Wrap for Guile-Gnome and/or Guile-Clutter,
which is most probably the case, you also need:

    - Glib-2.0

Instructions
------------

For detailed, general instructions, see the file INSTALL.


* Building from a tarball

Once all dependencies are statisfied, open a terminal and:

    cd <download-path>
    tar zxf g-wrap-<version>.tar.gz
    cd g-wrap-<version>
    ./configure [--prefix=/your/prefix]
    make
    make install

Notes:

(1) In the above configure step, --prefix=/your/prefix is
    optional. The default value is /usr/local.

(2) To install G-Wrap, you must have write permissions to the $prefix
    dir and its subdirs.

(3) G-Wrap's modules will be installed in $prefix/share/guile/site. If
    it differs from Guile's global site directory, then this path must
    be aded to Guile's load paths before to use G-Wrap and compile
    Guile-Gnome or Guile-Clutter. You may check Guile's values using:

    guile -c "(display (%global-site-dir)) (newline)"
    guile -c "(display %load-path) (newline)"

    To augment Guile's load paths, you can: (a) create/update your
    personnal ~/.guile file, (b) update Guile's global site located
    init.scm file or (c) define/update your GUILE_LOAD_PATH shell
    environment variable.

(4) Like for any other GNU Tool Chain compatible software, you may
    install the documentation locally using make install-info, make
    install-html and/or make install-pdf.


* Building from Arch working copy

Run ./autogen.sh. You can pass configure arguments to autogen.sh, or
--noconfigure to disable the configure run, e.g. for out-of-tree
builds (which are recommended). Then run "make" and "make install".

Note that during the build of the included libffi, there is might be a
warning about runtest not beeing found. This can be safely ignored.

Notes about this branch
=======================

This is G-Wrap-TNG (G-Wrap - The Next Generation), a rewrite of
G-Wrap. It's goals are:

* Use GOOPS, for enhanced flexibility and (hopefully) clearer design.

* Be target-language agnostic; i.e. clean separation of the core and
  e.g. the Guile-specific code. New languages (perhaps even
  non-Schemes) should be easy to add.

* Offer the current (1.3.4+) wrapping API as a compatibility layer.

Status
------

Currently, the features from 1.3.4 are present and superceded. It
should be considered "ready for testing". An 1.3.4 compatibility layer
is in place, as far as needed by GnuCash, which is apparently the only
user of that API.

Authors
======

Maintainer:
 Andreas Rottmann  <a.rottmann@gmx.at>

Co-Maintainer:
 Rob Browning <rlb@defaultvalue.org>


Originally written by:
  Christopher Lee <chrislee@ri.cmu.edu>
  http://www.cs.cmu.edu/~chrislee