bootstrap 11.3 KB
Newer Older
1
2
#! /bin/sh

3
##  bootstrap file for vlc, the VideoLAN Client
4
##  $Id: bootstrap,v 1.23 2002/11/04 18:27:30 sam Exp $
5
6
7
##
##  Authors: Samuel Hocevar <sam@zoy.org>

8
9
10
###
###  get a sane environment
###
11
12
LANG=C
export LANG
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

###
###  argument check
###
do_po=no
while test $# -gt 0; do
  case "$1" in
    --update-po)
      do_po=yes
      ;;
    *)
      echo "unknown option $1"
      ;;
  esac
  shift
done

30
31
32
33
34
35
36
37
38
39
##
## Check that our tools don't suck
##
SEDSUCKS=no
if test ! 20000 -eq `perl -e 'printf "%s\n","a"x20000' | sed -e 's/.//' 2>/dev/null | wc -c`
then
  SEDSUCKS=yes
fi

PERLSUCKS=no
40
AUTOMAKESUCKS=no
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

##
## Generate the modules makefile, by parsing modules/**/Modules.am
##

printf "generating Modules.am and configure.ac"

echo > Modules.am
echo > configure.ac

ALL_FLAGS="`sed -n -e '/^[^=A-Z]*[A-Z]*FLAGS_[^=]*=/s/[^=A-Z]*\([A-Z]*FLAGS_[^=]*=\).*/\1/p' < configure.ac.in | sort | uniq`"

cat >> configure.ac << EOF
dnl ################################################################
dnl # Do not edit this file, it was generated from configure.ac.in #
dnl ################################################################

EOF
sed -n -e '/dnl do not touch this line/q;p' < configure.ac.in >> configure.ac

modules=""
for mf in `sed -ne 's@[^a-z]*\([^ ]*\)am.*@modules/\1am@p' < modules/Makefile.am`
do
  printf "."
  dir=`echo ${mf} | sed -e 's@\(.*\)/.*@\1@'`
  topdir=`echo ${dir} | cut -f2 -d/`
  sym=`echo ${dir} | sed -e 'y@/@_@'`
  cat >> Modules.am << EOF
# Directory ${dir}

include ${dir}/Modules.am

EOF
  sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf} | while read mod
  do
76
    LINKER="LINK"
77
78
79
80
81
    if echo "$ALL_FLAGS" | grep '^CPPFLAGS_'${mod}'=$' >/dev/null 2>&1; then
        echo "AC_SUBST(CPPFLAGS_${mod})" >> configure.ac; fi
    if echo "$ALL_FLAGS" | grep '^CFLAGS_'${mod}'=$' >/dev/null 2>&1; then
        echo "AC_SUBST(CFLAGS_${mod})" >> configure.ac; fi
    if echo "$ALL_FLAGS" | grep '^CXXFLAGS_'${mod}'=$' >/dev/null 2>&1; then
82
        LINKER="CXXLINK"
83
84
        echo "AC_SUBST(CXXFLAGS_${mod})" >> configure.ac; fi
    if echo "$ALL_FLAGS" | grep '^OBJCFLAGS_'${mod}'=$' >/dev/null 2>&1; then
85
        LINKER="OBJCLINK"
86
87
88
89
90
91
92
93
94
95
96
97
98
        echo "AC_SUBST(OBJCFLAGS_${mod})" >> configure.ac; fi
    if echo "$ALL_FLAGS" | grep '^LDFLAGS_'${mod}'=$' >/dev/null 2>&1; then
        echo "AC_SUBST(LDFLAGS_${mod})" >> configure.ac; fi
    if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
        PRIVATE='#'; else
        PRIVATE=''; fi
    if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
        NODIST=''; else
        NODIST='#'; fi
    cat >> configure.ac << EOF
AM_CONDITIONAL(${mod}_plugin, test x\$${mod}_plugin = xyes)
AM_CONDITIONAL(${mod}_builtin, test x\$${mod}_builtin = xyes)
EOF
99
100
101
102
103
104
105
# Generation of Modules.am
# ~~~~~~~~~~~~~~~~~~~~~~~~
# - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
#   S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
#   the resulting file size.
# - *_CFLAGS, *_CXXFLAGS etc. include *_CPPFLAGS because per-object CPPFLAGS
#   does not seem to work properly with any automake version I tested.
106
107
108
109
    cat >> Modules.am << EOF
# The ${mod} plugin

if ${mod}_plugin
110
if UNTRUE
111
L_${mod}_p = ${dir}/lib${mod}_plugin.a
112
endif
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
D_${mod}_p = ${dir}/lib${mod}_plugin\$(LIBEXT)
${NODIST}B_${mod}_p = \$(nodist_SOURCES_${mod})
endif
if ${mod}_builtin
L_${mod}_b = ${dir}/lib${mod}.a
F_${mod}_b = \$(LDFLAGS_${mod})
if BUILD_MOZILLA
L_${mod}_pic = ${dir}/lib${mod}_pic.a
endif
${NODIST}B_${mod}_b = \$(nodist_SOURCES_${mod})
endif

