X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=bootstrap.sh;h=02fbd33445a9735dd78e5c3c3d71f7446d54619d;hb=c932c038879f7101eaba8ca123b39ef5c4330b65;hp=48a4f206bb75b673280bc5fc331dc8ec2608b4e5;hpb=6e02286dcbd62b8f5ef56987c2298d54b689ad9c;p=builder.git diff --git a/bootstrap.sh b/bootstrap.sh index 48a4f20..02fbd33 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,5 +1,4 @@ #!/bin/sh -# $Id$ set -e @@ -14,8 +13,12 @@ if [ "$MACHINE" = "x86_64" ]; then else MULTIARCH="i386-linux-gnu" fi -if [ "$SYSTEM" = "Darwin" ]; then - COMPILER="clang++" +if [ "$SYSTEM" = "Darwin" -o "$SYSTEM" = "FreeBSD" ]; then + if which clang++ >/dev/null; then + COMPILER="clang++" + else + COMPILER="g++" + fi else COMPILER="g++" fi @@ -42,6 +45,18 @@ while [ "$1" ]; do --keep-temp) KEEP_TEMP=yes ;; + --compiler) + shift + COMPILER="$1" + CUSTOM_COMPILER=yes + ;; + --compiler=*) + COMPILER="${1#--compiler=}" + CUSTOM_COMPILER=yes + ;; + --debug) + DEBUG=-g + ;; *) echo "Unknown option $1" exit 1 @@ -59,13 +74,30 @@ mkdir -p "$INCLUDEDIR/msp" sources=source/*.cpp +use_overlays="unix generic" missing="" for i in $REQUIRED; do path=`ls -1d $LIBPATH/*$i* 2>/dev/null | head -n1` if [ -z "$path" -o ! -d "$path/source" ]; then missing="$missing msp$i" else - headers=`find $path/source \( -name windows -prune \) -o \( -name '*.h' -print \)` + if [ "`echo $path/source/*.cpp`" = "$path/source/*.cpp" ]; then + subdirs=`find "$path/source" -mindepth 1 -maxdepth 1 -type d` + else + subdirs="$path/source" + fi + + check_overlay="" + for j in $use_overlays; do + [ -z "$check_overlay" ] || check_overlay="$check_overlay -o " + check_overlay="${check_overlay}-name $j" + done + findargs="$subdirs" + if [ "$check_overlay" ]; then + findargs="$findargs -mindepth 1 ( -type d ! ( $check_overlay ) -prune ) ," + fi + + headers=`find $findargs -name '*.h'` for j in $headers; do rel=${j#$path/source/} comp=${rel%%/*} @@ -75,7 +107,7 @@ for i in $REQUIRED; do mkdir -p "$INCLUDEDIR/msp/$comp" ln -sf $j "$INCLUDEDIR/msp/$comp/" done - sources="$sources `find $path/source \( -name windows -prune \) -o \( -name '*.cpp' -print \)`" + sources="$sources `find $findargs -name '*.cpp'`" fi done @@ -93,12 +125,15 @@ for i in $sources; do mv $obj $obj.o obj=$obj.o dir=${i%/*} - dir=${dir%/unix} flags="$CFLAGS" - if [ -d "$dir/unix" ]; then - flags="$flags -iquote $dir -iquote $dir/unix" - fi - $COMPILER -c $i -o $obj $flags + for j in $use_overlays; do + dir=${dir%/$j} + if [ -d "$dir/$j" ]; then + flags="$flags -iquote $dir -iquote $dir/$j" + break + fi + done + $COMPILER -c $DEBUG $i -o $obj $flags objects="$objects $obj" done $COMPILER $objects -o builder-stage1 $LIBS @@ -113,4 +148,7 @@ ARGS= if [ "$PREFIX" ]; then ARGS="$ARGS --prefix='$PREFIX'" fi +if [ "$CUSTOM_COMPILER" = "yes" ]; then + ARGS="$ARGS CXX=$COMPILER" +fi eval "./builder-stage1 $ARGS"