3 ## bootstrap file for the VLC media player
5 ## Copyright (C) 2005-2006 the VideoLAN team
7 ## Authors: Sam Hocevar <sam@zoy.org>
8 ## RĂ©mi Denis-Courmont <rem # videolan # org>
10 if test "$#" != "0"; then
12 echo " Calls automake, autoconf, autoheader, autopoint and other auto* to generate"
13 echo " m4 macros and prepare Makefiles."
18 ### Get a sane environment, just in case
29 ## Check for various tools
34 ACLOCAL_ARGS="-I m4 ${ACLOCAL_ARGS}"
36 # Check for contrib directory
37 if test -d extras/contrib/bin; then
38 export PATH="`pwd`/extras/contrib/bin:$PATH"
39 if test -d extras/contrib/share/aclocal; then
40 ACLOCAL_ARGS="${ACLOCAL_ARGS} -I extras/contrib/share/aclocal"
42 if test ".`uname -s`" = ".Darwin"; then
43 export LD_LIBRARY_PATH=./extras/contrib/lib:$LD_LIBRARY_PATH
44 export DYLD_LIBRARY_PATH=./extras/contrib/lib:$DYLD_LIBRARY_PATH
45 elif test ".`uname -s`" = ".BeOS"; then
46 export LIBRARY_PATH=./extras/contrib/lib:$LIBRARY_PATH
47 export BELIBRARIES=./extras/contrib/lib:$BELIBRARIES
49 elif test ".`uname -s`" = ".Darwin"; then
52 echo "ERR: Contribs haven't been built"
53 echo "ERR: Please run:"
55 echo "ERR: 'cd extras/contrib && ./bootstrap && make && cd ../..'"
57 echo "ERR: Make sure fink has been disabled too."
64 rm -f m4/autoconf260.m4
65 case "$(autoconf --version|head -n 1)" in
67 echo "Hey, your autoconf is quite old. Update it." >&2
72 echo "Enabling provisional autoconf 2.59 work-around. Update autoconf ASAP."
73 cp -f extras/m4/autoconf260.m4 m4/
79 for v in "-1.10" "110" "-1.9" "19"; do
80 if automake${v} --version >/dev/null 2>&1; then
82 amvers="`echo ${v} | sed -e 's/^-//'`"
87 if test "${amvers}" = "no" && automake --version > /dev/null 2>&1; then
88 amvers="`automake --version | sed -e '1s/[^0-9]*//' -e q`"
93 no|1.[012345678]|1.[0123456].*|1[0123456]|1.[0123456]-*)
95 echo "$0: you need automake version 1.9 or later"
102 if test -x extras/contrib/bin/libtoolize; then
103 libtoolize="extras/contrib/bin/libtoolize"
104 elif glibtoolize --version >/dev/null 2>&1; then
105 libtoolize="glibtoolize"
106 elif libtoolize --version >/dev/null 2>&1; then
107 libtoolize="libtoolize"
110 if test "$libtoolize" = "no"; then
112 echo "$0: you need libtool"
117 if gettextize --version >/dev/null 2>&1; then
118 # Autopoint is available from 0.11.3, but we need 0.11.5
119 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
120 '>=' 0.11.5 >/dev/null 2>&1; then
121 # We have gettext, and a recent version! Everything is cool.
125 # User's gettext is too old. try to continue anyway.
130 echo "you need gettextize (package gettext-devel or gettext)"
134 # Check for pkg-config
135 if pkg-config --version >/dev/null 2>&1; then
136 # We have pkg-config, everything is cool.
142 aclocal=aclocal${amsuff}
143 automake=automake${amsuff}
145 autoheader=autoheader
148 ## Generate the modules makefile, by parsing modules/**/Modules.am
152 echo "generating modules/**/Makefile.am and m4/private.m4"
154 # Prepare m4/private.m4
155 rm -f m4/private.m4 && cat > m4/private.m4 << EOF
156 dnl Private VLC macros - generated by bootstrap
160 if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
161 dnl User does not have pkg-config, so assume package was not found
162 AC_DEFUN([PKG_CHECK_MODULES],[ifelse([\$4], , :, [\$4])])
167 if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF
168 dnl User does not have gettext, so this is a no-op
169 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
174 cat >> m4/private.m4 << EOF
175 dnl Helper macro for vlc-config generation
176 AC_DEFUN([VLC_CONFIG_HELPER], [
177 cat >> vlc-config.in << BLAH
182 rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
183 # Autogenerated by bootstrap - DO NOT EDIT
185 SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`
188 for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
191 modf="modules/${dir}/Modules.am"
192 makf="modules/${dir}/Makefile.am"
193 basedir="`echo "${dir}" | cut -f1 -d/`"
194 # automake will not recurse for make dist if we don't define SUBDIRS = .
195 subdirs="`sed -ne 's,'modules/${dir}'/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`"
196 mods="`sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < "${modf}" | xargs`"
200 extra_ltlibs="${extra_ltlibs} lib${mod}_plugin.la"
202 rm -f "${makf}" && cat > "${makf}" << EOF
204 # ${makf} automatically generated from ${modf} by bootstrap
205 # DO NOT EDIT - edit Modules.am or \$(top_srcdir)/bootstrap instead
212 EXTRA_DIST = Modules.am
216 SUFFIXES = _plugin\$(LIBEXT) _plugin.la
218 libvlcdir = \$(libdir)/vlc/\$(basedir)
220 EXTRA_LTLIBRARIES = ${extra_ltlibs}
225 LTLIBVLC = -L\$(top_builddir)/src -lvlc.dll
227 LTLIBVLC = -L\$(top_builddir)/src -lvlc
230 AM_LDFLAGS = -rpath '\$(libvlcdir)' -avoid-version \\
231 -module -no-undefined -shrext \$(LIBEXT) \\
232 -export-symbol-regex ^\$(VLC_ENTRY)\$\$
235 AM_LIBADD = \$(LTLIBVLC)
237 LIBVLC = -l\$(top_builddir) -lvlc
243 \$(top_builddir)/compile
245 # Find out which modules were enabled and tell make to build them
248 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
249 z=\$\$(\$(VLC_CONFIG) --list plugin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_plugin.la;; esac; done; \\
250 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
253 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
254 z=\$\$(\$(VLC_CONFIG) --list plugin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_plugin\$(LIBEXT);; esac; done; \\
255 z=\$\$(\$(VLC_CONFIG) --list builtin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}.a;; esac; done; \\
256 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
260 # Build a plugin with the adequate linker and linker's flags
261 _plugin.la_plugin\$(LIBEXT):
262 @mod="\$*" ; mod=\$\${mod#lib} ; \
263 ldfl="\`\$(VLC_CONFIG) --libs plugin \$\$mod\` \$(LIBVLC) -u \$(SYMPREF)\$(VLC_ENTRY)" ; \
264 case \`\$(VLC_CONFIG) --linkage \$\$mod\` in \\
265 c++) ld="\$(CXXLINK)" ;; \
266 objc) ld="\$(OBJCLINK)" ;; \
267 c|*) ld="\$(LINK)" ;; \
269 echo \$\$ld \$< \$\$ldfl ; \
271 @if test -f "\$@.exe"; then mv -f -- "\$@.exe" "\$@"; fi
274 \$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/bootstrap
275 cd \$(top_srcdir) && \$(SHELL) ./bootstrap
284 ### automake creates libvlcdir after running install-*-local
285 ### so we have to create it ourselves first
286 install-exec-local: all-modules
288 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
289 z=\$\$(\$(VLC_CONFIG) --list plugin); \
290 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
292 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" install-libvlcLTLIBRARIES || exit \$\$? ; \
295 mkdir -p -- "\$(DESTDIR)\$(libvlcdir)"
296 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
297 for mod in \$(mods); do \
299 in *\ \$\${mod}\ *) \
300 echo \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" ; \
301 \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \
309 @if test -z "\$(libvlc_LTLIBRARIES)"; then \
310 z=\$\$(\$(VLC_CONFIG) --list plugin); \
311 m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo -n " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
313 \$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" uninstall-libvlcLTLIBRARIES || exit \$\$?; \
316 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
317 for mod in \$(mods); do \
319 in *\ \$\${mod}\ *) \
320 echo rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" ; \
321 rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" || true; \
330 if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then
333 cat >> m4/private.m4 << EOF
334 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
336 # Generation of modules/**/Makefile.am
337 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
338 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
339 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
340 # the resulting file size.
341 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
342 # work properly with any automake version I tested.
343 cat >> "${makf}" << EOF
347 cat >> "${makf}" << EOF
348 lib${mod}_plugin_la_SOURCES = \$(SOURCES_${mod})
350 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
351 nodist_lib${mod}_plugin_la_SOURCES = \$(nodist_SOURCES_${mod})
352 CLEANFILES += "\$(nodist_SOURCES_${mod})"
353 BUILT_SOURCES += \$(B${mod})
356 cat >> "${makf}" << EOF
357 lib${mod}_plugin_la_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
358 lib${mod}_plugin_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
359 lib${mod}_plugin_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
360 lib${mod}_plugin_la_LDFLAGS = \`\$(VLC_CONFIG) --libs plugin ${mod}\` \$(AM_LDFLAGS)
361 lib${mod}_plugin_la_LIBADD = \$(AM_LIBADD)
366 cat >> m4/private.m4 << EOF
372 ### classic bootstrap stuff
376 # remove autotools cruft
377 rm -f aclocal.m4 configure config.log config.h config.h.in
378 rm -Rf autom4te*.cache
379 # remove old autotools extra cruft
380 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
381 # remove new autotools extra cruft
384 # remove libtool cruft
385 rm -f ltmain.sh libtool ltconfig
386 # remove gettext cruft
390 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
392 # Automake complains if these are not present
393 rm -f vlc-config.in && printf "" > vlc-config.in
394 if [ "$GETTEXT" != "yes" ]; then
395 test -d intl || mkdir intl
396 printf "" > intl/Makefile.am
397 printf "" > ABOUT-NLS
400 # Libtoolize directory
401 ${libtoolize} --copy --force
402 if test -f "ltmain.sh"; then
403 echo "$0: working around a minor libtool issue"
404 mv ltmain.sh autotools/
407 # patch for DLL link for libtool on cygwin (remove when fixed)
408 if test ".`uname -s|sed -n '/^CYGWIN/p'`" != "."; then
409 patch -s -p0 << 'EOF'
410 --- autotools/ltmain.orig 2006-12-05 15:15:42.064607000 +0000
411 +++ autotools/ltmain.sh 2006-12-05 15:16:24.705777800 +0000
412 @@ -4360,7 +4360,7 @@
416 - *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
417 + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,;s,.dll.exe$,.dll,'` ;;
419 if test -n "$vinfo"; then
420 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
426 ${aclocal} ${ACLOCAL_ARGS}
429 ${automake} --add-missing --copy -Wall
432 ## files which need to be regenerated
434 rm -f vlc-config.in vlc-config
435 rm -f src/misc/modules_builtin.h
441 ## Tell the user about gettext, pkg-config and sed
443 if [ "${GETTEXT}" = "old" ]; then
446 ==========================================================
447 NOTE: you have an old version of gettext installed on your
448 system. The vlc build will work, but if your system does not
449 have libintl you will not have internationalization support.
450 We suggest upgrading to gettext 0.11.5 or later.
454 if [ "$PKGCONFIG" = "no" ]; then
457 ==============================================================
458 NOTE: you do not have the "pkg-config" utility on your system;
459 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be