## -*-shell-script-*-
##
## %CopyrightBegin%
##
## Copyright Ericsson AB 2009-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%
##
## File: erl-xcomp-sfk-linux-ose5.conf
## Author: Petre Pircalabu
##
## -----------------------------------------------------------------------------
## 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.
## -- Variables needed for an OSE5 build ---------------------------------------
OSEROOT="/vobs/ose5/system"
HOST="linux"
GCCVERSION="4.4.3"
GCCROOT="${OSEROOT}/gcc_linux_powerpc_${GCCVERSION}"
OSEDEBUG="yes"
case ${GCCVERSION} in
4.4.3)
GCCTARGET="powerpc-eabi"
;;
4.6.3)
GCCTARGET="powerpc-ose-eabi"
;;
*)
echo "Error: Unknown GCCVERSION: ${GCCVERSION}"
exit 1
esac
if [ ${OSEDEBUG} != "yes" ];
then
OPT_LEVEL="-O2"
else
OPT_LEVEL=""
fi
## -- Variables for `otp_build' Only -------------------------------------------
## 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' - The build system used. 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 set to `guess',
# the build system will be guessed using
# `$ERL_TOP/erts/autoconf/config.guess'.
erl_xcomp_build=guess
# * `erl_xcomp_host' - Cross host/target system to build for. 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-ose"
# * `erl_xcomp_configure_flags' - Extra configure flags to pass to the
# `configure' script.
erl_xcomp_configure_flags="--disable-kernel-poll --disable-hipe --without-termcap --without-javac --disable-dynamic-ssl-lib --disable-shared-zlib --without-ssl --enable-static-nifs=$ERL_TOP/lib/asn1/priv/lib/powerpc-unknown-ose/asn1rt_nif.a"
## -- Cross Compiler and Other Tools -------------------------------------------
## 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').
## All variables in this section can also be used when native compiling.
# * `CC' - C compiler.
CC="$GCCROOT/bin/$GCCTARGET-gcc"
# * `CFLAGS' - C compiler flags.
CFLAGS="-msoft-float -g -fno-strict-aliasing -fno-builtin -fshort-wchar -Wall -Wno-unknown-pragmas -mpowerpc -nostdlib -I$GCCROOT/include/c++/$GCCVERSION -I$OSEROOT/include -I$OSEROOT/include/ose_spi -I$OSEROOT/include/gcc -MD -MP -D__OSE__ -DBIG_ENDIAN -DCF_CONF_SIZE=0x800 ${OPT_LEVEL}"
# * `STATIC_CFLAGS' - Static C compiler flags.
#STATIC_CFLAGS=
# * `CFLAG_RUNTIME_LIBRARY_PATH' - This flag should set runtime library
# search path for the shared libraries. Note that this actually is a
# linker flag, but it needs to be passed via the compiler.
#CFLAG_RUNTIME_LIBRARY_PATH=
# * `CPP' - C pre-processor.
CPP="$GCCROOT/bin/$GCCTARGET-cpp"
# * `CPPFLAGS' - C pre-processor flags.
CPPFLAGS="-msoft-float -g -fno-strict-aliasing -fno-builtin -fshort-wchar -Wall -Wno-unknown-pragmas -mpowerpc -nostdlib -I$GCCROOT/include/c++/$GCCVERSION -I$OSEROOT/include -I$OSEROOT/include/ose_spi -I$OSEROOT/include/gcc -MD -MP -D__OSE__ -DBIG_ENDIAN -DCF_CONF_SIZE=0x800 ${OPT_LEVEL}"
# * `CXX' - C++ compiler.
CXX="$GCCROOT/bin/$GCCTARGET-g++"
# * `CXXFLAGS' - C++ compiler flags.
CXXFLAGS="-msoft-float -g -fno-strict-aliasing -ansi -I$GCCROOT/include/c++/$GCCVERSION -I$OSEROOT/include -I$OSEROOT/include/gcc ${OPT_LEVEL}"
# * `LD' - Linker.
LD="${GCCROOT}/bin/${GCCTARGET}-ld"
# * `LDFLAGS' - Linker flags.
LDFLAGS="-Wl,-ecrt0_lm -Wl,-T,${ERL_TOP}/erts/emulator/sys/ose/gcc_${GCCVERSION}_lm_ppc.lcf"
# * `LIBS' - Libraries.
LIBS="${OSEROOT}/lib/powerpc/libcrt.a ${OSEROOT}/lib/powerpc/libm.a ${GCCROOT}/lib/gcc/${GCCTARGET}/${GCCVERSION}/nof/libgcc.a"
## -- *D*ynamic *E*rlang *D*river Linking --
## *NOTE*! Either set all or none of the `DED_LD*' variables.
# * `DED_LD' - Linker for Dynamically loaded Erlang Drivers.
DED_LD=
# * `DED_LDFLAGS' - Linker flags to use with `DED_LD'.
DED_LDFLAGS=
# * `DED_LD_FLAG_RUNTIME_LIBRARY_PATH' - This flag should set runtime library
# search path for shared libraries when linking with `DED_LD'.
DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
## -- Large File Support --
## *NOTE*! Either set all or none of the `LFS_*' variables.
# * `LFS_CFLAGS' - Large file support C compiler flags.
#LFS_CFLAGS=
# * `LFS_LDFLAGS' - Large file support linker flags.
#LFS_LDFLAGS=
# * `LFS_LIBS' - Large file support libraries.
#LFS_LIBS=
## -- Other Tools --
# * `RANLIB' - `ranlib' archive index tool.
RANLIB="$GCCROOT/bin/$GCCTARGET-ranlib"
# * `AR' - `ar' archiving tool.
AR="$GCCROOT/bin/$GCCTARGET-ar"
# * `STRIP' - `strip
STRIP="$GCCROOT/bin/$GCCTARGET-strip"
# * `GETCONF' - `getconf' system configuration inspection tool. `getconf' is
# currently used for finding out large file support flags to use, and
# on Linux systems for finding out if we have an NPTL thread library or
# not.
#GETCONF=
## -- Cross System Root Locations ----------------------------------------------
# * `erl_xcomp_sysroot' - 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="$OSEROOT"
# * `erl_xcomp_isysroot' - 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="$OSEROOT/include"
## -- Optional Feature, and Bug Tests ------------------------------------------
## These tests cannot (always) be done automatically when cross compiling. You
## usually do not need to set these variables. Only set these if you really
## know what you are doing.
## Note that some of these values will override results of tests performed
## by `configure', and some will not be used until `configure' is sure that
## it cannot figure the result out.
## 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_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.
# This is currently only used by unsupported features.
#erl_xcomp_after_morecore_hook=
# * `erl_xcomp_bigendian' - `yes|no'. No default. 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. Since no default
# value is used, `configure' will try to figure this out automatically.
#erl_xcomp_bigendian=
# * `erl_xcomp_double_middle` - `yes|no`. No default. If `yes`, the
# target system must have doubles in "middle-endian" format. If
# `no`, it has "regular" endianness. This can often be automatically
# detected, but not always. If not automatically detected,
# `configure` will fail unless this variable is set. Since no
# default value is used, `configure` will try to figure this out
# automatically.
#erl_xcomp_double_middle_endian
# * `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_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_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. This is currently only used by unsupported features.
#erl_xcomp_dlsym_brk_wrappers=
# * `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_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_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_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 typically less than
# 2.2) used these signals and made them unusable by the ERTS.
#erl_xcomp_linux_usable_sigusrx=
# * `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=no
# * `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_ose_ldflags_pass1` - Linker flags for the OSE module (pass 1)
erl_xcomp_ose_ldflags_pass1="-r --no-omagic"
# * `erl_xcomp_ose_ldflags_pass2` - Linker flags for the OSE module (pass 2)
erl_xcomp_ose_ldflags_pass2="-n --emit-relocs -ecrt0_lm --no-omagic"
# * `erl_xcomp_ose_OSEROOT` - OSE installation root directory
erl_xcomp_ose_OSEROOT="${OSEROOT}"
# * `erl_xcomp_ose_STRIP` - Strip utility shipped with the OSE distribution
erl_xcomp_ose_STRIP="${GCCROOT}/bin/${GCCTARGET}-strip"
# * `erl_xcomp_ose_LM_POST_LINK` - OSE postlink tool
erl_xcomp_ose_LM_POST_LINK="${OSEROOT}/bin/${HOST}/lm_post_link"
# * `erl_xcomp_ose_LM_SET_CONF` - Sets the configuration for an OSE load module
erl_xcomp_ose_LM_SET_CONF="${OSEROOT}/bin/${HOST}/lm_set_conf"
# * `erl_xcomp_ose_LM_ELF_SIZE` - OSE load module elf size tool
erl_xcomp_ose_LM_ELF_SIZE="${OSEROOT}/bin/${HOST}/lm_elf_size"
# * `erl_xcomp_ose_LM_LCF` - OSE load module linker configuration file
erl_xcomp_ose_LM_LCF="${ERL_TOP}/erts/emulator/sys/ose/gcc_${GCCVERSION}_lm_ppc.lcf"
# * `erl_xcomp_ose_LM_CONF` - OSE load module default configuration file
erl_xcomp_ose_LM_CONF="${ERL_TOP}/erts/emulator/sys/ose/default.lmconf"
# * `erl_xcomp_ose_CONFD` - OSE confd source file
erl_xcomp_ose_CONFD="${OSEROOT}/src/ose_confd.c"
# * `erl_xcomp_ose_CRT0_LM` - OSE crt0 lm source file
erl_xcomp_ose_CRT0_LM="${OSEROOT}/src/crt0_lm.c"
## -----------------------------------------------------------------------------