aboutsummaryrefslogtreecommitdiffstats
path: root/INSTALL.md
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2012-05-23 16:44:25 +0200
committerLukas Larsson <[email protected]>2012-07-19 12:24:40 +0200
commit6bb1cd1c9595413cdfd9a8875520e1c85e446833 (patch)
treef0edfcdf63e1f74bfddfb27a776e0f4805e6d97d /INSTALL.md
parent4ba364c5df2c574974fb3ec10fe03f2e6ad4f92f (diff)
downloadotp-6bb1cd1c9595413cdfd9a8875520e1c85e446833.tar.gz
otp-6bb1cd1c9595413cdfd9a8875520e1c85e446833.tar.bz2
otp-6bb1cd1c9595413cdfd9a8875520e1c85e446833.zip
Move README and INSTALL to HOWTO folder
Diffstat (limited to 'INSTALL.md')
-rw-r--r--INSTALL.md838
1 files changed, 0 insertions, 838 deletions
diff --git a/INSTALL.md b/INSTALL.md
deleted file mode 100644
index 70d465831d..0000000000
--- a/INSTALL.md
+++ /dev/null
@@ -1,838 +0,0 @@
-Building and Installing Erlang/OTP
-==================================
-
-Introduction
-------------
-
-This document describes how to build and install Erlang/OTP-%OTP-REL%. You
-are advised to read the whole document before attempting to build and install
-Erlang/OTP. You can find more information about Open Source Erlang/OTP at:
-
- <http://www.erlang.org/>
-
-The source code for Erlang/OTP can also be found in a Git repository:
-
- <http://github.com/erlang/otp>
-
-Erlang/OTP should be possible to build from source on any Unix system,
-including Mac OS X. This document describes how to native compile Erlang/OTP
-on Unix. For detailed instructions on how to
-
-* cross compile Erlang/OTP, see the [$ERL_TOP/INSTALL-CROSS.md][]
- document.
-
-* build Erlang/OTP on Windows, see the [$ERL_TOP/INSTALL-WIN32.md][]
- document.
-
- Binary releases for Windows can be found at
- <http://www.erlang.org/download.html>.
-
-Before reading the above mentioned documents you are in any case advised to
-read this document first, since it covers building Erlang/OTP in general as
-well as other important information.
-
-Daily Build and Test
---------------------
-At Ericsson we have a "Daily Build and Test" that runs on:
-
-* Solaris 8, 9
- * Sparc32
- * Sparc64
-* Solaris 10
- * Sparc32
- * Sparc64
- * x86
-* SuSE Linux/GNU 9.4, 10.1
- * x86
-* SuSE Linux/GNU 10.0, 10.1, 11.0
- * x86
- * x86\_64
-* openSuSE 11.4 (Celadon)
- * x86\_64 (valgrind)
-* Fedora 7
- * PowerPC
-* Fedora 14
- * x86\_64
-* Gentoo Linux/GNU 1.12.11.1
- * x86
-* Ubuntu Linux/GNU 7.04, 10.04, 10.10, 11.0
- * x86\_64
-* MontaVista Linux/GNU 4.0.1
- * PowerPC
-* FreeBSD 8.2
- * x86
-* OpenBSD 5.0
- * x86\_64
-* Mac OS X 10.5.8 (Leopard), 10.6.0 (Snow Leopard), 10.7.3 (Lion)
- * x86
-* Windows XP SP3, 2003, Vista, 7
- * x86
-* Windows 7
- * x86\_64
-
-We also have the following "Daily Cross Builds":
-
-* SuSE Linux/GNU 10.1 x86 -> SuSE Linux/GNU 10.1 x86\_64
-* SuSE Linux/GNU 10.1 x86\_64 -> Linux/GNU TILEPro64
-
-and the following "Daily Cross Build Tests":
-
-* SuSE Linux/GNU 10.1 x86\_64
-
-Versions Known NOT to Work
---------------------------
-
-* Suse linux 9.1 is shipped with a patched GCC version 3.3.3, having the
- rpm named `gcc-3.3.3-41`. That version has a serious optimization bug
- that makes it unusable for building the Erlang emulator. Please
- upgrade GCC to a newer version before building on Suse 9.1. Suse Linux
- Enterprise edition 9 (SLES9) has `gcc-3.3.3-43` and is not affected.
-
-* `gcc-4.3.0` has a serious optimizer bug. It produces an Erlang emulator
- that will crash immediately. The bug is supposed to be fixed in
- `gcc-4.3.1`.
-
-* FreeBSD had a bug which caused `kqueue`/`poll`/`select` to fail to detect
- that a `writev()` on a pipe has been made. This bug should have been fixed
- in FreeBSD 6.3 and FreeBSD 7.0. NetBSD and DragonFlyBSD probably have or
- have had the same bug. More information can be found at:
-
- * <http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/sys_pipe.c>
- * <http://lists.freebsd.org/pipermail/freebsd-arch/2007-September/006790.html>
-
-* `getcwd()` on Solaris 9 can cause an emulator crash. If you have
- async-threads enabled you can increase the stack size of the
- async-threads as a temporary workaround. See the `+a` command-line
- argument in the documentation of `erl(1)`. Without async-threads the
- emulator is not as vulnerable to this bug, but if you hit it without
- async-threads the only workaround available is to enable async-threads
- and increase the stack size of the async-threads. Sun has however
- released patches that fixes the issue:
-
- > Problem Description: 6448300 large mnttab can cause stack overrun
- > during Solaris 9 getcwd
-
- More information can be found at:
-
- * <http://sunsolve.sun.com/search/document.do?assetkey=1-21-112874-40-1&searchclause=6448300>
- * <http://sunsolve.sun.com/search/document.do?assetkey=1-21-114432-29-1&searchclause=6448300>
-
-Required Utilities
-------------------
-
-These are the tools you will need in order to unpack and build Erlang/OTP.
-
-### Unpacking ###
-
-* GNU unzip, or a modern uncompress.
-* A TAR program that understands the GNU TAR format for long filenames
- (such as GNU TAR).
-
-### Building ###
-
-* GNU `make`
-* `gcc` -- GNU C compiler
-* Perl 5
-* GNU `m4` -- If HiPE (native code) support is enabled. HiPE can be
- disabled using `--disable-hipe`
-* `ncurses`, `termcap`, or `termlib` -- The development headers and
- libraries are needed, often known as `ncurses-devel`. Use
- `--without-termcap` to build without any of these libraries. Note that
- in this case only the old shell (without any line editing) can be used.
-* OpenSSL -- Optional, but needed for building the Erlang/OTP applications
- `ssl` and `crypto`. You need the "development package" of OpenSSL, i.e.
- including the header files. For building the application `ssl` the OpenSSL
- binary command program `openssl` is also needed. At least version 0.9.8
- of OpenSSL is required. Can be downloaded from <http://www.openssl.org>.
-* Sun Java jdk-1.5.0 or higher -- Optional but needed for building the
- Erlang/OTP application `jinterface` and parts of `ic` and `orber`. Can
- be downloaded from <http://java.sun.com>. We have also tested IBM's
- JDK 1.5.0.
-* X Windows -- Optional, but development headers and libraries are needed
- to build the Erlang/OTP application `gs` on Unix/Linux.
-* `sed` -- There seem to be some problems with some of the `sed` version on
- Solaris. Make sure `/bin/sed` or `/usr/bin/sed` is used on the Solaris
- platform.
-* `flex` -- Optional, headers and libraries are needed to build the `flex`
- scanner for the `megaco` application on Unix/Linux.
-
-#### Building Documentation ####
-
-* `xsltproc` -- XSLT processor. A tool for applying XSLT stylesheets
- to XML documents. Can be downloaded from
- <http://xmlsoft.org/XSLT/xsltproc2.html>.
-* `fop` -- Apache FOP print formatter (requires Java). Can be downloaded
- from <http://xmlgraphics.apache.org/fop>.
-
-#### Building in Git ####
-
-* GNU `autoconf` of at least version 2.59. Note that `autoconf` is not
- needed when building an unmodified version of the released source.
-
-### Installing ###
-
-* An `install` program that can take multiple file names.
-
-How to Build and Install Erlang/OTP
------------------------------------
-
-The following instructions are for building [the released source tar ball][].
-
-The variable `$ERL_TOP` will be mentioned a lot of times. It refers to
-the top directory in the source tree. More information about `$ERL_TOP`
-can be found in the [make and $ERL_TOP][] section below. If you are
-building in git you probably want to take a look at the [Building in Git][]
-section below before proceeding.
-
-### Unpacking ###
-
-Step 1: Start by unpacking the Erlang/OTP distribution file with your GNU
-compatible TAR program.
-
- $ gunzip -c otp_src_%OTP-REL%.tar.gz | tar xf -
-
-alternatively:
-
- $ zcat otp_src_%OTP-REL%.tar.gz | tar xf -
-
-
-Step 2: Now cd into the base directory (`$ERL_TOP`).
-
- $ cd otp_src_%OTP-REL%
-
-### Configuring ###
-
-Step 3: On some platforms Perl may behave strangely if certain locales are
-set, so optionally you may need to set the LANG variable:
-
- # Bourne shell
- $ LANG=C; export LANG
-
-or
-
- # C-Shell
- $ setenv LANG C
-
-Step 4: Run the following commands to configure the build:
-
- $ ./configure [ options ]
-
-By default, Erlang/OTP will be installed in `/usr/local/{bin,lib/erlang}`.
-To instead install in `<BaseDir>/{bin,lib/erlang}`, use the
-`--prefix=<BaseDir>` option.
-
-If you upgraded the source with some patch you may need to clean up
-from previous builds before the new build. Before doing a `make clean`,
-be sure to read the [Pre-built Source Release][] section below.
-
-### Building ###
-
-Step 5: Build the Erlang/OTP package.
-
- $ make
-
-### Installing ###
-
-Step 6: Install then Erlang/OTP package
-
- $ make install
-
-### A Closer Look at the individual Steps ###
-
-Let us go through them in some detail.
-
-#### Configuring ####
-
-Step 4 runs a configuration script created by the GNU autoconf utility, which
-checks for system specific features and then creates a number of makefiles.
-
-The configure script allows you to customize a number of parameters;
-type `./configure --help` or `./configure --help=recursive` for details.
-`./configure --help=recursive` will give help for all `configure` scripts in
-all applications.
-
-One of the things you can specify is where Erlang/OTP should be installed. By
-default Erlang/OTP will be installed in `/usr/local/{bin,lib/erlang}`.
-To keep the same structure but install in a different place, `<Dir>` say,
-use the `--prefix` argument like this: `./configure --prefix=<Dir>`.
-
-Some of the available `configure` options are:
-
-* `--prefix=PATH` - Specify installation prefix.
-* `--{enable,disable}-threads` - Thread support (enabled by default if
- possible)
-* `--{enable,disable}-smp-support` - SMP support (enabled by default if
- possible)
-* `--{enable,disable}-kernel-poll` - Kernel poll support (enabled by
- default if possible)
-* `--{enable,disable}-hipe` - HiPE support (enabled by default on supported
- platforms)
-* `--enable-darwin-universal` - Build universal binaries on darwin i386.
-* `--enable-darwin-64bit` - Build 64-bit binaries on darwin
-* `--enable-m64-build` - Build 64-bit binaries using the `-m64` flag to
- `(g)cc`
-* `--enable-m32-build` - Build 32-bit binaries using the `-m32` flag to
- `(g)cc`
-* `--{with,without}-termcap` - termcap (without implies that only the old
- Erlang shell can be used)
-* `--with-javac=JAVAC` - Specify Java compiler to use
-* `--{with,without}-javac` - Java compiler (without implies that the
- `jinterface` application won't be built)
-* `--{enable,disable}-dynamic-ssl-lib` - Dynamic OpenSSL libraries
-* `--{enable,disable}-shared-zlib` - Shared zlib library
-* `--with-ssl=PATH` - Specify location of OpenSSL include and lib
-* `--{with,without}-ssl` - OpenSSL (without implies that the `crypto`,
- `ssh`, and `ssl` won't be built)
-* `--with-libatomic_ops=PATH` - Use the `libatomic_ops` library for atomic
- memory accesses. If `configure` should inform you about no native atomic
- implementation available, you typically want to try using the
- `libatomic_ops` library. It can be downloaded from
- <http://www.hpl.hp.com/research/linux/atomic_ops/>.
-
-If you or your system has special requirements please read the `Makefile` for
-additional configuration information.
-
-#### Building ####
-
-Step 5 builds the Erlang/OTP system. On a fast computer, this will take about
-5 minutes. After completion of this step, you should have a working
-Erlang/OTP system which you can try by typing `bin/erl`. This should start
-up Erlang/OTP and give you a prompt:
-
- $ bin/erl
- Erlang %OTP-REL% (erts-%ERTS-VSN%) [source] [smp:4:4] [rq:4] [async-threads:0] [kernel-poll:false]
-
- Eshell V%ERTS-VSN% (abort with ^G)
- 1> _
-
-#### Installing ####
-
-Step 6 is optional. It installs Erlang/OTP at a standardized location (if you
-change your mind about where you wish to install you can rerun step 4,
-without having to do step 5 again).
-
-##### Alternative Installation Procedures #####
-
-* Staged install using [DESTDIR][]. You can perform the install
- phase in a temporary directory and later move the installation into
- its correct location by use of the `DESTDIR` variable:
-
- $ make DESTDIR=<tmp install dir> install
-
- The installation will be created in a location prefixed by `$DESTDIR`.
- It can, however, not be run from there. It needs to be moved into the
- correct location before it can be run. If `DESTDIR` have not been set
- but `INSTALL_PREFIX` has been set, `DESTDIR` will be set to
- `INSTALL_PREFIX`. Note that `INSTALL_PREFIX` in pre R13B04 was buggy
- and behaved as `EXTRA_PREFIX` (see below). There are lots of areas of
- use for an installation procedure using `DESTDIR`, e.g. when creating
- a package, cross compiling, etc. Here is an example where the
- installation should be located under `/opt/local`:
-
- $ ./configure --prefix=/opt/local
- $ make
- $ make DESTDIR=/tmp/erlang-build install
- $ cd /tmp/erlang-build/opt/local
- $ # gnu-tar is used in this example
- $ tar -zcf /home/me/my-erlang-build.tgz *
- $ su -
- Password: *****
- $ cd /opt/local
- $ tar -zxf /home/me/my-erlang-build.tgz
-
-* Install using the `release` target. Instead of doing `make install` you
- can create the installation in whatever directory you like using the
- `release` target and run the `Install` script yourself. `RELEASE_ROOT`
- is used for specifying the directory where the installation should be
- created. This is what by default ends up under `/usr/local/lib/erlang`
- if you do the install using `make install`. All installation paths
- provided in the `configure` phase are ignored, as well as `DESTDIR`,
- and `INSTALL_PREFIX`. If you want links from a specific `bin` directory
- to the installation you have to set those up yourself. An example where
- Erlang/OTP should be located at `/home/me/OTP`:
-
- $ ./configure
- $ make
- $ make RELEASE_ROOT=/home/me/OTP release
- $ cd /home/me/OTP
- $ ./Install -minimal /home/me/OTP
- $ mkdir -p /home/me/bin
- $ cd /home/me/bin
- $ ln -s /home/me/OTP/bin/erl erl
- $ ln -s /home/me/OTP/bin/erlc erlc
- $ ln -s /home/me/OTP/bin/escript escript
- ...
-
- The `Install` script should currently be invoked as follows in the
- directory where it resides (the top directory):
-
- $ ./Install [-cross] [-minimal|-sasl] <ERL_ROOT>
-
- where:
-
- * `-minimal` Creates an installation that starts up a minimal amount
- of applications, i.e., only `kernel` and `stdlib` are started. The
- minimal system is normally enough, and is what `make install` uses.
- * `-sasl` Creates an installation that also starts up the `sasl`
- application.
- * `-cross` For cross compilation. Informs the install script that it
- is run on the build machine.
- * `<ERL_ROOT>` - The absolute path to the Erlang installation to use
- at run time. This is often the same as the current working directory,
- but does not have to be. It can follow any other path through the
- file system to the same directory.
-
- If neither `-minimal`, nor `-sasl` is passed as argument you will be
- prompted.
-
-* Test install using `EXTRA_PREFIX`. The content of the `EXTRA_PREFIX`
- variable will prefix all installation paths when doing `make install`.
- Note that `EXTRA_PREFIX` is similar to `DESTDIR`, but it does *not* have
- the same effect as `DESTDIR`. The installation can and have to be run
- from the location specified by `EXTRA_PREFIX`. That is, it can be useful
- if you want to try the system out, running test suites, etc, before doing
- the real install without `EXTRA_PREFIX`.
-
-### Symbolic Links in --bindir ###
-
-When doing `make install` and the default installation prefix is used,
-relative symbolic links will be created from `/usr/local/bin` to all public
-Erlang/OTP executables in `/usr/local/lib/erlang/bin`. The installation phase
-will try to create relative symbolic links as long as `--bindir` and the
-Erlang bin directory, located under `--libdir`, both have `--exec-prefix` as
-prefix. Where `--exec-prefix` defaults to `--prefix`. `--prefix`,
-`--exec-prefix`, `--bindir`, and `--libdir` are all arguments that can be
-passed to `configure`. One can force relative, or absolute links by passing
-`BINDIR_SYMLINKS=relative|absolute` as arguments to `make` during the install
-phase. Note that such a request might cause a failure if the request cannot
-be satisfied.
-
-### Pre-built Source Release ###
-
-The source release is delivered with a lot of platform independent
-build results already pre-built. If you want to remove these pre-built
-files, invoke `./otp_build remove_prebuilt_files` from the `$ERL_TOP`
-directory. After you have done this, you can build exactly the same way
-as before, but the build process will take a much longer time.
-
-> *WARNING*: Doing `make clean` in an arbitrary directory of the source
-> tree, may remove files needed for bootstrapping the build.
->
-> Doing `./otp_build save_bootstrap` from the `$ERL_TOP` directory before
-> doing `make clean` will ensure that it will be possible to build after
-> doing `make clean`. `./otp_build save_bootstrap` will be invoked
-> automatically when `make` is invoked from `$ERL_TOP` with either the
-> `clean` target, or the default target. It is also automatically invoked
-> if `./otp_build remove_prebuilt_files` is invoked.
-
-### Building in Git ###
-
-When building in a Git working directory you also have to have a GNU `autoconf`
-of at least version 2.59 on your system, because you need to generate the
-`configure` scripts before you can start building.
-
-The `configure` scripts are generated by invoking `./otp_build autoconf` in
-the `$ERL_TOP` directory. The `configure` scripts also have to be regenerated
-when a `configure.in` or `aclocal.m4` file has been modified. Note that when
-checking out a branch a `configure.in` or `aclocal.m4` file may change
-content, and you may therefore have to regenerate the `configure` scripts
-when checking out a branch. Regenerated `configure` scripts imply that you
-have to run `configure` and build again.
-
-> *NOTE*: Running `./otp_build autoconf` is **not** needed when building
-> an unmodified version of the released source.
-
-Other useful information can be found at our github wiki:
-<http://wiki.github.com/erlang/otp>
-
-### make and $ERL\_TOP ###
-
-All the makefiles in the entire directory tree use the environment
-variable `ERL_TOP` to find the absolute path of the installation. The
-`configure` script will figure this out and set it in the top level
-Makefile (which, when building, it will pass on). However, when
-developing it is sometimes convenient to be able to run make in a
-subdirectory. To do this you must set the `ERL_TOP` variable
-before you run make.
-
-For example, assume your GNU make program is called `make` and you
-want to rebuild the application `STDLIB`, then you could do:
-
- $ cd lib/stdlib; env ERL_TOP=<Dir> make
-
-where `<Dir>` would be what you find `ERL_TOP` is set to in the top level
-Makefile.
-
-The Erlang/OTP Documentation
-----------------------------
-
-### How to Build the Documentation ###
-
- $ cd $ERL_TOP
-
-If you have just built Erlang/OTP in the current source tree, you have
-already ran `configure` and do not need to do this again; otherwise, run
-`configure`.
-
- $ ./configure [Configure Args]
-
-When building the documentation you need a full Erlang/OTP-%OTP-REL% system in
-the `$PATH`.
-
- $ export PATH=<Erlang/OTP-%OTP-REL% bin dir>:$PATH # Assuming bash/sh
-
-Build the documentation.
-
- $ make docs
-
-The documentation can be installed either using the `install-docs` target,
-or using the `release_docs` target.
-
-* If you have installed Erlang/OTP using the `install` target, install
- the documentation using the `install-docs` target. Install locations
- determined by `configure` will be used. `$DESTDIR` can be used the
- same way as when doing `make install`.
-
- $ make install-docs
-
-* If you have installed Erlang/OTP using the `release` target, install
- the documentation using the `release_docs` target. You typically want
- to use the same `RELEASE_ROOT` as when invoking `make release`.
-
- $ make release_docs RELEASE_ROOT=<release dir>
-
-#### Build Issues ####
-
-We have sometimes experienced problems with Sun's `java` running out of
-memory when running `fop`. Increasing the amount of memory available
-as follows has in our case solved the problem.
-
- $ export FOP_OPTS="-Xmx<Installed amount of RAM in MB>m"
-
-More information can be found at
-<http://xmlgraphics.apache.org/fop/0.95/running.html#memory>.
-
-### How to Install the Pre-formatted Documentation ###
-
-Pre-formatted [html documentation][] and [man pages][] can be downloaded at
-<http://www.erlang.org/download.html>.
-
-For some graphical tools to find the on-line help you have to install
-the HTML documentation on top of the installed OTP applications, i.e.
-
- $ cd <ReleaseDir>
- $ gunzip -c otp_html_%OTP-REL%.tar.gz | tar xf -
-
-For `erl -man <page>` to work the Unix manual pages have to be
-installed in the same way, i.e.
-
- $ cd <ReleaseDir>
- $ gunzip -c otp_man_%OTP-REL%.tar.gz | tar xf -
-
-Where `<ReleaseDir>` is
-
-* `<PrefixDir>/lib/erlang` if you have installed Erlang/OTP using
- `make install`.
-* `$DESTDIR<PrefixDir>/lib/erlang` if you have installed Erlang/OTP
- using `make install DESTDIR=<TmpInstallDir>`.
-* `RELEASE_ROOT` if you have installed using
- `make release RELEASE_ROOT=<ReleaseDir>`.
-
-Support for SMP (Symmetric Multi Processing)
---------------------------------------------
-
-An emulator with SMP support will be built by default on most platforms
-if a usable POSIX thread library or native Windows threads is found.
-
-You can force building of an SMP emulator, by using
-`./configure --enable-smp-support`. However, if configure does not
-automatically enable SMP support, the build is very likely to fail.
-
-Use `./configure --disable-smp-support` if you for some reason do not
-want to have the emulator with SMP support built.
-
-If SMP support is enabled, support for threaded I/O will also be turned on
-(also in the emulator without SMP support).
-
-The `erl` command will automatically start the SMP emulator if the
-computer has more than one logical processor. You can force a start
-of the emulator with SMP support by passing `-smp enable` as
-command line arguments to erl, and you can force a start of the
-emulator without SMP support by passing `-smp disable`.
-
-GS (Graphic System)
--------------------
-
-GS now Tcl/Tk 8.4. It will be searched for when starting GS.
-
-Using HiPE
-----------
-
-HiPE supports the following system configurations:
-
-* x86: All 32-bit and 64-bit mode processors should work.
-
- * Linux: Fedora Core is supported. Both 32-bit and 64-bit modes are
- supported.
-
- NPTL glibc is strongly preferred, or a LinuxThreads
- glibc configured for "floating stacks". Old non-floating
- stacks glibcs have a fundamental problem that makes HiPE
- support and threads support mutually exclusive.
-
- * Solaris: Solaris 10 (32-bit and 64-bit) and 9 (32-bit) are supported.
- The build requires a version of the GNU C compiler (gcc)
- that has been configured to use the GNU assembler (gas).
- Sun's x86 assembler is emphatically **not** supported.
-
- * FreeBSD: FreeBSD 6.1 and 6.2 in 32-bit and 64-bit modes should work.
-
- * MacOSX/Darwin: Darwin 9.8.0 in 32-bit mode should work.
-
-* PowerPC: All 32-bit 6xx/7xx(G3)/74xx(G4) processors should work. 32-bit
- mode on 970 (G5) and POWER5 processors should work.
-
- * Linux (Yellow Dog) and Mac OSX 10.4 are supported.
-
-* SPARC: All UltraSPARC processors running 32-bit user code should work.
-
- * Solaris 9 is supported. The build requires a `gcc` that has been
- configured to use Sun's assembler and linker. Using the GNU assembler
- but Sun's linker has been known to cause problems.
-
- * Linux (Aurora) is supported.
-
-* ARM: ARMv5TE (i.e. XScale) processors should work. Both big-endian and
- little-endian modes are supported.
-
- * Linux is supported.
-
-HiPE is automatically enabled on the following systems:
-
-* x86 in 32-bit mode: Linux, Solaris, FreeBSD
-* x86 in 64-bit mode: Linux, Solaris, FreeBSD
-* PowerPC: Linux, MacOSX
-* SPARC: Linux
-* ARM: Linux
-
-On other supported systems you need to `./configure --enable-hipe`.
-
-If you are running on a platform supporting HiPE and if you have not disabled
-HiPE, you can compile a module into native code like this from the Erlang
-shell:
-
- 1> c(Module, native).
-
-or
-
- 1> c(Module, [native|OtherOptions]).
-
-Using the erlc program, write like this:
-
- $ erlc +native Module.erl
-
-The native code will be placed into the beam file and automatically loaded
-when the beam file is loaded.
-
-To add hipe options, write like this from the Erlang shell:
-
- 1> c(Module, [native,{hipe,HipeOptions}|MoreOptions]).
-
-Use `hipe:help_options/0` to print out the available options.
-
- 1> hipe:help_options().
-
-Mac OS X (Darwin)
------------------
-
-Make sure that the command `hostname` returns a valid fully qualified host
-name (this is configured in `/etc/hostconfig`).
-
-If you develop linked-in drivers (shared library) you need to link using
-`gcc` and the flags `-bundle -flat_namespace -undefined suppress`. You also
-include `-fno-common` in `CFLAGS` when compiling. Use `.so` as the library
-suffix.
-
-Use the `--enable-darwin-64bit` configure flag to build a 64-bit
-binaries on Mac OS X.
-
-Building universal binaries on Mac OS X (obsolete information)
---------------------------------------------------------------
-
-(This information was written when Mac OS X Leopard was the current
-release. It may no longer work.)
-
-Universal 32bit binaries can be built on an Intel Mac using the
-`--enable-darwin-universal` configure option. There still may occur
-problems with certain applications using this option, but the base
-system should run smoothly.
-
-When building universal binaries on a PowerPC Mac (at least on Tiger),
-you must point out a suitable SDK that contains universal binaries.
-For instance, to build universal binaries for Tiger (10.4):
-
- $ CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk" \
- LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk" \
- ./configure --enable-darwin-universal
-
-Also, if you run Leopard, but want to build for Tiger, you must do by
-setting the `MACOSX_DEPLOYMENT_TARGET` environmental variable.
-
- $ export MACOSX_DEPLOYMENT_TARGET=10.4
-
-Experimental support for 64bit x86 darwin binaries can be enabled
-using the `--enable-darwin-64bit` configure flag. The 64bit binaries are
-best built and run on Leopard, but most of the system also works on
-Tiger (Tiger's 64bit libraries are, however, limited; therefore e.g. `odbc`,
-`crypto`, `ssl` etc. are not supported in Tiger). 64bit PPC binaries are not
-supported and we have no plans to add such support (no machines to
-test on).
-
-Universal binaries and 64bit binaries are mutually exclusive options.
-
-Building a fast Erlang VM on Mac OS Lion
-----------------------------------------
-
-Starting with Xcode 4.2, Apple no longer includes a "real" `gcc`
-compiler (not based on the LLVM). Building with `llvm-gcc` or `clang`
-will work, but the performance of the Erlang run-time system will not
-be the best possible.
-
-Note that if you have `gcc-4.2` installed and included in `PATH`
-(from a previous version of Xcode), `configure` will automatically
-make sure that `gcc-4.2` will be used to compile `beam_emu.c`
-(the source file most in need of `gcc`).
-
-If you don't have `gcc-4.2.` and want to build a run-time system with
-the best possible performance, do like this:
-
-Install Xcode from the AppStore if it is not already installed.
-
-For Xcode 4.3 you will also need to download "Command Line Tools"
-via the Downloads preference pane i Xcode.
-
-Some tools may still be lacking or out-of-date, we recommend using
-[Homebrew](https://github.com/mxcl/homebrew/wiki/installation) or
-Macports update those tools.
-
-Install MacPorts (<http://www.macports.org/>). Then:
-
- $ sudo port selfupdate
- $ sudo port install gcc45 +universal
-
-If you want to build the `wx` application, get wxMac-2.8.12
-(`wxMac-2.8.12.tar.gz` from
-<http://sourceforge.net/projects/wxwindows/files/2.8.12/>) and build:
-
-Export the path for MacOSX10.6.sdk,
-
- $ export SDK=/Developer/SDKs/MacOSX10.6.sdk
-
-In Xcode 4.3 the path has changed so use the following instead,
-
- $ export SDK=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk
-
-Then configure and build wx,
-
- $ arch_flags="-arch i386" ./configure CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags" OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags" --prefix=/usr/local --with-macosx-sdk="$SDK" --with-macosx-version-min=10.6 --enable-unicode --with-opengl --disable-shared
- $ make
- $ sudo make install
-
-To link wx properly we will also need to build and install `wxStyledTextCtrl`
-
- $ cd contrib/src/stc
- $ make
- $ sudo make install
-
-Build Erlang with the MacPorts GCC as the main compiler (using `clang`
-for the Objective-C Cocoa code in the `wx` application):
-
- $ PATH=/usr/local/bin:$PATH CC=/opt/local/bin/gcc-mp-4.5 CXX=/opt/local/bin/g++-mp-4.5 ./configure --enable-m32-build make
- $ sudo make install
-
-
-How to Build a Debug Enabled Erlang RunTime System
---------------------------------------------------
-
-After completing all the normal building steps described above a debug
-enabled runtime system can be built. To do this you have to change
-directory to `$ERL_TOP/erts/emulator`.
-
-In this directory execute:
-
- $ make debug FLAVOR=$FLAVOR
-
-where `$FLAVOR` is either `plain` or `smp`. The flavor options will
-produce a beam.debug and beam.smp.debug executable respectively. The
-files are installed along side with the normal (opt) versions `beam.smp`
-and `beam`.
-
-To start the debug enabled runtime system execute:
-
- $ $ERL_TOP/bin/cerl -debug
-
-The debug enabled runtime system features lock violation checking,
-assert checking and various sanity checks to help a developer ensure
-correctness. Some of these features can be enabled on a normal beam
-using appropriate configure options.
-
-There are other types of runtime systems that can be built as well
-using the similar steps just described.
-
- $ make $TYPE FLAVOR=$FLAVOR
-
-where `$TYPE` is `opt`, `gcov`, `gprof`, `debug`, `valgrind`, or `lcnt`.
-These different beam types are useful for debugging and profiling
-purposes.
-
-Authors
--------
-
-Authors are mostly listed in the application's `AUTHORS` files,
-that is `$ERL_TOP/lib/*/AUTHORS` and `$ERL_TOP/erts/AUTHORS`,
-not in the individual source files.
-
-Copyright and License
----------------------
-
-%CopyrightBegin%
-
-Copyright Ericsson AB 1998-2012. All Rights Reserved.
-
-The contents of this file are subject to the Erlang Public License,
-Version 1.1, (the "License"); you may not use this file except in
-compliance with the License. You should have received a copy of the
-Erlang Public License along with this software. If not, it can be
-retrieved online at http://www.erlang.org/.
-
-Software distributed under the License is distributed on an "AS IS"
-basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-the License for the specific language governing rights and limitations
-under the License.
-
-%CopyrightEnd%
-
-More Information
-----------------
-
-More information can be found at <http://www.erlang.org>.
-
-Modifying This Document
------------------------
-
-Before modifying this document you need to have a look at the
-`$ERL_TOP/README.md.txt` document.
-
-
-
- [$ERL_TOP/INSTALL-CROSS.md]: INSTALL-CROSS
- [$ERL_TOP/INSTALL-WIN32.md]: INSTALL-WIN32
- [DESTDIR]: http://www.gnu.org/prep/standards/html_node/DESTDIR.html
- [Building in Git]: #How-to-Build-and-Install-ErlangOTP_Building-in-Git
- [Pre-built Source Release]: #How-to-Build-and-Install-ErlangOTP_Prebuilt-Source-Release
- [make and $ERL_TOP]: #How-to-Build-and-Install-ErlangOTP_make-and-ERLTOP
- [html documentation]: http://www.erlang.org/download/otp_doc_html_%OTP-REL%.tar.gz
- [man pages]: http://www.erlang.org/download/otp_doc_man_%OTP-REL%.tar.gz
- [the released source tar ball]: http://www.erlang.org/download/otp_src_%OTP-REL%.tar.gz
-
- [?TOC]: true