autogen.sh 2.6 KB
Newer Older
1 2 3
#!/bin/sh
# Run this to generate all the initial makefiles, etc.

E
Eric Blake 已提交
4
srcdir=`dirname "$0"`
5
test -z "$srcdir" && srcdir=.
6 7

THEDIR=`pwd`
E
Eric Blake 已提交
8
cd "$srcdir"
9

10
test -f src/libvirt.c || {
11 12
    echo "You must run this script in the top-level libvirt directory"
    exit 1
13 14
}

15 16

EXTRA_ARGS=
17 18 19 20 21
no_git=
if test "x$1" = "x--no-git"; then
  no_git=" $1"
  shift
fi
22 23
if test "x$1" = "x--system"; then
    shift
24 25 26 27 28 29 30 31
    prefix=/usr
    libdir=$prefix/lib
    sysconfdir=/etc
    localstatedir=/var
    if [ -d /usr/lib64 ]; then
      libdir=$prefix/lib64
    fi
    EXTRA_ARGS="--prefix=$prefix --sysconfdir=$sysconfdir --localstatedir=$localstatedir --libdir=$libdir"
32 33
    echo "Running ./configure with $EXTRA_ARGS $@"
else
34 35
    if test -z "$*" && test ! -f "$THEDIR/config.status"; then
        echo "I am going to run ./configure with no arguments - if you wish "
36
        echo "to pass any to it, please specify them on the $0 command line."
37
    fi
38 39
fi

40 41 42 43
# Compute the hash we'll use to determine whether rerunning bootstrap
# is required.  The first is just the SHA1 that selects a gnulib snapshot.
# The second ensures that whenever we change the set of gnulib modules used
# by this package, we rerun bootstrap to pull in the matching set of files.
E
Eric Blake 已提交
44 45
# The third ensures that whenever we change the set of local gnulib diffs,
# we rerun bootstrap to pull in those diffs.
46 47 48 49
bootstrap_hash()
{
    git submodule status | sed 's/^[ +-]//;s/ .*//'
    git hash-object bootstrap.conf
E
Eric Blake 已提交
50
    git ls-tree -d HEAD gnulib/local | awk '{print $3}'
51 52
}

53 54
# Ensure that whenever we pull in a gnulib update or otherwise change to a
# different version (i.e., when switching branches), we also rerun ./bootstrap.
55 56 57
# Also, running 'make rpm' tends to litter the po/ directory, and some people
# like to run 'git clean -x -f po' to fix it; but only ./bootstrap regenerates
# the required file po/Makevars.
58 59 60 61 62 63 64 65 66 67 68 69 70
# Only run bootstrap from a git checkout, never from a tarball.
if test -d .git; then
    curr_status=.git-module-status
    t=$(bootstrap_hash; git diff .gnulib)
    if test "$t" = "$(cat $curr_status 2>/dev/null)" \
        && test -f "po/Makevars"; then
        # good, it's up to date, all we need is autoreconf
        autoreconf -if
    else
        echo running bootstrap$no_git...
        ./bootstrap$no_git --bootstrap-sync && bootstrap_hash > $curr_status \
            || { echo "Failed to bootstrap, please investigate."; exit 1; }
    fi
71 72
fi

E
Eric Blake 已提交
73
cd "$THEDIR"
74

E
Eric Blake 已提交
75
if test "x$OBJ_DIR" != x; then
76 77 78 79
    mkdir -p "$OBJ_DIR"
    cd "$OBJ_DIR"
fi

C
Cole Robinson 已提交
80
if test -z "$*" && test -z "$EXTRA_ARGS" && test -f config.status; then
81 82 83 84
    ./config.status --recheck
else
    $srcdir/configure $EXTRA_ARGS "$@"
fi && {
85
    echo
86 87
    echo "Now type 'make' to compile libvirt."
}