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.9 --version >/dev/null 2>&1; then
53 elif automake-1.8 --version >/dev/null 2>&1; then
55 elif automake-1.7 --version >/dev/null 2>&1; then
57 elif automake-1.6 --version >/dev/null 2>&1; then
59 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1; then
62 elif automake-1.5 --version >/dev/null 2>&1; then
65 elif automake --version > /dev/null 2>&1; then
67 case "`automake --version | sed -e '1s/[^0-9]*//' -e q`" in
68 0|0.*|1|1.[01234]|1.[01234][-.]*)
79 if test "${amvers}" = "none"; then
81 echo "you need automake version 1.5 or later"
86 if gettextize --version >/dev/null 2>&1; then
87 # Autopoint is available from 0.11.3, but we need 0.11.5
88 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
89 '>=' 0.11.5 >/dev/null 2>&1; then
90 # We have gettext, and a recent version! Everything is cool.
94 # User's gettext is too old. try to continue anyway.
99 echo "you need gettextize (package gettext-devel or gettext)"
103 # Check for pkg-config
104 if pkg-config --version >/dev/null 2>&1; then
105 # We have pkg-config, everything is cool.
111 aclocal=aclocal${amvers}
112 automake=automake${amvers}
114 autoheader=autoheader
117 ## Generate the modules makefile, by parsing modules/**/Modules.am
121 echo "generating modules/**/Makefile.am and m4/private.m4"
123 # Prepare m4/private.m4
124 rm -f m4/private.m4 && cat > m4/private.m4 << EOF
125 dnl Private VLC macros - generated by bootstrap
129 if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
130 dnl User does not have pkg-config, so this is a no-op
131 AC_DEFUN([PKG_CHECK_MODULES], [:], [], [], [])
136 if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF
137 dnl User does not have gettext, so this is a no-op
138 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
143 rm -f m4/private.m4-tmp1 && cat > m4/private.m4-tmp1 << EOF
144 dnl The required AM_CONDITIONAL calls
145 dnl XXX: too many conditionals make the build very slow, disabled them
146 AC_DEFUN([VLC_CONDITIONALS], [
148 rm -f m4/private.m4-tmp2 && cat > m4/private.m4-tmp2 << EOF
149 dnl The required AC_SUBST calls
150 AC_DEFUN([VLC_SUBSTS], [
152 rm -f m4/private.m4-tmp3 && cat > m4/private.m4-tmp3 << EOF
153 dnl The required AC_OUTPUT calls
154 dnl XXX: this feature is only supported starting from automake-1.7
155 AC_DEFUN([VLC_MAKEFILES], [AC_OUTPUT([
157 rm -f m4/private.m4-tmp4 && cat > m4/private.m4-tmp4 << EOF
158 dnl Helper macro for vlc-config generation
159 AC_DEFUN([VLC_CONFIG_HELPER], [
160 cat >> vlc-config.in << BLAH
165 rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
166 # Autogenerated by bootstrap - DO NOT EDIT
168 SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`
171 for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
174 modf="modules/${dir}/Modules.am"
175 makf="modules/${dir}/Makefile.am"
176 basedir="`echo "${dir}" | cut -f1 -d/`"
177 # automake will not recurse for make dist if we don't define SUBDIRS = .
178 subdirs="`sed -ne 's,'modules/${dir}'/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`"
179 mods="`sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < "${modf}" | xargs`"
183 extra_libs="${extra_libs} lib${mod}_plugin.a"
184 extra_libs="${extra_libs} lib${mod}.a lib${mod}_pic.a"
186 rm -f "${makf}" && cat > "${makf}" << EOF
188 # ${makf} automatically generated from ${modf} by bootstrap
189 # DO NOT EDIT - edit Modules.am or \$(top_srcdir)/bootstrap instead
198 EXTRA_DIST = Modules.am
201 SUFFIXES = _plugin\$(LIBEXT) _plugin.a
203 libvlcdir = \$(libdir)/vlc/\$(basedir)
205 EXTRA_LIBRARIES = ${extra_libs}
210 # Find out which modules were enabled and tell make to build them
212 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
213 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; \\
214 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; \\
215 if test "\$(pic)" == "pic"; then z=\$\$(\$(VLC_CONFIG) --list builtin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_pic.a;; esac; done; fi; \\
216 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
219 # Build a plugin with the adequate linker and linker's flags
220 _plugin.a_plugin\$(LIBEXT):
221 @mod="\$*" ; mod=\$\${mod:3} ; \
222 ldfl="\`\$(VLC_CONFIG) --libs plugin \$\$mod\` -u \$(SYMPREF)\$(VLC_ENTRY)" ; \
223 case \`\$(VLC_CONFIG) --linkage \$\$mod\` in \\
224 c++) ld="\$(CXXLINK)" ;; \
225 objc) ld="\$(OBJCLINK)" ;; \
226 c|*) ld="\$(LINK)" ;; \
228 echo \$\$ld \$< \$\$ldfl ; \
232 \$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/bootstrap
233 cd \$(top_srcdir) && \$(SHELL) ./bootstrap
237 -rm -f *.a *\$(LIBEXT)
239 ### automake creates libvlcdir after running install-*-local
240 ### so we have to create it ourselves first
241 install-exec-local: all-modules
242 mkdir -p -- "\$(DESTDIR)\$(libvlcdir)"
243 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
244 for mod in \$(mods); do \
246 in *\ \$\${mod}\ *) \
247 echo \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" ; \
248 \$(INSTALL_PROGRAM) "lib\$\${mod}_plugin\$(LIBEXT)" "\$(DESTDIR)\$(libvlcdir)/" || exit \$\$?; \
252 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
253 for mod in \$(mods); do \
255 in *\ \$\${mod}\ *) \
256 echo \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
257 \$(INSTALL_DATA) "lib\$\${mod}.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
262 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
263 for mod in \$(mods); do \
265 in *\ \$\${mod}\ *) \
266 echo \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" ; \
267 \$(INSTALL_DATA) "lib\$\${mod}_pic.a" "\$(DESTDIR)\$(libdir)/vlc/" || exit \$\$?; \
274 @z=\$\$(\$(VLC_CONFIG) --list plugin); \
275 for mod in \$(mods); do \
277 in *\ \$\${mod}\ *) \
278 echo rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" ; \
279 rm -f "\$(DESTDIR)\$(libvlcdir)/lib\$\${mod}_plugin\$(LIBEXT)" || true; \
283 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
284 for mod in \$(mods); do \
286 in *\ \$\${mod}\ *) \
287 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" ; \
288 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}.a" || true; \
293 @z=\$\$(\$(VLC_CONFIG) --list builtin); \
294 for mod in \$(mods); do \
296 in *\ \$\${mod}\ *) \
297 echo rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" ; \
298 rm -f "\$(DESTDIR)\$(libdir)/vlc/lib\$\${mod}_pic.a" || true; \
307 if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then
310 cat >> m4/private.m4-tmp4 << EOF
311 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
313 # Generation of modules/**/Makefile.am
314 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
315 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
316 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
317 # the resulting file size.
318 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
319 # work properly with any automake version I tested.
320 cat >> "${makf}" << EOF
324 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
325 clean-local: clean-${mod}
327 -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
331 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
332 BUILT_SOURCES += \$(B${mod})
335 cat >> "${makf}" << EOF
336 lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
338 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
339 nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
342 cat >> "${makf}" << EOF
343 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
344 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
345 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
347 lib${mod}_pic_a_SOURCES = \$(SOURCES_${mod})
349 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
350 nodist_lib${mod}_pic_a_SOURCES = \$(nodist_SOURCES_${mod})
353 cat >> "${makf}" << EOF
354 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
355 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
356 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
358 lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
360 if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
361 nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
364 cat >> "${makf}" << EOF
365 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
366 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
367 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
373 cat >> m4/private.m4-tmp1 << EOF
376 cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
377 cat >> m4/private.m4-tmp2 << EOF
380 cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
381 cat >> m4/private.m4-tmp3 << EOF
384 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
385 cat >> m4/private.m4-tmp4 << EOF
389 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
394 ### classic bootstrap stuff
398 # remove autotools cruft
399 rm -f aclocal.m4 configure config.log config.h config.h.in
400 rm -Rf autom4te*.cache
401 # remove old autotools extra cruft
402 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
403 # remove new autotools extra cruft
406 # remove libtool cruft
407 rm -f ltmain.sh libtool ltconfig
408 # remove gettext cruft
411 # remove old vlc cruft
412 rm -f m4/oldgettext.m4 stamp-pic configure.ac.in Modules.am
413 # remove new vlc cruft
414 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
416 # Automake complains if these are not present
417 rm -f vlc-config.in && printf "" > vlc-config.in
418 if [ "$GETTEXT" != "yes" ]; then
419 test -d intl || mkdir intl
420 printf "" > intl/Makefile.am
421 printf "" > ABOUT-NLS
426 ${aclocal} ${ACLOCAL_ARGS}
429 ${automake} --add-missing --copy
432 ## files which need to be regenerated
434 rm -f vlc-config.in vlc-config
435 rm -f src/misc/modules_builtin.h
436 rm -f mozilla/vlcintf.h
442 ## Tell the user about gettext, pkg-config and sed
444 if [ "${GETTEXT}" == "old" ]; then
447 ==========================================================
448 NOTE: you have an old version of gettext installed on your
449 system. The vlc build will work, but if your system does not
450 have libintl you will not have internationalization support.
451 We suggest upgrading to gettext 0.11.5 or later.
455 if [ "$PKGCONFIG" == "no" ]; then
458 ==============================================================
459 NOTE: you do not have the "pkg-config" utility on your system;
460 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
465 if [ "$AUTOMAKESUCKS" == "yes" ]; then
468 =============================================================
469 IMPORTANT NOTE: your version of automake has a bug which will
470 prevent proper plugin compilation. Either compile VLC with
471 the --disable-plugins flag, or use a version of automake newer
472 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
476 if [ "$INSTALLSUCKS" == "yes" ]; then
479 =============================================================
480 IMPORTANT NOTE: your version of automake has a bug which will
481 prevent proper installation. Do not use "make install" with this
482 version of automake, or use a version of automake newer than 1.5
483 (such as 1.6 or 1.7).