Build Instructions
==================

The Apache Clownfish "symbiotic" object system pairs with "host" dynamic
language environments and facilitates the development of high performance host
language extensions.  Currently, it is available for Perl and plain C
libraries.

Apache Clownfish runtime
------------------------

To build the Clownfish runtime for Perl, chdir to the "runtime/perl"
subdirectory underneath the "clownfish" top level and follow the instructions
in the INSTALL document there.

To build the Clownfish runtime for C, chdir to the "runtime/c" subdirectory
underneath the "clownfish" top level and follow the instructions in the
INSTALL document there.

The Clownfish runtime build requires the Clownfish compiler and will build it
first.

Apache Clownfish compiler
-------------------------

To only build the Clownfish compiler with Perl bindings, chdir to the
"compiler/perl" subdirectory underneath the "clownfish" top level and follow
the instructions in the INSTALL document there.

To only build the Clownfish compiler "cfc" executable, chdir to the
"compiler/c" subdirectory underneath the "clownfish" top level and follow the
instructions in the INSTALL document there.

