aboutsummaryrefslogtreecommitdiffstats
path: root/bootstrap
blob: 24e2944077041e3ffb42dc0978cba7624bdad412 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#! /bin/sh

# bootstrap: generic bootstrap/autogen.sh script for autotools projects
#
# Copyright (c) 2002-2011 Sam Hocevar <sam@hocevar.net>
#
#    This program is free software. It comes without any warranty, to
#    the extent permitted by applicable law. You can redistribute it
#    and/or modify it under the terms of the Do What The Fuck You Want
#    To Public License, Version 2, as published by Sam Hocevar. See
#    http://sam.zoy.org/wtfpl/COPYING for more details.
#
# The latest version of this script can be found at the following place:
#    http://caca.zoy.org/wiki/build

# Die if an error occurs
set -e

# Guess whether we are using configure.ac or configure.in
if test -f configure.ac; then
  conffile="configure.ac"
elif test -f configure.in; then
  conffile="configure.in"
else
  echo "$0: could not find configure.ac or configure.in"
  exit 1
fi

# Check for needed features
auxdir="`sed -ne 's/^[ \t]*A._CONFIG_AUX_DIR *([[ ]*\([^] )]*\).*/\1/p' $conffile`"
pkgconfig="`grep '^[ \t]*PKG_PROG_PKG_CONFIG' $conffile >/dev/null 2>&1 && echo yes || echo no`"
libtool="`grep '^[ \t]*A._PROG_LIBTOOL' $conffile >/dev/null 2>&1 && echo yes || echo no`"
header="`grep '^[ \t]*A._CONFIG_HEADER' $conffile >/dev/null 2>&1 && echo yes || echo no`"
makefile="`[ -f Makefile.am ] && echo yes || echo no`"
aclocalflags="`sed -ne 's/^[ \t]*ACLOCAL_AMFLAGS[ \t]*=//p' Makefile.am 2>/dev/null || :`"

# Check for automake
amvers="no"
for v in 16.1 16 15 14 13; do
  if automake-1.${v} --version >/dev/null 2>&1; then
    amvers="-1.${v}"
    break
  elif automake1.${v} --version >/dev/null 2>&1; then
    amvers="1.${v}"
    break
  fi
done

if test "${amvers}" = "no" && automake --version > /dev/null 2>&1; then
  amvers="`automake --version | sed -e '1s/[^0-9]*//' -e q`"
  if `echo "$amvers\n1.14" | sort -V | head -n 1 | grep -q "$amvers"`; then
    amvers="no"
  else
    amvers=""
  fi
fi

if test "$amvers" = "no"; then
  echo "$0: you need automake version 1.14 or later"
  exit 1
fi

# Check for autoconf
acvers="no"
for v in "" "269" "-2.69"; do
  if autoconf${v} --version >/dev/null 2>&1; then
    acvers="${v}"
    break
  fi
done

if test "$acvers" = "no"; then
  echo "$0: you need autoconf"
  exit 1
fi

# Check for libtool
if test "$libtool" = "yes"; then
  libtoolize="no"
  if glibtoolize --version >/dev/null 2>&1; then
    libtoolize="glibtoolize"
  else
    for v in "16" "15" "" "14"; do
      if libtoolize${v} --version >/dev/null 2>&1; then
        libtoolize="libtoolize${v}"
        break
      fi
    done
  fi

  if test "$libtoolize" = "no"; then
    echo "$0: you need libtool"
    exit 1
  fi
fi

# Check for pkg-config
if test "$pkgconfig" = "yes"; then
  if ! pkg-config --version >/dev/null 2>&1; then
    echo "$0: you need pkg-config"
    exit 1
  fi
fi

# Remove old cruft
for x in aclocal.m4 configure config.guess config.log config.sub config.cache config.h.in config.h compile libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 ltmain.sh libtool ltconfig missing mkinstalldirs depcomp install-sh; do rm -f $x autotools/$x; if test -n "$auxdir"; then rm -f "$auxdir/$x"; fi; done
rm -Rf autom4te.cache
if test -n "$auxdir"; then
  if test ! -d "$auxdir"; then
    mkdir "$auxdir"
  fi
  aclocalflags="${aclocalflags} -I $auxdir -I ."
fi

# Honour M4PATH because sometimes M4 doesn't
save_IFS=$IFS
IFS=:
tmp="$M4PATH"
for x in $tmp; do
  if test -n "$x"; then
    aclocalflags="${aclocalflags} -I $x"
  fi
done
IFS=$save_IFS

# Explain what we are doing from now
set -x

# Bootstrap package
if test "$libtool" = "yes"; then
  ${libtoolize} --copy --force
  if test -n "$auxdir" -a ! "$auxdir" = "." -a -f "ltmain.sh"; then
    echo "$0: working around a minor libtool issue"
    mv ltmain.sh "$auxdir/"
  fi
fi

aclocal${amvers} ${aclocalflags}
autoconf${acvers}
if test "$header" = "yes"; then
  autoheader${acvers}
fi
if test "$makefile" = "yes"; then
  #add --include-deps if you want to bootstrap with any other compiler than gcc
  #automake${amvers} --add-missing --copy --include-deps
  automake${amvers} --foreign --add-missing --copy
fi

# Remove cruft that we no longer want
rm -Rf autom4te.cache