3 ## bootstrap file for the VLC media player
4 ## $Id: bootstrap,v 1.83 2003/11/15 01:21:48 massiot 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
27 ## Check for various tools
32 # Check for contrib directory
33 if test -d extras/contrib/bin; then
34 export PATH=./extras/contrib/bin:$PATH
35 export LD_LIBRARY_PATH=./extras/contrib/lib:$LD_LIBRARY_PATH
36 export DYLD_LIBRARY_PATH=./extras/contrib/lib:$DYLD_LIBRARY_PATH
41 if automake-1.7 --version >/dev/null 2>&1; then
43 # If we also have 1.6 (>> 1.6.1), use it instead because it is faster
44 if automake-1.6 --version >/dev/null 2>&1; then
45 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" ">" "1.6.1" > /dev/null 2>&1; then
49 elif automake-1.6 --version >/dev/null 2>&1; then
51 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1; then
54 elif automake-1.5 --version >/dev/null 2>&1; then
57 elif automake --version > /dev/null 2>&1; then
59 case "`automake --version | sed -e '1s/[^0-9]*//' -e q`" in
60 0|0.*|1|1.[01234]|1.[01234][-.]*)
69 if test "${amvers}" = "none"; then
71 echo "you need automake version 1.5 or later"
76 if gettextize --version >/dev/null 2>&1; then
77 # Autopoint is available from 0.11.3, but we need 0.11.5
78 if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
79 '>=' 0.11.5 >/dev/null 2>&1; then
80 # We have gettext, and a recent version! Everything is cool.
84 # User's gettext is too old. try to continue anyway.
88 # we don't have gettext. grmbl. try to continue anyway.
93 # Check for pkg-config
94 if pkg-config --version >/dev/null 2>&1; then
95 # We have pkg-config, everything is cool.
101 aclocal=aclocal${amvers}
102 automake=automake${amvers}
104 autoheader=autoheader
107 ## Generate the modules makefile, by parsing modules/**/Modules.am
111 echo "generating modules/**/Makefile.am and m4/private.m4"
113 # Prepare m4/private.m4
114 rm -f m4/private.m4 && cat > m4/private.m4 << EOF
115 dnl Private VLC macros - generated by bootstrap
119 if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
120 dnl User does not have pkg-config, so this is a no-op
121 AC_DEFUN([PKG_CHECK_MODULES], [:], [], [], [])
126 if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF
127 dnl User does not have gettext, so this is a no-op
128 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
133 rm -f m4/private.m4-tmp1 && cat > m4/private.m4-tmp1 << EOF
134 dnl The required AM_CONDITIONAL calls
135 dnl XXX: too many conditionals make the build very slow, disabled them
136 AC_DEFUN([AX_VLC_CONDITIONALS], [
138 rm -f m4/private.m4-tmp2 && cat > m4/private.m4-tmp2 << EOF
139 dnl The required AC_SUBST calls
140 AC_DEFUN([AX_VLC_SUBSTS], [
142 rm -f m4/private.m4-tmp3 && cat > m4/private.m4-tmp3 << EOF
143 dnl The required AC_OUTPUT calls
144 dnl XXX: this feature is only supported starting from automake-1.7
145 AC_DEFUN([AX_VLC_MAKEFILES], [AC_OUTPUT([
147 rm -f m4/private.m4-tmp4 && cat > m4/private.m4-tmp4 << EOF
148 dnl Helper macro for vlc-config generation
149 AC_DEFUN([AX_VLC_CONFIG_HELPER], [
150 cat >> vlc-config.in << BLAH
155 rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
156 # Autogenerated by bootstrap - DO NOT EDIT
158 SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`
159 #DIST_SUBDIRS = \$(SUBDIRS)
162 for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
165 mf="modules/${dir}/Modules.am"
166 basedir="${dir%%\/*}"
167 # automake will not recurse for make dist if we don't define SUBDIRS = .
168 subdirs="`sed -ne 's,'modules/${dir}'/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`"
169 rm -f modules/${dir}/Makefile.am && cat > modules/${dir}/Makefile.am << EOF
171 # Autogenerated by bootstrap - DO NOT EDIT - edit Modules.am instead
177 EXTRA_DIST = Modules.am
180 #DIST_SUBDIRS = \$(SUBDIRS)
181 libvlcdir = \$(libdir)/vlc/${basedir}
186 # There's no need for pic code on win32 so get rid of this to substantially
187 # reduce the compilation time.
195 -rm -f *.a *.so *.dll *.sl *.dylib
199 @set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
200 if test "\$(plugin)" != "no"; then z=\$\$(\$(VLC_CONFIG) --target plugin); for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf} | xargs`; do case "\$\$z" in */lib\$\${mod}_plugin*) echo lib\$\${mod}_plugin\$(LIBEXT);; esac; done; fi; \\
201 if test "\$(builtin)" != "no"; then z=\$\$(\$(VLC_CONFIG) --target builtin); for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf} | xargs`; do case "\$\$z" in */lib\$\${mod}.a*) echo lib\$\${mod}.a;; esac; done; fi; \\
202 if test "\$(pic)" != "no"; then z=\$\$(\$(VLC_CONFIG) --target builtin pic); for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf} | xargs`; do case "\$\$z" in */lib\$\${mod}_pic.a*) echo lib\$\${mod}_pic.a;; esac; done; fi; \\
203 \`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
207 for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf}`
209 if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
212 if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
215 # cat >> m4/private.m4-tmp1 << EOF
216 #dnl AM_CONDITIONAL(${mod}_p, test x\$${mod}_p = xyes)
217 #dnl AM_CONDITIONAL(${mod}_b, test x\$${mod}_b = xyes)
219 cat >> m4/private.m4-tmp4 << EOF
220 ${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
222 # Generation of modules/**/Makefile.am
223 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
224 # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
225 # S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
226 # the resulting file size.
227 # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
228 # work properly with any automake version I tested.
229 cat >> modules/${dir}/Makefile.am << EOF
233 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
234 clean-local: clean-${mod}
236 -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
240 cat >> modules/${dir}/Makefile.am << EOF
242 L${mod}p = lib${mod}_plugin.a
243 D${mod}p = lib${mod}_plugin\$(LIBEXT)
244 L${mod}b = lib${mod}.a
245 L${mod}pic = lib${mod}_pic.a
247 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
248 B${mod} = \$(nodist_SOURCES_${mod})
251 cat >> modules/${dir}/Makefile.am << EOF
255 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
256 ${PRIVATE}BUILT_SOURCES += \$(B${mod})
259 cat >> modules/${dir}/Makefile.am << EOF
260 ${PRIVATE}lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
262 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
263 ${PRIVATE}nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
266 cat >> modules/${dir}/Makefile.am << EOF
267 lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
268 lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
269 lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
271 lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
273 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
274 nodist_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
277 cat >> modules/${dir}/Makefile.am << EOF
278 lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
279 lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
280 lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
282 lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
284 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
285 nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
288 cat >> modules/${dir}/Makefile.am << EOF
289 lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
290 lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
291 lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
293 libvlc_LIBRARIES += \$(L${mod}b) \$(L${mod}pic)
294 lib${mod}_DATA = \$(D${mod}p)
296 lib${mod}dir = \$(libdir)/vlc/${topdir}
297 ${PRIVATE}noinst_LIBRARIES += \$(L${mod}p)
298 ${PRIVATE}lib${mod}_plugin\$(LIBEXT): \$(lib${mod}_plugin_a_OBJECTS)
299 ${PRIVATE} @case \`\$(VLC_CONFIG) --linkage ${mod}\` in \\
300 ${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}\` ;; \\
301 ${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}\` ;; \\
302 ${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}\` ;; \\
310 cat >> m4/private.m4-tmp1 << EOF
311 AM_CONDITIONAL(UNTRUE, false)
314 cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
315 cat >> m4/private.m4-tmp2 << EOF
318 cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
319 cat >> m4/private.m4-tmp3 << EOF
322 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
323 cat >> m4/private.m4-tmp4 << EOF
327 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
332 ### classic bootstrap stuff
336 # remove autotools cruft
337 rm -f aclocal.m4 configure config.log config.h config.h.in
338 rm -Rf autom4te.cache
339 # remove old autotools extra cruft
340 rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
341 # remove new autotools extra cruft
342 (cd autotools && rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh)
343 # remove libtool cruft
344 rm -f ltmain.sh libtool ltconfig
345 # remove gettext cruft
348 # remove old vlc cruft
349 rm -f m4/oldgettext.m4 stamp-pic configure.ac.in Modules.am
350 # remove new vlc cruft
351 rm -f stamp-builtin stamp-h* mozilla/stamp-pic
353 # Automake complains if these are not present
354 rm -f vlc-config.in && printf "" > vlc-config.in
355 if [ "$GETTEXT" != "yes" ]; then
356 test -d intl || mkdir intl
357 printf "" > intl/Makefile.am
358 printf "" > ABOUT-NLS
366 ${automake} --add-missing --copy
369 ## files which need to be regenerated
371 rm -f vlc-config.in vlc-config
372 rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
373 rm -f include/vlc_symbols.h
374 rm -f mozilla/vlcintf.h
380 ## Tell the user about gettext, pkg-config and sed
386 ===========================================================
387 IMPORTANT NOTE: you do not have gettext installed on your
388 system. The vlc build will work, but you will not have
389 internationalization support. We suggest installing gettext.
394 ==========================================================
395 NOTE: you have an old version of gettext installed on your
396 system. The vlc build will work, but if your system does not
397 have libintl you will not have internationalization support.
398 We suggest upgrading to gettext 0.11.5 or later.
407 ==============================================================
408 NOTE: you do not have the "pkg-config" utility on your system;
409 detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
415 case "$AUTOMAKESUCKS" in
419 =============================================================
420 IMPORTANT NOTE: your version of automake has a bug which will
421 prevent proper plugin compilation. Either compile VLC with
422 the --disable-plugins flag, or use a version of automake newer
423 than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
428 case "$INSTALLSUCKS" in
432 =============================================================
433 IMPORTANT NOTE: your version of automake has a bug which will
434 prevent proper installation. Do not use "make install" with this
435 version of automake, or use a version of automake newer than 1.5
436 (such as 1.6 or 1.7).