X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=bootstrap.sh;h=48a4f206bb75b673280bc5fc331dc8ec2608b4e5;hb=64661ac00a3a7eaa2295b85be642b6c96276cf97;hp=5cb40121f4fae3a03d9dac81201259850390a538;hpb=c51e8844f19c31b2809ba459a1659d3b94a86f89;p=builder.git diff --git a/bootstrap.sh b/bootstrap.sh index 5cb4012..48a4f20 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -8,11 +8,17 @@ REQUIRED="core datafile" CFLAGS="-I$INCLUDEDIR `pkg-config --cflags sigc++-2.0`" LIBS="`pkg-config --libs sigc++-2.0` -lpthread" MACHINE="`uname -m`" +SYSTEM="`uname -s`" if [ "$MACHINE" = "x86_64" ]; then MULTIARCH="x86_64-linux-gnu" else MULTIARCH="i386-linux-gnu" fi +if [ "$SYSTEM" = "Darwin" ]; then + COMPILER="clang++" +else + COMPILER="g++" +fi if [ -e /usr/lib/libdl.so -o -e /usr/lib/$MULTIARCH/libdl.so ]; then LIBS="$LIBS -ldl" fi @@ -33,6 +39,9 @@ while [ "$1" ]; do --prefix=*) PREFIX="${1#--prefix=}" ;; + --keep-temp) + KEEP_TEMP=yes + ;; *) echo "Unknown option $1" exit 1 @@ -56,11 +65,16 @@ for i in $REQUIRED; do if [ -z "$path" -o ! -d "$path/source" ]; then missing="$missing msp$i" else - if [ $i = "core" ]; then - ln -sf $path/source/* "$INCLUDEDIR/msp/" - else - ln -sf $path/source "$INCLUDEDIR/msp/$i" - fi + headers=`find $path/source \( -name windows -prune \) -o \( -name '*.h' -print \)` + for j in $headers; do + rel=${j#$path/source/} + comp=${rel%%/*} + if [ "$comp" = "$rel" ]; then + comp=$i + fi + mkdir -p "$INCLUDEDIR/msp/$comp" + ln -sf $j "$INCLUDEDIR/msp/$comp/" + done sources="$sources `find $path/source \( -name windows -prune \) -o \( -name '*.cpp' -print \)`" fi done @@ -72,12 +86,28 @@ if [ ! -z "$missing" ]; then exit 1 fi -for i in "$INCLUDEDIR/msp/"*/unix; do - CFLAGS="$CFLAGS -iquote $i -iquote ${i%/unix}" +echo "Compiling builder-stage1. This may take several minutes." +objects="" +for i in $sources; do + obj=`mktemp temp/bootstrap/XXXXXX` + 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 + objects="$objects $obj" done +$COMPILER $objects -o builder-stage1 $LIBS + +if [ "$KEEP_TEMP" != "yes" ]; then + echo "Cleaning up" + rm -r temp/bootstrap +fi -echo "Compiling builder-stage1. This may take several minutes." -g++ $sources -o builder-stage1 $CFLAGS $LIBS echo "Using builder-stage1 to compile builder." ARGS= if [ "$PREFIX" ]; then