3 ## bootstrap file for the VLC media player
6 ## Copyright (C) 2005 the VideoLAN team
8 ## Initial author: Sam Hocevar <sam@zoy.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
36 # Check for contrib directory
37 if test -d extras/contrib/bin; then
38 export PATH=./extras/contrib/bin:$PATH
39 ACLOCAL_ARGS="${ACLOCAL_ARGS} -I extras/contrib/share/aclocal"
40 if test ".`uname -s`" = ".Darwin"; then
41 export LD_LIBRARY_PATH=./extras/contrib/lib:$LD_LIBRARY_PATH
42 export DYLD_LIBRARY_PATH=./extras/contrib/lib:$DYLD_LIBRARY_PATH
43 elif test ".`uname -s`" = ".BeOS"; then
44 export LIBRARY_PATH=./extras/contrib/lib:$LIBRARY_PATH
45 export BELIBRARIES=./extras/contrib/lib:$BELIBRARIES
51 if automake-1.8 --version >/dev/null 2>&1; then
53 # If we also have 1.6 (>> 1.6.1), use it instead because it is faster
54 if automake-1.6 --version >/dev/null 2>&1; then
55 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" ">" "1.6.1" > /dev/null 2>&1; then
59 elif automake-1.9 --version >/dev/null 2>&1; then
61 # If we also have 1.6 (>> 1.6.1), use it instead because it is faster
62 if automake-1.6 --version >/dev/null 2>&1; then
63 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" ">" "1.6.1" > /dev/null 2>&1; then
67 elif automake-1.7 --version >/dev/null 2>&1; then
69 # If we also have 1.6 (>> 1.6.1), use it instead because it is faster
70 if automake-1.6 --version >/dev/null 2>&1; then
71 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" ">" "1.6.1" > /dev/null 2>&1; then
75 elif automake-1.6 --version >/dev/null 2>&1; then
77 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1; then
80 elif automake-1.5 --version >/dev/null 2>&1; then
83 elif automake --version > /dev/null 2>&1; then
85 case "`automake --version | sed -e '1s/[^0-9]*//' -e q`" in
86 0|0.*|1|1.[01234]|1.[01234][-.]*)
97 if test "${amvers}" = "none"; then
99 echo "you need automake version 1.5 or later"
104 if gettextize --version >/dev/null 2>&1; then
105 # Autopoint is available from 0.11.3, but we need 0.11.5
106 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
107 '>=' 0.11.5 >/dev/null 2>&1; then
108 # We have gettext, and a recent version! Everything is cool.
112 # User's gettext is too old. try to continue anyway.
116 # we don't have gettext. grmbl. try to continue anyway.
121 # Check for pkg-config
122 if pkg-config --version >/dev/null 2>&1; then
123 # We have pkg-config, everything is cool.
129 aclocal=aclocal${amvers}
130 automake=automake${amvers}
132 autoheader=autoheader
135 ## Generate the modules makefile, by parsing modules/**/Modules.am
139 echo "generating modules/**/Makefile.am and m4/private.m4"
141 # Prepare m4/private.m4
142 rm -f m4/private.m4 && cat > m4/private.m4 << EOF
143 dnl Private VLC macros - generated by bootstrap
147 if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
148 dnl User does not have pkg-config, so this is a no-op
149 AC_DEFUN([PKG_CHECK_MODULES], [:], [], [], [])
154 if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF
155 dnl User does not have gettext, so this is a no-op
156 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
161 rm -f m4/private.m4-tmp1 && cat > m4/private.m4-tmp1 << EOF
162 dnl The required AM_CONDITIONAL calls
163 dnl XXX: too many conditionals make the build very slow, disabled them
164 AC_DEFUN([VLC_CONDITIONALS], [
166 rm -f m4/private.m4-tmp2 && cat > m4/private.m4-tmp2 << EOF
167 dnl The required AC_SUBST calls
168 AC_DEFUN([VLC_SUBSTS], [
170 rm -f m4/private.m4-tmp3 && cat > m4/private.m4-tmp3 << EOF
171 dnl The required AC_OUTPUT calls
172 dnl XXX: this feature is only supported starting from automake-1.7
173 AC_DEFUN([VLC_MAKEFILES], [AC_OUTPUT([
175 rm -f m4/private.m4-tmp4 && cat > m4/private.m4-tmp4 << EOF
176 dnl Helper macro for vlc-config generation
177 AC_DEFUN([VLC_CONFIG_HELPER], [
178 cat >> vlc-config.in << BLAH
183 rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
184 # Autogenerated by bootstrap - DO NOT EDIT
186 SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`
189 for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
192 modf="modules/${dir}/Modules.am"
193 makf="modules/${dir}/Makefile.am"
194 basedir="`echo "${dir}" | cut -f1 -d/`"
195 # automake will not recurse for make dist if we don't define SUBDIRS = .
196 subdirs="`sed -ne 's,'modules/${dir}'/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`"
197 mods="`sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < "${modf}" | xargs`"
201 extra_libs="${extra_libs} lib${mod}_plugin.a"
202 extra_libs="${extra_libs} lib${mod}.a lib${mod}_pic.a"
204 rm -f "${makf}" && cat > "${makf}" << EOF
206 # ${makf} automatically generated from ${modf} by bootstrap
207 # DO NOT EDIT - edit Modules.am or \$(top_srcdir)/bootstrap instead
216 EXTRA_DIST = Modules.am
219 SUFFIXES = _plugin\$(LIBEXT) _plugin.a
220 ### TODO ought to be defined somewhere else
221 VLC_ENTRY = \$(SYMPREF)vlc_entry__0_8_2
223 libvlcdir = \$(libdir)/vlc/\$(basedir)
225 EXTRA_LIBRARIES = ${extra_libs}
232 ### There's no need for pic code on win32 so get rid of this to substantially
233 ### reduce the compilation time.
240 # Find out which modules were enabled and tell make to build them
242 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
243 if test "\$(plugin)" != "no"; then z=\$\$(\$(VLC_CONFIG) --list plugin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_plugin\$(LIBEXT);; esac; done; fi; \\
244 if test "\$(builtin)" != "no"; then z=\$\$(\$(VLC_CONFIG) --list builtin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}.a;; esac; done; fi; \\
245 if test "\$(pic)" != "no"; then z=\$\$(\$(VLC_CONFIG) --list builtin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_pic.a;; esac; done; fi; \\
246 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
249 # Build a plugin with the adequate linker and linker's flags
250 _plugin.a_plugin\$(LIBEXT):
251 @mod="\$*" ; mod=\$\${mod:3} ; \
252 ldfl="\`\$(VLC_CONFIG) --libs plugin \$\$mod\` -u \$(VLC_ENTRY)" ; \
253 case \`\$(VLC_CONFIG) --linkage \$\$mod\` in \\
254 c++) ld="\$(CXXLINK)" ;; \
255 objc) ld="\$(OBJCLINK)" ;; \
256 c|*) ld="\$(LINK)" ;; \
258 echo \$\$ld \$< \$\$ldfl ; \
261 \$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/bootstrap
262 cd \$(top_srcdir) && \$(SHELL) ./bootstrap
265 -rm -f *.a *\$(LIBEXT)
267 ### automake creates libvlcdir after running install-*-local
268 ### so we have to create it ourselves first
269 install-exec-local: all-modules
270 \$(mkdir_p) "\$(DESTDIR)\$(libvlcdir)"
271 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
272 for mod in \$(mods); do \
274 in *\ \$\${mod}\ *) \
275 echo \$(INSTALL_PROGRAM) -m 755 "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" ; \
276 \$(INSTALL_PROGRAM) -m 755 "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \
280 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
281 for mod in \$(mods); do \
283 in *\ \$\${mod}\ *) \
284 echo \$(INSTALL_DATA) -m 644 "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
285 \$(INSTALL_DATA) -m 644 "lib\$\${mod}.a" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \
290 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
291 for mod in \$(mods); do \
293 in *\ \$\${mod}\ *) \
294 echo \$(INSTALL_DATA) -m 644 "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
295 \$(INSTALL_DATA) -m 644 "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \
302 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
303 for mod in \$(mods); do \
305 in *\ \$\${mod}\ *) \
306 echo rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" ; \
307 rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" || true; \
311 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
312 for mod in \$(mods); do \
314 in *\ \$\${mod}\ *) \
315 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" ; \
316 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" || true; \
321 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
322 for mod in \$(mods); do \
324 in *\ \$\${mod}\ *) \
325 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" ; \
326 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" || true; \
335 if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then
338 cat >> m4/private.m4-tmp4 << EOF
339 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
341 # Generation of modules/**/Makefile.am
342 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
343 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
344 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
345 # the resulting file size.
346 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
347 # work properly with any automake version I tested.
348 cat >> "${makf}" << EOF
352 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
353 clean-local: clean-${mod}
355 -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
359 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
360 BUILT_SOURCES += \$(B${mod})
363 cat >> "${makf}" << EOF
364 lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
366 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
367 nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
370 cat >> "${makf}" << EOF
371 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
372 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
373 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
375 lib${mod}_pic_a_SOURCES = \$(SOURCES_${mod})
377 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
378 nodist_lib${mod}_pic_a_SOURCES = \$(nodist_SOURCES_${mod})
381 cat >> "${makf}" << EOF
382 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
383 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
384 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
386 lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
388 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
389 nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
392 cat >> "${makf}" << EOF
393 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
394 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
395 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
401 cat >> m4/private.m4-tmp1 << EOF
404 cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
405 cat >> m4/private.m4-tmp2 << EOF
408 cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
409 cat >> m4/private.m4-tmp3 << EOF
412 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
413 cat >> m4/private.m4-tmp4 << EOF
417 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
422 ### classic bootstrap stuff
426 # remove autotools cruft
427 rm -f aclocal.m4 configure config.log config.h config.h.in
428 rm -Rf autom4te.cache
429 # remove old autotools extra cruft
430 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
431 # remove new autotools extra cruft
434 # remove libtool cruft
435 rm -f ltmain.sh libtool ltconfig
436 # remove gettext cruft
439 # remove old vlc cruft
440 rm -f m4/oldgettext.m4 stamp-pic configure.ac.in Modules.am
441 # remove new vlc cruft
442 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
444 # Automake complains if these are not present
445 rm -f vlc-config.in && printf "" > vlc-config.in
446 if [ "$GETTEXT" != "yes" ]; then
447 test -d intl || mkdir intl
448 printf "" > intl/Makefile.am
449 printf "" > ABOUT-NLS
454 ${aclocal} ${ACLOCAL_ARGS}
457 ${automake} --add-missing --copy
460 ## files which need to be regenerated
462 rm -f vlc-config.in vlc-config
463 rm -f src/misc/modules_builtin.h
464 rm -f mozilla/vlcintf.h
470 ## Tell the user about gettext, pkg-config and sed
476 ===========================================================
477 IMPORTANT NOTE: you do not have gettext installed on your
478 system. The vlc build will work, but you will not have
479 internationalization support. We suggest installing gettext.
484 ==========================================================
485 NOTE: you have an old version of gettext installed on your
486 system. The vlc build will work, but if your system does not
487 have libintl you will not have internationalization support.
488 We suggest upgrading to gettext 0.11.5 or later.
497 ==============================================================
498 NOTE: you do not have the "pkg-config" utility on your system;
499 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
505 case "$AUTOMAKESUCKS" in
509 =============================================================
510 IMPORTANT NOTE: your version of automake has a bug which will
511 prevent proper plugin compilation. Either compile VLC with
512 the --disable-plugins flag, or use a version of automake newer
513 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
518 case "$INSTALLSUCKS" in
522 =============================================================
523 IMPORTANT NOTE: your version of automake has a bug which will
524 prevent proper installation. Do not use "make install" with this
525 version of automake, or use a version of automake newer than 1.5
526 (such as 1.6 or 1.7).