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

3
##  bootstrap file for vlc, the VideoLAN Client
4
##  $Id: bootstrap,v 1.19 2002/10/16 15:10:38 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
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
152
153
154
155
    cat >> Modules.am << EOF
# The ${mod} plugin

if ${mod}_plugin
L_${mod}_p = ${dir}/lib${mod}_plugin.a
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)

${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}
MOSTLYCLEANFILES += \$(D_${mod}_p)
${PRIVATE}noinst_LIBRARIES += \$(L_${mod}_p)
${PRIVATE}${dir}/lib${mod}_plugin\$(LIBEXT): \$(${sym}_lib${mod}_plugin_a_OBJECTS)
156
${PRIVATE}	\$(${LINKER}) \$^ -o \$@ -shared \$(LDFLAGS_plugins) \$(LDFLAGS_${mod})
157
158
159
160
161
162
163
164
165
166


EOF
  done
done

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

echo "done."

167
###
168
###  classic bootstrap stuff
169
###
170
171
set -x
rm -f aclocal.m4 configure config.guess config.log config.sub ltmain.sh libtool ltconfig missing mkinstalldirs depcomp install-sh
172
rm -Rf intl
173

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

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

      if expr "$amvers" "<" "1.5" > /dev/null 2>&1
      then amvers="none"
      else amvers=""
      fi
    fi
  fi
fi

if test x$amvers = xnone
then
228
229
  set +x
  echo "you need automake version 1.5 or later"
230
  exit 1
231
fi
232
233

# Do the rest
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
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
258

259
autoconf || exit 1
260
261

##
262
##  headers which need to be regenerated
263
##
264
265
266
rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
rm -f include/vlc_symbols.h
rm -f mozilla/vlcintf.h
267

268
##
269
##  Shut up
270
##
271
set +x
272
273
274
275

##
##  Glade sometimes sucks
##
276
echo "workarounds for annoying glade features"
277
278
for file in gnome_interface.c gtk_interface.c
do
279
if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
280
281
282
then
    rm -f /tmp/$$.$file.bak
    cat > /tmp/$$.$file.bak << EOF
283
/* This file was created automatically by glade and fixed by bootstrap */
284
285
286

#include <vlc/vlc.h>
EOF
287
288
289
290
291
292
293
    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
294
    mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
295
296
297
298
fi
done

file=gtk_support.h
299
if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
300
301
then
    rm -f /tmp/$$.$file.bak
302
    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
303
    mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
304
305
306
307
308
fi

##
##  Update the potfiles because no one ever does it
##
309
310
311
312
313
314
315
316
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
317

318
##
319
##  Tell the user about gettext and sed
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
##
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

339
340
341
342
343
344
345
346
347
348
349
350
351
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

352
353
354
355
356
357
358
359
360
361
362
363
364
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