Previously the overlay -iquote flags for all source directories were
applied to all files, so the compiler included the wrong file. The fix
is to compile files one by one and only add the flags that are needed
for each.
The temp directory will now be deleted by default. An option to keep
it was added.
--prefix=*)
PREFIX="${1#--prefix=}"
;;
--prefix=*)
PREFIX="${1#--prefix=}"
;;
+ --keep-temp)
+ KEEP_TEMP=yes
+ ;;
*)
echo "Unknown option $1"
exit 1
*)
echo "Unknown option $1"
exit 1
if [ -z "$path" -o ! -d "$path/source" ]; then
missing="$missing msp$i"
else
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
sources="$sources `find $path/source \( -name windows -prune \) -o \( -name '*.cpp' -print \)`"
fi
done
-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 --tmpdir=temp/bootstrap XXXXXX.o`
+ dir=${i%/*}
+ dir=${dir%/unix}
+ flags="$CFLAGS"
+ if [ -d "$dir/unix" ]; then
+ flags="$flags -iquote $dir -iquote $dir/unix"
+ fi
+ g++ -c $i -o $obj $flags
+ objects="$objects $obj"
+g++ $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
echo "Using builder-stage1 to compile builder."
ARGS=
if [ "$PREFIX" ]; then