aboutsummaryrefslogtreecommitdiffstats
path: root/xcomp
diff options
context:
space:
mode:
Diffstat (limited to 'xcomp')
-rw-r--r--xcomp/README539
-rw-r--r--xcomp/erl-xcomp-TileraMDE2.0-tilepro.conf396
-rw-r--r--xcomp/erl-xcomp-vars.sh29
-rw-r--r--xcomp/erl-xcomp-vxworks_ppc32.conf397
-rw-r--r--xcomp/erl-xcomp-x86_64-saf-linux-gnu.conf236
-rw-r--r--xcomp/erl-xcomp.conf.template432
6 files changed, 1309 insertions, 720 deletions
diff --git a/xcomp/README b/xcomp/README
index dfda81fc8e..4cb577471a 100644
--- a/xcomp/README
+++ b/xcomp/README
@@ -1,10 +1,10 @@
-================================================================================
- Cross compiling Erlang/OTP
-================================================================================
+===============================================================================
+ Cross compiling Erlang/OTP
+===============================================================================
%CopyrightBegin%
-Copyright Ericsson AB 2009. All Rights Reserved.
+Copyright Ericsson AB 2009-2010. 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
@@ -19,200 +19,413 @@ under the License.
%CopyrightEnd%
-================================================================================
+===============================================================================
+
+This document describes how to cross compile Erlang/OTP. Note that the support
+for cross compiling Erlang/OTP is in its early stage of development, and
+should be considered as experimental. You are encouraged to read the whole
+document before attempting to cross compile Erlang/OTP.
+
+Building Erlang/OTP can be done either by using the `$ERL_TOP/otp_build'
+script, or by invoking `configure' and `make' directly. The
+`erl-xcomp.conf.template' file contains all available configuration variables
+and can be used as a template when creating a configuration. See
+`erl-xcomp-TileraMDE2.0-tilepro.conf` and `erl-xcomp-x86_64-saf-linux-gnu.conf'
+for examples of working configurations.
+
+The configuration files can be passed to `$ERL_TOP/otp_build configure' using
+the `--xcomp-conf' command line argument. Note that `configure' doesn't accept
+this command line argument. When using the `configure' script directly, pass
+the configuration variables as arguments to `configure' (or exported in the
+environment). If the default behavior of a variable is satisfactory, the
+variable doesn't need to be set. However, the `configure' script will issue a
+warning when a default value is used. When a variable has been set, no warning
+will be issued.
+
+All Erlang/OTP applications except the `wx' application can be cross compiled.
+The build of the `wx' driver will currently be automatically disabled when
+cross compiling.
+
+Note, that `$ERL_TOP/otp_build configure' will produce a default configuration
+that differs from what `$ERL_TOP/configure' will produce by default. For
+example, currently `--disable-dynamic-ssl-lib' is added to the
+`$ERL_TOP/configure' command line arguments unless `--enable-dynamic-ssl-lib'
+has been explicitly passed. The defaults used by `$ERL_TOP/otp_build configure'
+may change at any time without prior notice.
+
+The build system, including cross compilation configuration variables used,
+may be subject to non backward compatible changes without prior notice.
+Current cross build system has been tested when cross compiling some Linux/GNU
+systems, but has only been partly tested for more esoteric platforms. The
+VxWorks example file is highly dependent on our environment and is here more
+or less only for internal use.
-This directory contains a configuration file template and configuration examples
-for cross compiling Erlang/OTP. The configuration files contain configuration
-variables and should be supplied to the $ERL_TOP/otp_build when setting up an
-appropriate environment for cross compiling. The currently used configuration
-variables are described later in this document.
+Please submit any patches for cross compiling in a way consistent with this
+system. All input is welcome as we have a very limited set of cross compiling
+environments to test with. If a new configuration variable is needed, add it
+to `$ERL_TOP/xcomp/erl-xcomp.conf.template', and use it in `configure.in'.
+Other files that might need to be updated are:
+- `$ERL_TOP/xcomp/erl-xcomp-vars.sh'
+- `$ERL_TOP/erl-build-tool-vars.sh'
+- `$ERL_TOP/erts/aclocal.m4'
+- `$ERL_TOP/xcomp/README'
+- `$ERL_TOP/xcomp/erl-xcomp-*.conf'
+Note that this might be an incomplete list of files that need to be updated.
-The erl-xcomp.conf.template contains all available configuration variables
-and can be used as a template when creating a configuration. See the
-erl-xcomp-TileraMDE2.0-tilepro.conf for an example of a working configuration
-file.
+General information on how to submit patches can be found at:
+ http://wiki.github.com/erlang/otp/submitting-patches
-Instead of using the configuration files one can export the configuration
-variables as ordinary environment variables before calling otp_build. If
-default behavior of a variable is satisfactory, the variable need not to
-be set and exported.
+======= Build and Install =====================================================
-Note that the support for cross compiling is in its early stage of development,
-and should be considered as experimental. The build system including cross
-compilation configuration variables used may be subject to non backward
-compatible changes without prior notice. It works for cross compiling some
-Linux/GNU systems, but has only been partly tested for more esoteric platforms.
-The VxWorks example file is highly dependent on our environment and is here
-more or less only for internal use.
+ [1]
-Please submit any patches for cross compiling in a way consistent with this
-system. If a new configuration variable is needed for your system, add it to the
-template file, use it in otp_build, aclocal.m4 and/or configure.in. All input is
-welcome as we cannot possibly have all cross compiling environments out there to
-test with.
+Change directory into the top directory of the Erlang/OTP source tree.
-General information on how to submit patches can be found at:
- http://wiki.github.com/erlang/otp/submitting-patches
+ $ cd $ERL_TOP
+
+------- Build -----------------------------------------------------------------
+
+In order to compile Erlang code, a small Erlang bootstrap system has to be
+built, or an Erlang/OTP system of the same release as the one being built
+has to be provided in the `$PATH'. The Erlang/OTP for the target system will
+be built using this Erlang system, together with the cross compilation tools
+provided.
+
+If you want to build using a compatible Erlang/OTP system in the `$PATH',
+jump to [3].
+
+-- Building a bootstrap system --
+
+ [2]
+
+ $ ./configure --enable-bootstrap-only
+ $ make
+
+The `--enable-bootstrap-only' argument to `configure' isn't strictly necessary,
+but will speed things up. It will only run `configure' in applications
+necessary for the bootstrap, and will disable a lot of things not needed by
+the bootstrap system. If you run `configure' without `--enable-boostrap-only'
+you also have to run make as `make bootstrap'; otherwise, the whole system will
+be built.
+
+-- Cross building the system --
+
+ [3]
+
+ $ ./configure --build=<BUILD> --host=<HOST> [Other Configure Args]
+ $ make
+
+<BUILD> should equal the CPU-VENDOR-OS triplet of the system that you build
+on. If you execute `$ERL_TOP/erts/autoconf/config.guess', it will in most
+cases print the triplet you want to use for this.
+
+<HOST> is the system that you build for. It does not have to be a full
+CPU-VENDOR-OS triplet, but can be. The full CPU-VENDOR-OS triplet will be
+created by executing `$ERL_TOP/erts/autoconf/config.sub <HOST>'. If
+`config.sub' fails, you need to be more specific.
+
+Pass the cross compilation variables as command line arguments to `configure'
+using a `<VAR>=<VALUE>' syntax (or export them in the environment). Note that
+you can *not* pass a configuration file using `--xcomp-conf=<FILE>' when you
+invoke `configure' directly. The `--xcomp-conf=<FILE>' argument can only
+be passed to `$ERL_TOP/otp_build configure'.
+
+`make' will verify that the Erlang/OTP system used when building is of the
+same release as the system being built, and will fail if this is not the case.
+It is possible, however not recommended, to force the cross compilation even
+though the wrong Erlang/OTP system is used. This by invoking `make' like this:
+`make ERL_XCOMP_FORCE_DIFFERENT_OTP=yes'. Note that this build might fail,
+silently produce suboptimal code, or silently produce erroneous code.
+
+-- Installing --
+
+You can either install using the installation paths determined by `configure'
+[4], or install manually using [5].
+
+ [4]
+
+ $ make install DESTDIR=<TEMPORARY_PREFIX>
+
+`make install' will install at a location specified when doing `configure'.
+`configure' arguments specifying where the installation should reside are for
+example: `--prefix', `--exec-prefix', `--libdir', `--bindir', etc. By default
+it will install under `/usr/local'. You typically do not want to install your
+cross build under `/usr/local' on your build machine. Using `DESTDIR' will
+cause the installation paths to be prefixed by `$DESTDIR'. This makes it
+possible to install and package the installation on the build machine without
+having to place the installation in the same directory on the build machine as
+it should be executed from on the target machine.
+
+When `make install' has finished, change directory into `$DESTDIR', package
+the system, move it to the target machine, and unpack it. Note that the
+installation will only be working on the target machine at the location
+determined by `configure'.
+
+Installing manually:
+
+ [5]
+
+ $ make release RELEASE_ROOT=<RELEASE_DIR>
+
+`make release' will copy what you have built for the target machine to
+`<RELEASE_DIR>'. The `Install' script will not be run. The content of
+`<RELEASE_DIR>' is what by default ends up in `/usr/local/lib/erlang'.
-== Build and Install ===========================================================
+The `Install' script used when installing Erlang/OTP requires common Unix
+tools such as `sed' to be present in your `$PATH'. If your target system
+does not have such tools, you need to run the `Install' script on your
+build machine before packaging Erlang/OTP. 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.
+ -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.
- [1] $ cd $ERL_TOP
+You can now either:
-Either set up your cross compilation variables in the environment manually,
-or set up the environment using a configuration file by executing:
- [2] $ eval `./otp_build env_cross <ABSOLUTE_PATH_TO_XCONF_FILE>`
+ [6]
-Configure and build Erlang/OTP:
- [3] $ ./otp_build configure
- [4] $ ./otp_build boot -a
- [5] $ ./otp_build release -a <ABSOLUTE_PATH_TO_RELEASE_ROOT>
+* Decide where the installation should be located on the target machine, run
+ the `Install' script on the build machine, and package the installed
+ installation. The installation just need to be unpacked at the right
+ location on the target machine:
-The Install script used when installing Erlang/OTP requires common Unix
-tools such as 'sed' to be present in your PATH. If your target system
-does not have such tools, you need to run the Install script on your
-build machine before packing Erlang/OTP. If so, run the Install script
-like follows; otherwise skip [6] and [7]:
- [6] $ cd <ABSOLUTE_PATH_TO_RELEASE_ROOT>
- [7] $ ./Install -cross <ABSOLUTE_INSTALL_ROOT_ON_TARGET> # answer questions
+ $ cd <RELEASE_DIR>
+ $ ./Install -cross [-minimal|-sasl] <ABSOLUTE_INSTALL_DIR_ON_TARGET>
-Pack Erlang/OTP as follows (gnu tar is assumed):
- [8] $ cd <ABSOLUTE_PATH_TO_RELEASE_ROOT>
- [9] $ tar -zcf <WHERE_TO_SAVE_THE_RELEASE>/<RELEASE_NAME>.tar.gz *
+ [7]
-Install Erlang/OTP on the target system like follows. If you ran the Install
-script before packing ([6] and [7]) you should skip [12]:
- [10] $ cd <ABSOLUTE_INSTALL_ROOT_ON_TARGET>
- [11] $ tar -zxf <WHERE_THE_PACKED_RELEASE_EXIST>/<RELEASE_NAME>.tar.gz
- [12] $ ./Install <ABSOLUTE_INSTALL_ROOT_ON_TARGET> # answer questions
+* Package the installation in <RELEASE_DIR>, place it wherever you want on
+ your target machine, and run the `Install' script on your target machine:
-<ABSOLUTE_INSTALL_ROOT_ON_TARGET> usually equals current working directory
-when you run the Install script on the target system, but does not have to.
-It can follow another path through the file system to the same directory.
-<ABSOLUTE_INSTALL_ROOT_ON_TARGET> is the path that will be used when running
-Erlang/OTP and is the path that have to be available at run time.
+ $ cd <ABSOLUTE_INSTALL_DIR_ON_TARGET>
+ $ ./Install [-minimal|-sasl] <ABSOLUTE_INSTALL_DIR_ON_TARGET>
-== Currently used configuration variables ======================================
+-- Building with the `otp_build' script --
--- Mandatory -------------------------------------------------------------------
+ [8]
-* erl_xcomp_host
- Target system. The value will be passed as '--host' argument to the configure
- script. It does not have to be a full CPU-VENDOR-OS triplet, but can be. The
- full CPU-VENDOR-OS triplet will be created by:
- $ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host
+ $ cd $ERL_TOP
--- Optional --------------------------------------------------------------------
+ [9]
-* erl_xcomp_configure_flags
- To override the configure flags for a special target system, you
- can set this variable which overrides configure parameters on the
- command line and instead uses the specified options. The variable
- leaves the build-host system untouched.
+ $ ./otp_build configure [--build=<BUILD>] [--host=<HOST>] \
+ [--with-xcomp-conf=<FILE>] [Other Configure Args]
--- Optional build environment flags --
+If you have your cross compilation configuration in a file, pass it using the
+`--xcomp-conf=<FILE>' command line argument. If not, pass the configuration
+variables on the command line using a `<VAR>=<VALUE>' syntax (or in the
+environment).
-If the cross compilation tools aren't prefixed by '$erl_xcomp_host-',
-you will have to use these configuration variables in order to use the
-right cross compilation tools.
+`--build=<BUILD>', and `--host=<HOST>' are the same as described at [3].
+The `--xcomp-conf=<FILE>' argument causes `otp_build' to read the cross
+compilation configuration from `<FILE>'. All of these arguments are in this
+case optional, but `<BUILD>', and `<HOST>' must be given either by passing
+`--build=<BUILD>' and `--host=<HOST>' on the command line, or by setting
+`erl_xcomp_build=<HOST>', and `erl_xcomp_host=<HOST>' in `<FILE>' and
+passing the `--xcomp-conf=<FILE>' argument.
-* erl_xcomp_cc
- C compiler.
+`otp_build configure' will configure both for the boostrap system on the
+build machine and the cross host system.
-* erl_xcomp_ld
- Linker.
+ [10]
-* erl_xcomp_cflags
- C compiler flags.
+ $ ./otp_build boot -a
-* erl_xcomp_cpp
- C pre processor.
+ 'otp_build boot -a' will first build a bootstrap system
+for the build machine and then do the cross build of the system.
-* erl_xcomp_ldflags
- Linker flags.
+ [11]
-* erl_xcomp_ranlib
- Ranlib program.
+ $ ./otp_build release -a <RELEASE_DIR>
-* erl_xcomp_ar
- Ar program.
+'otp_build release -a' will do the same as [5], and you will after this have
+to do a manual install either by doing [6], or [7].
-* erl_xcomp_ded_ld
- Dynamic Erlang Driver linker.
+======== Currently used configuration variables ===============================
-* erl_xcomp_ded_ldflags
- Dynamic Erlang Driver linker flags.
+Note that you cannot define arbitrary variables in a cross compilation
+configuration file. Only the ones listed below will be guaranteed to be
+visible throughout the whole execution of all `configure' scripts. Other
+variables needs to be defined as arguments to `configure' or exported in
+the environment.
-* erl_xcomp_ded_ld_runtime_library_path
- Dynamic Erlang Driver runtime linker path.
+-------- `otp_build' only variables -------------------------------------------
--- Optional feature, or bug tests --
+Variables in this section are only used, when configuring Erlang/OTP for
+cross compilation using `$ERL_TOP/otp_build configure'.
+
+NOTE! These variables currently have *no* effect if you configure using the
+`configure' script directly.
+
+* erl_xcomp_build - Build system.
+ This value will be passed as `--build=$erl_xcomp_build' argument to the
+ `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+ but can be. The full CPU-VENDOR-OS triplet will be created by:
+ `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'
+ If `erl_xcomp_build=guess', the build system will be guessed using:
+ `$ERL_TOP/erts/autoconf/config.guess'.
+
+* erl_xcomp_host - Cross host system.
+ This value will be passed as `--host=$erl_xcomp_host' argument to the
+ `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+ but can be. The full CPU-VENDOR-OS triplet will be created by:
+ `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'
+
+* erl_xcomp_configure_flags - Extra configure flags.
+ Extra flags to pass to the `configure' script.
+
+-------- Cross compiler and other tools to use --------------------------------
+
+If the cross compilation tools are prefixed by `<HOST>-' you probably do
+not need to set these variables (where `<HOST>' is what has been passed as
+`--host=<HOST>' argument to `configure').
+
+* CC - C compiler.
+
+* CFLAGS - C compiler flags.
+
+* STATIC_CFLAGS - Static C compiler flags.
+
+* CFLAG_RUNTIME_LIBRARY_PATH - C compiler runtime library path flag.
+ This flag should set a specific runtime library path for the shared
+ library at link time. Note that this is actually a linker flag, but it
+ needs to be passed via the compiler.
+
+* CPP - C pre-processor.
+
+* CPPFLAGS - C pre-processor flags.
+
+* CXX - C++ compiler.
+
+* CXXFLAGS - C++ compiler flags.
+
+* LD - Linker
+
+* LDFLAGS - Linker flags.
+
+-- Dynamic Erlang Driver linker flags. --
+
+NOTE! Either define all or non of the DED_LD* variables.
+
+* DED_LD - Linker.
+
+* DED_LDFLAGS - Linker flags.
+
+* DED_LD_FLAG_RUNTIME_LIBRARY_PATH - Linker runtime library path flag.
+ This flag should set a specific runtime library path for the shared
+ library at link time.
+
+-- Other tools --
+
+* RANLIB - ranlib
+
+* AR - ar
+
+-------- Cross System Root Locations ------------------------------------------
+
+* erl_xcomp_sysroot - Absolute cross system root path.
+ The absolute path to the system root of the cross compilation
+ environment. Currently, the `crypto', `odbc', `ssh' and `ssl'
+ applications need the system root. These applications will be skipped
+ if the system root has not been set. The system root might be needed
+ for other things too. If this is the case and the system root has not
+ been set, `configure' will fail and request you to set it.
+
+* erl_xcomp_isysroot - Absolute cross include system root path.
+ The absolute path to the system root for includes of the cross
+ compilation environment. If not set, this value defaults to
+ `$erl_xcomp_sysroot', i.e., only set this value if the include system
+ root path is not the same as the system root path.
+
+-------- Optional feature, or bug tests ---------------------------------------
These tests cannot (always) be done automatically when cross compiling. You
usually does not need to set these variables. Only set these if you really
know what you are doing.
+The `configure' script will issue a warning when a default value is used.
+When a variable has been set, no warning will be issued.
+
* erl_xcomp_bigendian - yes|no
- If yes, the target system must be big endian. If no, little endian. This can
- often be automatically detected, but not always. If not automatically
- detected, configure will fail unless this variable is set. No default value
- is used, i.e., configure will try to figure this out automatically.
-
-* erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to yes)
- If yes, clock_gettime(CLOCK_MONOTONIC, _) on the target system must work.
- This variable is recommended to be set to no on Linux systems with kernel
- versions less than 2.6.
-
-* erl_xcomp_linux_nptl - yes|no (defaults to yes on Linux; otherwise, no)
- If yes, the target system must have NPTL (Native POSIX Thread Library).
- Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
- versions typically less than 2.6).
-
-* erl_xcomp_linux_usable_sigusrx - yes|no (defaults to yes)
- If yes, the SIGUSR1 and SIGUSR2 must be usable by the ERTS. Old
- LinuxThreads thread libraries (Linux kernel versions less than 2.2) used
- these signals and made them unusable by the ERTS.
-
-* erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to yes)
- If yes, sigaltstack() must be usable on the target system. sigaltstack()
- on Linux kernel versions less than 2.4 are broken.
-
-* erl_xcomp_poll - yes|no (defaults to no on Darwin/MacOSX; otherwise, yes)
- If yes, the target system must have a working poll() implementation that also
- can handle devices. If no, select() will be used instead of poll().
-
-* erl_xcomp_kqueue - yes|no (defaults to no)
- If yes, the target system must have a working kqueue() implementation that
- returns a file descriptor which can be used by poll() and/or select().
- If no and the target system has not got epoll() or /dev/poll, the kernel-poll
- feature will be disabled.
-
-* erl_xcomp_putenv_copy - yes|no (defaults to no)
- If yes, the target system must have a putenv() implementation that stores a
- copy of the key/value pair.
-
-* erl_xcomp_reliable_fpe - yes|no (defaults to no)
- If yes, the target system must have reliable floating point exceptions.
-
-* erl_xcomp_getaddrinfo - yes|no (defaults to no)
- If yes, the target system must have a working getaddrinfo() implementation
- that can handle both IPv4 and IPv6.
-
-* erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to no)
- If yes, the target system must have a working gethrvtime() implementation
- and is used with procfs ioctl().
-
-* erl_xcomp_clock_gettime - yes|no (defaults to no)
- If yes, the target system must have a working clock_gettime() implementation
- that can be used for retrieving process CPU time.
-
-* erl_xcomp_after_morecore_hook - yes|no (defaults to no)
- If yes, the target system must have a working __after_morecore_hook that can
- be used for tracking used malloc() implementations core memory usage.
-
-* erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to no)
- If yes, the target system must have a working dlsym(RTLD_NEXT, <S>)
- implementation that can be used on 'brk' and 'sbrk' symbols used by the
- malloc() implementation in use, and by this track the malloc() implementations
- core memory usage.
-
-================================================================================
+ If `yes', the target system must be big endian. If `no', little endian.
+ This can often be automatically detected, but not always. If not
+ automatically detected, `configure' will fail unless this variable is
+ set. No default value is used, i.e., `configure' will try to figure
+ this out automatically.
+
+* erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to `yes' on
+ Linux; otherwise, `no')
+ If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on the target system must
+ work. This variable is recommended to be set to `no' on Linux systems
+ with kernel versions less than 2.6.
+
+* erl_xcomp_linux_nptl - yes|no (defaults to `yes' on Linux; otherwise, `no')
+ If `yes', the target system must have NPTL (Native POSIX Thread Library).
+ Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
+ versions typically less than 2.6).
+
+* erl_xcomp_linux_usable_sigusrx - yes|no (defaults to `yes')
+ If `yes', the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS.
+ Old LinuxThreads thread libraries (Linux kernel versions less than 2.2)
+ used these signals and made them unusable by the ERTS.
+
+* erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to `yes' on Linux;
+ otherwise, `no')
+ If `yes', `sigaltstack()' must be usable on the target system.
+ `sigaltstack()' on Linux kernel versions less than 2.4 are broken.
+
+* erl_xcomp_poll - yes|no (defaults to `no' on Darwin/MacOSX; otherwise, `yes')
+ If `yes', the target system must have a working `poll()' implementation
+ that also can handle devices. If `no', `select()' will be used instead of
+ `poll()'.
+
+* erl_xcomp_kqueue - yes|no (defaults to `no')
+ If `yes', the target system must have a working `kqueue()' implementation
+ that returns a file descriptor which can be used by `poll()' and/or
+ `select()'. If `no' and the target system has not got `epoll()' or
+ `/dev/poll', the kernel-poll feature will be disabled.
+
+* erl_xcomp_putenv_copy - yes|no (defaults to `no')
+ If `yes', the target system must have a `putenv()' implementation that
+ stores a copy of the key/value pair.
+
+* erl_xcomp_reliable_fpe - yes|no (defaults to `no')
+ If `yes', the target system must have reliable floating point exceptions.
+
+* erl_xcomp_getaddrinfo - yes|no (defaults to `no')
+ If `yes', the target system must have a working `getaddrinfo()'
+ implementation that can handle both IPv4 and IPv6.
+
+* erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to `no')
+ If `yes', the target system must have a working `gethrvtime()'
+ implementation and is used with procfs `ioctl()'.
+
+* erl_xcomp_clock_gettime_cpu_time - yes|no (defaults to `no')
+ If `yes', the target system must have a working `clock_gettime()'
+ implementation that can be used for retrieving process CPU time.
+
+* erl_xcomp_after_morecore_hook - yes|no (defaults to `no')
+ If `yes', the target system must have a working `__after_morecore_hook'
+ that can be used for tracking used `malloc()' implementations core memory
+ usage.
+
+* erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to `no')
+ If `yes', the target system must have a working `dlsym(RTLD_NEXT, <S>)'
+ implementation that can be used on `brk' and `sbrk' symbols used by the
+ `malloc()' implementation in use, and by this track the `malloc()'
+ implementations core memory usage.
+
+===============================================================================
diff --git a/xcomp/erl-xcomp-TileraMDE2.0-tilepro.conf b/xcomp/erl-xcomp-TileraMDE2.0-tilepro.conf
index c8e7212e1f..67da8b5abb 100644
--- a/xcomp/erl-xcomp-TileraMDE2.0-tilepro.conf
+++ b/xcomp/erl-xcomp-TileraMDE2.0-tilepro.conf
@@ -1,200 +1,236 @@
-###
-### %CopyrightBegin%
-###
-### Copyright Ericsson AB 2009. 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%
-###
-### File: erl-xcomp-TileraMDE2.0-tilepro.conf
-### Author: Rickard Green
-###
-
-### ----------------------------------------------------------------------------
-### When cross compiling Erlang/OTP, copy this file and set the variables
-### needed below. Then pass the path to the copy of this file as an argument
-### to "eval `otp_build env_cross <absolute path to erl-xcomp.conf file>`".
-### ----------------------------------------------------------------------------
-
-### ----------------------------------------------------------------------------
-### Variables in the following section *have* to be set.
-###
-
-
-##
-## Target system. The value will be passed as '--host' argument to the configure
-## script. It does not have to be a full CPU-VENDOR-OS tripplet, but can be. The
-## full CPU-VENDOR-OS tripplet will be created by:
-## $ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host
-##
+#### -*-shell-script-*-
+####
+#### %CopyrightBegin%
+####
+#### Copyright Ericsson AB 2009-2010. 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%
+####
+#### File: erl-xcomp-TileraMDE2.0-tilepro.conf
+#### Author: Rickard Green
+####
+#### --------------------------------------------------------------------------
+#### When cross compiling Erlang/OTP using `otp_build', copy this file and set
+#### the variables needed below. Then pass the path to the copy of this file as
+#### an argument to `otp_build' in the configure stage:
+#### `otp_build configure --xcomp-conf=<FILE>'
+#### --------------------------------------------------------------------------
+
+### Note that you cannot define arbitrary variables in a cross compilation
+### configuration file. Only the ones listed below will be guaranteed to be
+### visible throughout the whole execution of all `configure' scripts. Other
+### variables needs to be defined as arguments to `configure' or exported in
+### the environment.
+
+### ---- `otp_build' only variables -------------------------------------------
+
+### Variables in this section are only used, when configuring Erlang/OTP for
+### cross compilation using `$ERL_TOP/otp_build configure'.
+
+### NOTE! These variables currently have *no* effect if you configure using the
+### `configure' script directly.
+
+## erl_xcomp_build - Build system.
+## This value will be passed as `--build=$erl_xcomp_build' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'
+## If `erl_xcomp_build=guess', the build system will be guessed using:
+## `$ERL_TOP/erts/autoconf/config.guess'.
+erl_xcomp_build=guess
+
+## erl_xcomp_host - Cross host system.
+## This value will be passed as `--host=$erl_xcomp_host' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'
erl_xcomp_host=tile
-### ----------------------------------------------------------------------------
-### ----------------------------------------------------------------------------
-### To override the configure flags for a special target system, You
-### can set this variable which overrides configure parameters on the
-### command line and instead uses the specified options. The variable
-### leaves the build-host system untouched.
-### ----------------------------------------------------------------------------
+## erl_xcomp_configure_flags - Extra configure flags.
+## Extra flags to pass to the `configure' script.
erl_xcomp_configure_flags="--without-termcap"
-###-----------------------------------------------------------------------------
-### You can specify a specific CC or LD for the build target (the cross
-### compiler) here along with magic CFLAGS and/or LDFLAGS if needed
-### ar and ranlib might also be specified if needed.
-###-----------------------------------------------------------------------------
+### ---- Cross compiler and other tools to use --------------------------------
-erl_xcomp_cc=
+### If the cross compilation tools are prefixed by `<HOST>-' you probably do
+### not need to set these variables (where `<HOST>' is what has been passed as
+### `--host=<HOST>' argument to `configure').
-erl_xcomp_ld=
+## CC - C compiler.
+#CC=
-erl_xcomp_cflags=
+## CFLAGS - C compiler flags.
+#CFLAGS=
-erl_xcomp_cpp=
+## STATIC_CFLAGS - Static C compiler flags.
+#STATIC_CFLAGS=
-erl_xcomp_ldflags=
+## CFLAG_RUNTIME_LIBRARY_PATH - C compiler runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time. Note that this is actually a linker flag, but it
+## needs to be passed via the compiler.
+#CFLAG_RUNTIME_LIBRARY_PATH=
-erl_xcomp_ranlib=
+## CPP - C pre-processor.
+#CPP=
-erl_xcomp_ar=
+## CPPFLAGS - C pre-processor flags.
+#CPPFLAGS=
-###-----------------------------------------------------------------------------
-### The ded_ls and ded_ldflags variables control linking of dynamically loaded
-### erlang drivers. On i.e. Linux these are set to
-### $(CC) and "-shared" respectively, but other OS'es might need other
-### programs and flags to build a dynamic library.
-### erl_xcomp_ded_ld_runtime_library_path is the flag to set a
-### specific runtime library path for the shared library at link time,
-### usually this should be left empty.
-###-----------------------------------------------------------------------------
+## CXX - C++ compiler.
+#CXX=
-erl_xcomp_ded_ld=
+## CXXFLAGS - C++ compiler flags.
+#CXXFLAGS=
-erl_xcomp_ded_ldflags=
+## LD - Linker
+#LD=
-erl_xcomp_ded_ld_runtime_library_path=
+## LDFLAGS - Linker flags.
+#LDFLAGS=
-###
-### Optional feature, or bug tests
-###
-### These tests cannot (always) be done automatically when cross compiling.
-### You usually does not need to set these variables. Only set these if you
-### really know what you are doing.
-###
+### -- Dynamic Erlang Driver linker flags. --
+
+### NOTE! Either define all or non of the DED_LD* variables.
+
+## DED_LD - Linker.
+#DED_LD=
+
+## DED_LDFLAGS - Linker flags.
+#DED_LDFLAGS=
+
+## DED_LD_FLAG_RUNTIME_LIBRARY_PATH - Linker runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time.
+#DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
+
+### -- Other tools --
+
+## RANLIB - ranlib
+#RANLIB=
+
+## AR - ar
+#AR=
+
+### ---- Cross System Root Locations ------------------------------------------
+
+## erl_xcomp_sysroot - Absolute cross system root path.
+## The absolute path to the system root of the cross compilation
+## environment. Currently, the `crypto', `odbc', `ssh' and `ssl'
+## applications need the system root. These applications will be skipped
+## if the system root has not been set. The system root might be needed
+## for other things too. If this is the case and the system root has not
+## been set, `configure' will fail and request you to set it.
+erl_xcomp_sysroot="$TILERA_ROOT/tile"
+
+## erl_xcomp_isysroot - Absolute cross include system root path.
+## The absolute path to the system root for includes of the cross
+## compilation environment. If not set, this value defaults to
+## `$erl_xcomp_sysroot', i.e., only set this value if the include system
+## root path is not the same as the system root path.
+#erl_xcomp_isysroot=
+
+### ---- Optional feature, or bug tests ---------------------------------------
+
+### These tests cannot (always) be done automatically when cross compiling. You
+### usually does not need to set these variables. Only set these if you really
+### know what you are doing.
+
+### The `configure' script will issue a warning when a default value is used.
+### When a variable has been set, no warning will be issued.
-##
## erl_xcomp_bigendian - yes|no
-## If yes, the target system must be big endian. If no, little endian. This
-## can often be automatically detected, but not always. If not automatically
-## detected, configure will fail unless this variable is set. No default value
-## is used, i.e., configure will try to figure this out automatically.
-erl_xcomp_bigendian=
-
-##
-## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to yes)
-## If yes, clock_gettime(CLOCK_MONOTONIC, _) on the target system must work.
-## This variable is recommended to be set to no on Linux systems with kernel
-## versions less than 2.6.
-##
-erl_xcomp_linux_clock_gettime_correction=yes
-
-##
-## erl_xcomp_linux_nptl - yes|no (defaults to yes on Linux; otherwise, no)
-## If yes, the target system must have NPTL (Native POSIX Thread Library).
-## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
-## versions typically less than 2.6).
-##
-erl_xcomp_linux_nptl=yes
-
-##
-## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to yes)
-## If yes, the SIGUSR1 and SIGUSR2 must be usable by the ERTS. Old
-## LinuxThreads thread libraries (Linux kernel versions less than 2.2) used
-## these signals and made them unusable by the ERTS.
-##
-erl_xcomp_linux_usable_sigusrx=yes
-
-##
-## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to yes)
-## If yes, sigaltstack() must be usable on the target system. sigaltstack()
-## on Linux kernel versions less than 2.4 are broken.
-##
-erl_xcomp_linux_usable_sigaltstack=yes
-
-##
-## erl_xcomp_poll - yes|no (defaults to no on Darwin/MacOSX; otherwise, yes)
-## If yes, the target system must have a working poll() implementation that
-## also can handle devices. If no, select() will be used instead of poll().
-##
-erl_xcomp_poll=yes
-
-##
-## erl_xcomp_kqueue - yes|no (defaults to no)
-## If yes, the target system must have a working kqueue() implementation that
-## returns a file descriptor which can be used by poll() and/or select().
-## If no and the target system has not got epoll() or /dev/poll, the
-## kernel-poll feature will be disabled.
-##
-erl_xcomp_kqueue=
-
-##
-## erl_xcomp_putenv_copy - yes|no (defaults to no)
-## If yes, the target system must have a putenv() implementation that stores a
-## copy of the key/value pair.
-##
-erl_xcomp_putenv_copy=
-
-##
-## erl_xcomp_reliable_fpe - yes|no (defaults to no)
-## If yes, the target system must have reliable floating point exceptions.
-##
-erl_xcomp_reliable_fpe=
-
-##
-## erl_xcomp_getaddrinfo - yes|no (defaults to no)
-## If yes, the target system must have a working getaddrinfo() implementation
-## that can handle both IPv4 and IPv6.
-##
+## If `yes', the target system must be big endian. If `no', little endian.
+## This can often be automatically detected, but not always. If not
+## automatically detected, `configure' will fail unless this variable is
+## set. No default value is used, i.e., `configure' will try to figure
+## this out automatically.
+#erl_xcomp_bigendian=
+
+## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to `yes' on
+## Linux; otherwise, `no')
+## If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on the target system must
+## work. This variable is recommended to be set to `no' on Linux systems
+## with kernel versions less than 2.6.
+#erl_xcomp_linux_clock_gettime_correction=
+
+## erl_xcomp_linux_nptl - yes|no (defaults to `yes' on Linux; otherwise, `no')
+## If `yes', the target system must have NPTL (Native POSIX Thread Library).
+## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
+## versions typically less than 2.6).
+#erl_xcomp_linux_nptl=
+
+## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to `yes')
+## If `yes', the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS.
+## Old LinuxThreads thread libraries (Linux kernel versions less than 2.2)
+## used these signals and made them unusable by the ERTS.
+#erl_xcomp_linux_usable_sigusrx=
+
+## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to `yes' on Linux;
+## otherwise, `no')
+## If `yes', `sigaltstack()' must be usable on the target system.
+## `sigaltstack()' on Linux kernel versions less than 2.4 are broken.
+#erl_xcomp_linux_usable_sigaltstack=
+
+## erl_xcomp_poll - yes|no (defaults to `no' on Darwin/MacOSX; otherwise, `yes')
+## If `yes', the target system must have a working `poll()' implementation
+## that also can handle devices. If `no', `select()' will be used instead of
+## `poll()'.
+#erl_xcomp_poll=
+
+## erl_xcomp_kqueue - yes|no (defaults to `no')
+## If `yes', the target system must have a working `kqueue()' implementation
+## that returns a file descriptor which can be used by `poll()' and/or
+## `select()'. If `no' and the target system has not got `epoll()' or
+## `/dev/poll', the kernel-poll feature will be disabled.
+#erl_xcomp_kqueue=
+
+## erl_xcomp_putenv_copy - yes|no (defaults to `no')
+## If `yes', the target system must have a `putenv()' implementation that
+## stores a copy of the key/value pair.
+#erl_xcomp_putenv_copy=
+
+## erl_xcomp_reliable_fpe - yes|no (defaults to `no')
+## If `yes', the target system must have reliable floating point exceptions.
+#erl_xcomp_reliable_fpe=
+
+## erl_xcomp_getaddrinfo - yes|no (defaults to `no')
+## If `yes', the target system must have a working `getaddrinfo()'
+## implementation that can handle both IPv4 and IPv6.
erl_xcomp_getaddrinfo=yes
-##
-## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to no)
-## If yes, the target system must have a working gethrvtime() implementation
-## and is used with procfs ioctl().
-##
-erl_xcomp_gethrvtime_procfs_ioctl=
-
-##
-## erl_xcomp_clock_gettime - yes|no (defaults to no)
-## If yes, the target system must have a working clock_gettime()
-## implementation that can be used for retrieving process CPU time.
-##
-erl_xcomp_clock_gettime=
-
-##
-## erl_xcomp_after_morecore_hook - yes|no (defaults to no)
-## If yes, the target system must have a working __after_morecore_hook that
-## can be used for tracking used malloc() implementations core memory usage.
-##
-erl_xcomp_after_morecore_hook=
-
-##
-## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to no)
-## If yes, the target system must have a working dlsym(RTLD_NEXT, <S>)
-## implementation that can be used on 'brk' and 'sbrk' symbols used by the
-## malloc() implementation in use, and by this track the malloc()
-## implementations core memory usage.
-##
-erl_xcomp_dlsym_brk_wrappers=
-
-### ----------------------------------------------------------------------------
+## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to `no')
+## If `yes', the target system must have a working `gethrvtime()'
+## implementation and is used with procfs `ioctl()'.
+#erl_xcomp_gethrvtime_procfs_ioctl=
+
+## erl_xcomp_clock_gettime_cpu_time - yes|no (defaults to `no')
+## If `yes', the target system must have a working `clock_gettime()'
+## implementation that can be used for retrieving process CPU time.
+#erl_xcomp_clock_gettime_cpu_time=
+
+## erl_xcomp_after_morecore_hook - yes|no (defaults to `no')
+## If `yes', the target system must have a working `__after_morecore_hook'
+## that can be used for tracking used `malloc()' implementations core memory
+## usage.
+#erl_xcomp_after_morecore_hook=
+
+## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to `no')
+## If `yes', the target system must have a working `dlsym(RTLD_NEXT, <S>)'
+## implementation that can be used on `brk' and `sbrk' symbols used by the
+## `malloc()' implementation in use, and by this track the `malloc()'
+## implementations core memory usage.
+#erl_xcomp_dlsym_brk_wrappers=
+
+#### --------------------------------------------------------------------------
diff --git a/xcomp/erl-xcomp-vars.sh b/xcomp/erl-xcomp-vars.sh
new file mode 100644
index 0000000000..d9972eb3db
--- /dev/null
+++ b/xcomp/erl-xcomp-vars.sh
@@ -0,0 +1,29 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2010. 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%
+#
+
+#
+# erl_xcomp_vars - Cross configuration variables currently reqognized by
+# `configure' scripts in OTP.
+#
+# NOTE:
+# When updating, also update $ERL_TOP/xcomp/{README,erl-xcomp.conf.template},
+# and precious variables in $ERL_TOP/erts/aclocal.m4.
+#
+
+erl_xcomp_vars="erl_xcomp_sysroot erl_xcomp_isysroot erl_xcomp_bigendian erl_xcomp_linux_clock_gettime_correction erl_xcomp_linux_nptl erl_xcomp_linux_usable_sigusrx erl_xcomp_linux_usable_sigaltstack erl_xcomp_poll erl_xcomp_kqueue erl_xcomp_putenv_copy erl_xcomp_reliable_fpe erl_xcomp_getaddrinfo erl_xcomp_gethrvtime_procfs_ioctl erl_xcomp_clock_gettime_cpu_time erl_xcomp_after_morecore_hook erl_xcomp_dlsym_brk_wrappers"
diff --git a/xcomp/erl-xcomp-vxworks_ppc32.conf b/xcomp/erl-xcomp-vxworks_ppc32.conf
index 19a9327239..fbd23c2fb9 100644
--- a/xcomp/erl-xcomp-vxworks_ppc32.conf
+++ b/xcomp/erl-xcomp-vxworks_ppc32.conf
@@ -1,199 +1,236 @@
-###
-### %CopyrightBegin%
-###
-### Copyright Ericsson AB 2009. 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%
-###
-### File: erl-xcomp-vxworks_ppc32.conf
-### Author: Rickard Green/Patrik Nyblom
-###
-
-### ----------------------------------------------------------------------------
-### When cross compiling Erlang/OTP, copy this file and set the variables
-### needed below. Then pass the path to the copy of this file as an argument
-### to "eval `otp_build env_cross <absolute path to erl-xcomp.conf file>`".
-### ----------------------------------------------------------------------------
-
-### ----------------------------------------------------------------------------
-### Variables in the following section *have* to be set.
-###
-
-##
-## Target system. The value will be passed as '--host' argument to the configure
-## script. It does not have to be a full CPU-VENDOR-OS tripplet, but can be. The
-## full CPU-VENDOR-OS tripplet will be created by:
-## $ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host
-##
+#### -*-shell-script-*-
+####
+#### %CopyrightBegin%
+####
+#### Copyright Ericsson AB 2009-2010. 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%
+####
+#### File: erl-xcomp-vxworks_ppc32.conf
+#### Author: Rickard Green/Patrik Nyblom
+####
+#### --------------------------------------------------------------------------
+#### When cross compiling Erlang/OTP using `otp_build', copy this file and set
+#### the variables needed below. Then pass the path to the copy of this file as
+#### an argument to `otp_build' in the configure stage:
+#### `otp_build configure --xcomp-conf=<FILE>'
+#### --------------------------------------------------------------------------
+
+### Note that you cannot define arbitrary variables in a cross compilation
+### configuration file. Only the ones listed below will be guaranteed to be
+### visible throughout the whole execution of all `configure' scripts. Other
+### variables needs to be defined as arguments to `configure' or exported in
+### the environment.
+
+### ---- `otp_build' only variables -------------------------------------------
+
+### Variables in this section are only used, when configuring Erlang/OTP for
+### cross compilation using `$ERL_TOP/otp_build configure'.
+
+### NOTE! These variables currently have *no* effect if you configure using the
+### `configure' script directly.
+
+## erl_xcomp_build - Build system.
+## This value will be passed as `--build=$erl_xcomp_build' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'
+## If `erl_xcomp_build=guess', the build system will be guessed using:
+## `$ERL_TOP/erts/autoconf/config.guess'.
+erl_xcomp_build=guess
+
+## erl_xcomp_host - Cross host system.
+## This value will be passed as `--host=$erl_xcomp_host' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'
erl_xcomp_host=powerpc-wrs-vxworks
-### ----------------------------------------------------------------------------
-### ----------------------------------------------------------------------------
-### To override the configure flags for a special target system, You
-### can set this variable which overrides configure parameters on the
-### command line and instead uses the specified options. The variable
-### leaves the build-host system untouched.
-### ----------------------------------------------------------------------------
-erl_xcomp_configure_flags="--without-termcap"
+## erl_xcomp_configure_flags - Extra configure flags.
+## Extra flags to pass to the `configure' script.
+erl_xcomp_configure_flags="--disable-threads --without-termcap"
-###-----------------------------------------------------------------------------
-### You can specify a specific CC or LD for the build target (the cross
-### compiler) here along with magic CFLAGS and/or LDFLAGS if needed
-### ar and ranlib might also be specified if needed.
-###-----------------------------------------------------------------------------
+### ---- Cross compiler and other tools to use --------------------------------
-erl_xcomp_cc="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ccppc"
+### If the cross compilation tools are prefixed by `<HOST>-' you probably do
+### not need to set these variables (where `<HOST>' is what has been passed as
+### `--host=<HOST>' argument to `configure').
-erl_xcomp_ld="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ldppc"
+## CC - C compiler.
+CC="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ccppc"
-erl_xcomp_cflags="-DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -DWANT_NONBLOCKING -DHAVE_SENS -DHAVE_MEMMOVE -DVXWORKS -I$WIND_BASE/vxworks-6.3/target/h -I$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/lib/gcc/powerpc-wrs-vxworks/3.4.4/include -I$WIND_BASE/vxworks-6.3/target/h/wrn/coreip -I$WIND_BASE/vxworks-6.3/target/h -mstrict-align -fvolatile -fno-builtin -mlongcall"
+## CFLAGS - C compiler flags.
+CFLAGS="-DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -DWANT_NONBLOCKING -DHAVE_SENS -DHAVE_MEMMOVE -DVXWORKS -I$WIND_BASE/vxworks-6.3/target/h -I$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/lib/gcc/powerpc-wrs-vxworks/3.4.4/include -I$WIND_BASE/vxworks-6.3/target/h/wrn/coreip -I$WIND_BASE/vxworks-6.3/target/h -mstrict-align -fvolatile -fno-builtin -mlongcall"
-erl_xcomp_cpp="$erl_xcomp_cc $erl_xcomp_cflags -E"
+## STATIC_CFLAGS - Static C compiler flags.
+#STATIC_CFLAGS=
-erl_xcomp_ldflags="-mlongcall"
+## CFLAG_RUNTIME_LIBRARY_PATH - C compiler runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time. Note that this is actually a linker flag, but it
+## needs to be passed via the compiler.
+#CFLAG_RUNTIME_LIBRARY_PATH=
-erl_xcomp_ranlib="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ranlibppc"
+## CPP - C pre-processor.
+CPP="$CC $CFLAGS -E"
-erl_xcomp_ar="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/arppc"
+## CPPFLAGS - C pre-processor flags.
+#CPPFLAGS=
-###-----------------------------------------------------------------------------
-### The ded_ls and ded_ldflags variables control linking of dynamically loaded
-### erlang drivers. On i.e. Linux these are set to
-### $(CC) and "-shared" respectively, but other OS'es might need other
-### programs and flags to build a dynamic library.
-### erl_xcomp_ded_ld_runtime_library_path is the flag to set a
-### specific runtime library path for the shared library at link time,
-### usually this should be left empty.
-###-----------------------------------------------------------------------------
+## CXX - C++ compiler.
+#CXX=
-erl_xcomp_ded_ld=
+## CXXFLAGS - C++ compiler flags.
+#CXXFLAGS=
-erl_xcomp_ded_ldflags=
+## LD - Linker
+LD="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ldppc"
-erl_xcomp_ded_ld_runtime_library_path=
+## LDFLAGS - Linker flags.
+LDFLAGS="-mlongcall"
-###
-### Optional feature, or bug tests
-###
-### These tests cannot (always) be done automatically when cross compiling.
-### You usually does not need to set these variables. Only set these if you
-### really know what you are doing.
-###
+### -- Dynamic Erlang Driver linker flags. --
+
+### NOTE! Either define all or non of the DED_LD* variables.
+
+## DED_LD - Linker.
+#DED_LD=
+
+## DED_LDFLAGS - Linker flags.
+#DED_LDFLAGS=
+
+## DED_LD_FLAG_RUNTIME_LIBRARY_PATH - Linker runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time.
+#DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
+
+### -- Other tools --
+
+## RANLIB - ranlib
+RANLIB="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ranlibppc"
+
+## AR - ar
+AR="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/arppc"
+
+### ---- Cross System Root Locations ------------------------------------------
+
+## erl_xcomp_sysroot - Absolute cross system root path.
+## The absolute path to the system root of the cross compilation
+## environment. Currently, the `crypto', `odbc', `ssh' and `ssl'
+## applications need the system root. These applications will be skipped
+## if the system root has not been set. The system root might be needed
+## for other things too. If this is the case and the system root has not
+## been set, `configure' will fail and request you to set it.
+#erl_xcomp_sysroot=
+
+## erl_xcomp_isysroot - Absolute cross include system root path.
+## The absolute path to the system root for includes of the cross
+## compilation environment. If not set, this value defaults to
+## `$erl_xcomp_sysroot', i.e., only set this value if the include system
+## root path is not the same as the system root path.
+#erl_xcomp_isysroot=
+
+### ---- Optional feature, or bug tests ---------------------------------------
+
+### These tests cannot (always) be done automatically when cross compiling. You
+### usually does not need to set these variables. Only set these if you really
+### know what you are doing.
+
+### The `configure' script will issue a warning when a default value is used.
+### When a variable has been set, no warning will be issued.
-##
## erl_xcomp_bigendian - yes|no
-## If yes, the target system must be big endian. If no, little endian. This
-## can often be automatically detected, but not always. If not automatically
-## detected, configure will fail unless this variable is set. No default value
-## is used, i.e., configure will try to figure this out automatically.
+## If `yes', the target system must be big endian. If `no', little endian.
+## This can often be automatically detected, but not always. If not
+## automatically detected, `configure' will fail unless this variable is
+## set. No default value is used, i.e., `configure' will try to figure
+## this out automatically.
erl_xcomp_bigendian=yes
-##
-## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to yes)
-## If yes, clock_gettime(CLOCK_MONOTONIC, _) on the target system must work.
-## This variable is recommended to be set to no on Linux systems with kernel
-## versions less than 2.6.
-##
-erl_xcomp_linux_clock_gettime_correction=
-
-##
-## erl_xcomp_linux_nptl - yes|no (defaults to yes on Linux; otherwise, no)
-## If yes, the target system must have NPTL (Native POSIX Thread Library).
-## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
-## versions typically less than 2.6).
-##
-erl_xcomp_linux_nptl=
-
-##
-## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to yes)
-## If yes, the SIGUSR1 and SIGUSR2 must be usable by the ERTS. Old
-## LinuxThreads thread libraries (Linux kernel versions less than 2.2) used
-## these signals and made them unusable by the ERTS.
-##
-erl_xcomp_linux_usable_sigusrx=
-
-##
-## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to yes)
-## If yes, sigaltstack() must be usable on the target system. sigaltstack()
-## on Linux kernel versions less than 2.4 are broken.
-##
-erl_xcomp_linux_usable_sigaltstack=
-
-##
-## erl_xcomp_poll - yes|no (defaults to no on Darwin/MacOSX; otherwise, yes)
-## If yes, the target system must have a working poll() implementation that
-## also can handle devices. If no, select() will be used instead of poll().
-##
-erl_xcomp_poll=
-
-##
-## erl_xcomp_kqueue - yes|no (defaults to no)
-## If yes, the target system must have a working kqueue() implementation that
-## returns a file descriptor which can be used by poll() and/or select().
-## If no and the target system has not got epoll() or /dev/poll, the
-## kernel-poll feature will be disabled.
-##
-erl_xcomp_kqueue=
-
-##
-## erl_xcomp_putenv_copy - yes|no (defaults to no)
-## If yes, the target system must have a putenv() implementation that stores a
-## copy of the key/value pair.
-##
-erl_xcomp_putenv_copy=
-
-##
-## erl_xcomp_reliable_fpe - yes|no (defaults to no)
-## If yes, the target system must have reliable floating point exceptions.
-##
-erl_xcomp_reliable_fpe=
-
-##
-## erl_xcomp_getaddrinfo - yes|no (defaults to no)
-## If yes, the target system must have a working getaddrinfo() implementation
-## that can handle both IPv4 and IPv6.
-##
-erl_xcomp_getaddrinfo=
-
-##
-## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to no)
-## If yes, the target system must have a working gethrvtime() implementation
-## and is used with procfs ioctl().
-##
-erl_xcomp_gethrvtime_procfs_ioctl=
-
-##
-## erl_xcomp_clock_gettime - yes|no (defaults to no)
-## If yes, the target system must have a working clock_gettime()
-## implementation that can be used for retrieving process CPU time.
-##
-erl_xcomp_clock_gettime=
-
-##
-## erl_xcomp_after_morecore_hook - yes|no (defaults to no)
-## If yes, the target system must have a working __after_morecore_hook that
-## can be used for tracking used malloc() implementations core memory usage.
-##
-erl_xcomp_after_morecore_hook=
-
-##
-## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to no)
-## If yes, the target system must have a working dlsym(RTLD_NEXT, <S>)
-## implementation that can be used on 'brk' and 'sbrk' symbols used by the
-## malloc() implementation in use, and by this track the malloc()
-## implementations core memory usage.
-##
-erl_xcomp_dlsym_brk_wrappers=
-
-### ----------------------------------------------------------------------------
+## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to `yes' on
+## Linux; otherwise, `no')
+## If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on the target system must
+## work. This variable is recommended to be set to `no' on Linux systems
+## with kernel versions less than 2.6.
+#erl_xcomp_linux_clock_gettime_correction=
+
+## erl_xcomp_linux_nptl - yes|no (defaults to `yes' on Linux; otherwise, `no')
+## If `yes', the target system must have NPTL (Native POSIX Thread Library).
+## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
+## versions typically less than 2.6).
+#erl_xcomp_linux_nptl=
+
+## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to `yes')
+## If `yes', the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS.
+## Old LinuxThreads thread libraries (Linux kernel versions less than 2.2)
+## used these signals and made them unusable by the ERTS.
+#erl_xcomp_linux_usable_sigusrx=
+
+## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to `yes' on Linux;
+## otherwise, `no')
+## If `yes', `sigaltstack()' must be usable on the target system.
+## `sigaltstack()' on Linux kernel versions less than 2.4 are broken.
+#erl_xcomp_linux_usable_sigaltstack=
+
+## erl_xcomp_poll - yes|no (defaults to `no' on Darwin/MacOSX; otherwise, `yes')
+## If `yes', the target system must have a working `poll()' implementation
+## that also can handle devices. If `no', `select()' will be used instead of
+## `poll()'.
+#erl_xcomp_poll=
+
+## erl_xcomp_kqueue - yes|no (defaults to `no')
+## If `yes', the target system must have a working `kqueue()' implementation
+## that returns a file descriptor which can be used by `poll()' and/or
+## `select()'. If `no' and the target system has not got `epoll()' or
+## `/dev/poll', the kernel-poll feature will be disabled.
+#erl_xcomp_kqueue=
+
+## erl_xcomp_putenv_copy - yes|no (defaults to `no')
+## If `yes', the target system must have a `putenv()' implementation that
+## stores a copy of the key/value pair.
+#erl_xcomp_putenv_copy=
+
+## erl_xcomp_reliable_fpe - yes|no (defaults to `no')
+## If `yes', the target system must have reliable floating point exceptions.
+#erl_xcomp_reliable_fpe=
+
+## erl_xcomp_getaddrinfo - yes|no (defaults to `no')
+## If `yes', the target system must have a working `getaddrinfo()'
+## implementation that can handle both IPv4 and IPv6.
+#erl_xcomp_getaddrinfo=
+
+## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to `no')
+## If `yes', the target system must have a working `gethrvtime()'
+## implementation and is used with procfs `ioctl()'.
+#erl_xcomp_gethrvtime_procfs_ioctl=
+
+## erl_xcomp_clock_gettime_cpu_time - yes|no (defaults to `no')
+## If `yes', the target system must have a working `clock_gettime()'
+## implementation that can be used for retrieving process CPU time.
+#erl_xcomp_clock_gettime_cpu_time=
+
+## erl_xcomp_after_morecore_hook - yes|no (defaults to `no')
+## If `yes', the target system must have a working `__after_morecore_hook'
+## that can be used for tracking used `malloc()' implementations core memory
+## usage.
+#erl_xcomp_after_morecore_hook=
+
+## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to `no')
+## If `yes', the target system must have a working `dlsym(RTLD_NEXT, <S>)'
+## implementation that can be used on `brk' and `sbrk' symbols used by the
+## `malloc()' implementation in use, and by this track the `malloc()'
+## implementations core memory usage.
+#erl_xcomp_dlsym_brk_wrappers=
+
+#### --------------------------------------------------------------------------
diff --git a/xcomp/erl-xcomp-x86_64-saf-linux-gnu.conf b/xcomp/erl-xcomp-x86_64-saf-linux-gnu.conf
new file mode 100644
index 0000000000..b6730cff0a
--- /dev/null
+++ b/xcomp/erl-xcomp-x86_64-saf-linux-gnu.conf
@@ -0,0 +1,236 @@
+#### -*-shell-script-*-
+####
+#### %CopyrightBegin%
+####
+#### Copyright Ericsson AB 2010. 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%
+####
+#### File: erl-xcomp-x86_64-saf-linux-gnu.conf
+#### Author: Rickard Green
+####
+#### --------------------------------------------------------------------------
+#### When cross compiling Erlang/OTP using `otp_build', copy this file and set
+#### the variables needed below. Then pass the path to the copy of this file as
+#### an argument to `otp_build' in the configure stage:
+#### `otp_build configure --xcomp-conf=<FILE>'
+#### --------------------------------------------------------------------------
+
+### Note that you cannot define arbitrary variables in a cross compilation
+### configuration file. Only the ones listed below will be guaranteed to be
+### visible throughout the whole execution of all `configure' scripts. Other
+### variables needs to be defined as arguments to `configure' or exported in
+### the environment.
+
+### ---- `otp_build' only variables -------------------------------------------
+
+### Variables in this section are only used, when configuring Erlang/OTP for
+### cross compilation using `$ERL_TOP/otp_build configure'.
+
+### NOTE! These variables currently have *no* effect if you configure using the
+### `configure' script directly.
+
+## erl_xcomp_build - Build system.
+## This value will be passed as `--build=$erl_xcomp_build' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'
+## If `erl_xcomp_build=guess', the build system will be guessed using:
+## `$ERL_TOP/erts/autoconf/config.guess'.
+erl_xcomp_build=guess
+
+## erl_xcomp_host - Cross host system.
+## This value will be passed as `--host=$erl_xcomp_host' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'
+erl_xcomp_host=x86_64-saf-linux-gnu
+
+## erl_xcomp_configure_flags - Extra configure flags.
+## Extra flags to pass to the `configure' script.
+#erl_xcomp_configure_flags=
+
+### ---- Cross compiler and other tools to use --------------------------------
+
+### If the cross compilation tools are prefixed by `<HOST>-' you probably do
+### not need to set these variables (where `<HOST>' is what has been passed as
+### `--host=<HOST>' argument to `configure').
+
+## CC - C compiler.
+CC=x86_64-saf-gcc
+
+## CFLAGS - C compiler flags.
+#CFLAGS=
+
+## STATIC_CFLAGS - Static C compiler flags.
+#STATIC_CFLAGS=
+
+## CFLAG_RUNTIME_LIBRARY_PATH - C compiler runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time. Note that this is actually a linker flag, but it
+## needs to be passed via the compiler.
+#CFLAG_RUNTIME_LIBRARY_PATH=
+
+## CPP - C pre-processor.
+#CPP=
+
+## CPPFLAGS - C pre-processor flags.
+#CPPFLAGS=
+
+## CXX - C++ compiler.
+CXX=x86_64-saf-g++
+
+## CXXFLAGS - C++ compiler flags.
+#CXXFLAGS=
+
+## LD - Linker
+LD=x86_64-saf-ld
+
+## LDFLAGS - Linker flags.
+#LDFLAGS=
+
+### -- Dynamic Erlang Driver linker flags. --
+
+### NOTE! Either define all or non of the DED_LD* variables.
+
+## DED_LD - Linker.
+#DED_LD=
+
+## DED_LDFLAGS - Linker flags.
+#DED_LDFLAGS=
+
+## DED_LD_FLAG_RUNTIME_LIBRARY_PATH - Linker runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time.
+#DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
+
+### -- Other tools --
+
+## RANLIB - ranlib
+RANLIB=x86_64-saf-ranlib
+
+## AR - ar
+AR=x86_64-saf-ar
+
+### ---- Cross System Root Locations ------------------------------------------
+
+## erl_xcomp_sysroot - Absolute cross system root path.
+## The absolute path to the system root of the cross compilation
+## environment. Currently, the `crypto', `odbc', `ssh' and `ssl'
+## applications need the system root. These applications will be skipped
+## if the system root has not been set. The system root might be needed
+## for other things too. If this is the case and the system root has not
+## been set, `configure' will fail and request you to set it.
+erl_xcomp_sysroot="$SAF_SYSROOT_X86_64"
+
+## erl_xcomp_isysroot - Absolute cross include system root path.
+## The absolute path to the system root for includes of the cross
+## compilation environment. If not set, this value defaults to
+## `$erl_xcomp_sysroot', i.e., only set this value if the include system
+## root path is not the same as the system root path.
+#erl_xcomp_isysroot=
+
+### ---- Optional feature, or bug tests ---------------------------------------
+
+### These tests cannot (always) be done automatically when cross compiling. You
+### usually does not need to set these variables. Only set these if you really
+### know what you are doing.
+
+### The `configure' script will issue a warning when a default value is used.
+### When a variable has been set, no warning will be issued.
+
+## erl_xcomp_bigendian - yes|no
+## If `yes', the target system must be big endian. If `no', little endian.
+## This can often be automatically detected, but not always. If not
+## automatically detected, `configure' will fail unless this variable is
+## set. No default value is used, i.e., `configure' will try to figure
+## this out automatically.
+#erl_xcomp_bigendian=
+
+## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to `yes' on
+## Linux; otherwise, `no')
+## If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on the target system must
+## work. This variable is recommended to be set to `no' on Linux systems
+## with kernel versions less than 2.6.
+#erl_xcomp_linux_clock_gettime_correction=
+
+## erl_xcomp_linux_nptl - yes|no (defaults to `yes' on Linux; otherwise, `no')
+## If `yes', the target system must have NPTL (Native POSIX Thread Library).
+## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
+## versions typically less than 2.6).
+#erl_xcomp_linux_nptl=
+
+## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to `yes')
+## If `yes', the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS.
+## Old LinuxThreads thread libraries (Linux kernel versions less than 2.2)
+## used these signals and made them unusable by the ERTS.
+#erl_xcomp_linux_usable_sigusrx=
+
+## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to `yes' on Linux;
+## otherwise, `no')
+## If `yes', `sigaltstack()' must be usable on the target system.
+## `sigaltstack()' on Linux kernel versions less than 2.4 are broken.
+#erl_xcomp_linux_usable_sigaltstack=
+
+## erl_xcomp_poll - yes|no (defaults to `no' on Darwin/MacOSX; otherwise, `yes')
+## If `yes', the target system must have a working `poll()' implementation
+## that also can handle devices. If `no', `select()' will be used instead of
+## `poll()'.
+#erl_xcomp_poll=
+
+## erl_xcomp_kqueue - yes|no (defaults to `no')
+## If `yes', the target system must have a working `kqueue()' implementation
+## that returns a file descriptor which can be used by `poll()' and/or
+## `select()'. If `no' and the target system has not got `epoll()' or
+## `/dev/poll', the kernel-poll feature will be disabled.
+#erl_xcomp_kqueue=
+
+## erl_xcomp_putenv_copy - yes|no (defaults to `no')
+## If `yes', the target system must have a `putenv()' implementation that
+## stores a copy of the key/value pair.
+#erl_xcomp_putenv_copy=
+
+## erl_xcomp_reliable_fpe - yes|no (defaults to `no')
+## If `yes', the target system must have reliable floating point exceptions.
+#erl_xcomp_reliable_fpe=
+
+## erl_xcomp_getaddrinfo - yes|no (defaults to `no')
+## If `yes', the target system must have a working `getaddrinfo()'
+## implementation that can handle both IPv4 and IPv6.
+erl_xcomp_getaddrinfo=yes
+
+## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to `no')
+## If `yes', the target system must have a working `gethrvtime()'
+## implementation and is used with procfs `ioctl()'.
+#erl_xcomp_gethrvtime_procfs_ioctl=
+
+## erl_xcomp_clock_gettime_cpu_time - yes|no (defaults to `no')
+## If `yes', the target system must have a working `clock_gettime()'
+## implementation that can be used for retrieving process CPU time.
+#erl_xcomp_clock_gettime_cpu_time=
+
+## erl_xcomp_after_morecore_hook - yes|no (defaults to `no')
+## If `yes', the target system must have a working `__after_morecore_hook'
+## that can be used for tracking used `malloc()' implementations core memory
+## usage.
+erl_xcomp_after_morecore_hook=yes
+
+## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to `no')
+## If `yes', the target system must have a working `dlsym(RTLD_NEXT, <S>)'
+## implementation that can be used on `brk' and `sbrk' symbols used by the
+## `malloc()' implementation in use, and by this track the `malloc()'
+## implementations core memory usage.
+#erl_xcomp_dlsym_brk_wrappers=
+
+#### --------------------------------------------------------------------------
diff --git a/xcomp/erl-xcomp.conf.template b/xcomp/erl-xcomp.conf.template
index bed365e754..9242318577 100644
--- a/xcomp/erl-xcomp.conf.template
+++ b/xcomp/erl-xcomp.conf.template
@@ -1,198 +1,236 @@
-###
-### %CopyrightBegin%
-###
-### Copyright Ericsson AB 2009. 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%
-###
-### File: erl-xcomp.conf
-### Author: Rickard Green
-###
-
-### ----------------------------------------------------------------------------
-### When cross compiling Erlang/OTP, copy this file and set the variables
-### needed below. Then pass the path to the copy of this file as an argument
-### to "eval `otp_build env_cross <absolute path to erl-xcomp.conf file>`".
-### ----------------------------------------------------------------------------
-
-### ----------------------------------------------------------------------------
-### Variables in the following section *have* to be set.
-###
-
-##
-## Target system. The value will be passed as '--host' argument to the configure
-## script. It does not have to be a full CPU-VENDOR-OS tripplet, but can be. The
-## full CPU-VENDOR-OS tripplet will be created by:
-## $ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host
-##
-erl_xcomp_host=
-
-### ----------------------------------------------------------------------------
-### To override the configure flags for a special target system, You
-### can set this variable which overrides configure parameters on the
-### command line and instead uses the specified options. The variable
-### leaves the build-host system untouched.
-### ----------------------------------------------------------------------------
-erl_xcomp_configure_flags=
-
-###-----------------------------------------------------------------------------
-### You can specify a specific CC or LD for the build target (the cross
-### compiler) here along with magic CFLAGS and/or LDFLAGS if needed
-### ar and ranlib might also be specified if needed.
-###-----------------------------------------------------------------------------
-
-erl_xcomp_cc=
-
-erl_xcomp_ld=
-
-erl_xcomp_cflags=
-
-erl_xcomp_cpp=
-
-erl_xcomp_ldflags=
-
-erl_xcomp_ranlib=
-
-erl_xcomp_ar=
-
-###-----------------------------------------------------------------------------
-### The ded_ls and ded_ldflags variables control linking of dynamically loaded
-### erlang drivers. On i.e. Linux these are set to
-### $(CC) and "-shared" respectively, but other OS'es might need other
-### programs and flags to build a dynamic library.
-### erl_xcomp_ded_ld_runtime_library_path is the flag to set a
-### specific runtime library path for the shared library at link time,
-### usually this should be left empty.
-###-----------------------------------------------------------------------------
-
-erl_xcomp_ded_ld=
-
-erl_xcomp_ded_ldflags=
-
-erl_xcomp_ded_ld_runtime_library_path=
-
-###
-### Optional feature, or bug tests
-###
-### These tests cannot (always) be done automatically when cross compiling.
-### You usually does not need to set these variables. Only set these if you
-### really know what you are doing.
-###
-
-##
+#### -*-shell-script-*-
+####
+#### %CopyrightBegin%
+####
+#### Copyright Ericsson AB 2009-2010. 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%
+####
+#### File: erl-xcomp.conf.template
+#### Author: Rickard Green
+####
+#### --------------------------------------------------------------------------
+#### When cross compiling Erlang/OTP using `otp_build', copy this file and set
+#### the variables needed below. Then pass the path to the copy of this file as
+#### an argument to `otp_build' in the configure stage:
+#### `otp_build configure --xcomp-conf=<FILE>'
+#### --------------------------------------------------------------------------
+
+### Note that you cannot define arbitrary variables in a cross compilation
+### configuration file. Only the ones listed below will be guaranteed to be
+### visible throughout the whole execution of all `configure' scripts. Other
+### variables needs to be defined as arguments to `configure' or exported in
+### the environment.
+
+### ---- `otp_build' only variables -------------------------------------------
+
+### Variables in this section are only used, when configuring Erlang/OTP for
+### cross compilation using `$ERL_TOP/otp_build configure'.
+
+### NOTE! These variables currently have *no* effect if you configure using the
+### `configure' script directly.
+
+## erl_xcomp_build - Build system.
+## This value will be passed as `--build=$erl_xcomp_build' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'
+## If `erl_xcomp_build=guess', the build system will be guessed using:
+## `$ERL_TOP/erts/autoconf/config.guess'.
+#erl_xcomp_build=
+
+## erl_xcomp_host - Cross host system.
+## This value will be passed as `--host=$erl_xcomp_host' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'
+#erl_xcomp_host=
+
+## erl_xcomp_configure_flags - Extra configure flags.
+## Extra flags to pass to the `configure' script.
+#erl_xcomp_configure_flags=
+
+### ---- Cross compiler and other tools to use --------------------------------
+
+### If the cross compilation tools are prefixed by `<HOST>-' you probably do
+### not need to set these variables (where `<HOST>' is what has been passed as
+### `--host=<HOST>' argument to `configure').
+
+## CC - C compiler.
+#CC=
+
+## CFLAGS - C compiler flags.
+#CFLAGS=
+
+## STATIC_CFLAGS - Static C compiler flags.
+#STATIC_CFLAGS=
+
+## CFLAG_RUNTIME_LIBRARY_PATH - C compiler runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time. Note that this is actually a linker flag, but it
+## needs to be passed via the compiler.
+#CFLAG_RUNTIME_LIBRARY_PATH=
+
+## CPP - C pre-processor.
+#CPP=
+
+## CPPFLAGS - C pre-processor flags.
+#CPPFLAGS=
+
+## CXX - C++ compiler.
+#CXX=
+
+## CXXFLAGS - C++ compiler flags.
+#CXXFLAGS=
+
+## LD - Linker
+#LD=
+
+## LDFLAGS - Linker flags.
+#LDFLAGS=
+
+### -- Dynamic Erlang Driver linker flags. --
+
+### NOTE! Either define all or non of the DED_LD* variables.
+
+## DED_LD - Linker.
+#DED_LD=
+
+## DED_LDFLAGS - Linker flags.
+#DED_LDFLAGS=
+
+## DED_LD_FLAG_RUNTIME_LIBRARY_PATH - Linker runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time.
+#DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
+
+### -- Other tools --
+
+## RANLIB - ranlib
+#RANLIB=
+
+## AR - ar
+#AR=
+
+### ---- Cross System Root Locations ------------------------------------------
+
+## erl_xcomp_sysroot - Absolute cross system root path.
+## The absolute path to the system root of the cross compilation
+## environment. Currently, the `crypto', `odbc', `ssh' and `ssl'
+## applications need the system root. These applications will be skipped
+## if the system root has not been set. The system root might be needed
+## for other things too. If this is the case and the system root has not
+## been set, `configure' will fail and request you to set it.
+#erl_xcomp_sysroot=
+
+## erl_xcomp_isysroot - Absolute cross include system root path.
+## The absolute path to the system root for includes of the cross
+## compilation environment. If not set, this value defaults to
+## `$erl_xcomp_sysroot', i.e., only set this value if the include system
+## root path is not the same as the system root path.
+#erl_xcomp_isysroot=
+
+### ---- Optional feature, or bug tests ---------------------------------------
+
+### These tests cannot (always) be done automatically when cross compiling. You
+### usually does not need to set these variables. Only set these if you really
+### know what you are doing.
+
+### The `configure' script will issue a warning when a default value is used.
+### When a variable has been set, no warning will be issued.
+
## erl_xcomp_bigendian - yes|no
-## If yes, the target system must be big endian. If no, little endian. This
-## can often be automatically detected, but not always. If not automatically
-## detected, configure will fail unless this variable is set. No default value
-## is used, i.e., configure will try to figure this out automatically.
-erl_xcomp_bigendian=
-
-##
-## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to yes)
-## If yes, clock_gettime(CLOCK_MONOTONIC, _) on the target system must work.
-## This variable is recommended to be set to no on Linux systems with kernel
-## versions less than 2.6.
-##
-erl_xcomp_linux_clock_gettime_correction=
-
-##
-## erl_xcomp_linux_nptl - yes|no (defaults to yes on Linux; otherwise, no)
-## If yes, the target system must have NPTL (Native POSIX Thread Library).
-## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
-## versions typically less than 2.6).
-##
-erl_xcomp_linux_nptl=
-
-##
-## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to yes)
-## If yes, the SIGUSR1 and SIGUSR2 must be usable by the ERTS. Old
-## LinuxThreads thread libraries (Linux kernel versions less than 2.2) used
-## these signals and made them unusable by the ERTS.
-##
-erl_xcomp_linux_usable_sigusrx=
-
-##
-## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to yes)
-## If yes, sigaltstack() must be usable on the target system. sigaltstack()
-## on Linux kernel versions less than 2.4 are broken.
-##
-erl_xcomp_linux_usable_sigaltstack=
-
-##
-## erl_xcomp_poll - yes|no (defaults to no on Darwin/MacOSX; otherwise, yes)
-## If yes, the target system must have a working poll() implementation that
-## also can handle devices. If no, select() will be used instead of poll().
-##
-erl_xcomp_poll=
-
-##
-## erl_xcomp_kqueue - yes|no (defaults to no)
-## If yes, the target system must have a working kqueue() implementation that
-## returns a file descriptor which can be used by poll() and/or select().
-## If no and the target system has not got epoll() or /dev/poll, the
-## kernel-poll feature will be disabled.
-##
-erl_xcomp_kqueue=
-
-##
-## erl_xcomp_putenv_copy - yes|no (defaults to no)
-## If yes, the target system must have a putenv() implementation that stores a
-## copy of the key/value pair.
-##
-erl_xcomp_putenv_copy=
-
-##
-## erl_xcomp_reliable_fpe - yes|no (defaults to no)
-## If yes, the target system must have reliable floating point exceptions.
-##
-erl_xcomp_reliable_fpe=
-
-##
-## erl_xcomp_getaddrinfo - yes|no (defaults to no)
-## If yes, the target system must have a working getaddrinfo() implementation
-## that can handle both IPv4 and IPv6.
-##
-erl_xcomp_getaddrinfo=
-
-##
-## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to no)
-## If yes, the target system must have a working gethrvtime() implementation
-## and is used with procfs ioctl().
-##
-erl_xcomp_gethrvtime_procfs_ioctl=
-
-##
-## erl_xcomp_clock_gettime - yes|no (defaults to no)
-## If yes, the target system must have a working clock_gettime()
-## implementation that can be used for retrieving process CPU time.
-##
-erl_xcomp_clock_gettime=
-
-##
-## erl_xcomp_after_morecore_hook - yes|no (defaults to no)
-## If yes, the target system must have a working __after_morecore_hook that
-## can be used for tracking used malloc() implementations core memory usage.
-##
-erl_xcomp_after_morecore_hook=
-
-##
-## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to no)
-## If yes, the target system must have a working dlsym(RTLD_NEXT, <S>)
-## implementation that can be used on 'brk' and 'sbrk' symbols used by the
-## malloc() implementation in use, and by this track the malloc()
-## implementations core memory usage.
-##
-erl_xcomp_dlsym_brk_wrappers=
-
-### ----------------------------------------------------------------------------
+## If `yes', the target system must be big endian. If `no', little endian.
+## This can often be automatically detected, but not always. If not
+## automatically detected, `configure' will fail unless this variable is
+## set. No default value is used, i.e., `configure' will try to figure
+## this out automatically.
+#erl_xcomp_bigendian=
+
+## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to `yes' on
+## Linux; otherwise, `no')
+## If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on the target system must
+## work. This variable is recommended to be set to `no' on Linux systems
+## with kernel versions less than 2.6.
+#erl_xcomp_linux_clock_gettime_correction=
+
+## erl_xcomp_linux_nptl - yes|no (defaults to `yes' on Linux; otherwise, `no')
+## If `yes', the target system must have NPTL (Native POSIX Thread Library).
+## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
+## versions typically less than 2.6).
+#erl_xcomp_linux_nptl=
+
+## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to `yes')
+## If `yes', the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS.
+## Old LinuxThreads thread libraries (Linux kernel versions less than 2.2)
+## used these signals and made them unusable by the ERTS.
+#erl_xcomp_linux_usable_sigusrx=
+
+## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to `yes' on Linux;
+## otherwise, `no')
+## If `yes', `sigaltstack()' must be usable on the target system.
+## `sigaltstack()' on Linux kernel versions less than 2.4 are broken.
+#erl_xcomp_linux_usable_sigaltstack=
+
+## erl_xcomp_poll - yes|no (defaults to `no' on Darwin/MacOSX; otherwise, `yes')
+## If `yes', the target system must have a working `poll()' implementation
+## that also can handle devices. If `no', `select()' will be used instead of
+## `poll()'.
+#erl_xcomp_poll=
+
+## erl_xcomp_kqueue - yes|no (defaults to `no')
+## If `yes', the target system must have a working `kqueue()' implementation
+## that returns a file descriptor which can be used by `poll()' and/or
+## `select()'. If `no' and the target system has not got `epoll()' or
+## `/dev/poll', the kernel-poll feature will be disabled.
+#erl_xcomp_kqueue=
+
+## erl_xcomp_putenv_copy - yes|no (defaults to `no')
+## If `yes', the target system must have a `putenv()' implementation that
+## stores a copy of the key/value pair.
+#erl_xcomp_putenv_copy=
+
+## erl_xcomp_reliable_fpe - yes|no (defaults to `no')
+## If `yes', the target system must have reliable floating point exceptions.
+#erl_xcomp_reliable_fpe=
+
+## erl_xcomp_getaddrinfo - yes|no (defaults to `no')
+## If `yes', the target system must have a working `getaddrinfo()'
+## implementation that can handle both IPv4 and IPv6.
+#erl_xcomp_getaddrinfo=
+
+## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to `no')
+## If `yes', the target system must have a working `gethrvtime()'
+## implementation and is used with procfs `ioctl()'.
+#erl_xcomp_gethrvtime_procfs_ioctl=
+
+## erl_xcomp_clock_gettime_cpu_time - yes|no (defaults to `no')
+## If `yes', the target system must have a working `clock_gettime()'
+## implementation that can be used for retrieving process CPU time.
+#erl_xcomp_clock_gettime_cpu_time=
+
+## erl_xcomp_after_morecore_hook - yes|no (defaults to `no')
+## If `yes', the target system must have a working `__after_morecore_hook'
+## that can be used for tracking used `malloc()' implementations core memory
+## usage.
+#erl_xcomp_after_morecore_hook=
+
+## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to `no')
+## If `yes', the target system must have a working `dlsym(RTLD_NEXT, <S>)'
+## implementation that can be used on `brk' and `sbrk' symbols used by the
+## `malloc()' implementation in use, and by this track the `malloc()'
+## implementations core memory usage.
+#erl_xcomp_dlsym_brk_wrappers=
+
+#### --------------------------------------------------------------------------