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

3
4
##  bootstrap file for vlc, the VideoLAN Client
##  $Id: bootstrap,v 1.14 2002/09/30 11:05:32 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
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
152
153
154
155
156
157
##
## 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

##
## 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
    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
        echo "AC_SUBST(CXXFLAGS_${mod})" >> configure.ac; fi
    if echo "$ALL_FLAGS" | grep '^OBJCFLAGS_'${mod}'=$' >/dev/null 2>&1; then
        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
# L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_
# _p is for _plugin, _b is for _builtin
    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)
${PRIVATE}	\$(CC) \$^ -o \$@ -shared \$(LDFLAGS) \$(LDFLAGS_plugins) \$(LDFLAGS_${mod})


EOF
  done
done

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

echo "done."

158
###
159
###  classic bootstrap stuff
160
###
161
162
set -x
rm -f aclocal.m4 configure config.guess config.log config.sub ltmain.sh libtool ltconfig missing mkinstalldirs depcomp install-sh
163

164
# Check for gettext
165
if gettextize --version >/dev/null 2>&1
166
167
then
if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
168
169
        '>' 0.11.3 >/dev/null 2>&1
then
170
  # We have gettext, and a recent version! Everything is cool.
171
  autopoint --force || exit 1
172
  GETTEXT=yes
173
174
175
176
else
  # What?! User is not using a recent version of gettext? We'll have to
  # cheat a bit, then.
  rm -f po/ChangeLog~
177
  gettextize --copy --force | grep '^from the' | cut -f3 -d' '
178
  test -f po/ChangeLog~ && mv -f po/ChangeLog~ po/ChangeLog
179
  # Yuck!
180
181
  mkdir -p intl
  test -f intl/Makefile.am || echo > intl/Makefile.am
182
  # Yuck!
183
  echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
184
185
186
  GETTEXT=old
fi;else
  # we don't have gettext. grmbl. try to continue anyway.
187
188
  mkdir -p intl
  echo > intl/Makefile.am
189
  echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
190
  GETTEXT=no
191
fi
192

193
# Check for automake
194
amvers="none"
195
196
if automake-1.6 --version >/dev/null 2>&1
then
197
  amvers="-1.6"
198
else
199
200
201
202
203
204
  if automake-1.5 --version >/dev/null 2>&1
  then
    amvers="-1.5"
  else
    if automake --version > /dev/null 2>&1
    then
205
      amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
206
207
208
209
210
211
212
213
214
215
216

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

if test x$amvers = xnone
then
217
218
  set +x
  echo "you need automake version 1.5 or later"
219
  exit 1
220
fi
221
222

# Do the rest
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
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
247

248
autoconf || exit 1
249
250

##
251
##  Shut up
252
##
253
set +x
254

255
256
257
258
259
260
261
262
263
##
##  headers which need to be regenerated because of the VLC_EXPORT macro
##
files="src/misc/modules_builtin.h src/misc/modules_plugin.h include/vlc_symbols.h"
for file in src/misc/modules_builtin.h src/misc/modules_plugin.h include/vlc_symbols.h mozilla/vlcintf.h
do
  echo "touching $file"
  echo > $file
done
264
265
266
267

##
##  Glade sometimes sucks
##
268
echo "workarounds for annoying glade features"
269
270
for file in gnome_interface.c gtk_interface.c
do
271
if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
272
273
274
then
    rm -f /tmp/$$.$file.bak
    cat > /tmp/$$.$file.bak << EOF
275
/* This file was created automatically by glade and fixed by bootstrap */
276
277
278

#include <vlc/vlc.h>
EOF
279
280
281
282
283
284
285
    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
286
    mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
287
288
289
290
fi
done

file=gtk_support.h
291
if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
292
293
then
    rm -f /tmp/$$.$file.bak
294
    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
295
    mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
296
297
298
299
300
fi

##
##  Update the potfiles because no one ever does it
##
301
302
303
304
305
306
307
308
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
309

310
##
311
##  Tell the user about gettext and sed
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
##
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

331
332
333
334
335
336
337
338
339
340
341
342
343
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