Add vserver-build.functions.urpmi
[util-vserver.git] / build-all
1 #! /bin/sh
2
3 # Copyright (C) 2004,2005,2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
4 #  
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; version 2 of the License.
8 #  
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 #  
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
18 set -e
19
20 BDIR=Build-$(hostname)
21 J=-j8
22
23 confflags="-C --enable-maintainer-mode --prefix=/usr --sysconfdir=/etc --localstatedir=/var $CONFIGURE_FLAGS"
24 configure="`pwd`/configure $confflags"
25 make=eval\ "${CLEAN:+make $J silent.clean;} \
26             echo -e \"== executing 'make all'...\" && \
27             make $J ${SILENT:+-s silent.}all && \
28             echo -e \"\n== executing 'make check'...\" && \
29             make $J ${SILENT:+-s silent.}check"
30
31 LANG=C
32
33 case $(arch) in
34   (x86_64)      ARCH_CFLAGS=' -m64';;
35   (i?86)        ARCH_CFLAGS=' -m32';;
36 esac
37
38 CPPFLAGS=-D_FORTIFY_SOURCE=99$ARCH_CFLAGS
39
40 ## Usage: xtermTitle <title>
41 function xtermTitle
42 {
43     tty -s || return 0
44     echo -ne "\e]0;$@\007"
45 }
46
47 ## Usage: operate <dir> <configure-opts>*
48 function operate()
49 {
50     d=$1
51     shift
52     
53     echo  "******************"
54     echo $"** Operating in directory '$d'..."
55     xtermTitle "Operating in directory '$d'... ($@)"
56     
57     mkdir -p $d && cd $d
58
59     test -z "$CLEAN"                         || rm -f config.cache
60     test -e Makefile -a -z "$CONFIGURE_FLAGS"|| CCACHE_DISABLE=1 $configure "$@"
61     $make
62     cd -
63 }
64
65 case "$1" in
66     dist)
67         test -e Makefile || \
68             env \
69             CFLAGS="-O0 -g3$ARCH_CFLAGS"   \
70             CXXFLAGS="-O0 -g3$ARCH_CFLAGS" \
71             CPPFLAGS="$CPPFLAGS" \
72             ./configure $confflags
73         $make
74         exit
75         ;;
76     debian-woody|debian-sarge|fc-1-90|fc-1|fc-2|fc-3)
77         cat util-vserver-"$2".tar.bz2 | \
78             ssh $1 "cd /tmp && rm -rf /tmp/util-vserver-* && \
79                     tar xjf - && cd util-vserver-$2 && \
80                     export PATH=/usr/lib/ccache:/usr/lib/ccache/bin:\$PATH && \
81                         ./configure && \
82                     make ${SILENT:+-s silent.}all && \
83                     echo -e '\n\n\n' &&
84                     make ${SILENT:+-s silent.}check"
85         exit
86         ;;
87     *)  test -z "$1" || {
88             echo $"Unknown option '$1'" >&2
89             exit 1
90         }
91 esac
92
93 test -d "$BDIR" || {
94     d=$(mktemp -t -d build-ensc.XXXXXX)
95     rm -f $BDIR
96     ln -sf $d $BDIR
97 }
98
99 noopt_flags=-O0\ -g3
100 opt_flags=-O2\ -g
101 ldflags=$ARCH_CFLAGS
102
103 operate $BDIR/diet-noopt                                       CPPFLAGS="$CPPFLAGS" CFLAGS="$noopt_flags" CXXFLAGS="$noopt_flags" LDFLAGS="$ldflags"
104 operate $BDIR/diet-opt     --enable-release                    CPPFLAGS="$CPPFLAGS" CFLAGS="$opt_flags"   CXXFLAGS="$opt_flags"   LDFLAGS="$ldflags"
105 operate $BDIR/nodiet-noopt --disable-dietlibc                  CPPFLAGS="$CPPFLAGS" CFLAGS="$noopt_flags" CXXFLAGS="$noopt_flags" LDFLAGS="$ldflags"
106 operate $BDIR/nodiet-opt   --enable-release --disable-dietlibc CPPFLAGS="$CPPFLAGS" CFLAGS="$opt_flags"   CXXFLAGS="$opt_flags"   LDFLAGS="$ldflags"
107 #operate $BDIR/gcc32-opt    --enable-release --disable-dietlibc CPPFLAGS="$CPPFLAGS" CC='ccache gcc32'  CXX='ccache g++' CFLAGS="$opt_flags"   CXXFLAGS="$opt_flags" LDFLAGS="$ldflags"
108
109 operate $BDIR/diet-opt-api   --enable-release --enable-apis=NOLEGACY                    CPPFLAGS="$CPPFLAGS" CFLAGS="$opt_flags"   CXXFLAGS="$opt_flags" LDFLAGS="$ldflags"
110 operate $BDIR/nodiet-opt-api --enable-release --enable-apis=NOLEGACY --disable-dietlibc CPPFLAGS="$CPPFLAGS" CFLAGS="$opt_flags"   CXXFLAGS="$opt_flags" LDFLAGS="$ldflags"