3 ## bootstrap file for the VLC media player
4 ## $Id: bootstrap,v 1.62 2003/07/03 11:23:09 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 @if test "\$(plugin)" != "no" && \$(VLC_CONFIG) --target plugin | grep "${dir}/lib${mod}_plugin" >/dev/null 2>&1 ; then \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}_plugin\$(LIBEXT); fi; \\
133 if test "\$(builtin)" != "no" && \$(VLC_CONFIG) --target builtin | grep "${dir}/lib${mod}\\.a" >/dev/null 2>&1 ; then \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}.a; fi; \\
134 if test "\$(pic)" != "no" && \$(VLC_CONFIG) --target builtin pic | grep "${dir}/lib${mod}_pic\\.a" >/dev/null 2>&1 ; then \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}_pic.a; fi
136 @if test "\$(plugin)" != "no" && \$(VLC_CONFIG) --target plugin | grep "${dir}/lib${mod}_plugin" >/dev/null 2>&1 ; then \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}_plugin\$(LIBEXT); fi; \\
137 if test "\$(builtin)" != "no" && \$(VLC_CONFIG) --target builtin | grep "${dir}/lib${mod}\\.a" >/dev/null 2>&1 ; then \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}.a; fi
141 L${count}p = lib${mod}_plugin.a
142 D${count}p = lib${mod}_plugin\$(LIBEXT)
143 L${count}b = lib${mod}.a
144 L${count}pic = lib${mod}_pic.a
146 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
147 B${count}p = \$(nodist_SOURCES_${mod})
148 B${count}b = \$(nodist_SOURCES_${mod})
151 cat >> modules/${dir}/Makefile.am << EOF
155 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
156 ${PRIVATE}BUILT_SOURCES += \$(B${count}p) \$(B${count}b)
159 cat >> modules/${dir}/Makefile.am << EOF
160 ${PRIVATE}lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
162 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
163 ${PRIVATE}nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
166 cat >> modules/${dir}/Makefile.am << EOF
167 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
168 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
169 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
171 lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
173 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
174 nodist_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
177 cat >> modules/${dir}/Makefile.am << EOF
178 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
179 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
180 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
182 lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
184 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
185 nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
188 cat >> modules/${dir}/Makefile.am << EOF
189 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
190 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
191 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
193 libvlc_LIBRARIES += \$(L${count}b) \$(L${count}pic)
194 lib${mod}_DATA = \$(D${count}p)
196 lib${mod}dir = \$(libdir)/vlc/${topdir}
197 ${PRIVATE}noinst_LIBRARIES += \$(L${count}p)
198 ${PRIVATE}lib${mod}_plugin\$(LIBEXT): \$(lib${mod}_plugin_a_OBJECTS)
199 ${PRIVATE} @case \`\$(VLC_CONFIG) --linkage ${mod}\` in \\
200 ${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}\` ;; \\
201 ${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}\` ;; \\
202 ${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}\` ;; \\
210 cat >> m4/private.m4-tmp1 << EOF
211 AM_CONDITIONAL(UNTRUE, false)
214 cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
215 cat >> m4/private.m4-tmp2 << EOF
218 cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
219 cat >> m4/private.m4-tmp3 << EOF
222 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
223 cat >> m4/private.m4-tmp4 << EOF
227 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
232 ### classic bootstrap stuff
236 # remove autotools cruft
237 rm -f aclocal.m4 configure configure.ac.in config.log Modules.am
238 # remove old autotools extra cruft
239 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
240 # remove new autotools extra cruft
241 (cd autotools && rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh)
242 # remove libtool cruft
243 rm -f ltmain.sh libtool ltconfig
244 # remove gettext cruft
245 rm -f m4/oldgettext.m4 ABOUT-NLS
249 if gettextize --version >/dev/null 2>&1; then
250 # Autopoint is available from 0.11.3, but we need 0.11.5
251 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
252 '>=' 0.11.5 >/dev/null 2>&1; then
253 # We have gettext, and a recent version! Everything is cool.
257 # User's gettext is too old. try to continue anyway.
260 echo > intl/Makefile.am
261 cat >> m4/private.m4 << EOF
262 dnl User's gettext is too old, so this is a no-op
263 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
268 # we don't have gettext. grmbl. try to continue anyway.
271 echo > intl/Makefile.am
272 cat >> m4/private.m4 << EOF
273 dnl User does not have gettext, so this is a no-op
274 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
280 # Check for pkg-config
281 if pkg-config --version >/dev/null 2>&1; then
282 # We have pkg-config, everything is cool.
285 # Not present, use a workaround.
286 cat >> m4/private.m4 << EOF
287 dnl User does not have pkg-config, so this is a no-op
288 AC_DEFUN([PKG_CHECK_MODULES], [])
296 if automake-1.7 --version >/dev/null 2>&1; then
298 # If we also have 1.6, use it instead because it is faster
299 if automake-1.6 --version >/dev/null 2>&1; then
300 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" ">" "1.6.1" > /dev/null 2>&1
304 elif automake-1.6 --version >/dev/null 2>&1; then
306 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
307 then AUTOMAKESUCKS=yes
309 elif automake-1.5 --version >/dev/null 2>&1; then
312 elif automake --version > /dev/null 2>&1; then
314 case "`automake --version | sed -e '1s/[^0-9]*//' -e q`" in
315 0|0.*|1|1.[01234]|1.[01234][-.]*)
324 if test "${amvers}" = "none"; then
326 echo "you need automake version 1.5 or later"
330 # Automake complains if this is not present
331 rm -f vlc-config.in && printf "" > vlc-config.in
334 aclocal${amvers} -I m4 || exit 1
337 automake${amvers} --add-missing --copy
342 ## files which need to be regenerated
344 rm -f vlc-config.in vlc-config
345 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
346 rm -f include/vlc_symbols.h
347 rm -f mozilla/vlcintf.h
355 ## Tell the user about gettext, pkg-config and sed
363 ===========================================================
364 IMPORTANT NOTE: you do not have gettext installed on your
365 system. The vlc build will work, but you will not have
366 internationalization support. We suggest installing gettext.
372 ==========================================================
373 NOTE: you have an old version of gettext installed on your
374 system. The vlc build will work, but if your system does not
375 have libintl you will not have internationalization support.
376 We suggest upgrading to gettext 0.11.5 or later.
387 ==============================================================
388 NOTE: you do not have the "pkg-config" utility on your system;
389 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
395 case "$AUTOMAKESUCKS" in
401 =============================================================
402 IMPORTANT NOTE: your version of automake has a bug which will
403 prevent proper plugin compilation. Either compile VLC with
404 the --disable-plugins flag, or use a version of automake newer
405 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
410 case "$INSTALLSUCKS" in
416 =============================================================
417 IMPORTANT NOTE: your version of automake has a bug which will
418 prevent proper installation. Do not use "make install" with this
419 version of automake, or use a version of automake newer than 1.5
420 (such as 1.6 or 1.7).