├── .gitignore ├── CreatePackage.sh ├── EmbErl.sh ├── MLO ├── README.md ├── README_IOS.md ├── arm-apple-darwin.patch ├── clean.sh ├── erl-xcomp-arm-darwin.conf.in ├── erl-xcomp-arm-linux.conf.in ├── keep ├── u-boot.bin └── uImage /.gitignore: -------------------------------------------------------------------------------- 1 | /otp_src_R14B01.tar.gz 2 | /otp_src_R14B01 3 | /erl-xcomp-*.conf 4 | /EmbErl_*.tgz 5 | -------------------------------------------------------------------------------- /CreatePackage.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #TODO add interface for usb0 4 | #TODO add embedded erlang logo 5 | 6 | #Small scripts to prepear a release tar, run with root priviledges 7 | 8 | RELEASE="harbor-seal" 9 | 10 | TAR=tar #Use gnutar for mac 11 | TAR_EXTRACT_BZIP="xjf" 12 | TAR_EXTRACT_GZ="xzf" 13 | TAR_COMPRESS_BZIP="cfj" 14 | TARGET_ERL_ROOT=/opt/local/erlang/ 15 | 16 | LIBC=$1 17 | 18 | generate_welcome_screen() 19 | { 20 | cat < /tmp/EmbErl/etc/issue 44 | 45 | pushd /tmp/EmbErl 46 | ${TAR} ${TAR_COMPRESS_BZIP} rootfs.tar.bz2 * 47 | popd 48 | 49 | mv /tmp/EmbErl/rootfs.tar.bz2 . 50 | 51 | rm -rf /tmp/EmbErl/* 52 | 53 | #cp ${LIBC}/deploy/${LIBC}/images/beagleboard/MLO-beagleboard /tmp/EmbErl/MLO 54 | #cp ${LIBC}/deploy/${LIBC}/images/beagleboard/uImage-beagleboard.bin /tmp/EmbErl/uImage 55 | #cp ${LIBC}/deploy/${LIBC}/images/beagleboard/u-boot-beagleboard.bin /tmp/EmbErl/u-boot.bin 56 | 57 | cp MLO /tmp/EmbErl/MLO 58 | cp uImage /tmp/EmbErl/uImage 59 | cp u-boot.bin /tmp/EmbErl/u-boot.bin 60 | mv rootfs.tar.bz2 /tmp/EmbErl/ 61 | 62 | pushd /tmp/EmbErl 63 | ${TAR} ${TAR_COMPRESS_BZIP} ${RELEASE}-${LIBC}.tar.bz2 * 64 | popd 65 | 66 | cp /tmp/EmbErl/${RELEASE}-${LIBC}.tar.bz2 . 67 | 68 | rm -rf /tmp/EmbErl/ 69 | -------------------------------------------------------------------------------- /EmbErl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PROJECT=EmbErl 4 | 5 | VERSION=R14B01 6 | OTP_SRC=otp_src_$VERSION 7 | OTP_SRC_TAR=${OTP_SRC}.tar.gz 8 | 9 | XCOMP_CONF=erl-xcomp-arm-darwin.conf 10 | XCOMP_CONF_PATH=xcomp/$XCOMP_CONF 11 | 12 | TARGET_ERL_ROOT=/usr/local/erlang 13 | 14 | TAR_NAME="EmbErl_" 15 | 16 | #standard configuration values 17 | STRIP_BIN=false 18 | STRIP_BEAM=false 19 | SLIM_COMPILE=false 20 | COMPRESS_COMPILE=false 21 | COMPRESS_APP=true 22 | 23 | #standard gcc opt levels [1,2,3,s] 24 | OPT_LEVEL=s 25 | HOST=arm-apple-darwin10 26 | 27 | #STRIP_CMD=${HOST}-strip 28 | STRIP_CMD="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/strip" 29 | 30 | #Arguments parsing 31 | while getopts ":scCoH:h" Option 32 | do 33 | case $Option in 34 | s ) #echo "Stripping beam and Slim compiles" 35 | STRIP_BEAM=true 36 | SLIM_COMPILE=true 37 | TAR_NAME=${TAR_NAME}s 38 | ;; 39 | S ) #echo "Stipping binaries" 40 | STRIP_BIN=true 41 | ;; 42 | c ) #echo "Compress compiling" 43 | COMPRESS_COMPILE=true 44 | TAR_NAME=${TAR_NAME}c 45 | ;; 46 | C ) #echo "Compressing Applications" 47 | COMPRESS_APP=true 48 | TAR_NAME=${TAR_NAME}C 49 | ;; 50 | o ) #echo "Optimization level $OPTARG" 51 | OPT_LEVEL=$OPTARG 52 | TAR_NAME=${TAR_NAME}o${OPTARG} 53 | ;; 54 | H ) #echo "Host $OPTARG" 55 | HOST=$OPTARG 56 | TAR_NAME=${TAR_NAME}H-${OPTARG} 57 | ;; 58 | h ) echo \ 59 | "./Emberl.sh [options] 60 | 61 | Available options: 62 | -s Strip beam files and compile with the slim flag 63 | -c Compile beams using the compress flag 64 | -C Compress applications into zip's 65 | -o Compile the virtual machine with the optimization flag 66 | -H Compile the virtual machine for the host 67 | -h Display this help message " 68 | exit 0 69 | ;; 70 | * ) echo "Unimplemented option chosen." # DEFAULT 71 | ;; 72 | esac 73 | done 74 | 75 | #Create the erl-xcomp configuration 76 | cat $XCOMP_CONF.in > $XCOMP_CONF 77 | sed -ie "s/@OPT_LEVEL@/${OPT_LEVEL}/" $XCOMP_CONF 78 | sed -ie "s/@HOST@/${HOST}/" $XCOMP_CONF 79 | 80 | ## FUNCTION DECLARATION SPACE 81 | 82 | show() 83 | { 84 | cat <> lib/$APP/SKIP 148 | done 149 | for KEEP in $KEEPSIES; do 150 | show "Keeping $KEEP" 151 | rm -f lib/$KEEP/SKIP 152 | done 153 | 154 | show "Creating bootstrap and building" 155 | ./otp_build boot 156 | 157 | for KEEP in $KEEPSIES; do 158 | show "Removing prebuilt files in $KEEP" 159 | rm lib/$KEEP/ebin/*.beam 160 | done 161 | 162 | show "Creating release" 163 | ./otp_build release 164 | 165 | echo $(pwd) 166 | 167 | pushd release/${HOST}/ 2> /dev/null || (show "Building release failed!" ; exit 1) 168 | 169 | show "Running Install script to setup paths and executables" 170 | ./Install -cross -minimal $TARGET_ERL_ROOT 171 | rm Install 172 | 173 | if [ $STRIP_BEAM == true ] 174 | then 175 | show "Stripping beam files" 176 | erl -eval "beam_lib:strip_release('${WD}/otp_src_${VERSION}/release/${HOST}')" -s init stop 177 | fi 178 | 179 | if [ $STRIP_BIN == true ] 180 | then 181 | show "Stripping erts binaries" 182 | $STRIP_CMD erts-*/bin/* 183 | fi 184 | 185 | show "Removing source code, documentation, and examples" 186 | for DIR in $(ls | grep erts) lib/*; do 187 | rm -rf ${DIR}/src 188 | rm -rf ${DIR}/include 189 | rm -rf ${DIR}/doc 190 | rm -rf ${DIR}/man 191 | rm -rf ${DIR}/examples 192 | done 193 | rm -rf usr/include 194 | rm -rf misc 195 | 196 | if [ $COMPRESS_APP = true ] 197 | then 198 | show "Compressing erlang applications" 199 | pushd lib 200 | for APP in $(ls); do 201 | zip -r ${APP}.zip $APP 202 | mv ${APP}.zip ${APP}.ez 203 | rm -f -r $APP 204 | done 205 | popd 206 | fi 207 | 208 | show "Creating tarball" 209 | tar czf ${WD}/${TAR_NAME}.tgz . 210 | 211 | popd 212 | popd 213 | 214 | ## Test the resulted binaries for TARGET compatability 215 | file ./otp_src_R14B01/bin/${HOST}/erlexec 216 | -------------------------------------------------------------------------------- /MLO: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burbas/erlang-embedded/c64a5b305d1a7b609c5909d72b4aee091a49eb8a/MLO -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Please note that this documentation is not complete, we are working on finishing it. 2 | 3 | # Building a toolchain for anything OpenEmbedded supports 4 | 5 | When you have installed bitbake and openembedded you can build the package 6 | meta-toolchain to get a toolchain for that architecture. 7 | 8 | # Building Erlang 9 | 10 | Make sure to have a valid toolchain in your `$PATH`, in the `EmbErl.sh` script there 11 | is a variable named `$HOST`. The toolchain should have its binaries named 12 | `${HOST}-command`. Example for `HOST=arm`: gcc should be `arm-gcc` and be available 13 | in your `$PATH`. 14 | 15 | We have used the toolchain that is built by openembedded when building our things. 16 | 17 | ./EmbErl.sh - 18 | 19 | Available opts are: 20 | -s Strip beam files and compile with the slim flag 21 | -S Stip binaries with the strip-tool 22 | -c Compile beams using the compress flag 23 | -C Compress applications into zip's 24 | -o Compile the virtual machine with the optimization flag 25 | -H Compile the virtual machine for the host 26 | -h Display help message 27 | 28 | To use another Erlang version than the one that `EmbErl.sh` uses as 29 | default, change the `VERSION` variable (eg `VERSION=R14B01 ./EmbErl.sh 30 | `). One can also set the variable `TARGET_ERL_ROOT=path` to 31 | change the location in which Erlang will be installed. 32 | 33 | 34 | # Generate package 35 | 36 | Please note that generating a package is intedend to be used to create a 37 | installation package as the ones we release on embedded-erlang.com. There is no 38 | reason to do this step if you just want erlang to be built for a different 39 | architecture. 40 | 41 | Use the `CreatePackage.sh` script in order to create a package. If you 42 | did specify `TARGET_ERL_ROOT` in the build step you should do it for 43 | the package generation as well (eg `TARGET_ERL_ROOT=path ; ./CreatePackage.sh`) 44 | -------------------------------------------------------------------------------- /README_IOS.md: -------------------------------------------------------------------------------- 1 | # Compile info 2 | 3 | The smallest package is obtain by using `./EmbErl.sh -s -c` (~2.0mb). 4 | 5 | 6 | # Progress 7 | 8 | * + Autoconfigure works 9 | * + Configure works 10 | * + Host compilation works 11 | * + Host linking works 12 | * + Target compilation works 13 | * + Target linking fails 14 | * + Bundling 15 | * + Execution 16 | 17 | 18 | # Todos 19 | 20 | Add following libraries: 21 | 22 | * compiler (done! Compiler works! now we can compile on the AppleTV) 23 | * sasl 24 | * crypto 25 | * ssl 26 | * public_key 27 | * mnesia 28 | * inets 29 | * tools 30 | 31 | Test some system parameters: 32 | 33 | * Run `> erlang:system_info(X).` to see the configuration 34 | 35 | 36 | # Hurdles 37 | 38 | ## Compile and Link Binary location and filenames 39 | 40 | ### Problem 41 | Just setting the host variable and then let the binaries filename 42 | guess like `$HOST-gcc` does not work for the iOS toolchain, because 43 | the binary filenames are cctually named like `$HOST-gcc-$VERSION`. 44 | 45 | ### Solution 46 | Set them correctly. 47 | 48 | 49 | ## Undetermined endianness 50 | 51 | ### Problem 52 | The endianness can not be determined by the autoconfigure script and 53 | is also not set with a default value. 54 | 55 | ### Solution 56 | As the arm-apple-darwin iOS platform uses little-endian, set the 57 | big-endian autoconfigure flag to `no`: 58 | 59 | erl_xcomp_bigendian=no 60 | 61 | 62 | ## Not available -m32 flag 63 | 64 | ### Problem 65 | The `-m32` flag is usually set to explicitly express that the system 66 | should be build for a 32-bit architecture. But the iOS GCC compiler 67 | for ARM does not support this flag (yet, as all ARM chips are supposed 68 | to not have 64 bit support). 69 | 70 | ### Solution 71 | Apply patch to not create the `-m32` flag in configure files. (See 72 | patch file). 73 | 74 | 75 | ## bp_sched2ix function not defined 76 | 77 | ### Problem 78 | A function was introduced in commit ff9531eb5e6aaa5a4802db0db5e0e850f4233702 79 | (https://github.com/erlang/otp/commit/ff9531eb5e6aaa5a4802db0db5e0e850f4233702). This 80 | function creates problems only so far when linking for an 81 | arm-apple-darwin platform. 82 | 83 | Issues while compiling: 84 | * erl_init.o 85 | * erl_bif_trace.o 86 | * erl_trace.o 87 | * bif.o 88 | * erl_process.o 89 | * erl_nif.o 90 | * beam_emu.o 91 | * beam_bif_load.o 92 | * beam_debug.o 93 | 94 | beam/beam_bp.h:147: warning: inline function ‘bp_sched2ix’ declared but never defined 95 | 96 | This leads to: 97 | 98 | Undefined symbols: 99 | "_bp_sched2ix", referenced from: 100 | _load_nif_2 in erl_nif.o 101 | ld: symbol(s) not found 102 | collect2: ld returned 1 exit status 103 | make[3]: *** 104 | [/Users/uwe/dev/erlang-embedded/otp_src_R14B01/bin/arm-apple-darwin10/beam] 105 | Error 1 106 | make[2]: *** [opt] Error 2 107 | make[1]: *** [opt] Error 2 108 | make: *** [emulator] Error 2 109 | 110 | The implementation looks like that: 111 | 112 | erts/emulator/beam/beam_bp.h: 113 | ERTS_INLINE Uint bp_sched2ix(void); 114 | 115 | erts/emulator/beam/beam_bp.c: 116 | /* bp_hash */ 117 | ERTS_INLINE Uint bp_sched2ix() { 118 | #ifdef ERTS_SMP 119 | ErtsSchedulerData *esdp; 120 | esdp = erts_get_scheduler_data(); 121 | return esdp->no - 1; 122 | #else 123 | return 0; 124 | #endif 125 | } 126 | 127 | ### Solution 128 | Remove the `-std=c99` flag from the CFLAG flag. 129 | 130 | 131 | ## Missing utmp.h file in run_erl.c issues 132 | 133 | ### Problem 134 | ../unix/run_erl.c:70:20: error: utmp.h: No such file or directory 135 | 136 | This file is needed because of the `time_t` struct. This file in fact 137 | exists on the OS X system SDK and the iPhone simulator SDK, but not in 138 | the iPhone SDK. There, the missing struct exists in the `utime.h` file. 139 | 140 | ## Solution 141 | Patch the run_erl.c file to use `utime.h` instead of `utmp.h`. (Or 142 | copy the `utmp.h` file into the iPhone SDK). 143 | -------------------------------------------------------------------------------- /arm-apple-darwin.patch: -------------------------------------------------------------------------------- 1 | --- a/otp_src_R14B01/configure.in 2010-12-07 16:07:22.000000000 +0100 2 | +++ b/otp_src_R14B01/configure.in 2011-02-28 11:55:31.000000000 +0100 3 | @@ -344,9 +344,9 @@ 4 | LDFLAGS="-m64 $LDFLAGS" 5 | export LDFLAGS 6 | elif test X"$TMPSYS" '=' X"Darwin-i386"; then 7 | - CFLAGS="-m32 $CFLAGS" 8 | + CFLAGS="$CFLAGS" 9 | export CFLAGS 10 | - LDFLAGS="-m32 $LDFLAGS" 11 | + LDFLAGS="$LDFLAGS" 12 | export LDFLAGS 13 | fi 14 | 15 | @@ -359,9 +359,9 @@ 16 | fi 17 | if test X${enable_m32_build} = Xyes; then 18 | enable_hipe=no 19 | - CFLAGS="-m32 $CFLAGS" 20 | + CFLAGS="$CFLAGS" 21 | export CFLAGS 22 | - LDFLAGS="-m32 $LDFLAGS" 23 | + LDFLAGS="$LDFLAGS" 24 | export LDFLAGS 25 | fi 26 | 27 | --- a/otp_src_R14B01/configure 2010-12-07 16:07:22.000000000 +0100 28 | +++ b/otp_src_R14B01/configure 2011-02-28 12:11:11.000000000 +0100 29 | @@ -3514,9 +3514,9 @@ 30 | LDFLAGS="-m64 $LDFLAGS" 31 | export LDFLAGS 32 | elif test X"$TMPSYS" '=' X"Darwin-i386"; then 33 | - CFLAGS="-m32 $CFLAGS" 34 | + CFLAGS="$CFLAGS" 35 | export CFLAGS 36 | - LDFLAGS="-m32 $LDFLAGS" 37 | + LDFLAGS="$LDFLAGS" 38 | export LDFLAGS 39 | fi 40 | 41 | @@ -3529,9 +3531,9 @@ 42 | fi 43 | if test X${enable_m32_build} = Xyes; then 44 | enable_hipe=no 45 | - CFLAGS="-m32 $CFLAGS" 46 | + CFLAGS="$CFLAGS" 47 | export CFLAGS 48 | - LDFLAGS="-m32 $LDFLAGS" 49 | + LDFLAGS="$LDFLAGS" 50 | export LDFLAGS 51 | fi 52 | 53 | --- a/otp_src_R14B01/erts/configure.in 2010-12-07 16:07:22.000000000 +0100 54 | +++ b/otp_src_R14B01/erts/configure.in 2011-02-28 11:57:15.000000000 +0100 55 | @@ -351,7 +351,7 @@ 56 | *-m32*) 57 | ;; 58 | *) 59 | - CFLAGS="-m32 $CFLAGS" 60 | + CFLAGS="$CFLAGS" 61 | ;; 62 | esac 63 | ;; 64 | @@ -363,7 +363,7 @@ 65 | *-m32*) 66 | ;; 67 | *) 68 | - CFLAGS="-m32 $CFLAGS" 69 | + CFLAGS="$CFLAGS" 70 | ;; 71 | esac ; 72 | fi 73 | @@ -483,7 +483,7 @@ 74 | *-m32*) 75 | ;; 76 | *) 77 | - DEBUG_CFLAGS="-m32 $DEBUG_CFLAGS" 78 | + DEBUG_CFLAGS="$DEBUG_CFLAGS" 79 | ;; 80 | esac 81 | ;; 82 | @@ -710,7 +710,7 @@ 83 | *-m32*) 84 | ;; 85 | *) 86 | - LDFLAGS="-m32 $LDFLAGS" 87 | + LDFLAGS="$LDFLAGS" 88 | ;; 89 | esac 90 | fi 91 | @@ -732,7 +732,7 @@ 92 | *-m32*) 93 | ;; 94 | *) 95 | - LDFLAGS="-m32 $LDFLAGS" 96 | + LDFLAGS="$LDFLAGS" 97 | ;; 98 | esac ; 99 | fi 100 | @@ -3415,7 +3415,7 @@ 101 | ;; 102 | *) 103 | if test X${enable_darwin_universal} != Xyes; then 104 | - DED_LDFLAGS="-m32 $DED_LDFLAGS" 105 | + DED_LDFLAGS="$DED_LDFLAGS" 106 | fi 107 | ;; 108 | esac 109 | @@ -3433,7 +3433,7 @@ 110 | DED_LDFLAGS="-m64 $DED_LDFLAGS" 111 | fi; 112 | if test X${enable_m32_build} = Xyes; then 113 | - DED_LDFLAGS="-m32 $DED_LDFLAGS" 114 | + DED_LDFLAGS="$DED_LDFLAGS" 115 | fi 116 | ;; 117 | freebsd*) 118 | @@ -3444,7 +3444,7 @@ 119 | DED_LDFLAGS="-m64 $DED_LDFLAGS" 120 | fi; 121 | if test X${enable_m32_build} = Xyes; then 122 | - DED_LDFLAGS="-m32 $DED_LDFLAGS" 123 | + DED_LDFLAGS="$DED_LDFLAGS" 124 | fi 125 | ;; 126 | osf*) 127 | @@ -4153,7 +4153,7 @@ 128 | if test -z "$CFLAGS32"; then 129 | if test $ac_cv_sizeof_void_p != 4; then 130 | # We are compiling default 64 bits and use -m32 for 32 bit compilations 131 | - CFLAGS32="$CFLAGS -m32" 132 | + CFLAGS32="$CFLAGS" 133 | else 134 | CFLAGS32="$CFLAGS" 135 | fi 136 | --- a/otp_src_R14B01/erts/configure 2010-12-07 16:07:22.000000000 +0100 137 | +++ b/otp_src_R14B01/erts/configure 2011-02-28 12:05:47.000000000 +0100 138 | @@ -3127,7 +3127,7 @@ 139 | *-m32*) 140 | ;; 141 | *) 142 | - CFLAGS="-m32 $CFLAGS" 143 | + CFLAGS="$CFLAGS" 144 | ;; 145 | esac 146 | ;; 147 | @@ -3139,7 +3140,7 @@ 148 | *-m32*) 149 | ;; 150 | *) 151 | - CFLAGS="-m32 $CFLAGS" 152 | + CFLAGS="$CFLAGS" 153 | ;; 154 | esac ; 155 | fi 156 | @@ -3988,7 +3990,7 @@ 157 | *-m32*) 158 | ;; 159 | *) 160 | - DEBUG_CFLAGS="-m32 $DEBUG_CFLAGS" 161 | + DEBUG_CFLAGS="$DEBUG_CFLAGS" 162 | ;; 163 | esac 164 | ;; 165 | @@ -5333,7 +5336,7 @@ 166 | *-m32*) 167 | ;; 168 | *) 169 | - LDFLAGS="-m32 $LDFLAGS" 170 | + LDFLAGS="$LDFLAGS" 171 | ;; 172 | esac 173 | fi 174 | @@ -5357,7 +5361,7 @@ 175 | *-m32*) 176 | ;; 177 | *) 178 | - LDFLAGS="-m32 $LDFLAGS" 179 | + LDFLAGS="$LDFLAGS" 180 | ;; 181 | esac ; 182 | fi 183 | @@ -25696,7 +25701,7 @@ 184 | ;; 185 | *) 186 | if test X${enable_darwin_universal} != Xyes; then 187 | - DED_LDFLAGS="-m32 $DED_LDFLAGS" 188 | + DED_LDFLAGS="$DED_LDFLAGS" 189 | fi 190 | ;; 191 | esac 192 | @@ -25714,7 +25720,7 @@ 193 | DED_LDFLAGS="-m64 $DED_LDFLAGS" 194 | fi; 195 | if test X${enable_m32_build} = Xyes; then 196 | - DED_LDFLAGS="-m32 $DED_LDFLAGS" 197 | + DED_LDFLAGS="$DED_LDFLAGS" 198 | fi 199 | ;; 200 | freebsd*) 201 | @@ -25725,7 +25732,7 @@ 202 | DED_LDFLAGS="-m64 $DED_LDFLAGS" 203 | fi; 204 | if test X${enable_m32_build} = Xyes; then 205 | - DED_LDFLAGS="-m32 $DED_LDFLAGS" 206 | + DED_LDFLAGS="$DED_LDFLAGS" 207 | fi 208 | ;; 209 | osf*) 210 | @@ -27102,7 +27110,7 @@ 211 | if test -z "$CFLAGS32"; then 212 | if test $ac_cv_sizeof_void_p != 4; then 213 | # We are compiling default 64 bits and use -m32 for 32 bit compilations 214 | - CFLAGS32="$CFLAGS -m32" 215 | + CFLAGS32="$CFLAGS" 216 | else 217 | CFLAGS32="$CFLAGS" 218 | fi 219 | --- a/otp_src_R14B01/erts/etc/unix/run_erl.c 2011-02-28 16:41:34.000000000 +0100 220 | +++ b/otp_src_R14B01/erts/etc/unix/run_erl.c 2011-02-28 16:41:20.000000000 +0100 221 | @@ -67,7 +67,7 @@ 222 | # include 223 | #endif 224 | #ifdef HAVE_UTMP_H 225 | -# include 226 | +# include 227 | #endif 228 | #ifdef HAVE_UTIL_H 229 | # include 230 | -------------------------------------------------------------------------------- /clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -f EmbErl_*.tgz 4 | rm -f erl-xcomp-*.conf 5 | rm -rf otp_src_R14B01 6 | -------------------------------------------------------------------------------- /erl-xcomp-arm-darwin.conf.in: -------------------------------------------------------------------------------- 1 | ## -*-shell-script-*- 2 | ## 3 | ## %CopyrightBegin% 4 | ## 5 | ## Copyright Ericsson AB 2009-2010. All Rights Reserved. 6 | ## 7 | ## The contents of this file are subject to the Erlang Public License, 8 | ## Version 1.1, (the "License"); you may not use this file except in 9 | ## compliance with the License. You should have received a copy of the 10 | ## Erlang Public License along with this software. If not, it can be 11 | ## retrieved online at http://www.erlang.org/. 12 | ## 13 | ## Software distributed under the License is distributed on an "AS IS" 14 | ## basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 15 | ## the License for the specific language governing rights and limitations 16 | ## under the License. 17 | ## 18 | ## %CopyrightEnd% 19 | ## 20 | ## File: erl-xcomp.conf.template 21 | ## Author: Rickard Green 22 | ## 23 | ## ----------------------------------------------------------------------------- 24 | ## When cross compiling Erlang/OTP using `otp_build', copy this file and set 25 | ## the variables needed below. Then pass the path to the copy of this file as 26 | ## an argument to `otp_build' in the configure stage: 27 | ## `otp_build configure --xcomp-conf=' 28 | ## ----------------------------------------------------------------------------- 29 | 30 | ## Note that you cannot define arbitrary variables in a cross compilation 31 | ## configuration file. Only the ones listed below will be guaranteed to be 32 | ## visible throughout the whole execution of all `configure' scripts. Other 33 | ## variables needs to be defined as arguments to `configure' or exported in 34 | ## the environment. 35 | 36 | ## -- Variables for `otp_build' Only ------------------------------------------- 37 | 38 | ## Variables in this section are only used, when configuring Erlang/OTP for 39 | ## cross compilation using `$ERL_TOP/otp_build configure'. 40 | 41 | ## *NOTE*! These variables currently have *no* effect if you configure using 42 | ## the `configure' script directly. 43 | 44 | # * `erl_xcomp_build' - The build system used. This value will be passed as 45 | # `--build=$erl_xcomp_build' argument to the `configure' script. It does 46 | # not have to be a full `CPU-VENDOR-OS' triplet, but can be. The full 47 | # `CPU-VENDOR-OS' triplet will be created by 48 | # `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'. If set to `guess', 49 | # the build system will be guessed using 50 | # `$ERL_TOP/erts/autoconf/config.guess'. 51 | erl_xcomp_build=guess 52 | 53 | # * `erl_xcomp_host' - Cross host/target system to build for. This value will 54 | # be passed as `--host=$erl_xcomp_host' argument to the `configure' script. 55 | # It does not have to be a full `CPU-VENDOR-OS' triplet, but can be. The 56 | # full `CPU-VENDOR-OS' triplet will be created by 57 | # `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'. 58 | erl_xcomp_host=@HOST@ 59 | 60 | # * `erl_xcomp_configure_flags' - Extra configure flags to pass to the 61 | # `configure' script. 62 | erl_xcomp_configure_flags="--disable-hipe --disable-threads --disable-smp \ 63 | --disable-megaco-flex-scanner-lineno --disable-megaco-reentrant-flex-scanner \ 64 | --disable-dynamic-ssl-lib --without-termcap --without-javac --without-ssl" 65 | 66 | ## -- Cross Compiler and Other Tools ------------------------------------------- 67 | 68 | ## If the cross compilation tools are prefixed by `-' you probably do 69 | ## not need to set these variables (where `' is what has been passed as 70 | ## `--host=' argument to `configure'). 71 | 72 | ## All variables in this section can also be used when native compiling. 73 | 74 | # * `CC' - C compiler. 75 | #CC=gcc 76 | CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1" 77 | #CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2" 78 | 79 | # * `CFLAGS' - C compiler flags. 80 | #CFLAGS="-O@OPT_LEVEL@ -DSMALL_MEMORY" 81 | #CFLAGS="-O@OPT_LEVEL@ -DSMALL_MEMORY -miphoneos-version-min=4.1 -std=c99 -pipe -no-cpp-precomp --sysroot='/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk' -isystem /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include" 82 | CFLAGS="-O@OPT_LEVEL@ -DSMALL_MEMORY --sysroot='/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk' -isystem /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include" 83 | 84 | # * `STATIC_CFLAGS' - Static C compiler flags. 85 | #STATIC_CFLAGS= 86 | 87 | # * `CFLAG_RUNTIME_LIBRARY_PATH' - This flag should set runtime library 88 | # search path for the shared libraries. Note that this actually is a 89 | # linker flag, but it needs to be passed via the compiler. 90 | #CFLAG_RUNTIME_LIBRARY_PATH= 91 | 92 | # * `CPP' - C pre-processor. 93 | #CPP=/tmp/gnuarm-4.0.2/bin/arm-elf-cpp 94 | CPP="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-cpp-4.2.1" 95 | #CPP="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/cpp -E" 96 | 97 | # * `CPPFLAGS' - C pre-processor flags. 98 | #CPPFLAGS= 99 | #CPPFLAGS="-miphoneos-version-min=4.1 -std=c99 -pipe -no-cpp-precomp -I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include" 100 | CPPFLAGS="-I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include" 101 | 102 | # * `CXX' - C++ compiler. 103 | #CXX= 104 | #CXX="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-g++-4.2.1" 105 | CXX="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-g++-4.2" 106 | 107 | # * `CXXFLAGS' - C++ compiler flags. 108 | #CXXFLAGS= 109 | #CXXFLAGS="-miphoneos-version-min=4.1 -std=c99 -pipe -no-cpp-precomp --sysroot='/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk' -isystem /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include" 110 | CXXFLAGS="--sysroot='/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk' -isystem /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include" 111 | 112 | # * `LD' - Linker. 113 | #LD= 114 | LD="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld" 115 | 116 | # * `LDFLAGS' - Linker flags. 117 | #LDFLAGS= 118 | #LDFLAGS="-miphoneos-version-min=4.1 -I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/lib" 119 | LDFLAGS="-I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/lib" 120 | 121 | # * `LIBS' - Libraries. 122 | #LIBS= 123 | 124 | ## -- *D*ynamic *E*rlang *D*river Linking -- 125 | 126 | ## *NOTE*! Either set all or none of the `DED_LD*' variables. 127 | 128 | # * `DED_LD' - Linker for Dynamically loaded Erlang Drivers. 129 | #DED_LD= 130 | 131 | # * `DED_LDFLAGS' - Linker flags to use with `DED_LD'. 132 | #DED_LDFLAGS= 133 | 134 | # * `DED_LD_FLAG_RUNTIME_LIBRARY_PATH' - This flag should set runtime library 135 | # search path for shared libraries when linking with `DED_LD'. 136 | #DED_LD_FLAG_RUNTIME_LIBRARY_PATH= 137 | 138 | ## -- Large File Support -- 139 | 140 | ## *NOTE*! Either set all or none of the `LFS_*' variables. 141 | 142 | # * `LFS_CFLAGS' - Large file support C compiler flags. 143 | #LFS_CFLAGS= 144 | 145 | # * `LFS_LDFLAGS' - Large file support linker flags. 146 | #LFS_LDFLAGS= 147 | 148 | # * `LFS_LIBS' - Large file support libraries. 149 | #LFS_LIBS= 150 | 151 | ## -- Other Tools -- 152 | 153 | # * `RANLIB' - `ranlib' archive index tool. 154 | #RANLIB= 155 | RANLIB="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib" 156 | 157 | # * `AR' - `ar' archiving tool. 158 | #AR= 159 | AR="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar" 160 | 161 | # * `GETCONF' - `getconf' system configuration inspection tool. `getconf' is 162 | # currently used for finding out large file support flags to use, and 163 | # on Linux systems for finding out if we have an NPTL thread library or 164 | # not. 165 | #GETCONF= 166 | 167 | ## -- Cross System Root Locations ---------------------------------------------- 168 | 169 | # * `erl_xcomp_sysroot' - The absolute path to the system root of the cross 170 | # compilation environment. Currently, the `crypto', `odbc', `ssh' and 171 | # `ssl' applications need the system root. These applications will be 172 | # skipped if the system root has not been set. The system root might be 173 | # needed for other things too. If this is the case and the system root 174 | # has not been set, `configure' will fail and request you to set it. 175 | #erl_xcomp_sysroot= 176 | 177 | # * `erl_xcomp_isysroot' - The absolute path to the system root for includes 178 | # of the cross compilation environment. If not set, this value defaults 179 | # to `$erl_xcomp_sysroot', i.e., only set this value if the include system 180 | # root path is not the same as the system root path. 181 | #erl_xcomp_isysroot= 182 | 183 | ## -- Optional Feature, and Bug Tests ------------------------------------------ 184 | 185 | ## These tests cannot (always) be done automatically when cross compiling. You 186 | ## usually do not need to set these variables. Only set these if you really 187 | ## know what you are doing. 188 | 189 | ## Note that some of these values will override results of tests performed 190 | ## by `configure', and some will not be used until `configure' is sure that 191 | ## it cannot figure the result out. 192 | 193 | ## The `configure' script will issue a warning when a default value is used. 194 | ## When a variable has been set, no warning will be issued. 195 | 196 | # * `erl_xcomp_after_morecore_hook' - `yes|no'. Defaults to `no'. If `yes', 197 | # the target system must have a working `__after_morecore_hook' that can be 198 | # used for tracking used `malloc()' implementations core memory usage. 199 | # This is currently only used by unsupported features. 200 | #erl_xcomp_after_morecore_hook= 201 | 202 | # * `erl_xcomp_bigendian' - `yes|no'. No default. If `yes', the target system 203 | # must be big endian. If `no', little endian. This can often be 204 | # automatically detected, but not always. If not automatically detected, 205 | # `configure' will fail unless this variable is set. Since no default 206 | # value is used, `configure' will try to figure this out automatically. 207 | erl_xcomp_bigendian=no 208 | 209 | # * `erl_xcomp_clock_gettime_cpu_time' - `yes|no'. Defaults to `no'. If `yes', 210 | # the target system must have a working `clock_gettime()' implementation 211 | # that can be used for retrieving process CPU time. 212 | #erl_xcomp_clock_gettime_cpu_time= 213 | 214 | # * `erl_xcomp_getaddrinfo' - `yes|no'. Defaults to `no'. If `yes', the target 215 | # system must have a working `getaddrinfo()' implementation that can 216 | # handle both IPv4 and IPv6. 217 | #erl_xcomp_getaddrinfo= 218 | 219 | # * `erl_xcomp_gethrvtime_procfs_ioctl' - `yes|no'. Defaults to `no'. If `yes', 220 | # the target system must have a working `gethrvtime()' implementation and 221 | # is used with procfs `ioctl()'. 222 | #erl_xcomp_gethrvtime_procfs_ioctl= 223 | 224 | # * `erl_xcomp_dlsym_brk_wrappers' - `yes|no'. Defaults to `no'. If `yes', the 225 | # target system must have a working `dlsym(RTLD_NEXT, )' implementation 226 | # that can be used on `brk' and `sbrk' symbols used by the `malloc()' 227 | # implementation in use, and by this track the `malloc()' implementations 228 | # core memory usage. This is currently only used by unsupported features. 229 | #erl_xcomp_dlsym_brk_wrappers= 230 | 231 | # * `erl_xcomp_kqueue' - `yes|no'. Defaults to `no'. If `yes', the target 232 | # system must have a working `kqueue()' implementation that returns a file 233 | # descriptor which can be used by `poll()' and/or `select()'. If `no' and 234 | # the target system has not got `epoll()' or `/dev/poll', the kernel-poll 235 | # feature will be disabled. 236 | #erl_xcomp_kqueue= 237 | 238 | # * `erl_xcomp_linux_clock_gettime_correction' - `yes|no'. Defaults to `yes' on 239 | # Linux; otherwise, `no'. If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on 240 | # the target system must work. This variable is recommended to be set to 241 | # `no' on Linux systems with kernel versions less than 2.6. 242 | #erl_xcomp_linux_clock_gettime_correction= 243 | 244 | # * `erl_xcomp_linux_nptl' - `yes|no'. Defaults to `yes' on Linux; otherwise, 245 | # `no'. If `yes', the target system must have NPTL (Native POSIX Thread 246 | # Library). Older Linux systems have LinuxThreads instead of NPTL (Linux 247 | # kernel versions typically less than 2.6). 248 | #erl_xcomp_linux_nptl= 249 | 250 | # * `erl_xcomp_linux_usable_sigaltstack' - `yes|no'. Defaults to `yes' on Linux; 251 | # otherwise, `no'. If `yes', `sigaltstack()' must be usable on the target 252 | # system. `sigaltstack()' on Linux kernel versions less than 2.4 are 253 | # broken. 254 | #erl_xcomp_linux_usable_sigaltstack= 255 | 256 | # * `erl_xcomp_linux_usable_sigusrx' - `yes|no'. Defaults to `yes'. If `yes', 257 | # the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS. Old 258 | # LinuxThreads thread libraries (Linux kernel versions typically less than 259 | # 2.2) used these signals and made them unusable by the ERTS. 260 | #erl_xcomp_linux_usable_sigusrx= 261 | 262 | # * `erl_xcomp_poll' - `yes|no'. Defaults to `no' on Darwin/MacOSX; otherwise, 263 | # `yes'. If `yes', the target system must have a working `poll()' 264 | # implementation that also can handle devices. If `no', `select()' will be 265 | # used instead of `poll()'. 266 | #erl_xcomp_poll= 267 | 268 | # * `erl_xcomp_putenv_copy' - `yes|no'. Defaults to `no'. If `yes', the target 269 | # system must have a `putenv()' implementation that stores a copy of the 270 | # key/value pair. 271 | #erl_xcomp_putenv_copy= 272 | 273 | # * `erl_xcomp_reliable_fpe' - `yes|no'. Defaults to `no'. If `yes', the target 274 | # system must have reliable floating point exceptions. 275 | #erl_xcomp_reliable_fpe= 276 | 277 | ## ----------------------------------------------------------------------------- 278 | -------------------------------------------------------------------------------- /erl-xcomp-arm-linux.conf.in: -------------------------------------------------------------------------------- 1 | ## -*-shell-script-*- 2 | ## 3 | ## %CopyrightBegin% 4 | ## 5 | ## Copyright Ericsson AB 2009-2010. All Rights Reserved. 6 | ## 7 | ## The contents of this file are subject to the Erlang Public License, 8 | ## Version 1.1, (the "License"); you may not use this file except in 9 | ## compliance with the License. You should have received a copy of the 10 | ## Erlang Public License along with this software. If not, it can be 11 | ## retrieved online at http://www.erlang.org/. 12 | ## 13 | ## Software distributed under the License is distributed on an "AS IS" 14 | ## basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 15 | ## the License for the specific language governing rights and limitations 16 | ## under the License. 17 | ## 18 | ## %CopyrightEnd% 19 | ## 20 | ## File: erl-xcomp.conf.template 21 | ## Author: Rickard Green 22 | ## 23 | ## ----------------------------------------------------------------------------- 24 | ## When cross compiling Erlang/OTP using `otp_build', copy this file and set 25 | ## the variables needed below. Then pass the path to the copy of this file as 26 | ## an argument to `otp_build' in the configure stage: 27 | ## `otp_build configure --xcomp-conf=' 28 | ## ----------------------------------------------------------------------------- 29 | 30 | ## Note that you cannot define arbitrary variables in a cross compilation 31 | ## configuration file. Only the ones listed below will be guaranteed to be 32 | ## visible throughout the whole execution of all `configure' scripts. Other 33 | ## variables needs to be defined as arguments to `configure' or exported in 34 | ## the environment. 35 | 36 | ## -- Variables for `otp_build' Only ------------------------------------------- 37 | 38 | ## Variables in this section are only used, when configuring Erlang/OTP for 39 | ## cross compilation using `$ERL_TOP/otp_build configure'. 40 | 41 | ## *NOTE*! These variables currently have *no* effect if you configure using 42 | ## the `configure' script directly. 43 | 44 | # * `erl_xcomp_build' - The build system used. This value will be passed as 45 | # `--build=$erl_xcomp_build' argument to the `configure' script. It does 46 | # not have to be a full `CPU-VENDOR-OS' triplet, but can be. The full 47 | # `CPU-VENDOR-OS' triplet will be created by 48 | # `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'. If set to `guess', 49 | # the build system will be guessed using 50 | # `$ERL_TOP/erts/autoconf/config.guess'. 51 | erl_xcomp_build=guess 52 | 53 | # * `erl_xcomp_host' - Cross host/target system to build for. This value will 54 | # be passed as `--host=$erl_xcomp_host' argument to the `configure' script. 55 | # It does not have to be a full `CPU-VENDOR-OS' triplet, but can be. The 56 | # full `CPU-VENDOR-OS' triplet will be created by 57 | # `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'. 58 | erl_xcomp_host=@HOST@ 59 | 60 | # * `erl_xcomp_configure_flags' - Extra configure flags to pass to the 61 | # `configure' script. 62 | erl_xcomp_configure_flags="--disable-hipe --disable-threads --disable-smp \ 63 | --disable-megaco-flex-scanner-lineno --disable-megaco-reentrant-flex-scanner \ 64 | --disable-dynamic-ssl-lib --without-termcap --without-javac --without-ssl" 65 | 66 | ## -- Cross Compiler and Other Tools ------------------------------------------- 67 | 68 | ## If the cross compilation tools are prefixed by `-' you probably do 69 | ## not need to set these variables (where `' is what has been passed as 70 | ## `--host=' argument to `configure'). 71 | 72 | ## All variables in this section can also be used when native compiling. 73 | 74 | # * `CC' - C compiler. 75 | #CC=gcc 76 | 77 | # * `CFLAGS' - C compiler flags. 78 | CFLAGS="-O@OPT_LEVEL@ -DSMALL_MEMORY" 79 | 80 | # * `STATIC_CFLAGS' - Static C compiler flags. 81 | #STATIC_CFLAGS= 82 | 83 | # * `CFLAG_RUNTIME_LIBRARY_PATH' - This flag should set runtime library 84 | # search path for the shared libraries. Note that this actually is a 85 | # linker flag, but it needs to be passed via the compiler. 86 | #CFLAG_RUNTIME_LIBRARY_PATH= 87 | 88 | # * `CPP' - C pre-processor. 89 | #CPP=/tmp/gnuarm-4.0.2/bin/arm-elf-cpp 90 | 91 | # * `CPPFLAGS' - C pre-processor flags. 92 | #CPPFLAGS= 93 | 94 | # * `CXX' - C++ compiler. 95 | #CXX= 96 | 97 | # * `CXXFLAGS' - C++ compiler flags. 98 | #CXXFLAGS= 99 | 100 | # * `LD' - Linker. 101 | #LD= 102 | 103 | # * `LDFLAGS' - Linker flags. 104 | #LDFLAGS= 105 | 106 | # * `LIBS' - Libraries. 107 | #LIBS= 108 | 109 | ## -- *D*ynamic *E*rlang *D*river Linking -- 110 | 111 | ## *NOTE*! Either set all or none of the `DED_LD*' variables. 112 | 113 | # * `DED_LD' - Linker for Dynamically loaded Erlang Drivers. 114 | #DED_LD= 115 | 116 | # * `DED_LDFLAGS' - Linker flags to use with `DED_LD'. 117 | #DED_LDFLAGS= 118 | 119 | # * `DED_LD_FLAG_RUNTIME_LIBRARY_PATH' - This flag should set runtime library 120 | # search path for shared libraries when linking with `DED_LD'. 121 | #DED_LD_FLAG_RUNTIME_LIBRARY_PATH= 122 | 123 | ## -- Large File Support -- 124 | 125 | ## *NOTE*! Either set all or none of the `LFS_*' variables. 126 | 127 | # * `LFS_CFLAGS' - Large file support C compiler flags. 128 | #LFS_CFLAGS= 129 | 130 | # * `LFS_LDFLAGS' - Large file support linker flags. 131 | #LFS_LDFLAGS= 132 | 133 | # * `LFS_LIBS' - Large file support libraries. 134 | #LFS_LIBS= 135 | 136 | ## -- Other Tools -- 137 | 138 | # * `RANLIB' - `ranlib' archive index tool. 139 | #RANLIB= 140 | 141 | # * `AR' - `ar' archiving tool. 142 | #AR= 143 | 144 | # * `GETCONF' - `getconf' system configuration inspection tool. `getconf' is 145 | # currently used for finding out large file support flags to use, and 146 | # on Linux systems for finding out if we have an NPTL thread library or 147 | # not. 148 | #GETCONF= 149 | 150 | ## -- Cross System Root Locations ---------------------------------------------- 151 | 152 | # * `erl_xcomp_sysroot' - The absolute path to the system root of the cross 153 | # compilation environment. Currently, the `crypto', `odbc', `ssh' and 154 | # `ssl' applications need the system root. These applications will be 155 | # skipped if the system root has not been set. The system root might be 156 | # needed for other things too. If this is the case and the system root 157 | # has not been set, `configure' will fail and request you to set it. 158 | #erl_xcomp_sysroot= 159 | 160 | # * `erl_xcomp_isysroot' - The absolute path to the system root for includes 161 | # of the cross compilation environment. If not set, this value defaults 162 | # to `$erl_xcomp_sysroot', i.e., only set this value if the include system 163 | # root path is not the same as the system root path. 164 | #erl_xcomp_isysroot= 165 | 166 | ## -- Optional Feature, and Bug Tests ------------------------------------------ 167 | 168 | ## These tests cannot (always) be done automatically when cross compiling. You 169 | ## usually do not need to set these variables. Only set these if you really 170 | ## know what you are doing. 171 | 172 | ## Note that some of these values will override results of tests performed 173 | ## by `configure', and some will not be used until `configure' is sure that 174 | ## it cannot figure the result out. 175 | 176 | ## The `configure' script will issue a warning when a default value is used. 177 | ## When a variable has been set, no warning will be issued. 178 | 179 | # * `erl_xcomp_after_morecore_hook' - `yes|no'. Defaults to `no'. If `yes', 180 | # the target system must have a working `__after_morecore_hook' that can be 181 | # used for tracking used `malloc()' implementations core memory usage. 182 | # This is currently only used by unsupported features. 183 | #erl_xcomp_after_morecore_hook= 184 | 185 | # * `erl_xcomp_bigendian' - `yes|no'. No default. If `yes', the target system 186 | # must be big endian. If `no', little endian. This can often be 187 | # automatically detected, but not always. If not automatically detected, 188 | # `configure' will fail unless this variable is set. Since no default 189 | # value is used, `configure' will try to figure this out automatically. 190 | #erl_xcomp_bigendian= 191 | 192 | # * `erl_xcomp_clock_gettime_cpu_time' - `yes|no'. Defaults to `no'. If `yes', 193 | # the target system must have a working `clock_gettime()' implementation 194 | # that can be used for retrieving process CPU time. 195 | #erl_xcomp_clock_gettime_cpu_time= 196 | 197 | # * `erl_xcomp_getaddrinfo' - `yes|no'. Defaults to `no'. If `yes', the target 198 | # system must have a working `getaddrinfo()' implementation that can 199 | # handle both IPv4 and IPv6. 200 | #erl_xcomp_getaddrinfo= 201 | 202 | # * `erl_xcomp_gethrvtime_procfs_ioctl' - `yes|no'. Defaults to `no'. If `yes', 203 | # the target system must have a working `gethrvtime()' implementation and 204 | # is used with procfs `ioctl()'. 205 | #erl_xcomp_gethrvtime_procfs_ioctl= 206 | 207 | # * `erl_xcomp_dlsym_brk_wrappers' - `yes|no'. Defaults to `no'. If `yes', the 208 | # target system must have a working `dlsym(RTLD_NEXT, )' implementation 209 | # that can be used on `brk' and `sbrk' symbols used by the `malloc()' 210 | # implementation in use, and by this track the `malloc()' implementations 211 | # core memory usage. This is currently only used by unsupported features. 212 | #erl_xcomp_dlsym_brk_wrappers= 213 | 214 | # * `erl_xcomp_kqueue' - `yes|no'. Defaults to `no'. If `yes', the target 215 | # system must have a working `kqueue()' implementation that returns a file 216 | # descriptor which can be used by `poll()' and/or `select()'. If `no' and 217 | # the target system has not got `epoll()' or `/dev/poll', the kernel-poll 218 | # feature will be disabled. 219 | #erl_xcomp_kqueue= 220 | 221 | # * `erl_xcomp_linux_clock_gettime_correction' - `yes|no'. Defaults to `yes' on 222 | # Linux; otherwise, `no'. If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on 223 | # the target system must work. This variable is recommended to be set to 224 | # `no' on Linux systems with kernel versions less than 2.6. 225 | #erl_xcomp_linux_clock_gettime_correction= 226 | 227 | # * `erl_xcomp_linux_nptl' - `yes|no'. Defaults to `yes' on Linux; otherwise, 228 | # `no'. If `yes', the target system must have NPTL (Native POSIX Thread 229 | # Library). Older Linux systems have LinuxThreads instead of NPTL (Linux 230 | # kernel versions typically less than 2.6). 231 | #erl_xcomp_linux_nptl= 232 | 233 | # * `erl_xcomp_linux_usable_sigaltstack' - `yes|no'. Defaults to `yes' on Linux; 234 | # otherwise, `no'. If `yes', `sigaltstack()' must be usable on the target 235 | # system. `sigaltstack()' on Linux kernel versions less than 2.4 are 236 | # broken. 237 | #erl_xcomp_linux_usable_sigaltstack= 238 | 239 | # * `erl_xcomp_linux_usable_sigusrx' - `yes|no'. Defaults to `yes'. If `yes', 240 | # the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS. Old 241 | # LinuxThreads thread libraries (Linux kernel versions typically less than 242 | # 2.2) used these signals and made them unusable by the ERTS. 243 | #erl_xcomp_linux_usable_sigusrx= 244 | 245 | # * `erl_xcomp_poll' - `yes|no'. Defaults to `no' on Darwin/MacOSX; otherwise, 246 | # `yes'. If `yes', the target system must have a working `poll()' 247 | # implementation that also can handle devices. If `no', `select()' will be 248 | # used instead of `poll()'. 249 | #erl_xcomp_poll= 250 | 251 | # * `erl_xcomp_putenv_copy' - `yes|no'. Defaults to `no'. If `yes', the target 252 | # system must have a `putenv()' implementation that stores a copy of the 253 | # key/value pair. 254 | #erl_xcomp_putenv_copy= 255 | 256 | # * `erl_xcomp_reliable_fpe' - `yes|no'. Defaults to `no'. If `yes', the target 257 | # system must have reliable floating point exceptions. 258 | #erl_xcomp_reliable_fpe= 259 | 260 | ## ----------------------------------------------------------------------------- 261 | -------------------------------------------------------------------------------- /keep: -------------------------------------------------------------------------------- 1 | stdlib 2 | erts 3 | kernel 4 | compiler 5 | -------------------------------------------------------------------------------- /u-boot.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burbas/erlang-embedded/c64a5b305d1a7b609c5909d72b4aee091a49eb8a/u-boot.bin -------------------------------------------------------------------------------- /uImage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/burbas/erlang-embedded/c64a5b305d1a7b609c5909d72b4aee091a49eb8a/uImage --------------------------------------------------------------------------------