mirror of
https://github.com/videolan/vlc.git
synced 2024-11-27 11:57:03 +08:00
8c7b5a88af
current directory but looked for in the parent directory.
435 lines
13 KiB
Bash
Executable File
435 lines
13 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
## bootstrap file for the VLC media player
|
|
## $Id: bootstrap,v 1.70 2003/07/17 13:09:46 sam Exp $
|
|
##
|
|
## 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
|
|
|
|
##
|
|
## Naively assume our system doesn't suck. Unfortunately it seldom doesn't.
|
|
##
|
|
AUTOMAKESUCKS=no
|
|
INSTALLSUCKS=no
|
|
|
|
##
|
|
## Generate the modules makefile, by parsing modules/**/Modules.am
|
|
##
|
|
|
|
printf "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
|
|
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([AX_VLC_CONDITIONALS], [
|
|
EOF
|
|
rm -f m4/private.m4-tmp2 && cat > m4/private.m4-tmp2 << EOF
|
|
dnl The required AC_SUBST calls
|
|
AC_DEFUN([AX_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([AX_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([AX_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="${dir%%\/*}"
|
|
# 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
|
|
|
|
clean: clean-local
|
|
clean-local:
|
|
-rm -f *.a *.so *.dll *.sl *.dylib
|
|
|
|
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
|
|
clean: clean-${mod}
|
|
all: all-${mod}
|
|
|
|
EOF
|
|
if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
|
|
clean-${mod}:
|
|
-test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
|
|
|
|
EOF
|
|
fi
|
|
cat >> modules/${dir}/Makefile.am << EOF
|
|
all-${mod}:
|
|
if BUILD_MOZILLA
|
|
@set fnord \$\$MAKEFLAGS; amf=\$\$2; \\
|
|
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) || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\
|
|
fi; \\
|
|
if test "\$(builtin)" != "no" \\
|
|
&& \$(VLC_CONFIG) --target builtin | grep "${dir}/lib${mod}\\.a" >/dev/null 2>&1; then \\
|
|
\$(MAKE) \$(AM_MAKEFLAGS) lib${mod}.a || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\
|
|
fi; \\
|
|
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 || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\
|
|
fi; \\
|
|
test -z "\$\$fail"
|
|
else
|
|
@set fnord \$\$MAKEFLAGS; amf=\$\$2; \\
|
|
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) || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\
|
|
fi; \\
|
|
if test "\$(builtin)" != "no" \\
|
|
&& \$(VLC_CONFIG) --target builtin | grep "${dir}/lib${mod}\\.a" >/dev/null 2>&1; then \\
|
|
\$(MAKE) \$(AM_MAKEFLAGS) lib${mod}.a || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \\
|
|
fi; \\
|
|
test -z "\$\$fail"
|
|
endif
|
|
|
|
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
|
|
# 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
|
|
|
|
# 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
|
|
GETTEXT=yes
|
|
else
|
|
# User's gettext is too old. try to continue anyway.
|
|
echo > ABOUT-NLS
|
|
mkdir -p intl
|
|
echo > intl/Makefile.am
|
|
cat >> m4/private.m4 << EOF
|
|
dnl User's gettext is too old, so this is a no-op
|
|
AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
|
|
|
|
EOF
|
|
GETTEXT=old
|
|
fi;else
|
|
# we don't have gettext. grmbl. try to continue anyway.
|
|
echo > ABOUT-NLS
|
|
mkdir -p intl
|
|
echo > intl/Makefile.am
|
|
cat >> m4/private.m4 << EOF
|
|
dnl User does not have gettext, so this is a no-op
|
|
AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
|
|
|
|
EOF
|
|
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
|
|
# Not present, use a workaround.
|
|
cat >> m4/private.m4 << EOF
|
|
dnl User does not have pkg-config, so this is a no-op
|
|
AC_DEFUN([PKG_CHECK_MODULES], [])
|
|
|
|
EOF
|
|
PKGCONFIG=no
|
|
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, 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
|
|
|
|
# Automake complains if this is not present
|
|
rm -f vlc-config.in && printf "" > vlc-config.in
|
|
|
|
# Do the rest
|
|
aclocal${amvers} -I m4
|
|
autoconf
|
|
autoheader
|
|
automake${amvers} --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
|
|
|