Line 0
Link Here
|
|
|
1 |
#!/bin/sh |
2 |
# Run this to generate all the initial makefiles, etc. |
3 |
|
4 |
#name of package |
5 |
PKG_NAME=${PKG_NAME:-nautilus-python} |
6 |
srcdir=${srcdir:-.} |
7 |
ACLOCAL_FLAGS="-I m4 $ACLOCAL_FLAGS" |
8 |
|
9 |
# default version requirements ... |
10 |
REQUIRED_AUTOCONF_VERSION=${REQUIRED_AUTOCONF_VERSION:-2.53} |
11 |
REQUIRED_AUTOMAKE_VERSION=${REQUIRED_AUTOMAKE_VERSION:-1.7} |
12 |
REQUIRED_LIBTOOL_VERSION=${REQUIRED_LIBTOOL_VERSION:-1.4.3} |
13 |
REQUIRED_GETTEXT_VERSION=${REQUIRED_GETTEXT_VERSION:-0.10.40} |
14 |
REQUIRED_GLIB_GETTEXT_VERSION=${REQUIRED_GLIB_GETTEXT_VERSION:-2.2.0} |
15 |
REQUIRED_INTLTOOL_VERSION=${REQUIRED_INTLTOOL_VERSION:-0.25} |
16 |
REQUIRED_PKG_CONFIG_VERSION=${REQUIRED_PKG_CONFIG_VERSION:-0.14.0} |
17 |
REQUIRED_GTK_DOC_VERSION=${REQUIRED_GTK_DOC_VERSION:-1.0} |
18 |
REQUIRED_DOC_COMMON_VERSION=${REQUIRED_DOC_COMMON_VERSION:-2.3.0} |
19 |
|
20 |
# a list of required m4 macros. Package can set an initial value |
21 |
REQUIRED_M4MACROS=${REQUIRED_M4MACROS:-} |
22 |
FORBIDDEN_M4MACROS=${FORBIDDEN_M4MACROS:-} |
23 |
|
24 |
# Not all echo versions allow -n, so we check what is possible. This test is |
25 |
# based on the one in autoconf. |
26 |
case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in |
27 |
*c*,-n*) ECHO_N= ;; |
28 |
*c*,* ) ECHO_N=-n ;; |
29 |
*) ECHO_N= ;; |
30 |
esac |
31 |
|
32 |
# if GNOME2_DIR or GNOME2_PATH is set, modify ACLOCAL_FLAGS ... |
33 |
# NOTE: GNOME2_DIR is deprecated (as of Jan 2004), but is left here for |
34 |
# backwards-compatibility. You should be using GNOME2_PATH, since that is also |
35 |
# understood by libraries such as libgnome. |
36 |
if [ -n "$GNOME2_DIR" ]; then |
37 |
echo "Using GNOME2_DIR is deprecated in gnome-common." |
38 |
echo "Please use GNOME2_PATH instead (for compatibility with other GNOME pieces)." |
39 |
ACLOCAL_FLAGS="-I $GNOME2_DIR/share/aclocal $ACLOCAL_FLAGS" |
40 |
LD_LIBRARY_PATH="$GNOME2_DIR/lib:$LD_LIBRARY_PATH" |
41 |
PATH="$GNOME2_DIR/bin:$PATH" |
42 |
export PATH |
43 |
export LD_LIBRARY_PATH |
44 |
else |
45 |
if [ -n "$GNOME2_PATH" ]; then |
46 |
ACLOCAL_FLAGS="-I $GNOME2_PATH/share/aclocal $ACLOCAL_FLAGS" |
47 |
LD_LIBRARY_PATH="$GNOME2_PATH/lib:$LD_LIBRARY_PATH" |
48 |
PATH="$GNOME2_PATH/bin:$PATH" |
49 |
export PATH |
50 |
export LD_LIBRARY_PATH |
51 |
fi |
52 |
fi |
53 |
|
54 |
# some terminal codes ... |
55 |
boldface="`tput bold 2>/dev/null`" |
56 |
normal="`tput sgr0 2>/dev/null`" |
57 |
printbold() { |
58 |
echo $ECHO_N "$boldface" |
59 |
echo "$@" |
60 |
echo $ECHO_N "$normal" |
61 |
} |
62 |
printerr() { |
63 |
echo "$@" >&2 |
64 |
} |
65 |
|
66 |
# Usage: |
67 |
# compare_versions MIN_VERSION ACTUAL_VERSION |
68 |
# returns true if ACTUAL_VERSION >= MIN_VERSION |
69 |
compare_versions() { |
70 |
ch_min_version=$1 |
71 |
ch_actual_version=$2 |
72 |
ch_status=0 |
73 |
IFS="${IFS= }"; ch_save_IFS="$IFS"; IFS="." |
74 |
set $ch_actual_version |
75 |
for ch_min in $ch_min_version; do |
76 |
ch_cur=`echo $1 | sed 's/[^0-9].*$//'`; shift # remove letter suffixes |
77 |
if [ -z "$ch_min" ]; then break; fi |
78 |
if [ -z "$ch_cur" ]; then ch_status=1; break; fi |
79 |
if [ $ch_cur -gt $ch_min ]; then break; fi |
80 |
if [ $ch_cur -lt $ch_min ]; then ch_status=1; break; fi |
81 |
done |
82 |
IFS="$ch_save_IFS" |
83 |
return $ch_status |
84 |
} |
85 |
|
86 |
# Usage: |
87 |
# version_check PACKAGE VARIABLE CHECKPROGS MIN_VERSION SOURCE |
88 |
# checks to see if the package is available |
89 |
version_check() { |
90 |
vc_package=$1 |
91 |
vc_variable=$2 |
92 |
vc_checkprogs=$3 |
93 |
vc_min_version=$4 |
94 |
vc_source=$5 |
95 |
vc_status=1 |
96 |
|
97 |
vc_checkprog=`eval echo "\\$$vc_variable"` |
98 |
if [ -n "$vc_checkprog" ]; then |
99 |
printbold "using $vc_checkprog for $vc_package" |
100 |
return 0 |
101 |
fi |
102 |
|
103 |
printbold "checking for $vc_package >= $vc_min_version..." |
104 |
for vc_checkprog in $vc_checkprogs; do |
105 |
echo $ECHO_N " testing $vc_checkprog... " |
106 |
if $vc_checkprog --version < /dev/null > /dev/null 2>&1; then |
107 |
vc_actual_version=`$vc_checkprog --version | head -n 1 | \ |
108 |
sed 's/^.*[ ]\([0-9.]*[a-z]*\).*$/\1/'` |
109 |
if compare_versions $vc_min_version $vc_actual_version; then |
110 |
echo "found $vc_actual_version" |
111 |
# set variable |
112 |
eval "$vc_variable=$vc_checkprog" |
113 |
vc_status=0 |
114 |
break |
115 |
else |
116 |
echo "too old (found version $vc_actual_version)" |
117 |
fi |
118 |
else |
119 |
echo "not found." |
120 |
fi |
121 |
done |
122 |
if [ "$vc_status" != 0 ]; then |
123 |
printerr "***Error***: You must have $vc_package >= $vc_min_version installed" |
124 |
printerr " to build $PKG_NAME. Download the appropriate package for" |
125 |
printerr " from your distribution or get the source tarball at" |
126 |
printerr " $vc_source" |
127 |
printerr |
128 |
fi |
129 |
return $vc_status |
130 |
} |
131 |
|
132 |
# Usage: |
133 |
# require_m4macro filename.m4 |
134 |
# adds filename.m4 to the list of required macros |
135 |
require_m4macro() { |
136 |
case "$REQUIRED_M4MACROS" in |
137 |
$1\ * | *\ $1\ * | *\ $1) ;; |
138 |
*) REQUIRED_M4MACROS="$REQUIRED_M4MACROS $1" ;; |
139 |
esac |
140 |
} |
141 |
|
142 |
forbid_m4macro() { |
143 |
case "$FORBIDDEN_M4MACROS" in |
144 |
$1\ * | *\ $1\ * | *\ $1) ;; |
145 |
*) FORBIDDEN_M4MACROS="$FORBIDDEN_M4MACROS $1" ;; |
146 |
esac |
147 |
} |
148 |
|
149 |
# Usage: |
150 |
# check_m4macros |
151 |
# Checks that all the requested macro files are in the aclocal macro path |
152 |
# Uses REQUIRED_M4MACROS and ACLOCAL variables. |
153 |
check_m4macros() { |
154 |
# construct list of macro directories |
155 |
cm_macrodirs="`$ACLOCAL --print-ac-dir`" |
156 |
set - $ACLOCAL_FLAGS |
157 |
while [ $# -gt 0 ]; do |
158 |
if [ "$1" = "-I" ]; then |
159 |
cm_macrodirs="$cm_macrodirs $2" |
160 |
shift |
161 |
fi |
162 |
shift |
163 |
done |
164 |
|
165 |
cm_status=0 |
166 |
if [ -n "$REQUIRED_M4MACROS" ]; then |
167 |
printbold "Checking for required M4 macros..." |
168 |
# check that each macro file is in one of the macro dirs |
169 |
for cm_macro in $REQUIRED_M4MACROS; do |
170 |
cm_macrofound=false |
171 |
for cm_dir in $cm_macrodirs; do |
172 |
if [ -f "$cm_dir/$cm_macro" ]; then |
173 |
cm_macrofound=true |
174 |
break |
175 |
fi |
176 |
# The macro dir in Cygwin environments may contain a file |
177 |
# called dirlist containing other directories to look in. |
178 |
if [ -f "$cm_dir/dirlist" ]; then |
179 |
for cm_otherdir in `cat $cm_dir/dirlist`; do |
180 |
if [ -f "$cm_otherdir/$cm_macro" ]; then |
181 |
cm_macrofound=true |
182 |
break |
183 |
fi |
184 |
done |
185 |
fi |
186 |
done |
187 |
if $cm_macrofound; then |
188 |
: |
189 |
else |
190 |
printerr " $cm_macro not found" |
191 |
cm_status=1 |
192 |
fi |
193 |
done |
194 |
fi |
195 |
if [ -n "$FORBIDDEN_M4MACROS" ]; then |
196 |
printbold "Checking for forbidden M4 macros..." |
197 |
# check that each macro file is in one of the macro dirs |
198 |
for cm_macro in $FORBIDDEN_M4MACROS; do |
199 |
cm_macrofound=false |
200 |
for cm_dir in $cm_macrodirs; do |
201 |
if [ -f "$cm_dir/$cm_macro" ]; then |
202 |
cm_macrofound=true |
203 |
break |
204 |
fi |
205 |
done |
206 |
if $cm_macrofound; then |
207 |
printerr " $cm_macro found (should be cleared from macros dir)" |
208 |
cm_status=1 |
209 |
fi |
210 |
done |
211 |
fi |
212 |
if [ "$cm_status" != 0 ]; then |
213 |
printerr "***Error***: some autoconf macros required to build $PKG_NAME" |
214 |
printerr " were not found in your aclocal path, or some forbidden" |
215 |
printerr " macros were found. Perhaps you need to adjust your" |
216 |
printerr " ACLOCAL_PATH?" |
217 |
printerr |
218 |
fi |
219 |
return $cm_status |
220 |
} |
221 |
|
222 |
# try to catch the case where the macros2/ directory hasn't been cleared out. |
223 |
forbid_m4macro gnome-cxx-check.m4 |
224 |
|
225 |
want_libtool=false |
226 |
want_gettext=false |
227 |
want_glib_gettext=false |
228 |
want_intltool=false |
229 |
want_pkg_config=false |
230 |
want_gtk_doc=false |
231 |
|
232 |
configure_files="`find $srcdir -name '{arch}' -prune -o -name configure.ac -print -o -name configure.in -print`" |
233 |
for configure_ac in $configure_files; do |
234 |
if grep "^A[CM]_PROG_LIBTOOL" $configure_ac >/dev/null; then |
235 |
want_libtool=true |
236 |
fi |
237 |
if grep "^AM_GNU_GETTEXT" $configure_ac >/dev/null; then |
238 |
want_gettext=true |
239 |
fi |
240 |
if grep "^AM_GLIB_GNU_GETTEXT" $configure_ac >/dev/null; then |
241 |
want_glib_gettext=true |
242 |
fi |
243 |
if grep "^AC_PROG_INTLTOOL" $configure_ac >/dev/null; then |
244 |
want_intltool=true |
245 |
fi |
246 |
if grep "^PKG_CHECK_MODULES" $configure_ac >/dev/null; then |
247 |
want_pkg_config=true |
248 |
fi |
249 |
if grep "^GTK_DOC_CHECK" $configure_ac >/dev/null; then |
250 |
want_gtk_doc=true |
251 |
fi |
252 |
done |
253 |
|
254 |
DIE=0 |
255 |
|
256 |
#tell Mandrake autoconf wrapper we want autoconf 2.5x, not 2.13 |
257 |
WANT_AUTOCONF_2_5=1 |
258 |
export WANT_AUTOCONF_2_5 |
259 |
version_check autoconf AUTOCONF 'autoconf2.50 autoconf autoconf-2.53' $REQUIRED_AUTOCONF_VERSION \ |
260 |
"http://ftp.gnu.org/pub/gnu/autoconf/autoconf-$REQUIRED_AUTOCONF_VERSION.tar.gz" || DIE=1 |
261 |
AUTOHEADER=`echo $AUTOCONF | sed s/autoconf/autoheader/` |
262 |
|
263 |
case $REQUIRED_AUTOMAKE_VERSION in |
264 |
1.4*) automake_progs="automake-1.4" ;; |
265 |
1.5*) automake_progs="automake-1.5 automake-1.6 automake-1.7 automake-1.8" ;; |
266 |
1.6*) automake_progs="automake-1.6 automake-1.7 automake-1.8" ;; |
267 |
1.7*) automake_progs="automake-1.7 automake-1.8" ;; |
268 |
1.8*) automake_progs="automake-1.8" ;; |
269 |
esac |
270 |
version_check automake AUTOMAKE "$automake_progs" $REQUIRED_AUTOMAKE_VERSION \ |
271 |
"http://ftp.gnu.org/pub/gnu/automake/automake-$REQUIRED_AUTOMAKE_VERSION.tar.gz" || DIE=1 |
272 |
ACLOCAL=`echo $AUTOMAKE | sed s/automake/aclocal/` |
273 |
|
274 |
# We need to do this for the craaaaaaazy mkinstalldirs usage of glib-gettext |
275 |
AUTOMAKE_VERSION=`echo $AUTOMAKE | sed s/automake-//` |
276 |
ACLOCAL_DIR=`$ACLOCAL --print-ac-dir` |
277 |
AUTOMAKE_DIR=`echo $ACLOCAL_DIR | sed s/aclocal/automake-$AUTOMAKE_VERSION/` |
278 |
|
279 |
if $want_libtool; then |
280 |
version_check libtool LIBTOOLIZE libtoolize $REQUIRED_LIBTOOL_VERSION \ |
281 |
"http://ftp.gnu.org/pub/gnu/libtool/libtool-$REQUIRED_LIBTOOL_VERSION.tar.gz" || DIE=1 |
282 |
require_m4macro libtool.m4 |
283 |
fi |
284 |
|
285 |
if $want_gettext; then |
286 |
version_check gettext GETTEXTIZE gettextize $REQUIRED_GETTEXT_VERSION \ |
287 |
"http://ftp.gnu.org/pub/gnu/gettext/gettext-$REQUIRED_GETTEXT_VERSION.tar.gz" || DIE=1 |
288 |
require_m4macro gettext.m4 |
289 |
fi |
290 |
|
291 |
if $want_glib_gettext; then |
292 |
version_check glib-gettext GLIB_GETTEXTIZE glib-gettextize $REQUIRED_GLIB_GETTEXT_VERSION \ |
293 |
"ftp://ftp.gtk.org/pub/gtk/v2.2/glib-$REQUIRED_GLIB_GETTEXT_VERSION.tar.gz" || DIE=1 |
294 |
require_m4macro glib-gettext.m4 |
295 |
fi |
296 |
|
297 |
if $want_intltool; then |
298 |
version_check intltool INTLTOOLIZE intltoolize $REQUIRED_INTLTOOL_VERSION \ |
299 |
"http://ftp.gnome.org/pub/GNOME/sources/intltool/" || DIE=1 |
300 |
require_m4macro intltool.m4 |
301 |
fi |
302 |
|
303 |
if $want_pkg_config; then |
304 |
version_check pkg-config PKG_CONFIG pkg-config $REQUIRED_PKG_CONFIG_VERSION \ |
305 |
"'http://www.freedesktop.org/software/pkgconfig/releases/pkgconfig-$REQUIRED_PKG_CONFIG_VERSION.tar.gz" || DIE=1 |
306 |
require_m4macro pkg.m4 |
307 |
fi |
308 |
|
309 |
if $want_gtk_doc; then |
310 |
version_check gtk-doc GTKDOCIZE gtkdocize $REQUIRED_GTK_DOC_VERSION \ |
311 |
"http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/" || DIE=1 |
312 |
require_m4macro gtk-doc.m4 |
313 |
fi |
314 |
|
315 |
if [ "x$USE_COMMON_DOC_BUILD" = "xyes" ]; then |
316 |
version_check gnome-common DOC_COMMON gnome-doc-common \ |
317 |
$REQUIRED_DOC_COMMON_VERSION " " || DIE=1 |
318 |
fi |
319 |
|
320 |
check_m4macros || DIE=1 |
321 |
|
322 |
if [ "$DIE" -eq 1 ]; then |
323 |
exit 1 |
324 |
fi |
325 |
|
326 |
if test -z "$*"; then |
327 |
printerr "**Warning**: I am going to run \`configure' with no arguments." |
328 |
printerr "If you wish to pass any to it, please specify them on the" |
329 |
printerr \`$0\'" command line." |
330 |
printerr |
331 |
fi |
332 |
|
333 |
topdir=`pwd` |
334 |
for configure_ac in $configure_files; do |
335 |
dirname=`dirname $configure_ac` |
336 |
basename=`basename $configure_ac` |
337 |
if test -f $dirname/NO-AUTO-GEN; then |
338 |
echo skipping $dirname -- flagged as no auto-gen |
339 |
else |
340 |
printbold "Processing $configure_ac" |
341 |
cd $dirname |
342 |
|
343 |
# Note that the order these tools are called should match what |
344 |
# autoconf's "autoupdate" package does. See bug 138584 for |
345 |
# details. |
346 |
|
347 |
# programs that might install new macros get run before aclocal |
348 |
if grep "^A[CM]_PROG_LIBTOOL" $basename >/dev/null; then |
349 |
printbold "Running $LIBTOOLIZE..." |
350 |
$LIBTOOLIZE --force || exit 1 |
351 |
fi |
352 |
|
353 |
if grep "^AM_GLIB_GNU_GETTEXT" $basename >/dev/null; then |
354 |
printbold "Running $GLIB_GETTEXTIZE... Ignore non-fatal messages." |
355 |
echo "no" | $GLIB_GETTEXTIZE --force --copy || exit 1 |
356 |
# This is to copy in mkinstalldirs for glib-gettext |
357 |
if [ -x $AUTOMAKE_DIR/mkinstalldirs ]; then |
358 |
echo " copying mkinstalldirs... " |
359 |
cp -f $AUTOMAKE_DIR/mkinstalldirs $dirname |
360 |
fi |
361 |
elif grep "^AM_GNU_GETTEXT" $basename >/dev/null; then |
362 |
if grep "^AM_GNU_GETTEXT_VERSION" $basename > /dev/null; then |
363 |
printbold "Running autopoint..." |
364 |
autopoint --force || exit 1 |
365 |
else |
366 |
printbold "Running $GETTEXTIZE... Ignore non-fatal messages." |
367 |
echo "no" | $GETTEXTIZE --force --copy || exit 1 |
368 |
fi |
369 |
fi |
370 |
|
371 |
if grep "^AC_PROG_INTLTOOL" $basename >/dev/null; then |
372 |
printbold "Running $INTLTOOLIZE..." |
373 |
$INTLTOOLIZE --force --automake || exit 1 |
374 |
fi |
375 |
if grep "^GTK_DOC_CHECK" $basename >/dev/null; then |
376 |
printbold "Running $GTKDOCIZE..." |
377 |
$GTKDOCIZE || exit 1 |
378 |
fi |
379 |
|
380 |
if [ "x$USE_COMMON_DOC_BUILD" = "xyes" ]; then |
381 |
printbold "Running gnome-doc-common..." |
382 |
gnome-doc-common --copy || exit 1 |
383 |
fi |
384 |
|
385 |
# Now run aclocal to pull in any additional macros needed |
386 |
aclocalinclude="$ACLOCAL_FLAGS" |
387 |
printbold "Running $ACLOCAL..." |
388 |
$ACLOCAL $aclocalinclude || exit 1 |
389 |
|
390 |
if grep "GNOME_AUTOGEN_OBSOLETE" aclocal.m4 >/dev/null; then |
391 |
printerr "*** obsolete gnome macros were used in $configure_ac" |
392 |
fi |
393 |
|
394 |
# Now that all the macros are sorted, run autoconf and autoheader ... |
395 |
printbold "Running $AUTOCONF..." |
396 |
$AUTOCONF || exit 1 |
397 |
if grep "^A[CM]_CONFIG_HEADER" $basename >/dev/null; then |
398 |
printbold "Running $AUTOHEADER..." |
399 |
$AUTOHEADER || exit 1 |
400 |
# this prevents automake from thinking config.h.in is out of |
401 |
# date, since autoheader doesn't touch the file if it doesn't |
402 |
# change. |
403 |
test -f config.h.in && touch config.h.in |
404 |
fi |
405 |
|
406 |
# Finally, run automake to create the makefiles ... |
407 |
printbold "Running $AUTOMAKE..." |
408 |
$AUTOMAKE --gnu --add-missing || exit 1 |
409 |
|
410 |
cd "$topdir" |
411 |
fi |
412 |
done |
413 |
|
414 |
conf_flags="--enable-maintainer-mode" |
415 |
|
416 |
if test x$NOCONFIGURE = x; then |
417 |
printbold Running $srcdir/configure $conf_flags "$@" ... |
418 |
$srcdir/configure $conf_flags "$@" \ |
419 |
&& echo Now type \`make\' to compile $PKG_NAME || exit 1 |
420 |
else |
421 |
echo Skipping configure process. |
422 |
fi |