]> git.sesse.net Git - vlc/blob - bootstrap
* ./bootstrap: added warning messages for old automake versions.
[vlc] / bootstrap
1 #! /bin/sh
2
3 ##  bootstrap file for vlc, the VideoLAN Client
4 ##  $Id: bootstrap,v 1.34 2002/12/17 14:39:05 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 INSTALLSUCKS=no
296
297 ##
298 ## Generate the modules makefile, by parsing modules/**/Modules.am
299 ##
300
301 printf "generating Modules.am and configure.ac"
302
303 echo > Modules.am
304 echo > configure.ac
305
306 ALL_FLAGS="`sed -n -e '/^[^=A-Z]*[A-Z]*FLAGS_[^=]*=/s/[^=A-Z]*\([A-Z]*FLAGS_[^=]*=\).*/\1/p' < configure.ac.in | sort | uniq`"
307
308 cat >> configure.ac << EOF
309 dnl ################################################################
310 dnl # Do not edit this file, it was generated from configure.ac.in #
311 dnl ################################################################
312
313 EOF
314 sed -n -e '/dnl do not touch this line/q;p' < configure.ac.in >> configure.ac
315
316 modules=""
317 for mf in `sed -ne 's@[^a-z]*\([^ ]*\)am.*@modules/\1am@p' < modules/Makefile.am`
318 do
319   printf "."
320   dir=`echo ${mf} | sed -e 's@\(.*\)/.*@\1@'`
321   topdir=`echo ${dir} | cut -f2 -d/`
322   sym=`echo ${dir} | sed -e 'y@/@_@'`
323   cat >> Modules.am << EOF
324 # Directory ${dir}
325
326 include ${dir}/Modules.am
327
328 EOF
329   sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf} | while read mod
330   do
331     LINKER="LINK"
332     if echo "$ALL_FLAGS" | grep '^CPPFLAGS_'${mod}'=$' >/dev/null 2>&1; then
333         echo "AC_SUBST(CPPFLAGS_${mod})" >> configure.ac; fi
334     if echo "$ALL_FLAGS" | grep '^CFLAGS_'${mod}'=$' >/dev/null 2>&1; then
335         echo "AC_SUBST(CFLAGS_${mod})" >> configure.ac; fi
336     if echo "$ALL_FLAGS" | grep '^CXXFLAGS_'${mod}'=$' >/dev/null 2>&1; then
337         LINKER="CXXLINK"
338         echo "AC_SUBST(CXXFLAGS_${mod})" >> configure.ac; fi
339     if echo "$ALL_FLAGS" | grep '^OBJCFLAGS_'${mod}'=$' >/dev/null 2>&1; then
340         LINKER="OBJCLINK"
341         echo "AC_SUBST(OBJCFLAGS_${mod})" >> configure.ac; fi
342     if echo "$ALL_FLAGS" | grep '^LDFLAGS_'${mod}'=$' >/dev/null 2>&1; then
343         echo "AC_SUBST(LDFLAGS_${mod})" >> configure.ac; fi
344     if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
345         PRIVATE='#'; else
346         PRIVATE=''; fi
347     if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
348         NODIST=''; else
349         NODIST='#'; fi
350     cat >> configure.ac << EOF
351 AM_CONDITIONAL(${mod}_plugin, test x\$${mod}_plugin = xyes)
352 AM_CONDITIONAL(${mod}_builtin, test x\$${mod}_builtin = xyes)
353 EOF
354 # Generation of Modules.am
355 # ~~~~~~~~~~~~~~~~~~~~~~~~
356 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
357 #   S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
358 #   the resulting file size.
359 # - *_CFLAGS, *_CXXFLAGS etc. include *_CPPFLAGS because per-object CPPFLAGS
360 #   does not seem to work properly with any automake version I tested.
361     cat >> Modules.am << EOF
362 # The ${mod} plugin
363
364 if ${mod}_plugin
365 if UNTRUE
366 L_${mod}_p = ${dir}/lib${mod}_plugin.a
367 endif
368 D_${mod}_p = ${dir}/lib${mod}_plugin\$(LIBEXT)
369 ${NODIST}B_${mod}_p = \$(nodist_SOURCES_${mod})
370 endif
371 if ${mod}_builtin
372 L_${mod}_b = ${dir}/lib${mod}.a
373 F_${mod}_b = \$(LDFLAGS_${mod})
374 if BUILD_MOZILLA
375 L_${mod}_pic = ${dir}/lib${mod}_pic.a
376 endif
377 ${NODIST}B_${mod}_b = \$(nodist_SOURCES_${mod})
378 endif
379
380 L_builtin += \$(L_${mod}_b)
381 L_builtin_pic += \$(L_${mod}_pic)
382 LDFLAGS_builtin += \$(F_${mod}_b)
383 ${PRIVATE}BUILT_SOURCES += \$(B_${mod}_p) \$(B_${mod}_b)
384 PLUGIN_FILES += \$(D_${mod}_p)
385
386 ${PRIVATE}${sym}_lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
387 ${NODIST}${PRIVATE}nodist_${sym}_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
388 ${sym}_lib${mod}_plugin_a_CPPFLAGS = \$(CPPFLAGS_plugin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
389 ${sym}_lib${mod}_plugin_a_CFLAGS = \$(CFLAGS_plugin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
390 ${sym}_lib${mod}_plugin_a_CXXFLAGS = \$(CXXFLAGS_plugin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
391 ${sym}_lib${mod}_plugin_a_OBJCFLAGS = \$(OBJCFLAGS_plugin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_plugin_a_CPPFLAGS)
392
393 ${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
394 ${NODIST}nodist_${sym}_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
395 ${sym}_lib${mod}_pic_a_CPPFLAGS = \$(CPPFLAGS_builtin_pic) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
396 ${sym}_lib${mod}_pic_a_CFLAGS = \$(CFLAGS_builtin_pic) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
397 ${sym}_lib${mod}_pic_a_CXXFLAGS = \$(CXXFLAGS_builtin_pic) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
398 ${sym}_lib${mod}_pic_a_OBJCFLAGS = \$(OBJCFLAGS_builtin_pic) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_pic_a_CPPFLAGS)
399
400 ${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
401 ${NODIST}nodist_${sym}_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
402 ${sym}_lib${mod}_a_CPPFLAGS = \$(CPPFLAGS_builtin) \$(CPPFLAGS_${mod}) -DMODULE_NAME=${mod} -DMODULE_NAME_IS_${mod}
403 ${sym}_lib${mod}_a_CFLAGS = \$(CFLAGS_builtin) \$(CFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
404 ${sym}_lib${mod}_a_CXXFLAGS = \$(CXXFLAGS_builtin) \$(CXXFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
405 ${sym}_lib${mod}_a_OBJCFLAGS = \$(OBJCFLAGS_builtin) \$(OBJCFLAGS_${mod}) \$(${sym}_lib${mod}_a_CPPFLAGS)
406
407 libvlc_LIBRARIES += \$(L_${mod}_b) \$(L_${mod}_pic)
408 lib${mod}_DATA = \$(D_${mod}_p)
409
410 lib${mod}dir = \$(libdir)/vlc/${topdir}
411 ${PRIVATE}noinst_LIBRARIES += \$(L_${mod}_p)
412 ${PRIVATE}${dir}/lib${mod}_plugin\$(LIBEXT): \$(${sym}_lib${mod}_plugin_a_OBJECTS)
413 ${PRIVATE}      \$(${LINKER}) \$^ -shared \$(LDFLAGS_plugins) \$(LDFLAGS_${mod})
414
415
416 EOF
417   done
418 done
419
420 echo "AM_CONDITIONAL(UNTRUE, false)" >> configure.ac
421 sed -n -e '/dnl do not touch this line/,//p' < configure.ac.in >> configure.ac
422
423 echo "done."
424
425 ###
426 ###  classic bootstrap stuff
427 ###
428 set -x
429 rm -f aclocal.m4 m4/oldgettext.m4 configure config.guess config.log config.sub ltmain.sh libtool ltconfig missing mkinstalldirs depcomp install-sh
430 rm -Rf intl
431
432 # Check for gettext
433 if gettextize --version >/dev/null 2>&1
434 then
435 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
436         '>' 0.11.2 >/dev/null 2>&1
437 then
438   # We have gettext, and a recent version! Everything is cool.
439   autopoint || exit 1
440   GETTEXT=yes
441 else
442   # User's gettext is too old. try to continue anyway.
443   mkdir -p intl
444   echo > intl/Makefile.am
445   echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
446   GETTEXT=old
447 fi;else
448   # we don't have gettext. grmbl. try to continue anyway.
449   mkdir -p intl
450   echo > intl/Makefile.am
451   echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' > m4/oldgettext.m4
452   GETTEXT=no
453 fi
454
455 # Check for automake
456 amvers="none"
457 if automake-1.7 --version >/dev/null 2>&1
458 then
459   amvers="-1.7"
460 else
461   if automake-1.6 --version >/dev/null 2>&1
462   then
463     amvers="-1.6"
464     if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
465     then AUTOMAKESUCKS=yes
466     fi
467   else
468     if automake-1.5 --version >/dev/null 2>&1
469     then
470       INSTALLSUCKS=yes
471       amvers="-1.5"
472     else
473       if automake --version > /dev/null 2>&1
474       then
475         amvers=`automake --version | sed -e '1s/[^0-9]*//' -e q`
476         case $amvers in
477         1.6|1.6.0|1.6.1)
478           AUTOMAKESUCKS=yes ;;
479         1.5.*)
480           INSTALLSUCKS=yes ;;
481         esac
482
483         if expr "$amvers" "<" "1.5" > /dev/null 2>&1
484         then amvers="none"
485         else amvers=""
486         fi
487       fi
488     fi
489   fi
490 fi
491
492 if test x$amvers = xnone
493 then
494   set +x
495   echo "you need automake version 1.5 or later"
496   exit 1
497 fi
498
499 # Do the rest
500 aclocal${amvers} -I m4 || exit 1
501 autoheader || exit 1
502
503 automake${amvers} --foreign --add-missing --copy || PERLSUCKS=yes
504
505 case "$PERLSUCKS" in
506   no)
507   ;;
508   yes)
509     set +x
510     cat << EOF
511
512 =======================================================================
513 IMPORTANT NOTE: automake failed, please check the error messages. If it
514 actually segfaulted, it might be because of insufficient stack size; set
515 the stack size to something bigger or unlimited (\`unlimit stacksize')
516 and try again.
517 EOF
518     exit 1
519   ;;
520 esac
521
522 # Wrap automake's long lines, because the Solaris sed doesn't support lines
523 # longer than 3999 characters, and ./configure calls sed. We use Perl instead
524 # of sed for obvious reasons :)
525 perl -ne 'if(/^.{500}/) {s/(.{200}[^ ]* )/$1\\\n\t/g} print $_' < Makefile.in > Makefile.in.tmp && mv Makefile.in.tmp Makefile.in
526
527 autoconf || exit 1
528
529 ##
530 ##  headers which need to be regenerated
531 ##
532 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
533 rm -f include/vlc_symbols.h
534 rm -f mozilla/vlcintf.h
535
536 ##
537 ##  Shut up
538 ##
539 set +x
540
541 ##
542 ##  Glade sometimes sucks
543 ##
544 echo "workarounds for annoying glade features"
545 for file in gnome_interface.c gtk_interface.c
546 do
547 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
548 then
549     rm -f /tmp/$$.$file.bak
550     cat > /tmp/$$.$file.bak << EOF
551 /* This file was created automatically by glade and fixed by bootstrap */
552
553 #include <vlc/vlc.h>
554 EOF
555     sed -e 1,7d \
556         -e 's#_("-:--:--")#"-:--:--"#' \
557         -e 's#_("---")#"---"#' \
558         -e 's#_("--")#"--"#' \
559         -e 's#_("/dev/dvd")#"/dev/dvd"#' \
560         -e 's#_(\("./."\))#\1#' \
561         < modules/gui/gtk/$file >> /tmp/$$.$file.bak
562     mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
563 fi
564 done
565
566 file=gtk_support.h
567 if grep "DO NOT EDIT THIS FILE" modules/gui/gtk/$file 2>&1 > /dev/null
568 then
569     rm -f /tmp/$$.$file.bak
570     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
571     mv -f /tmp/$$.$file.bak modules/gui/gtk/$file
572 fi
573
574 ##
575 ##  Tell the user about gettext and sed
576 ##
577 case "$GETTEXT" in
578   yes)
579   ;;
580   no)
581     cat << EOF
582
583 ===========================================================
584 IMPORTANT NOTE: you do not have gettext installed on your
585 system. The vlc build will work, but you will not have
586 internationalization support. We suggest installing gettext.
587 EOF
588   ;;
589   old)
590     cat << EOF
591
592 ==========================================================
593 NOTE: you have an old version of gettext installed on your
594 system. We suggest upgrading to gettext 0.11.3 or later.
595 EOF
596   ;;
597 esac
598
599 case "$AUTOMAKESUCKS" in
600   no)
601   ;;
602   yes)
603     cat << EOF
604
605 =============================================================
606 IMPORTANT NOTE: your version of automake has a bug which will
607 prevent proper plugin compilation. Either compile VLC with
608 the --disable-plugins flag, or use a version of automake newer
609 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
610 EOF
611   ;;
612 esac
613
614 case "$INSTALLSUCKS" in
615   no)
616   ;;
617   yes)
618     cat << EOF
619
620 =============================================================
621 IMPORTANT NOTE: your version of automake has a bug which will
622 prevent proper installation. Do not use "make install" with this
623 version of automake, or use a version of automake newer than 1.5
624 (such as 1.6 or 1.7).
625 EOF
626   ;;
627 esac
628
629 case "$SEDSUCKS" in
630   no)
631   ;;
632   yes)
633     cat << EOF
634
635 =============================================================
636 IMPORTANT NOTE: the version of 'sed' on your system is unable
637 to handle long lines. bootstrap will try its best to generate
638 a correct Makefile, but you should expect problems. We highly
639 recommend installing GNU sed.
640 EOF
641   ;;
642 esac
643