DotGNU Portable.NET Source Installation Guide

This document explains how to install DotGNU
Portable.NET by building it from the source distribution. Visit the
Portable.NET Packages page
for instructions on installing the binary package distributions.

Source Code Downloads

It may however be best to grab the latest development version
from Savannah CVS.
This project's CVS repository can be checked out through anonymous
CVS with the following instruction set.

cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/sources/dotgnu-pnet co .

NOTE: Before you can build the cvs version, you need to run
auto_gen.sh in order to create the Makefile.in and
configure files.

Building

There are three main components that you must install in the following
order to use DotGNU Portable.NET:

treeccpnetpnetlib

And there are two optional components:

pnetCml-pnet

You will need "pnetC" if you wish to use the C compiler.
You may need "ml-pnet" if you wish to use Mono libraries
such as "System.Data".

Another component, "cscctest", is only available via CVS
because it changes very often - always use the most recent CVS version.
See the CVS instructions above for information on obtaining it.

You will need flex and bison to build DotGNU Portable.NET. We use
flex 2.5.4 and bison 1.28. Some support is provided for the BSD
version of yacc, but bison is recommended. Other versions of lex
or yacc may not work.

Building under MS Windows

Follow the instructions in the previous section to build the distribution.
This will build the Cygwin version, which can be installed and run from
within the Cygwin environment.

If you wish to run DotGNU Portable.NET as a regular MS Windows application,
outside the Cygwin environment, then you must build the "mingw32" version
instead. To do this, configure and build as follows:

Building under Mac OS X

Install the development tools from the Developer Tools CD that should be
included with your pack of Mac CDs. If you don't have the CD, get an account
at connect.apple.com and download
from the net. The download is well over 100 megabytes.

Next, install Fink (fink.sourceforge.net). Using the GUI program Fink Commander,
install the package called libtool. Alternatively, this can
be done from a terminal by typing "sudo apt-get install libtool"
(without quotes) and entering an administrative password.

For each directory in treecc, pnet, pnetlib, etc, perform the following
command:

Type in your usual admin password for the account on your computer when
it asks for it (towards the end of each install).

It is important that you use the Fink version of the "glibtool"
program when compiling "pnetlib". Other versions of
libtool will not work.

Getting a more recent version

The most recent release version of the source code will always be
available on the project's Download site.

However, it is recommended that developers use the CVS version when
updating the source code. The CVS version will always be more recent
than the release versions.

cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/sources/dotgnu-pnet co .

where component is the name of the component that you
wish to check out. When prompted for a password, just hit the Enter key.

NOTE: Before you can build the cvs version, you need to run
auto_gen.sh in order to create the Makefile.in and
configure files.

Running the examples

Once you have built the system, you can test it on the examples within
the "samples" directory:

$ cd samples
$ ../engine/ilrun hello.exe
$ ../engine/ilrun fib.exe

The PNetMark program, listed above, is a more involved example.
Instructions for running PNetMark can be found within its
README file. You may also want to have a look at
the "demos and sample programs" webpage.

Documentation

Information on changes to individual versions can be found in the
NEWS file within the distribution.

The Converted Virtual Machine (CVM) instruction set has been documented
using embedded XML tags in the source. A HTML version of the documentation
can be found here.

Common problems

Some platforms may have problems building "libffi" and
"libgc". You can use the configure options
"--without-libffi" and "--without-libgc" to
disable them. The system may not fully work if you do this, so you
will probably have to update those packages for your platform.

Sometimes "./auto_gen.sh" can fail, giving errors about
missing LIBTOOL macros. If this happens, then change the line that
says "aclocal" to "aclocal -I ./" and retry.

Verbatim copying and distribution of this entire article are
permitted in any medium or format, provided this notice is
preserved.