fi
}
+validate_opt () {
+ for arg in $CFG_CONFIGURE_ARGS
+ do
+ isArgValid=0
+ for option in $BOOL_OPTIONS
+ do
+ if test --disable-$option = $arg
+ then
+ isArgValid=1
+ fi
+ if test --enable-$option = $arg
+ then
+ isArgValid=1
+ fi
+ done
+ for option in $VAL_OPTIONS
+ do
+ if echo "$arg" | grep -q -- "--$option="
+ then
+ isArgValid=1
+ fi
+ done
+ if test $isArgValid -eq 0
+ then
+ err "Option '$arg' is not recognized"
+ fi
+ done
+}
+
valopt() {
+ VAL_OPTIONS="$VAL_OPTIONS $1"
+
local OP=$1
local DEFAULT=$2
shift
}
opt() {
+ BOOL_OPTIONS="$BOOL_OPTIONS $1"
+
local OP=$1
local DEFAULT=$2
shift
need_cmd mkdir
need_cmd printf
need_cmd cut
+need_cmd head
need_cmd grep
need_cmd xargs
need_cmd cp
step_msg "processing $CFG_SELF args"
fi
+BOOL_OPTIONS=""
+VAL_OPTIONS=""
+
opt sharedstd 1 "build libstd as a shared library"
-opt valgrind 1 "run tests with valgrind (memcheck by default)"
+opt valgrind 0 "run tests with valgrind (memcheck by default)"
opt helgrind 0 "run tests with helgrind instead of memcheck"
opt docs 1 "build documentation"
opt optimize 1 "build optimized rust code"
valopt host-triple "${DEFAULT_HOST_TRIPLE}" "LLVM host triple"
valopt target-triples "${CFG_HOST_TRIPLE}" "LLVM target triples"
+# Validate Options
+step_msg "validating $CFG_SELF args"
+validate_opt
+
if [ $HELP -eq 1 ]
then
echo ""
probe CFG_CLANG clang++
probe CFG_GCC gcc
probe CFG_LD ld
-probe CFG_LLVM_CONFIG llvm-config
probe CFG_VALGRIND valgrind
probe CFG_PERF perf
probe CFG_ISCC iscc
if [ ! -z "$CFG_PANDOC" ]
then
- PV=$(pandoc --version | awk '/^pandoc/ {print $2}')
- if [ "$PV" \< "1.8" ]
+ PANDOC_VER_LINE=$(pandoc --version | grep '^pandoc ')
+ PANDOC_VER=${PANDOC_VER_LINE#pandoc }
+ PV_MAJOR_MINOR=${PANDOC_VER%.[0-9]*}
+ PV_MAJOR=${PV_MAJOR_MINOR%%[.][0-9]*}
+ PV_MINOR=${PV_MAJOR_MINOR#[0-9]*[.]}
+ PV_MINOR=${PV_MINOR%%[.][0-9]*}
+ if [ "$PV_MAJOR" -lt "1" ] || [ "$PV_MINOR" -lt "8" ]
then
- step_msg "pandoc $PV is too old. disabling"
- BAD_PANDOC=1
+ step_msg "pandoc $PV_MAJOR.$PV_MINOR is too old. disabling"
+ BAD_PANDOC=1
fi
fi
fi
fi
+# Force freebsd to build with clang; gcc doesn't like us there
+if [ $CFG_OSTYPE = unknown-freebsd ]
+then
+ step_msg "on FreeBSD, forcing use of clang"
+ CFG_ENABLE_CLANG=1
+ putvar CFG_ENABLE_CLANG
+fi
+
+
if [ -z "$CFG_ENABLE_CLANG" -a -z "$CFG_GCC" ]
then
err "either clang or gcc is required"
| cut -d ' ' -f 2)
case $CFG_CLANG_VERSION in
- (3.0svn | 3.0 | 3.1 | 4.0 | 4.1)
+ (3.0svn | 3.0 | 3.1* | 3.2* | 4.0* | 4.1* | 4.2*)
step_msg "found ok version of CLANG: $CFG_CLANG_VERSION"
CFG_C_COMPILER="clang"
;;
do
make_dir rt/$t
for i in \
- isaac bigint sync test arch/i386 arch/x86_64 \
+ isaac linenoise sync test arch/i386 arch/x86_64 \
libuv libuv/src/ares libuv/src/eio libuv/src/ev
do
make_dir rt/$t/$i
need_ok "git failed"
msg "git: submodule foreach sync"
- "${CFG_GIT}" submodule --quiet foreach --recursive git submodule sync
+ "${CFG_GIT}" submodule --quiet foreach --recursive 'if test -e .gitmodules; then git submodule sync; fi'
need_ok "git failed"
msg "git: submodule foreach update"
then
msg "configuring LLVM for $t"
- LLVM_TARGETS="--enable-targets=x86,x86_64"
+ LLVM_TARGETS="--enable-targets=x86,x86_64,arm"
LLVM_BUILD="--build=$t"
LLVM_HOST="--host=$t"
LLVM_TARGET="--target=$t"