Added stream output. (common work with titer).
[vlc.git] / bootstrap
1 #! /bin/sh
2
3 ##  bootstrap file for vlc, the VideoLAN Client
4 ##  $Id: bootstrap,v 1.33 2002/11/21 13:53:31 sam Exp $
5 ##
6 ##  Authors: Samuel Hocevar <sam@zoy.org>
7
8 ###
9 ###  Get a sane environment, just in case
10 ###
11 LANG=C
12 export LANG
13 CYGWIN=binmode
14 export CYGWIN
15
16 ##
17 ##  Give help
18 ##
19 help()
20 {
21   if test "$do_help" = "yes"
22   then
23     cat << EOF
24 recognized flags are:
25   --config        create Makefile and configure scripts (read HACKING)
26   --update-vc     update Microsoft Visual Studio files
27   --update-po     update translation files
28 EOF
29     exit 1
30   fi
31 }
32
33 ###
34 ###  argument check
35 ###
36 test "$EMAIL" = "sam@zoy.org" && do_help=yes || do_help=no
37 do_po=no
38 do_vc=no
39 while test $# -gt 0; do
40   case "$1" in
41     --config)
42       do_help=no
43       ;;
44     --update-vc)
45       do_help=no
46       do_vc=yes
47       ;;
48     --update-po)
49       do_help=no
50       do_po=yes
51       ;;
52     *)
53       echo "$0: unknown option $1"
54       do_help=yes
55       help
56       ;;
57   esac
58   shift
59 done
60
61 ##
62 ##  Give help if needed
63 ##
64 help
65
66 ##
67 ##  Update the MSVC project files
68 ##
69 if test "$do_vc" = "yes"
70 then
71   if test ! -f Makefile
72   then
73     echo "no Makefile found, did you run ./configure?"
74     exit 1
75   fi
76
77   echo "generating Visual Studio files..."
78
79   #  The evil ^M
80   M='\r'
81
82   #  Sources that get built under Win32 - FIXME: anyone wanna deuglify this? :)
83   LIBVLC_SOURCES=`awk 'BEGIN{a=0}{if(!a&&/^'SOURCES_libvlc_common'[^-_a-zA-Z0-9]*=/){a=1;print$0;next;}if(a){if(/^[a-zA-Z]/){exit;}print $0}}' < Makefile.am | tr '\\ ' '\n\n' | sed -ne 's/[^$-_a-zA-Z0-9][^$-_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p';  awk 'BEGIN{a=0}{if(!a&&/^'SOURCES_libvlc_win32'[^-_a-zA-Z0-9]*=/){a=1;print$0;next;}if(a){if(/^[a-zA-Z]/){exit;}print $0}}' < Makefile.am | tr '\\ ' '\n\n' | sed -ne 's/[^$-_a-zA-Z0-9][^$-_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p'; awk 'BEGIN{a=0}{if(!a&&/^'SOURCES_libvlc_dirent'[^-_a-zA-Z0-9]*=/){a=1;print$0;next;}if(a){if(/^[a-zA-Z]/){exit;}print $0}}' < Makefile.am | tr '\\ ' '\n\n' | sed -ne 's/[^$-_a-zA-Z0-9][^$-_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p'; awk 'BEGIN{a=0}{if(!a&&/^'SOURCES_libvlc_getopt'[^-_a-zA-Z0-9]*=/){a=1;print$0;next;}if(a){if(/^[a-zA-Z]/){exit;}print $0}}' < Makefile.am | tr '\\ ' '\n\n' | sed -ne 's/[^$-_a-zA-Z0-9][^$-_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p'; awk 'BEGIN{a=0}{if(!a&&/^'SOURCES_libvlc_libc'[^-_a-zA-Z0-9]*=/){a=1;print$0;next;}if(a){if(/^[a-zA-Z]/){exit;}print $0}}' < Makefile.am | tr '\\ ' '\n\n' | sed -ne 's/[^$-_a-zA-Z0-9][^$-_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p'`
84
85   LIBVLC_HEADERS=`awk 'BEGIN{a=0}{if(!a&&/^'HEADERS_include'[^-_a-zA-Z0-9]*=/){a=1;print$0;next;}if(a){if(/^[a-zA-Z]/){exit;}print $0}}' < Makefile.am | tr '\\ ' '\n\n' | sed -ne 's/[^$-_a-zA-Z0-9][^$-_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p'; awk 'BEGIN{a=0}{if(!a&&/^'HEADERS_include_built'[^-_a-zA-Z0-9]*=/){a=1;print$0;next;}if(a){if(/^[a-zA-Z]/){exit;}print $0}}' < Makefile.am | tr '\\ ' '\n\n' | sed -ne 's/[^$-_a-zA-Z0-9][^$-_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p'`
86
87   LIBVLC_PKG_HEADERS=`awk 'BEGIN{a=0}{if(!a&&/^'dist_pkginclude_HEADERS'[^-_a-zA-Z0-9]*=/){a=1;print$0;next;}if(a){if(/^[a-zA-Z]/){exit;}print $0}}' < Makefile.am | tr '\\ ' '\n\n' | sed -ne 's/[^$-_a-zA-Z0-9][^$-_a-zA-Z0-9]*\([a-zA-Z]\)/\1/p'`
88
89   # Clean up
90   rm -f evc/*.vcp msvc/*.dsp
91
92   # libvlc files
93   for target in evc/libvlc.vcp msvc/libvlc.dsp
94   do
95     echo "${target}"
96     #  Top of the project file
97     perl -pe 'if(/§SOURCES§/){last;}' < ${target}.in > ${target}
98     #  The source files
99     for file in `for i in ${LIBVLC_SOURCES} ; do echo $i ; done | grep -v "/.*/"`
100     do
101       cat >> ${target} << EOF
102 # Begin Source File${M}
103 SOURCE="..\\`echo $file | sed -e 's%/%\\\\%g'`"${M}
104 # ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\"plugins\\" /D DATA_PATH=\\"share\\"${M}
105 # End Source File${M}
106 EOF
107     done
108     for subdir in `for i in ${LIBVLC_SOURCES} ; do echo $i ; done | grep "/.*/" | cut -f2 -d/ | sort | uniq`
109     do
110       cat >> ${target} << EOF
111 # Begin Group "${subdir}"${M}
112 EOF
113       for file in `for i in ${LIBVLC_SOURCES} ; do echo $i ; done | grep "/${subdir}/"`
114       do
115       if test "${target}" = "evc/libvlc.vcp"
116       then
117         cat >> ${target} << EOF
118 # Begin Source File${M}
119 SOURCE="..\\`echo $file | sed -e 's%/%\\\\%g'`"${M}
120 # ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\"plugins\\" /D DATA_PATH=\\"share\\"${M}
121 !IF "\$(CFG)" == "libvlc - Win32 (WCE MIPS) Release"${M}
122 # PROP Output_Dir "MIPSRel\\${subdir}"${M}
123 # PROP Intermediate_Dir "MIPSRel\\${subdir}"${M}
124 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE MIPS) Debug"${M}
125 # PROP Output_Dir "MIPSDbg\\${subdir}"${M}
126 # PROP Intermediate_Dir "MIPSDbg\\${subdir}"${M}
127 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH4) Release"${M}
128 # PROP Output_Dir "SH4Rel\\${subdir}"${M}
129 # PROP Intermediate_Dir "SH4Rel\\${subdir}"${M}
130 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH4) Debug"${M}
131 # PROP Output_Dir "SH4Dbg\\${subdir}"${M}
132 # PROP Intermediate_Dir "SH4Dbg\\${subdir}"${M}
133 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH3) Release"${M}
134 # PROP Output_Dir "SH3Rel\\${subdir}"${M}
135 # PROP Intermediate_Dir "SH3Rel\\${subdir}"${M}
136 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE SH3) Debug"${M}
137 # PROP Output_Dir "SH3Dbg\\${subdir}"${M}
138 # PROP Intermediate_Dir "SH3Dbg\\${subdir}"${M}
139 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE ARM) Release"${M}
140 # PROP Output_Dir "ARMRel\\${subdir}"${M}
141 # PROP Intermediate_Dir "ARMRel\\${subdir}"${M}
142 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE ARM) Debug"${M}
143 # PROP Output_Dir "ARMDbg\\${subdir}"${M}
144 # PROP Intermediate_Dir "ARMDbg\\${subdir}"${M}
145 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE x86em) Release"${M}
146 # PROP Output_Dir "X86EMRel\\${subdir}"${M}
147 # PROP Intermediate_Dir "X86EMRel\\${subdir}"${M}
148 !ELSEIF "\$(CFG)" == "libvlc - Win32 (WCE x86em) Debug"${M}
149 # PROP Output_Dir "X86EMDbg\\${subdir}"${M}
150 # PROP Intermediate_Dir "X86EMDbg\\${subdir}"${M}
151 !ENDIF${M}
152 # End Source File${M}
153 EOF
154         else
155           cat >> ${target} << EOF
156 # Begin Source File${M}
157 SOURCE="..\\`echo $file | sed -e 's%/%\\\\%g'`"${M}
158 # ADD CPP /D "__VLC__" /D PLUGIN_PATH=\\"plugins\\" /D DATA_PATH=\\"share\\"${M}
159 !IF "\$(CFG)" == "libvlc - Win32 Release"${M}
160 # PROP Output_Dir "Release\\${subdir}"${M}
161 # PROP Intermediate_Dir "Release\\${subdir}"${M}
162 !ELSEIF "\$(CFG)" == "libvlc - Win32 Debug"${M}
163 # PROP Output_Dir "Debug\\${subdir}"${M}
164 # PROP Intermediate_Dir "Debug\\${subdir}"${M}
165 !ENDIF${M}
166 # End Source File${M}
167 EOF
168         fi
169       done
170       cat >> ${target} << EOF
171 # End Group${M}
172 EOF
173     done
174     #  The headers
175     perl -e 'while(<>){if(/§SOURCES§/){last;}}while(<>){if(/§HEADERS§/){last;}print $_}' < ${target}.in >> ${target}
176     for file in ${LIBVLC_HEADERS}
177     do
178       cat >> ${target} << EOF
179 # Begin Source File${M}
180 SOURCE="..\\`echo $file | sed -e 's%/%\\\\%g'`"${M}
181 # End Source File${M}
182 EOF
183     done
184     cat >> ${target} << EOF
185 # Begin Group "vlc"${M}
186 EOF
187     for file in ${LIBVLC_PKG_HEADERS}
188     do
189       cat >> ${target} << EOF
190 # Begin Source File${M}
191 SOURCE="..\\`echo $file | sed -e 's%/%\\\\%g'`"${M}
192 # End Source File${M}
193 EOF
194     done
195     cat >> ${target} << EOF
196 # End Group${M}
197 EOF
198     perl -e 'while(<>){if(/§HEADERS§/){last;}}while(<>){print $_}' < ${target}.in >> ${target}
199   done
200
201   # plugins files
202   grep '^L_[^ ]*_pic =' Modules.am | while read a b c
203   do
204     makefile="`echo $c | sed -e 's@/[^/]*$@/Modules.am@'`"
205     plugin="`echo $a | sed 's/L_\(.*\)_pic/\1/'`"
206     # this is an attempt at getting a list of plugin sources... we take the
207     # production and remove everything that does not contain "module", which
208     # means you miss $(NULL), but other variables too.
209     cfiles=`grep -v '[^-_a-zA-Z0-9]*#' ${makefile} | awk 'BEGIN{a=0}{if(!a&&/^SOURCES_'${plugin}'[^-_a-zA-Z0-9]*=/){a=1;print$0;next;}if(a){if(/^[a-zA-Z]/){exit;}print $0}}' | tr '\\ ' '\n\n' | sed -ne 's,/,\\\\,g; s/.*modules/modules/p'`
210     hfiles=`for i in ${cfiles} ; do echo $i ; done | grep '\.h$'`
211     cfiles=`for i in ${cfiles} ; do echo $i ; done | grep -v '\.h$'`
212     for dir in evc msvc
213     do
214       test "${dir}" = "evc" && suf="vcp" || suf="dsp"
215       source="${dir}/plugins.${suf}.in"
216       target="${dir}/plugin_${plugin}.${suf}"
217       echo "${target}"
218       perl -pe 'if(/§SOURCES§/){last;} s/§PLUGIN§/'${plugin}'/g' < ${source} > ${target}
219       for cfile in ${cfiles}
220       do
221         cat >> ${target} << EOF
222 # Begin Source File${M}
223 SOURCE="..\\${cfile}"${M}
224 # End Source File${M}
225 EOF
226       done
227       # sed is really nicer for this... unfortunately it's broken under cygwin
228       # sed -ne '1,/§SOURCES§/d; /§HEADERS§/,$d; p' < ${source} >> ${target}
229       perl -e 'while(<>){if(/§SOURCES§/){last;}}while(<>){if(/§HEADERS§/){last;}print $_}' < ${source} >> ${target}
230       for hfile in ${hfiles}
231       do
232         cat >> ${target} << EOF
233 # Begin Source File${M}
234 SOURCE="..\\${hfile}"${M}
235 # End Source File${M}
236 EOF
237       done
238       # sed -ne '1,/§HEADERS§/d; p' < ${source} >> ${target}
239       perl -e 'while(<>){if(/§HEADERS§/){last;}}while(<>){print $_}' < ${source} >> ${target}
240     done
241   done
242
243   # vlc files
244   for target in evc/vlc.vcp msvc/vlc.dsp
245   do
246     echo "${target}"
247     #  Top of the project file
248     perl -pe 'if(/§SOURCES§/){last;}' < ${target}.in > ${target}
249     #  The source files
250     if test "${target}" = "evc/vlc.vcp"
251     then
252       cat >> ${target} << EOF
253 # Begin Source File${M}
254 SOURCE="..\\evc\\vlc.c"${M}
255 # End Source File${M}
256 EOF
257     else
258       cat >> ${target} << EOF
259 # Begin Source File${M}
260 SOURCE="..\\src\\vlc.c"${M}
261 # End Source File${M}
262 EOF
263     fi
264     #  Bottom of the project file - handles resource files too
265     perl -e 'while(<>){if(/§SOURCES§/){last;}}while(<>){print $_}' < ${target}.in >> ${target}
266   done
267
268   echo "done."
269   exit 0
270 fi
271
272 ##
273 ##  Update the potfiles because no one ever does it
274 ##
275 if test "$do_po" = "yes"
276 then
277   cd po
278   make update-po #2>&1 | grep '^[^:]*:$' | cut -f1 -d: | tr '\n' ' ' | sed 's/ $//'
279   cd ..
280
281   exit 0
282 fi
283
284 ##
285 ## Check that our tools don't suck
286 ##
287 SEDSUCKS=no
288 if test ! 20000 -eq `perl -e 'printf "%s\n","a"x20000' | sed -e 's/.//' 2>/dev/null | wc -c`
289 then
290   SEDSUCKS=yes
291 fi
292
293 PERLSUCKS=no
294 AUTOMAKESUCKS=no
295
296 ##
297 ## Generate the modules makefile, by parsing modules/**/Modules.am
298 ##
299
300 printf "generating Modules.am and configure.ac"
301
302 echo > Modules.am
303 echo > configure.ac
304
305 ALL_FLAGS="`sed -n -e '/^[^=A-Z]*[A-Z]*FLAGS_[^=]*=/s/[^=A-Z]*\([A-Z]*FLAGS_[^=]*=\).*/\1/p' < configure.ac.in | sort | uniq`"
306
307 cat >> configure.ac << EOF
308 dnl ################################################################
309 dnl # Do not edit this file, it was generated from configure.ac.in #
310 dnl ################################################################
311
312 EOF
313 sed -n -e '/dnl do not touch this line/q;p' < configure.ac.in >> configure.ac
314
315 modules=""
316 for mf in `sed -ne 's@[^a-z]*\([^ ]*\)am.*@modules/\1am@p' < modules/Makefile.am`
317 do
318   printf "."
319   dir=`echo ${mf} | sed -e 's@\(.*\)/.*@\1@'`
320   topdir=`echo ${dir} | cut -f2 -d/`
321   sym=`echo ${dir} | sed -e 'y@/@_@'`
322   cat >> Modules.am << EOF
323 # Directory ${dir}
324
325 include ${dir}/Modules.am
326
327 EOF
328   sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf} | while read mod
329   do
330     LINKER="LINK"
331     if echo "$ALL_FLAGS" | grep '^CPPFLAGS_'${mod}'=$' >/dev/null 2>&1; then
332         echo "AC_SUBST(CPPFLAGS_${mod})" >> configure.ac; fi
333     if echo "$ALL_FLAGS" | grep '^CFLAGS_'${mod}'=$' >/dev/null 2>&1; then
334         echo "AC_SUBST(CFLAGS_${mod})" >> configure.ac; fi
335     if echo "$ALL_FLAGS" | grep '^CXXFLAGS_'${mod}'=$' >/dev/null 2>&1; then
336         LINKER="CXXLINK"
337         echo "AC_SUBST(CXXFLAGS_${mod})" >> configure.ac; fi
338     if echo "$ALL_FLAGS" | grep '^OBJCFLAGS_'${mod}'=$' >/dev/null 2>&1; then
339         LINKER="OBJCLINK"
340         echo "AC_SUBST(OBJCFLAGS_${mod})" >> configure.ac; fi
341     if echo "$ALL_FLAGS" | grep '^LDFLAGS_'${mod}'=$' >/dev/null 2>&1; then
342         echo "AC_SUBST(LDFLAGS_${mod})" >> configure.ac; fi
343     if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
344         PRIVATE='#'; else
345         PRIVATE=''; fi
346     if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
347         NODIST=''; else
348         NODIST='#'; fi
349     cat >> configure.ac << EOF
350 AM_CONDITIONAL(${mod}_plugin, test x\$${mod}_plugin = xyes)
351 AM_CONDITIONAL(${mod}_builtin, test x\$${mod}_builtin = xyes)
352 EOF
353 # Generation of Modules.am
354 # ~~~~~~~~~~~~~~~~~~~~~~~~
355 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
356 #   S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
357 #   the resulting file size.
358 # - *_CFLAGS, *_CXXFLAGS etc. include *_CPPFLAGS because per-object CPPFLAGS
359 #   does not seem to work properly with any automake version I tested.
360     cat >> Modules.am << EOF
361 # The ${mod} plugin
362
363 if ${mod}_plugin
364 if UNTRUE
365 L_${mod}_p = ${dir}/lib${mod}_plugin.a
366 endif
367 D_${mod}_p = ${dir}/lib${mod}_plugin\$(LIBEXT)
368 ${NODIST}B_${mod}_p = \$(nodist_SOURCES_${mod})
369 endif
370 if ${mod}_builtin
371 L_${mod}_b = ${dir}/lib${mod}.a
372 F_${mod}_b = \$(LDFLAGS_${mod})
373 if BUILD_MOZILLA
374 L_${mod}_pic = ${dir}/lib${mod}_pic.a
375 endif
376 ${NODIST}B_${mod}_b = \$(nodist_SOURCES_${mod})
377 endif
378
379 L_builtin += \$(L_${mod}_b)
380 L_builtin_pic += \$(L_${mod}_pic)
381 LDFLAGS_builtin += \$(F_${mod}_b)
382 ${PRIVATE}BUILT_SOURCES += \$(B_${mod}_p) \$(B_${mod}_b)
383 PLUGIN_FILES += \$(D_${mod}_p)
384
385 ${PRIVATE}${sym}_lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
386 ${NODIST}${PRIVATE}nodist_${sym}_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
387 ${sym}_lib${mod}_plugin_a_CPPFLAGS = \$(CPPFLAGS_plugin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
388 ${sym}_lib${mod}_plugin_a_CFLAGS = \$(CFLAGS_plugin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
389 ${sym}_lib${mod}_plugin_a_CXXFLAGS = \$(CXXFLAGS_plugin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
390 ${sym}_lib${mod}_plugin_a_OBJCFLAGS = \$(OBJCFLAGS_plugin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
391
392 ${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
393 ${NODIST}nodist_${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
394 ${sym}_lib${mod}_pic_a_CPPFLAGS = \$(CPPFLAGS_builtin_pic) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
395 ${sym}_lib${mod}_pic_a_CFLAGS = \$(CFLAGS_builtin_pic) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
396 ${sym}_lib${mod}_pic_a_CXXFLAGS = \$(CXXFLAGS_builtin_pic) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
397 ${sym}_lib${mod}_pic_a_OBJCFLAGS = \$(OBJCFLAGS_builtin_pic) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
398
399 ${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
400 ${NODIST}nodist_${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
401 ${sym}_lib${mod}_a_CPPFLAGS = \$(CPPFLAGS_builtin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
402 ${sym}_lib${mod}_a_CFLAGS = \$(CFLAGS_builtin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
403 ${sym}_lib${mod}_a_CXXFLAGS = \$(CXXFLAGS_builtin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
404 ${sym}_lib${mod}_a_OBJCFLAGS = \$(OBJCFLAGS_builtin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
405
406 libvlc_LIBRARIES += \$(L_${mod}_b) \$(L_${mod}_pic)
407 lib${mod}_DATA = \$(D_${mod}_p)
408
409 lib${mod}dir = \$(libdir)/vlc/${topdir}
410 ${PRIVATE}noinst_LIBRARIES += \$(L_${mod}_p)
411 ${PRIVATE}${dir}/lib${mod}_plugin\$(LIBEXT): \$(${sym}_lib${mod}_plugin_a_OBJECTS)
412 ${PRIVATE}      \$(${LINKER}) \$^ -shared \$(LDFLAGS_plugins) \$(LDFLAGS_${mod})
413
414
415 EOF
416   done
417 done
418
419 echo "AM_CONDITIONAL(UNTRUE, false)" >> configure.ac
420 sed -n -e '/dnl do not touch this line/,//p' < configure.ac.in >> configure.ac
421
422 echo "done."
423
424 ###
425 ###  classic bootstrap stuff
426 ###
427 set -x
428 rm -f aclocal.m4 m4/oldgettext.m4 configure config.guess config.log config.sub ltmain.sh libtool ltconfig missing mkinstalldirs depcomp install-sh
429 rm -Rf intl
430
431 # Check for gettext
432 if gettextize --version >/dev/null 2>&1
433 then
434 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
435         '>' 0.11.2 >/dev/null 2>&1
436 then
437   # We have gettext, and a recent version! Everything is cool.
438   autopoint || exit 1
439   GETTEXT=yes
440 else
441   # User's gettext is too old. try to continue anyway.
442   mkdir -p intl
443   echo > intl/Makefile.am
444   echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
445   GETTEXT=old
446 fi;else
447   # we don't have gettext. grmbl. try to continue anyway.
448   mkdir -p intl
449   echo > intl/Makefile.am
450   echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
451   GETTEXT=no
452 fi
453
454 # Check for automake
455 amvers="none"
456 if automake-1.7 --version >/dev/null 2>&1
457 then
458   amvers="-1.7"
459 else
460   if automake-1.6 --version >/dev/null 2>&1
461   then
462     amvers="-1.6"
463     if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
464     then AUTOMAKESUCKS=yes
465     fi
466   else
467     if automake-1.5 --version >/dev/null 2>&1
468     then
469       amvers="-1.5"
470     else
471       if automake --version > /dev/null 2>&1
472       then
473         amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
474         case $amvers in
475         1.6|1.6.0|1.6.1)
476           AUTOMAKESUCKS=yes ;;
477         esac
478
479         if expr "$amvers" "<" "1.5" > /dev/null 2>&1
480         then amvers="none"
481         else amvers=""
482         fi
483       fi
484     fi
485   fi
486 fi
487
488 if test x$amvers = xnone
489 then
490   set +x
491   echo "you need automake version 1.5 or later"
492   exit 1
493 fi
494
495 # Do the rest
496 aclocal${amvers} -I m4 || exit 1
497 autoheader || exit 1
498
499 automake${amvers} --foreign --add-missing --copy || PERLSUCKS=yes
500
501 case "$PERLSUCKS" in
502   no)
503   ;;
504   yes)
505     set +x
506     echo ""
507     echo "==========================================================="
508     echo "IMPORTANT NOTE: automake failed. On certain systems this is"
509     echo "because of insufficient stack size. Please set the stack"
510     echo "size to something bigger or unlimited (\`unlimit stacksize')"
511     echo "and try again."
512     exit 1
513   ;;
514 esac
515
516 # Wrap automake's long lines, because the Solaris sed doesn't support lines
517 # longer than 3999 characters, and ./configure calls sed. We use Perl instead
518 # of sed for obvious reasons :)
519 perl -ne 'if(/^.{500}/) {s/(.{200}[^ ]* )/$1\\\n\t/g} print $_' < Makefile.in > Makefile.in.tmp && mv Makefile.in.tmp Makefile.in
520
521 autoconf || exit 1
522
523 ##
524 ##  headers which need to be regenerated
525 ##
526 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
527 rm -f include/vlc_symbols.h
528 rm -f mozilla/vlcintf.h
529
530 ##
531 ##  Shut up
532 ##
533 set +x
534
535 ##
536 ##  Glade sometimes sucks
537 ##
538 echo "workarounds for annoying glade features"
539 for file in gnome_interface.c gtk_interface.c
540 do
541 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
542 then
543     rm -f /tmp/$$.$file.bak
544     cat > /tmp/$$.$file.bak << EOF
545 /* This file was created automatically by glade and fixed by bootstrap */
546
547 #include <vlc/vlc.h>
548 EOF
549     sed -e 1,7d \
550         -e 's#_("-:--:--")#"-:--:--"#' \
551         -e 's#_("---")#"---"#' \
552         -e 's#_("--")#"--"#' \
553         -e 's#_("/dev/dvd")#"/dev/dvd"#' \
554         -e 's#_(\("./."\))#\1#' \
555         < modules/gui/gtk/$file >> /tmp/$$.$file.bak
556     mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
557 fi
558 done
559
560 file=gtk_support.h
561 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
562 then
563     rm -f /tmp/$$.$file.bak
564     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
565     mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
566 fi
567
568 ##
569 ##  Tell the user about gettext and sed
570 ##
571 case "$GETTEXT" in
572   yes)
573   ;;
574   no)
575     echo ""
576     echo "==========================================================="
577     echo "IMPORTANT NOTE: you do not have gettext installed on your"
578     echo "system. The vlc build will work, but you will not have"
579     echo "internationalization support. We suggest installing gettext."
580   ;;
581   old)
582     echo ""
583     echo "=========================================================="
584     echo "NOTE: you have an old version of gettext installed on your"
585     echo "system. We suggest upgrading to gettext 0.11.3 or later."
586   ;;
587 esac
588
589 case "$AUTOMAKESUCKS" in
590   no)
591   ;;
592   yes)
593     echo ""
594     echo "============================================================="
595     echo "IMPORTANT NOTE: your version of automake has a bug which will"
596     echo "prevent proper plugin compilation. Either compile VLC with"
597     echo "the --disable-plugins flag, or use a version of automake newer"
598     echo "than 1.6.1 (1.6.2 is OK, and so are the 1.5 series)."
599   ;;
600 esac
601
602 case "$SEDSUCKS" in
603   no)
604   ;;
605   yes)
606     echo ""
607     echo "============================================================="
608     echo "IMPORTANT NOTE: the version of 'sed' on your system is unable"
609     echo "to handle long lines. bootstrap will try its best to generate"
610     echo "a correct Makefile, but you should expect problems. We highly"
611     echo "recommend installing GNU sed."
612   ;;
613 esac
614