This document describes how to build the Open Dylan compiler and IDE.
Clone the git repository:
git clone --recursive git://github.com/dylan-lang/opendylan.git
Note
It does not work to download a ZIP file of the repository from github because it doesn't include git submodules.
Note
Much of what is described here is encoded into release-with-batteries.sh and running that script may be sufficient.
Binary releases come packaged with all of the necessary dependencies. The current binary release includes
- LLVM/Clang (subsetted to include only necessary components, including libunwind)
- BDW GC
If you build from source, you may need to supply these dependencies as described below.
All 64-bit platforms and macOS must use the Boehm Demers Weiser conservative GC (or just "Boehm GC") with the LLVM or C back-end. The Memory Pool System (MPS) is only integrated with the HARP back-end, which itself only works on 32-bit x86 platforms.
- 64-bit systems (LLVM or C back-end) -> boehm-gc, usually installed via a package (see below).
- 32-bit x86 Linux or FreeBSD (HARP back-end) -> MPS 1.114
On macOS, you may find it easiest to install Homebrew and install the following:
brew install autoconf automake bdw-gc --universal
You will also need to install the command line build tools available from
Apple. If your installation of bdw-gc
is not universal (doesn't contain
both i386 and x86_64 code), you will need to uninstall it and install again
with the --universal
flag.
On Ubuntu, Debian, etc, you can install the necessary dependencies with:
apt-get install autoconf automake clang-10 gcc libgc-dev libunwind-dev
The libunwind
library is an optional dependency on Linux and
FreeBSD. If available, it is used to display stack traces for
unhandled error conditions. (The libunwind
API is built-in on
macOS.)
You may also want to install lldb
for debugging if you are using the LLVM
back-end.
To build :program:`dylan-compiler` and several tools:
export PATH=$(dirname $(which dylan-compiler)):$PATH ./autogen.sh ./configure --prefix=/opt/opendylan-current # (but see note below) make sudo make install
The build process attempts to select the correct garbage collector implementation based on your platform.
If you are on x86-linux
or x86-freebsd
you must add a flag to
configure
to point it at the MPS sources, using --with-mps
:
./configure --prefix=/opt/opendylan-current --with-mps=/path/to/mps
/path/to/mps
should point to the root directory of the MPS
distribution, for example --with-mps=/opt/mps-kit-1.114.0
.
On other platforms, the Boehm GC will be used. If you have installed
the Boehm GC via your operating system package manager, you may not
need to specify its location; it will be found automatically if it is
in /usr
or /usr/local
. If you have installed the Boehm GC into
a non-standard location or the configure script cannot find it, you
can point it in the right direction by using --with-gc
:
./configure --prefix=/opt/opendylan-current --with-gc=/path/to/boehm
By default, this will build a fully bootstrapped compiler with the first generation in :file:`Bootstrap.1/bin/dylan-compiler`, the second generation in :file:`Bootstrap.2/bin/dylan-compiler`, and the third in :file:`Bootstrap.3/bin/dylan-compiler`. The third generation will then be installed as :file:`/opt/opendylan-current/bin/dylan-compiler`.
There is an extensive set of tests which can be run once the build is complete:
make check
This runs the tests for the core language implementation as well as for many
bundled libraries. You may also want to run the
dfmc-environment-test-suite
, with
make check-environment
Get MPS 1.108. Be sure that you have the older 1.108 release and not the newer 1.114 release.
Make sure to have required tools installed:
- Debugging tools for Windows
- Microsoft Visual C++ 6.0 -- Note that newer versions do not work, nor does Pelles C.
- Microsoft Platform SDK
Open a shell (windows command processor) and set the environment variable SDK4MEMORY_POOL_SYSTEM to <where you unpacked MPS>.
Please keep in mind that paths with whitespaces are not well supported.
cd into :file:`build\\windows` and run:
build-release.bat <target-dir> /sources <git-checkout>\sources /internal
This will do a 4-stage bootstrap. In the end there will be a complete IDE in <target-dir>.
- Building an installer:
- Get NSIS from http://nsis.sf.net and the HTML help workshop (from Microsoft, to generate the chm).
- Go to :file:`packages\\win32-nsis`, read :file:`Build.txt` and follow the instructions. Make sure you are using the same command shell as used for building Open Dylan (to retain environment variables).