#!/bin/sh
-# $Id$
set -e
+SOURCEDIRS="source/lib source/bootstrap plugins/base plugins/gnu"
INCLUDEDIR=temp/bootstrap/include
REQUIRED="core datafile"
-CFLAGS="-I$INCLUDEDIR `pkg-config --cflags sigc++-2.0`"
+CFLAGS="-std=c++11 -iquote . -I$INCLUDEDIR `pkg-config --cflags sigc++-2.0`"
LIBS="`pkg-config --libs sigc++-2.0` -lpthread"
MACHINE="`uname -m`"
SYSTEM="`uname -s`"
else
MULTIARCH="i386-linux-gnu"
fi
-if [ "$SYSTEM" = "Darwin" ]; then
+if [ "$SYSTEM" = "Darwin" -o "$SYSTEM" = "FreeBSD" ]; then
if which clang++ >/dev/null; then
COMPILER="clang++"
else
--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
rm -rf "$INCLUDEDIR"
mkdir -p "$INCLUDEDIR/msp"
-sources=source/*.cpp
+sources=`find $SOURCEDIRS -name '*.cpp'`
+
+mkdir -p "$INCLUDEDIR/msp/builder"
+ln -sf "$PWD/source/lib"/*.h "$INCLUDEDIR/msp/builder/"
+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 -false ) -o "
+ fi
+
+ headers=`find $findargs -name '*.h'`
for j in $headers; do
rel=${j#$path/source/}
comp=${rel%%/*}
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
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
if [ "$PREFIX" ]; then
ARGS="$ARGS --prefix='$PREFIX'"
fi
+if [ "$CUSTOM_COMPILER" = "yes" ]; then
+ ARGS="$ARGS --compiler=$COMPILER"
+fi
eval "./builder-stage1 $ARGS"