3 ## bootstrap file for the VLC media player
4 ## $Id: bootstrap,v 1.56 2003/07/01 16:25:24 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}
98 for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf}`
100 count="`expr ${count} + 1`"
101 if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
104 if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
107 # cat >> m4/private.m4-tmp1 << EOF
108 #dnl AM_CONDITIONAL(${mod}_p, test x\$${mod}_p = xyes)
109 #dnl AM_CONDITIONAL(${mod}_b, test x\$${mod}_b = xyes)
111 cat >> m4/private.m4-tmp4 << EOF
112 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
114 # Generation of modules/**/Makefile.am
115 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
117 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
118 # the resulting file size.
119 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
120 # work properly with any automake version I tested.
121 cat >> modules/${dir}/Makefile.am << EOF
127 if \$(VLC_CONFIG) --target plugin | grep "${dir}/lib${mod}_plugin" >/dev/null 2>&1 ; then \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}_plugin\$(LIBEXT); fi
128 if \$(VLC_CONFIG) --target builtin | grep "${dir}/lib${mod}\\.a" >/dev/null 2>&1 ; then \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}.a; fi
130 if \$(VLC_CONFIG) --target builtin pic | grep "${dir}/lib${mod}_pic\\.a" >/dev/null 2>&1 ; then \$(MAKE) \$(AM_MAKEFLAGS) lib${mod}_pic.a; fi
134 L${count}p = lib${mod}_plugin.a
135 D${count}p = lib${mod}_plugin\$(LIBEXT)
136 L${count}b = lib${mod}.a
137 L${count}pic = lib${mod}_pic.a
139 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
140 B${count}p = \$(nodist_SOURCES_${mod})
141 B${count}b = \$(nodist_SOURCES_${mod})
144 cat >> modules/${dir}/Makefile.am << EOF
148 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
149 ${PRIVATE}BUILT_SOURCES += \$(B${count}p) \$(B${count}b)
152 cat >> modules/${dir}/Makefile.am << EOF
153 ${PRIVATE}lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
155 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
156 ${PRIVATE}nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
159 cat >> modules/${dir}/Makefile.am << EOF
160 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
161 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
162 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
164 lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
166 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
167 nodist_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
170 cat >> modules/${dir}/Makefile.am << EOF
171 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
172 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
173 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
175 lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
177 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
178 nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
181 cat >> modules/${dir}/Makefile.am << EOF
182 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
183 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
184 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
186 libvlc_LIBRARIES += \$(L${count}b) \$(L${count}pic)
187 lib${mod}_DATA = \$(D${count}p)
189 lib${mod}dir = \$(libdir)/vlc/${topdir}
190 ${PRIVATE}noinst_LIBRARIES += \$(L${count}p)
191 ${PRIVATE}lib${mod}_plugin\$(LIBEXT): \$(lib${mod}_plugin_a_OBJECTS)
192 ${PRIVATE} case \`\$(VLC_CONFIG) --linkage ${mod}\` in \\
193 ${PRIVATE} c++) \$(CXXLINK) \$(lib${mod}_plugin_a_OBJECTS) \`\$(VLC_CONFIG) --libs plugin ${mod}\` ;; \\
194 ${PRIVATE} objc) \$(OBJCLINK) \$(lib${mod}_plugin_a_OBJECTS) \`\$(VLC_CONFIG) --libs plugin ${mod}\` ;; \\
195 ${PRIVATE} c|*) \$(LINK) \$(lib${mod}_plugin_a_OBJECTS) \`\$(VLC_CONFIG) --libs plugin ${mod}\` ;; \\
203 cat >> m4/private.m4-tmp1 << EOF
204 AM_CONDITIONAL(UNTRUE, false)
207 cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
208 cat >> m4/private.m4-tmp2 << EOF
211 cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
212 cat >> m4/private.m4-tmp3 << EOF
215 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
216 cat >> m4/private.m4-tmp4 << EOF
220 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
225 ### classic bootstrap stuff
229 # remove autotools cruft
230 rm -f aclocal.m4 configure configure.ac.in config.log Modules.am
231 # remove old autotools extra cruft
232 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
233 # remove new autotools extra cruft
234 (cd autotools && rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh)
235 # remove libtool cruft
236 rm -f ltmain.sh libtool ltconfig
237 # remove gettext cruft
238 rm -f m4/oldgettext.m4 ABOUT-NLS
242 if gettextize --version >/dev/null 2>&1; then
243 # Autopoint is available from 0.11.3, but we need 0.11.5
244 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
245 '>=' 0.11.5 >/dev/null 2>&1; then
246 # We have gettext, and a recent version! Everything is cool.
250 # User's gettext is too old. try to continue anyway.
253 echo > intl/Makefile.am
254 cat >> m4/private.m4 << EOF
255 dnl User's gettext is too old, so this is a no-op
256 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
261 # we don't have gettext. grmbl. try to continue anyway.
264 echo > intl/Makefile.am
265 cat >> m4/private.m4 << EOF
266 dnl User does not have gettext, so this is a no-op
267 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
273 # Check for pkg-config
274 if pkg-config --version >/dev/null 2>&1; then
275 # We have pkg-config, everything is cool.
278 # Not present, use a workaround.
279 cat >> m4/private.m4 << EOF
280 dnl User does not have pkg-config, so this is a no-op
281 AC_DEFUN([PKG_CHECK_MODULES], [])
289 if automake-1.7 --version >/dev/null 2>&1; then
291 # If we also have 1.6, use it instead because it is faster
292 if automake-1.6 --version >/dev/null 2>&1; then
293 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" ">" "1.6.1" > /dev/null 2>&1
297 elif automake-1.6 --version >/dev/null 2>&1; then
299 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1
300 then AUTOMAKESUCKS=yes
302 elif automake-1.5 --version >/dev/null 2>&1; then
305 elif automake --version > /dev/null 2>&1; then
307 case "`automake --version | sed -e '1s/[^0-9]*//' -e q`" in
308 0|0.*|1|1.[01234]|1.[01234].*)
317 if test "${amvers}" = "none"; then
319 echo "you need automake version 1.5 or later"
323 # Automake complains if this is not present
324 rm -f vlc-config.in && printf "" > vlc-config.in
327 aclocal${amvers} -I m4 || exit 1
330 automake${amvers} --add-missing --copy
335 ## files which need to be regenerated
337 rm -f vlc-config.in vlc-config
338 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
339 rm -f include/vlc_symbols.h
340 rm -f mozilla/vlcintf.h
348 ## Tell the user about gettext, pkg-config and sed
356 ===========================================================
357 IMPORTANT NOTE: you do not have gettext installed on your
358 system. The vlc build will work, but you will not have
359 internationalization support. We suggest installing gettext.
365 ==========================================================
366 NOTE: you have an old version of gettext installed on your
367 system. The vlc build will work, but if your system does not
368 have libintl you will not have internationalization support.
369 We suggest upgrading to gettext 0.11.5 or later.
380 ==============================================================
381 NOTE: you do not have the "pkg-config" utility on your system;
382 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
388 case "$AUTOMAKESUCKS" in
394 =============================================================
395 IMPORTANT NOTE: your version of automake has a bug which will
396 prevent proper plugin compilation. Either compile VLC with
397 the --disable-plugins flag, or use a version of automake newer
398 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
403 case "$INSTALLSUCKS" in
409 =============================================================
410 IMPORTANT NOTE: your version of automake has a bug which will
411 prevent proper installation. Do not use "make install" with this
412 version of automake, or use a version of automake newer than 1.5
413 (such as 1.6 or 1.7).