]> git.tdb.fi Git - builder.git/blob - bootstrap.sh
Add a feature for overlay source directories
[builder.git] / bootstrap.sh
1 #!/bin/sh
2 # $Id$
3
4 set -e
5
6 INCLUDEDIR=temp/bootstrap/include
7 REQUIRED="core datafile"
8 CFLAGS="-I$INCLUDEDIR `pkg-config --cflags sigc++-2.0`"
9 LIBS="`pkg-config --libs sigc++-2.0` -lpthread"
10 MACHINE="`uname -m`"
11 if [ "$MACHINE" = "x86_64" ]; then
12         MULTIARCH="x86_64-linux-gnu"
13 else
14         MULTIARCH="i386-linux-gnu"
15 fi
16 if [ -e /usr/lib/libdl.so -o -e /usr/lib/$MULTIARCH/libdl.so ]; then
17         LIBS="$LIBS -ldl"
18 fi
19
20 while [ "$1" ]; do
21         case $1 in
22         --libpath)
23                 shift
24                 LIBPATH="$1"
25                 ;;
26         --libpath=*)
27                 LIBPATH="${1#--libpath=}"
28                 ;;
29         --prefix)
30                 shift
31                 PREFIX="$1"
32                 ;;
33         --prefix=*)
34                 PREFIX="${1#--prefix=}"
35                 ;;
36         *)
37                 echo "Unknown option $1"
38                 exit 1
39                 ;;
40         esac
41         shift
42 done
43
44 if [ -z "$LIBPATH" -o "${LIBPATH%%/*}" ]; then
45         LIBPATH=`pwd`/${LIBPATH:-..}
46 fi
47
48 rm -rf "$INCLUDEDIR"
49 mkdir -p "$INCLUDEDIR/msp"
50
51 sources=source/*.cpp
52
53 missing=""
54 for i in $REQUIRED; do
55         path=`ls -1d $LIBPATH/*$i* 2>/dev/null | head -n1`
56         if [ -z "$path"  -o ! -d "$path/source" ]; then
57                 missing="$missing msp$i"
58         else
59                 if [ $i = "core" ]; then
60                         ln -sf $path/source/* "$INCLUDEDIR/msp/"
61                 else
62                         ln -sf $path/source "$INCLUDEDIR/msp/$i"
63                 fi
64                 sources="$sources `find $path/source \( -name windows -prune \) -o \( -name '*.cpp' -print \)`"
65         fi
66 done
67
68 if [ ! -z "$missing" ]; then
69         echo "The following libraries were not found:$missing"
70         echo "I looked for them in $LIBPATH"
71         echo "If they are somewhere else, please add --libpath=PATH to the command line."
72         exit 1
73 fi
74
75 for i in "$INCLUDEDIR/msp/"*/unix; do
76         CFLAGS="$CFLAGS -iquote $i -iquote ${i%/unix}"
77 done
78
79 echo "Compiling builder-stage1.  This may take several minutes."
80 g++ $sources -o builder-stage1 $CFLAGS $LIBS
81 echo "Using builder-stage1 to compile builder."
82 ARGS=
83 if [ "$PREFIX" ]; then
84         ARGS="$ARGS --prefix='$PREFIX'"
85 fi
86 eval "./builder-stage1 $ARGS"