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