3 ## bootstrap file for the VLC media player
4 ## $Id: bootstrap,v 1.63 2003/07/04 13:53:06 sam Exp $
6 ## Authors: Sam Hocevar <sam@zoy.org>
8 if test "$#" != "0"; then
10 echo " Calls automake, autoconf, autoheader, autopoint and other auto* to generate"
11 echo " m4 macros and prepare Makefiles."
16 ### Get a sane environment, just in case
24 ## Naively assume our system doesn't suck. Unfortunately it seldom doesn't.
30 ## Check that our tools don't suck
34 ## Generate the modules makefile, by parsing modules/**/Modules.am
37 printf "generating modules/**/Makefile.am and m4/private.m4"
39 # Prepare m4/private.m4
40 rm -f m4/private.m4 && cat > m4/private.m4 << EOF
41 dnl Private VLC macros - generated by bootstrap
44 rm -f m4/private.m4-tmp1 && cat > m4/private.m4-tmp1 << EOF
45 dnl The required AM_CONDITIONAL calls
46 dnl XXX: too many conditionals make the build very slow, disabled them
47 AC_DEFUN([AX_VLC_CONDITIONALS], [
49 rm -f m4/private.m4-tmp2 && cat > m4/private.m4-tmp2 << EOF
50 dnl The required AC_SUBST calls
51 AC_DEFUN([AX_VLC_SUBSTS], [
53 rm -f m4/private.m4-tmp3 && cat > m4/private.m4-tmp3 << EOF
54 dnl The required AC_OUTPUT calls
55 dnl XXX: this feature is only supported starting from automake-1.7
56 AC_DEFUN([AX_VLC_MAKEFILES], [AC_OUTPUT([
58 rm -f m4/private.m4-tmp4 && cat > m4/private.m4-tmp4 << EOF
59 dnl Helper macro for vlc-config generation
60 AC_DEFUN([AX_VLC_CONFIG_HELPER], [
61 cat >> vlc-config.in << BLAH
67 rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
68 # Autogenerated by bootstrap - DO NOT EDIT
70 SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`
71 #DIST_SUBDIRS = \$(SUBDIRS)
74 for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
77 mf="modules/${dir}/Modules.am"
78 basedir="`echo ${dir} | cut -f1 -d/`"
79 # automake will not recurse for make dist if we don't define SUBDIRS = .
80 subdirs="`sed -ne 's,'modules/${dir}'/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`"
81 #parent=`echo ${dir} | sed -e 's@[^/]*@..@g'`
82 #echo " modules/${dir}/Makefile" >> m4/private.m4-tmp3
83 rm -f modules/${dir}/Makefile.am && cat > modules/${dir}/Makefile.am << EOF
85 # Autogenerated by bootstrap - DO NOT EDIT - edit Modules.am instead
91 EXTRA_DIST = Modules.am
94 #DIST_SUBDIRS = \$(SUBDIRS)
95 libvlcdir = \$(libdir)/vlc/${basedir}
99 rm -f *.a *.so *.dll *.sl *.dylib
102 for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf}`
104 count="`expr ${count} + 1`"
105 if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
108 if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
111 # cat >> m4/private.m4-tmp1 << EOF
112 #dnl AM_CONDITIONAL(${mod}_p, test x\$${mod}_p = xyes)
113 #dnl AM_CONDITIONAL(${mod}_b, test x\$${mod}_b = xyes)
115 cat >> m4/private.m4-tmp4 << EOF
116 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
118 # Generation of modules/**/Makefile.am
119 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
120 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
121 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
122 # the resulting file size.
123 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
124 # work properly with any automake version I tested.
125 cat >> modules/${dir}/Makefile.am << EOF
132 @set fnord \$\$MAKEFLAGS; amf=\$\$2; \\
133 if test "\$(plugin)" != "no" \\
134 && \$(VLC_CONFIG) --target plugin | grep "${dir}/lib${mod}_plugin" >/dev/null 2>&1; then \\
135 \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}_plugin\$(LIBEXT) || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\
137 if test "\$(builtin)" != "no" \\
138 && \$(VLC_CONFIG) --target builtin | grep "${dir}/lib${mod}\\.a" >/dev/null 2>&1; then \\
139 \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}.a || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\
141 if test "\$(pic)" != "no" \\
142 && \$(VLC_CONFIG) --target builtin pic | grep "${dir}/lib${mod}_pic\\.a" >/dev/null 2>&1; then \\
143 \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}_pic.a || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\
147 @set fnord \$\$MAKEFLAGS; amf=\$\$2; \\
148 if test "\$(plugin)" != "no" \\
149 && \$(VLC_CONFIG) --target plugin | grep "${dir}/lib${mod}_plugin" >/dev/null 2>&1; then \\
150 \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}_plugin\$(LIBEXT) || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\
152 if test "\$(builtin)" != "no" \\
153 && \$(VLC_CONFIG) --target builtin | grep "${dir}/lib${mod}\\.a" >/dev/null 2>&1; then \\
154 \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}.a || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\
160 L${count}p = lib${mod}_plugin.a
161 D${count}p = lib${mod}_plugin\$(LIBEXT)
162 L${count}b = lib${mod}.a
163 L${count}pic = lib${mod}_pic.a
165 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
166 B${count}p = \$(nodist_SOURCES_${mod})
167 B${count}b = \$(nodist_SOURCES_${mod})
170 cat >> modules/${dir}/Makefile.am << EOF
174 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
175 ${PRIVATE}BUILT_SOURCES += \$(B${count}p) \$(B${count}b)
178 cat >> modules/${dir}/Makefile.am << EOF
179 ${PRIVATE}lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
181 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
182 ${PRIVATE}nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
185 cat >> modules/${dir}/Makefile.am << EOF
186 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
187 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
188 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
190 lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
192 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
193 nodist_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
196 cat >> modules/${dir}/Makefile.am << EOF
197 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
198 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
199 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
201 lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
203 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
204 nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
207 cat >> modules/${dir}/Makefile.am << EOF
208 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
209 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
210 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
212 libvlc_LIBRARIES += \$(L${count}b) \$(L${count}pic)
213 lib${mod}_DATA = \$(D${count}p)
215 lib${mod}dir = \$(libdir)/vlc/${topdir}
216 ${PRIVATE}noinst_LIBRARIES += \$(L${count}p)
217 ${PRIVATE}lib${mod}_plugin\$(LIBEXT): \$(lib${mod}_plugin_a_OBJECTS)
218 ${PRIVATE} @case \`\$(VLC_CONFIG) --linkage ${mod}\` in \\
219 ${PRIVATE} c++) echo \$(CXXLINK) \$(lib${mod}_plugin_a_OBJECTS) \\\`\$(VLC_CONFIG) --libs plugin ${mod}\\\` ; \$(CXXLINK) \$(lib${mod}_plugin_a_OBJECTS) \`\$(VLC_CONFIG) --libs plugin ${mod}\` ;; \\
220 ${PRIVATE} objc) echo \$(OBJCLINK) \$(lib${mod}_plugin_a_OBJECTS) \\\`\$(VLC_CONFIG) --libs plugin ${mod}\\\` ; \$(OBJCLINK) \$(lib${mod}_plugin_a_OBJECTS) \`\$(VLC_CONFIG) --libs plugin ${mod}\` ;; \\
221 ${PRIVATE} c|*) echo \$(LINK) \$(lib${mod}_plugin_a_OBJECTS) \\\`\$(VLC_CONFIG) --libs plugin ${mod}\\\` ; \$(LINK) \$(lib${mod}_plugin_a_OBJECTS) \`\$(VLC_CONFIG) --libs plugin ${mod}\` ;; \\
229 cat >> m4/private.m4-tmp1 << EOF
230 AM_CONDITIONAL(UNTRUE, false)
233 cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
234 cat >> m4/private.m4-tmp2 << EOF
237 cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
238 cat >> m4/private.m4-tmp3 << EOF
241 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
242 cat >> m4/private.m4-tmp4 << EOF
246 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
251 ### classic bootstrap stuff
255 # remove autotools cruft
256 rm -f aclocal.m4 configure configure.ac.in config.log Modules.am
257 # remove old autotools extra cruft
258 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
259 # remove new autotools extra cruft
260 (cd autotools && rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh)
261 # remove libtool cruft
262 rm -f ltmain.sh libtool ltconfig
263 # remove gettext cruft
264 rm -f m4/oldgettext.m4 ABOUT-NLS
268 if gettextize --version >/dev/null 2>&1; then
269 # Autopoint is available from 0.11.3, but we need 0.11.5
270 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
271 '>=' 0.11.5 >/dev/null 2>&1; then
272 # We have gettext, and a recent version! Everything is cool.
276 # User's gettext is too old. try to continue anyway.
279 echo > intl/Makefile.am
280 cat >> m4/private.m4 << EOF
281 dnl User's gettext is too old, so this is a no-op
282 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
287 # we don't have gettext. grmbl. try to continue anyway.
290 echo > intl/Makefile.am
291 cat >> m4/private.m4 << EOF
292 dnl User does not have gettext, so this is a no-op
293 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
299 # Check for pkg-config
300 if pkg-config --version >/dev/null 2>&1; then
301 # We have pkg-config, everything is cool.
304 # Not present, use a workaround.
305 cat >> m4/private.m4 << EOF
306 dnl User does not have pkg-config, so this is a no-op
307 AC_DEFUN([PKG_CHECK_MODULES], [])
315 if automake-1.7 --version >/dev/null 2>&1; then
317 # If we also have 1.6, use it instead because it is faster
318 if automake-1.6 --version >/dev/null 2>&1; then
319 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" ">" "1.6.1" > /dev/null 2>&1
323 elif automake-1.6 --version >/dev/null 2>&1; then
325 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
326 then AUTOMAKESUCKS=yes
328 elif automake-1.5 --version >/dev/null 2>&1; then
331 elif automake --version > /dev/null 2>&1; then
333 case "`automake --version | sed -e '1s/[^0-9]*//' -e q`" in
334 0|0.*|1|1.[01234]|1.[01234][-.]*)
343 if test "${amvers}" = "none"; then
345 echo "you need automake version 1.5 or later"
349 # Automake complains if this is not present
350 rm -f vlc-config.in && printf "" > vlc-config.in
353 aclocal${amvers} -I m4 || exit 1
356 automake${amvers} --add-missing --copy
361 ## files which need to be regenerated
363 rm -f vlc-config.in vlc-config
364 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
365 rm -f include/vlc_symbols.h
366 rm -f mozilla/vlcintf.h
374 ## Tell the user about gettext, pkg-config and sed
382 ===========================================================
383 IMPORTANT NOTE: you do not have gettext installed on your
384 system. The vlc build will work, but you will not have
385 internationalization support. We suggest installing gettext.
391 ==========================================================
392 NOTE: you have an old version of gettext installed on your
393 system. The vlc build will work, but if your system does not
394 have libintl you will not have internationalization support.
395 We suggest upgrading to gettext 0.11.5 or later.
406 ==============================================================
407 NOTE: you do not have the "pkg-config" utility on your system;
408 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
414 case "$AUTOMAKESUCKS" in
420 =============================================================
421 IMPORTANT NOTE: your version of automake has a bug which will
422 prevent proper plugin compilation. Either compile VLC with
423 the --disable-plugins flag, or use a version of automake newer
424 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
429 case "$INSTALLSUCKS" in
435 =============================================================
436 IMPORTANT NOTE: your version of automake has a bug which will
437 prevent proper installation. Do not use "make install" with this
438 version of automake, or use a version of automake newer than 1.5
439 (such as 1.6 or 1.7).