We should fix build errors as they happen and not find out about them when it is...
[platform/upstream/gstreamer.git] / autogen.sh
1 #!/bin/bash
2 # Run this to generate all the initial makefiles, etc.
3
4 DIE=0
5 package=GStreamer
6 srcfile=gst/gstobject.h
7 #DEBUG=defined
8 if test "x$1" = "x-d"; then echo "+ debug output enabled"; DEBUG=defined; fi
9
10 debug ()
11 # print out a debug message if DEBUG is a defined variable
12 {
13   if test ! -z "$DEBUG"
14   then
15     echo "DEBUG: $1"
16   fi
17 }
18
19 version_check ()
20 # check the version of a package
21 # first argument : package name (executable)
22 # second argument : source download url
23 # rest of arguments : major, minor, micro version
24 {
25   PACKAGE=$1
26   URL=$2
27   MAJOR=$3
28   MINOR=$4
29   MICRO=$5
30
31
32   debug "major $MAJOR minor $MINOR micro $MICRO"
33   VERSION=$MAJOR
34   if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi
35   if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi
36
37   debug "major $MAJOR minor $MINOR micro $MICRO"
38   echo -n "+ checking for $1 >= $VERSION ... "
39   ($PACKAGE --version) < /dev/null > /dev/null 2>&1 || 
40   {
41         echo
42         echo "You must have $PACKAGE installed to compile $package."
43         echo "Download the appropriate package for your distribution,"
44         echo "or get the source tarball at $URL"
45         return 1
46   }
47   # the following line is carefully crafted sed magic
48   pkg_version=`$PACKAGE --version|head -n 1|sed 's/^[a-zA-z\.\ ()]*//;s/ .*$//'`
49   debug "pkg_version $pkg_version"
50   pkg_major=`echo $pkg_version | cut -d. -f1`
51   pkg_minor=`echo $pkg_version | cut -d. -f2`
52   pkg_micro=`echo $pkg_version | cut -d. -f3`
53   test -z "$pkg_minor" && pkg_minor=0
54   test -z "$pkg_micro" && pkg_micro=0
55
56   debug "found major $pkg_major minor $pkg_minor micro $pkg_micro"
57
58   #start checking the version
59   debug "version check"
60
61   if [ ! "$pkg_major" \> "$MAJOR" ]; then
62     debug "$pkg_major <= $MAJOR"
63     if [ "$pkg_major" \< "$MAJOR" ]; then
64       WRONG=1
65     elif [ ! "$pkg_minor" \> "$MINOR" ]; then
66       if [ "$pkg_minor" \< "$MINOR" ]; then
67         WRONG=1
68       elif [ "$pkg_micro" \< "$MICRO" ]; then
69         WRONG=1
70       fi
71     fi
72   fi
73
74   if test ! -z "$WRONG"; then
75     echo "found $pkg_version, not ok !"
76     echo
77     echo "You must have $PACKAGE $VERSION or greater to compile $package."
78     echo "Get the latest version from $URL"
79     return 1
80   else
81     echo "found $pkg_version, ok."
82   fi
83 }
84
85 # autoconf 2.52d has a weird issue involving a yes:no error
86 # so don't allow it's use
87 ac_version=`autoconf --version|head -n 1|sed 's/^[a-zA-z\.\ ()]*//;s/ .*$//'`
88 if test "$ac_version" = "2.52d"; then
89   echo "autoconf 2.52d has an issue with our current build."
90   echo "We don't know who's to blame however.  So until we do, get a"
91   echo "regular version.  RPM's of a working version are on the gstreamer site."
92   exit 1
93 fi
94
95
96 version_check "autoconf" "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 52 || DIE=1
97 version_check "automake" "ftp://ftp.gnu.org/pub/gnu/automake/" 1 5 || DIE=1
98 version_check "libtool" "ftp://ftp.gnu.org/pub/gnu/libtool/" 1 4 0 || DIE=1
99 version_check "pkg-config" "http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
100
101 if test "$DIE" -eq 1; then
102         exit 1
103 fi
104
105 test -f $srcfile || {
106         echo "You must run this script in the top-level $package directory"
107         exit 1
108 }
109
110 if test -z "$*"; then
111         echo "I am going to run ./configure with no arguments - if you wish "
112         echo "to pass any to it, please specify them on the $0 command line."
113 fi
114
115 echo "+ running aclocal ..."
116 aclocal $ACLOCAL_FLAGS || {
117         echo
118         echo "aclocal failed - check that all needed development files are present on system"
119         exit 1
120 }
121
122 # FIXME : why does libtoolize keep complaining about aclocal ?
123 echo "+ running libtoolize ..."
124 libtoolize --copy --force
125
126 echo "+ running autoheader ... "
127 autoheader || {
128         echo
129         echo "autoheader failed"
130         exit 1
131 }
132 echo "+ running autoconf ... "
133 autoconf || {
134         echo
135         echo "autoconf failed"
136         exit 1
137 }
138 echo "+ running automake ... "
139 automake -a -c || {
140         echo
141         echo "automake failed"
142         exit 1
143 }
144
145 # now remove the cache, because it can be considered dangerous in this case
146 #echo "+ removing config.cache ... "
147 #rm -f config.cache
148
149 CONFIGURE_OPT='--enable-maintainer-mode --enable-plugin-builddir --enable-debug --enable-DEBUG'
150
151 echo "+ running configure ... "
152 echo "./configure default flags: $CONFIGURE_OPT"
153 echo "using: $CONFIGURE_OPT $@"
154 echo
155
156 ./configure $CONFIGURE_OPT "$@" || {
157         echo
158         echo "configure failed"
159         exit 1
160 }
161
162 echo 
163 echo "Now type 'make' to compile $package."