L_builtin += \$(L_${mod}_b)
L_builtin_pic += \$(L_${mod}_pic)
LDFLAGS_builtin += \$(F_${mod}_b)
${PRIVATE}BUILT_SOURCES += \$(B_${mod}_p) \$(B_${mod}_b)
129
PLUGIN_FILES += \$(D_${mod}_p)
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157

${PRIVATE}${sym}_lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
${NODIST}${PRIVATE}nodist_${sym}_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
${sym}_lib${mod}_plugin_a_CPPFLAGS = \$(CPPFLAGS_plugin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
${sym}_lib${mod}_plugin_a_CFLAGS = \$(CFLAGS_plugin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
${sym}_lib${mod}_plugin_a_CXXFLAGS = \$(CXXFLAGS_plugin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
${sym}_lib${mod}_plugin_a_OBJCFLAGS = \$(OBJCFLAGS_plugin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)

${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
${NODIST}nodist_${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
${sym}_lib${mod}_pic_a_CPPFLAGS = \$(CPPFLAGS_builtin_pic) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
${sym}_lib${mod}_pic_a_CFLAGS = \$(CFLAGS_builtin_pic) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
${sym}_lib${mod}_pic_a_CXXFLAGS = \$(CXXFLAGS_builtin_pic) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
${sym}_lib${mod}_pic_a_OBJCFLAGS = \$(OBJCFLAGS_builtin_pic) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)

${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
${NODIST}nodist_${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
${sym}_lib${mod}_a_CPPFLAGS = \$(CPPFLAGS_builtin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
${sym}_lib${mod}_a_CFLAGS = \$(CFLAGS_builtin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
${sym}_lib${mod}_a_CXXFLAGS = \$(CXXFLAGS_builtin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
${sym}_lib${mod}_a_OBJCFLAGS = \$(OBJCFLAGS_builtin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)

libvlc_LIBRARIES += \$(L_${mod}_b) \$(L_${mod}_pic)
lib${mod}_DATA = \$(D_${mod}_p)

lib${mod}dir = \$(libdir)/vlc/${topdir}
${PRIVATE}noinst_LIBRARIES += \$(L_${mod}_p)
${PRIVATE}${dir}/lib${mod}_plugin\$(LIBEXT): \$(${sym}_lib${mod}_plugin_a_OBJECTS)
158
${PRIVATE}	\$(${LINKER}) \$^ -shared \$(LDFLAGS_plugins) \$(LDFLAGS_${mod})
159
160
161
162
163
164


EOF
  done
done

165
echo "AM_CONDITIONAL(UNTRUE, false)" >> configure.ac
166
167
168
169
sed -n -e '/dnl do not touch this line/,//p' < configure.ac.in >> configure.ac

echo "done."

170
###
171
###  classic bootstrap stuff
172
###
173
set -x
174
rm -f aclocal.m4 m4/oldgettext.m4 configure config.guess config.log config.sub ltmain.sh libtool ltconfig missing mkinstalldirs depcomp install-sh
175
rm -Rf intl
176

177
# Check for gettext
178
if gettextize --version >/dev/null 2>&1
179
180
then
if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
181
        '>' 0.11.2 >/dev/null 2>&1
182
then
183
  # We have gettext, and a recent version! Everything is cool.
184
  autopoint || exit 1
185
  GETTEXT=yes
186
else
187
  # User's gettext is too old. try to continue anyway.
188
  mkdir -p intl
189
  echo > intl/Makefile.am
190
  echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
191
192
193
  GETTEXT=old
fi;else
  # we don't have gettext. grmbl. try to continue anyway.
194
195
  mkdir -p intl
  echo > intl/Makefile.am
196
  echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
197
  GETTEXT=no
198
fi
199

200
# Check for automake
201
amvers="none"
202
if automake-1.7 --version >/dev/null 2>&1
203
then
204
  amvers="-1.7"
205
else
206
  if automake-1.6 --version >/dev/null 2>&1
207
  then
208
209
210
211
    amvers="-1.6"
    if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
    then AUTOMAKESUCKS=yes
    fi
212
  else
213
    if automake-1.5 --version >/dev/null 2>&1
214
    then
215
216
217
218
219
220
221
222
223
224
225
226
227
228
      amvers="-1.5"
    else
      if automake --version > /dev/null 2>&1
      then
        amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
        case $amvers in
        1.6|1.6.0|1.6.1)
          AUTOMAKESUCKS=yes ;;
        esac

        if expr "$amvers" "<" "1.5" > /dev/null 2>&1
        then amvers="none"
        else amvers=""
        fi
229
230
231
232
233
234
235
      fi
    fi
  fi
fi

if test x$amvers = xnone
then
236
237
  set +x
  echo "you need automake version 1.5 or later"
238
  exit 1
239
fi
240
241

# Do the rest
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
aclocal${amvers} -I m4 || exit 1
autoheader || exit 1

automake${amvers} --foreign --add-missing --copy || PERLSUCKS=yes

case "$PERLSUCKS" in
  no)
  ;;
  yes)
    set +x
    echo ""
    echo "==========================================================="
    echo "IMPORTANT NOTE: automake failed. On certain systems this is"
    echo "because of insufficient stack size. Please set the stack"
    echo "size to something bigger or unlimited (\`unlimit stacksize')"
    echo "and try again."
    exit 1
  ;;
esac

# Wrap automake's long lines, because the Solaris sed doesn't support lines
# longer than 3999 characters, and ./configure calls sed. We use Perl instead
# of sed for obvious reasons :)
perl -ne 'if(/^.{500}/) {s/(.{200}[^ ]* )/$1\\\n\t/g} print $_' < Makefile.in > Makefile.in.tmp && mv Makefile.in.tmp Makefile.in
266

267
autoconf || exit 1
268
269

##
270
##  headers which need to be regenerated
271
##
272
273
274
rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
rm -f include/vlc_symbols.h
rm -f mozilla/vlcintf.h
275

276
##
277
##  Shut up
278
##
279
set +x
280
281
282
283

##
##  Glade sometimes sucks
##
284
echo "workarounds for annoying glade features"
285
286
for file in gnome_interface.c gtk_interface.c
do
287
if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
288
289
290
then
    rm -f /tmp/$$.$file.bak
    cat > /tmp/$$.$file.bak << EOF
291
/* This file was created automatically by glade and fixed by bootstrap */
292
293
294

#include <vlc/vlc.h>
EOF
295
296
297
298
299
300
301
    sed -e 1,7d \
        -e 's#_("-:--:--")#"-:--:--"#' \
        -e 's#_("---")#"---"#' \
        -e 's#_("--")#"--"#' \
        -e 's#_("/dev/dvd")#"/dev/dvd"#' \
        -e 's#_(\("./."\))#\1#' \
	< modules/gui/gtk/$file >> /tmp/$$.$file.bak
302
    mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
303
304
305
306
fi
done

file=gtk_support.h
307
if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
308
309
then
    rm -f /tmp/$$.$file.bak
310
    sed -e 's/DO NOT EDIT THIS FILE.*/This file was created automatically by glade and fixed by bootstrap/ ; s/#if.*ENABLE_NLS.*/#if defined( ENABLE_NLS ) \&\& defined ( HAVE_GETTEXT )/' < modules/gui/gtk/$file > /tmp/$$.$file.bak
311
    mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
312
313
314
315
316
fi

##
##  Update the potfiles because no one ever does it
##
317
318
319
320
321
322
323
324
if test "$do_po" = "no"
then
  echo "not updating potfiles. use --update-po to force doing it."
else
  cd po
  make update-po 2>&1 | grep '^[^:]*:$' | cut -f1 -d: | tr '\n' ' ' | sed 's/ $//'
  cd ..
fi
325

326
##
327
##  Tell the user about gettext and sed
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
##
case "$GETTEXT" in
  yes)
  ;;
  no)
    echo ""
    echo "==========================================================="
    echo "IMPORTANT NOTE: you do not have gettext installed on your"
    echo "system. The vlc build will work, but you will not have"
    echo "internationalization support. We suggest installing gettext."
  ;;
  old)
    echo ""
    echo "=========================================================="
    echo "NOTE: you have an old version of gettext installed on your"
    echo "system. We suggest upgrading to gettext 0.11.3 or later."
  ;;
esac

347
348
349
350
351
352
353
354
355
356
357
358
359
case "$AUTOMAKESUCKS" in
  no)
  ;;
  yes)
    echo ""
    echo "============================================================="
    echo "IMPORTANT NOTE: your version of automake has a bug which will"
    echo "prevent proper plugin compilation. Either compile VLC with"
    echo "the --disable-plugins flag, or use a version of automake newer"
    echo "than 1.6.1 (1.6.2 is OK, and so are the 1.5 series)."
  ;;
esac

360
361
362
363
364
365
366
367
368
369
370
371
372
case "$SEDSUCKS" in
  no)
  ;;
  yes)
    echo ""
    echo "============================================================="
    echo "IMPORTANT NOTE: the version of 'sed' on your system is unable"
    echo "to handle long lines. bootstrap will try its best to generate"
    echo "a correct Makefile, but you should expect problems. We highly"
    echo "recommend installing GNU sed."
  ;;
esac