mirror of
https://github.com/videolan/vlc.git
synced 2024-11-30 21:33:40 +08:00
29f8c4b341
new method in which aclocal args first get stored in a variable.
444 lines
13 KiB
Bash
Executable File
444 lines
13 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
## bootstrap file for the VLC media player
|
|
## $Id$
|
|
##
|
|
## Authors: Sam Hocevar <sam@zoy.org>
|
|
|
|
if test "$#" != "0"; then
|
|
echo "Usage: $0"
|
|
echo " Calls automake, autoconf, autoheader, autopoint and other auto* to generate"
|
|
echo " m4 macros and prepare Makefiles."
|
|
exit 1
|
|
fi
|
|
|
|
###
|
|
### Get a sane environment, just in case
|
|
###
|
|
LANG=C
|
|
export LANG
|
|
CYGWIN=binmode
|
|
export CYGWIN
|
|
|
|
set -e
|
|
set -x
|
|
|
|
##
|
|
## Check for various tools
|
|
##
|
|
AUTOMAKESUCKS=no
|
|
INSTALLSUCKS=no
|
|
|
|
ACLOCAL_ARGS="-I m4"
|
|
|
|
# Check for contrib directory
|
|
if test -d extras/contrib/bin; then
|
|
export PATH=./extras/contrib/bin:$PATH
|
|
export LD_LIBRARY_PATH=./extras/contrib/lib:$LD_LIBRARY_PATH
|
|
export DYLD_LIBRARY_PATH=./extras/contrib/lib:$DYLD_LIBRARY_PATH
|
|
ACLOCAL_ARGS="${ACLOCAL_ARGS} -I extras/contrib/share/aclocal"
|
|
fi
|
|
|
|
# Check for automake
|
|
amvers="none"
|
|
if automake-1.7 --version >/dev/null 2>&1; then
|
|
amvers="-1.7"
|
|
# If we also have 1.6 (>> 1.6.1), use it instead because it is faster
|
|
if automake-1.6 --version >/dev/null 2>&1; then
|
|
if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" ">" "1.6.1" > /dev/null 2>&1; then
|
|
amvers="-1.6"
|
|
fi
|
|
fi
|
|
elif automake-1.6 --version >/dev/null 2>&1; then
|
|
amvers="-1.6"
|
|
if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1; then
|
|
AUTOMAKESUCKS=yes
|
|
fi
|
|
elif automake-1.5 --version >/dev/null 2>&1; then
|
|
INSTALLSUCKS=yes
|
|
amvers="-1.5"
|
|
elif automake --version > /dev/null 2>&1; then
|
|
amvers=""
|
|
case "`automake --version | sed -e '1s/[^0-9]*//' -e q`" in
|
|
0|0.*|1|1.[01234]|1.[01234][-.]*)
|
|
amvers="none" ;;
|
|
1.5|1.5.*)
|
|
INSTALLSUCKS=yes ;;
|
|
1.6|1.6.0|1.6.1)
|
|
AUTOMAKESUCKS=yes ;;
|
|
esac
|
|
fi
|
|
|
|
if test "${amvers}" = "none"; then
|
|
set +x
|
|
echo "you need automake version 1.5 or later"
|
|
exit 1
|
|
fi
|
|
|
|
# Check for gettext
|
|
if gettextize --version >/dev/null 2>&1; then
|
|
# Autopoint is available from 0.11.3, but we need 0.11.5
|
|
if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` \
|
|
'>=' 0.11.5 >/dev/null 2>&1; then
|
|
# We have gettext, and a recent version! Everything is cool.
|
|
autopoint=autopoint
|
|
GETTEXT=yes
|
|
else
|
|
# User's gettext is too old. try to continue anyway.
|
|
autopoint=:
|
|
GETTEXT=old
|
|
fi;else
|
|
# we don't have gettext. grmbl. try to continue anyway.
|
|
autopoint=:
|
|
GETTEXT=no
|
|
fi
|
|
|
|
# Check for pkg-config
|
|
if pkg-config --version >/dev/null 2>&1; then
|
|
# We have pkg-config, everything is cool.
|
|
PKGCONFIG=yes
|
|
else
|
|
PKGCONFIG=no
|
|
fi
|
|
|
|
aclocal=aclocal${amvers}
|
|
automake=automake${amvers}
|
|
autoconf=autoconf
|
|
autoheader=autoheader
|
|
|
|
##
|
|
## Generate the modules makefile, by parsing modules/**/Modules.am
|
|
##
|
|
|
|
set +x
|
|
echo "generating modules/**/Makefile.am and m4/private.m4"
|
|
|
|
# Prepare m4/private.m4
|
|
rm -f m4/private.m4 && cat > m4/private.m4 << EOF
|
|
dnl Private VLC macros - generated by bootstrap
|
|
|
|
EOF
|
|
|
|
if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
|
|
dnl User does not have pkg-config, so this is a no-op
|
|
AC_DEFUN([PKG_CHECK_MODULES], [:], [], [], [])
|
|
|
|
EOF
|
|
fi
|
|
|
|
if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF
|
|
dnl User does not have gettext, so this is a no-op
|
|
AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
|
|
|
|
EOF
|
|
fi
|
|
|
|
rm -f m4/private.m4-tmp1 && cat > m4/private.m4-tmp1 << EOF
|
|
dnl The required AM_CONDITIONAL calls
|
|
dnl XXX: too many conditionals make the build very slow, disabled them
|
|
AC_DEFUN([VLC_CONDITIONALS], [
|
|
EOF
|
|
rm -f m4/private.m4-tmp2 && cat > m4/private.m4-tmp2 << EOF
|
|
dnl The required AC_SUBST calls
|
|
AC_DEFUN([VLC_SUBSTS], [
|
|
EOF
|
|
rm -f m4/private.m4-tmp3 && cat > m4/private.m4-tmp3 << EOF
|
|
dnl The required AC_OUTPUT calls
|
|
dnl XXX: this feature is only supported starting from automake-1.7
|
|
AC_DEFUN([VLC_MAKEFILES], [AC_OUTPUT([
|
|
EOF
|
|
rm -f m4/private.m4-tmp4 && cat > m4/private.m4-tmp4 << EOF
|
|
dnl Helper macro for vlc-config generation
|
|
AC_DEFUN([VLC_CONFIG_HELPER], [
|
|
cat >> vlc-config.in << BLAH
|
|
EOF
|
|
|
|
modules=""
|
|
|
|
rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
|
|
# Autogenerated by bootstrap - DO NOT EDIT
|
|
EXTRA_DIST = LIST
|
|
SUBDIRS = `sed -ne 's,modules/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`
|
|
#DIST_SUBDIRS = \$(SUBDIRS)
|
|
EOF
|
|
|
|
for dir in `sed -ne 's,modules/\(.*\)/Makefile,\1,p' configure.ac`
|
|
do
|
|
printf "."
|
|
mf="modules/${dir}/Modules.am"
|
|
basedir="`echo "${dir}" | cut -f1 -d/`"
|
|
# automake will not recurse for make dist if we don't define SUBDIRS = .
|
|
subdirs="`sed -ne 's,'modules/${dir}'/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`"
|
|
rm -f modules/${dir}/Makefile.am && cat > modules/${dir}/Makefile.am << EOF
|
|
|
|
# Autogenerated by bootstrap - DO NOT EDIT - edit Modules.am instead
|
|
|
|
NULL =
|
|
libvlc_LIBRARIES =
|
|
noinst_LIBRARIES =
|
|
noinst_HEADERS =
|
|
EXTRA_DIST = Modules.am
|
|
BUILT_SOURCES =
|
|
SUBDIRS = ${subdirs}
|
|
#DIST_SUBDIRS = \$(SUBDIRS)
|
|
libvlcdir = \$(libdir)/vlc/${basedir}
|
|
include Modules.am
|
|
|
|
if BUILD_MOZILLA
|
|
if HAVE_WIN32
|
|
# There's no need for pic code on win32 so get rid of this to substantially
|
|
# reduce the compilation time.
|
|
pic = no
|
|
endif
|
|
else
|
|
pic = no
|
|
endif
|
|
|
|
clean-local:
|
|
-rm -f *.a *.so *.dll *.sl *.dylib
|
|
|
|
all: all-modules
|
|
all-modules:
|
|
@set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
|
|
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; \\
|
|
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; \\
|
|
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; \\
|
|
\`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
|
|
test -z "\$\$fail"
|
|
|
|
EOF
|
|
for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf}`
|
|
do
|
|
if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
|
|
PRIVATE='#'; else
|
|
PRIVATE=''; fi
|
|
if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
|
|
NODIST=''; else
|
|
NODIST='#'; fi
|
|
# cat >> m4/private.m4-tmp1 << EOF
|
|
#dnl AM_CONDITIONAL(${mod}_p, test x\$${mod}_p = xyes)
|
|
#dnl AM_CONDITIONAL(${mod}_b, test x\$${mod}_b = xyes)
|
|
#EOF
|
|
cat >> m4/private.m4-tmp4 << EOF
|
|
${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
|
|
EOF
|
|
# Generation of modules/**/Makefile.am
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
# - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
|
|
# S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
|
|
# the resulting file size.
|
|
# - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
|
|
# work properly with any automake version I tested.
|
|
cat >> modules/${dir}/Makefile.am << EOF
|
|
# The ${mod} plugin
|
|
|
|
EOF
|
|
if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
|
|
clean-local: clean-${mod}
|
|
clean-${mod}:
|
|
-test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
|
|
|
|
EOF
|
|
fi
|
|
cat >> modules/${dir}/Makefile.am << EOF
|
|
if UNTRUE
|
|
L${mod}p = lib${mod}_plugin.a
|
|
D${mod}p = lib${mod}_plugin\$(LIBEXT)
|
|
L${mod}b = lib${mod}.a
|
|
L${mod}pic = lib${mod}_pic.a
|
|
EOF
|
|
if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
|
|
B${mod} = \$(nodist_SOURCES_${mod})
|
|
EOF
|
|
fi
|
|
cat >> modules/${dir}/Makefile.am << EOF
|
|
endif
|
|
|
|
EOF
|
|
if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
|
|
${PRIVATE}BUILT_SOURCES += \$(B${mod})
|
|
EOF
|
|
fi
|
|
cat >> modules/${dir}/Makefile.am << EOF
|
|
${PRIVATE}lib${mod}_plugin_a_SOURCES = \$(SOURCES_${mod})
|
|
EOF
|
|
if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
|
|
${PRIVATE}nodist_lib${mod}_plugin_a_SOURCES = \$(nodist_SOURCES_${mod})
|
|
EOF
|
|
fi
|
|
cat >> modules/${dir}/Makefile.am << EOF
|
|
lib${mod}_plugin_a_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
|
|
lib${mod}_plugin_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
|
|
lib${mod}_plugin_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
|
|
|
|
lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
|
|
EOF
|
|
if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
|
|
nodist_lib${mod}_pic_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
|
|
EOF
|
|
fi
|
|
cat >> modules/${dir}/Makefile.am << EOF
|
|
lib${mod}_pic_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin pic ${mod}\`
|
|
lib${mod}_pic_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin pic ${mod}\`
|
|
lib${mod}_pic_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin pic ${mod}\`
|
|
|
|
lib${mod}_a_SOURCES = ${PRIVATE}\$(SOURCES_${mod})
|
|
EOF
|
|
if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
|
|
nodist_lib${mod}_a_SOURCES = ${PRIVATE}\$(nodist_SOURCES_${mod})
|
|
EOF
|
|
fi
|
|
cat >> modules/${dir}/Makefile.am << EOF
|
|
lib${mod}_a_CFLAGS = \`\$(VLC_CONFIG) --cflags builtin ${mod}\`
|
|
lib${mod}_a_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags builtin ${mod}\`
|
|
lib${mod}_a_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags builtin ${mod}\`
|
|
|
|
libvlc_LIBRARIES += \$(L${mod}b) \$(L${mod}pic)
|
|
lib${mod}_DATA = \$(D${mod}p)
|
|
|
|
lib${mod}dir = \$(libdir)/vlc/${topdir}
|
|
${PRIVATE}noinst_LIBRARIES += \$(L${mod}p)
|
|
${PRIVATE}lib${mod}_plugin\$(LIBEXT): \$(lib${mod}_plugin_a_OBJECTS)
|
|
${PRIVATE} @case \`\$(VLC_CONFIG) --linkage ${mod}\` in \\
|
|
${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}\` ;; \\
|
|
${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}\` ;; \\
|
|
${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}\` ;; \\
|
|
${PRIVATE} esac
|
|
|
|
|
|
EOF
|
|
done
|
|
done
|
|
|
|
cat >> m4/private.m4-tmp1 << EOF
|
|
AM_CONDITIONAL(UNTRUE, false)
|
|
])
|
|
EOF
|
|
cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
|
|
cat >> m4/private.m4-tmp2 << EOF
|
|
])
|
|
EOF
|
|
cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
|
|
cat >> m4/private.m4-tmp3 << EOF
|
|
])])
|
|
EOF
|
|
cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
|
|
cat >> m4/private.m4-tmp4 << EOF
|
|
BLAH
|
|
])
|
|
EOF
|
|
cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
|
|
|
|
echo " done."
|
|
|
|
###
|
|
### classic bootstrap stuff
|
|
###
|
|
set -x
|
|
|
|
# remove autotools cruft
|
|
rm -f aclocal.m4 configure config.log config.h config.h.in
|
|
rm -Rf autom4te.cache
|
|
# remove old autotools extra cruft
|
|
rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
|
|
# remove new autotools extra cruft
|
|
(cd autotools && rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh)
|
|
# remove libtool cruft
|
|
rm -f ltmain.sh libtool ltconfig
|
|
# remove gettext cruft
|
|
rm -f ABOUT-NLS
|
|
rm -Rf intl
|
|
# remove old vlc cruft
|
|
rm -f m4/oldgettext.m4 stamp-pic configure.ac.in Modules.am
|
|
# remove new vlc cruft
|
|
rm -f stamp-builtin stamp-h* mozilla/stamp-pic
|
|
|
|
# Automake complains if these are not present
|
|
rm -f vlc-config.in && printf "" > vlc-config.in
|
|
if [ "$GETTEXT" != "yes" ]; then
|
|
test -d intl || mkdir intl
|
|
printf "" > intl/Makefile.am
|
|
printf "" > ABOUT-NLS
|
|
fi
|
|
|
|
# Do the rest
|
|
${autopoint} -f
|
|
${aclocal} ${ACLOCAL_ARGS}
|
|
${autoconf}
|
|
${autoheader}
|
|
${automake} --add-missing --copy
|
|
|
|
##
|
|
## files which need to be regenerated
|
|
##
|
|
rm -f vlc-config.in vlc-config
|
|
rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
|
|
rm -f include/vlc_symbols.h
|
|
rm -f mozilla/vlcintf.h
|
|
|
|
# Shut up
|
|
set +x
|
|
|
|
##
|
|
## Tell the user about gettext, pkg-config and sed
|
|
##
|
|
case "${GETTEXT}" in
|
|
yes) ;;
|
|
no) cat << EOF
|
|
|
|
===========================================================
|
|
IMPORTANT NOTE: you do not have gettext installed on your
|
|
system. The vlc build will work, but you will not have
|
|
internationalization support. We suggest installing gettext.
|
|
EOF
|
|
;;
|
|
old) cat << EOF
|
|
|
|
==========================================================
|
|
NOTE: you have an old version of gettext installed on your
|
|
system. The vlc build will work, but if your system does not
|
|
have libintl you will not have internationalization support.
|
|
We suggest upgrading to gettext 0.11.5 or later.
|
|
EOF
|
|
;;
|
|
esac
|
|
|
|
case "$PKGCONFIG" in
|
|
yes) ;;
|
|
no) cat << EOF
|
|
|
|
==============================================================
|
|
NOTE: you do not have the "pkg-config" utility on your system;
|
|
detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
|
|
reliable.
|
|
EOF
|
|
;;
|
|
esac
|
|
|
|
case "$AUTOMAKESUCKS" in
|
|
no) ;;
|
|
yes) cat << EOF
|
|
|
|
=============================================================
|
|
IMPORTANT NOTE: your version of automake has a bug which will
|
|
prevent proper plugin compilation. Either compile VLC with
|
|
the --disable-plugins flag, or use a version of automake newer
|
|
than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
|
|
EOF
|
|
;;
|
|
esac
|
|
|
|
case "$INSTALLSUCKS" in
|
|
no) ;;
|
|
yes) cat << EOF
|
|
|
|
=============================================================
|
|
IMPORTANT NOTE: your version of automake has a bug which will
|
|
prevent proper installation. Do not use "make install" with this
|
|
version of automake, or use a version of automake newer than 1.5
|
|
(such as 1.6 or 1.7).
|
|
EOF
|
|
;;
|
|
esac
|
|
|