X-Git-Url: http://git.tdb.fi/?p=builder.git;a=blobdiff_plain;f=bootstrap.sh;h=b8531257a94a68b134cfadb8b4f31acd2b61406c;hp=6464f1d85bac9fece9c347db771bf559f44c849e;hb=HEAD;hpb=c10344bb36af7babab467540b22ac5587631f031 diff --git a/bootstrap.sh b/bootstrap.sh index 6464f1d..b647568 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,11 +1,11 @@ #!/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`" @@ -14,7 +14,7 @@ if [ "$MACHINE" = "x86_64" ]; then 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 @@ -67,22 +67,41 @@ while [ "$1" ]; do done if [ -z "$LIBPATH" -o "${LIBPATH%%/*}" ]; then - LIBPATH=`pwd`/${LIBPATH:-..} + LIBPATH="$PWD/${LIBPATH:-..}" fi 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 \)` - for j in $headers; do + 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 + + for j in `find $findargs -name '*.h'`; do rel=${j#$path/source/} comp=${rel%%/*} if [ "$comp" = "$rel" ]; then @@ -91,7 +110,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 @@ -109,14 +128,19 @@ 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 + for j in $use_overlays; do + dir=${dir%/$j} + if [ -d "$dir/$j" ]; then + flags="$flags -iquote $dir -iquote $dir/$j" + break + fi + done + echo "Compiling $i" $COMPILER -c $DEBUG $i -o $obj $flags objects="$objects $obj" done +echo "Linking builder-stage1" $COMPILER $objects -o builder-stage1 $LIBS if [ "$KEEP_TEMP" != "yes" ]; then @@ -130,6 +154,6 @@ if [ "$PREFIX" ]; then ARGS="$ARGS --prefix='$PREFIX'" fi if [ "$CUSTOM_COMPILER" = "yes" ]; then - ARGS="$ARGS CXX=$COMPILER" + ARGS="$ARGS --compiler=$COMPILER" fi eval "./builder-stage1 $ARGS"