bootstrap
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:14k
源码类别:

多媒体

开发平台:

MultiPlatform

  1. #! /bin/sh
  2. ##  bootstrap file for the VLC media player
  3. ##  $Id: bootstrap 8491 2004-08-22 02:17:43Z rocky $
  4. ##
  5. ##  Authors: Sam Hocevar <sam@zoy.org>
  6. if test "$#" != "0"; then
  7.   echo "Usage: $0"
  8.   echo "  Calls automake, autoconf, autoheader, autopoint and other auto* to generate"
  9.   echo "  m4 macros and prepare Makefiles."
  10.   exit 1
  11. fi
  12. ###
  13. ###  Get a sane environment, just in case
  14. ###
  15. LANG=C
  16. export LANG
  17. CYGWIN=binmode
  18. export CYGWIN
  19. set -e
  20. set -x
  21. ##
  22. ## Check for various tools
  23. ##
  24. AUTOMAKESUCKS=no
  25. INSTALLSUCKS=no
  26. ACLOCAL_ARGS="-I m4"
  27. # Check for contrib directory
  28. if test -d extras/contrib/bin; then
  29.   export PATH=./extras/contrib/bin:$PATH
  30.   ACLOCAL_ARGS="${ACLOCAL_ARGS} -I extras/contrib/share/aclocal"
  31.   if test ".`uname -s`" = ".Darwin"; then
  32.     export LD_LIBRARY_PATH=./extras/contrib/lib:$LD_LIBRARY_PATH
  33.     export DYLD_LIBRARY_PATH=./extras/contrib/lib:$DYLD_LIBRARY_PATH
  34.   elif test ".`uname -s`" = ".BeOS"; then
  35.     export LIBRARY_PATH=./extras/contrib/lib:$LIBRARY_PATH
  36.     export BELIBRARIES=./extras/contrib/lib:$BELIBRARIES
  37.   fi
  38. fi
  39. # Check for automake
  40. amvers="none"
  41. if automake-1.8 --version >/dev/null 2>&1; then
  42.   amvers="-1.8"
  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
  46.       amvers="-1.6"
  47.     fi
  48.   fi
  49. elif automake-1.7 --version >/dev/null 2>&1; then
  50.   amvers="-1.7"
  51.   # If we also have 1.6 (>> 1.6.1), use it instead because it is faster
  52.   if automake-1.6 --version >/dev/null 2>&1; then
  53.     if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" ">" "1.6.1" > /dev/null 2>&1; then
  54.       amvers="-1.6"
  55.     fi
  56.   fi
  57. elif automake-1.6 --version >/dev/null 2>&1; then
  58.   amvers="-1.6"
  59.   if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1; then
  60.     AUTOMAKESUCKS=yes
  61.   fi
  62. elif automake-1.5 --version >/dev/null 2>&1; then
  63.   INSTALLSUCKS=yes
  64.   amvers="-1.5"
  65. elif automake --version > /dev/null 2>&1; then
  66.   amvers=""
  67.   case "`automake --version | sed -e '1s/[^0-9]*//' -e q`" in
  68.     0|0.*|1|1.[01234]|1.[01234][-.]*)
  69.       amvers="none" ;;
  70.     1.5|1.5.*)
  71.       INSTALLSUCKS=yes ;;
  72.     1.6|1.6.0|1.6.1)
  73.       AUTOMAKESUCKS=yes ;;
  74.   esac
  75. fi
  76. if test "${amvers}" = "none"; then
  77.   set +x
  78.   echo "you need automake version 1.5 or later"
  79.   exit 1
  80. fi
  81. # Check for gettext
  82. if gettextize --version >/dev/null 2>&1; then
  83. # Autopoint is available from 0.11.3, but we need 0.11.5
  84. if expr `gettextize --version | sed -e '1s/[^0-9]*//' -e q` 
  85.         '>=' 0.11.5 >/dev/null 2>&1; then
  86.   # We have gettext, and a recent version! Everything is cool.
  87.   autopoint=autopoint
  88.   GETTEXT=yes
  89. else
  90.   # User's gettext is too old. try to continue anyway.
  91.   autopoint=:
  92.   GETTEXT=old
  93. fi;else
  94.   # we don't have gettext. grmbl. try to continue anyway.
  95.   autopoint=:
  96.   GETTEXT=no
  97. fi
  98. # Check for pkg-config
  99. if pkg-config --version >/dev/null 2>&1; then
  100.   # We have pkg-config, everything is cool.
  101.   PKGCONFIG=yes
  102. else
  103.   PKGCONFIG=no
  104. fi
  105. aclocal=aclocal${amvers}
  106. automake=automake${amvers}
  107. autoconf=autoconf
  108. autoheader=autoheader
  109. ##
  110. ## Generate the modules makefile, by parsing modules/**/Modules.am
  111. ##
  112. set +x
  113. echo "generating modules/**/Makefile.am and m4/private.m4"
  114. # Prepare m4/private.m4
  115. rm -f m4/private.m4 && cat > m4/private.m4 << EOF
  116. dnl  Private VLC macros - generated by bootstrap
  117. EOF
  118. if [ "${PKGCONFIG}" = "no" ]; then cat >> m4/private.m4 << EOF
  119. dnl  User does not have pkg-config, so this is a no-op
  120. AC_DEFUN([PKG_CHECK_MODULES], [:], [], [], [])
  121. EOF
  122. fi
  123. if [ "${GETTEXT}" != "yes" ]; then cat >> m4/private.m4 << EOF
  124. dnl  User does not have gettext, so this is a no-op
  125. AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
  126. EOF
  127. fi
  128. rm -f m4/private.m4-tmp1 && cat > m4/private.m4-tmp1 << EOF
  129. dnl  The required AM_CONDITIONAL calls
  130. dnl  XXX: too many conditionals make the build very slow, disabled them
  131. AC_DEFUN([VLC_CONDITIONALS], [
  132. EOF
  133. rm -f m4/private.m4-tmp2 && cat > m4/private.m4-tmp2 << EOF
  134. dnl  The required AC_SUBST calls
  135. AC_DEFUN([VLC_SUBSTS], [
  136. EOF
  137. rm -f m4/private.m4-tmp3 && cat > m4/private.m4-tmp3 << EOF
  138. dnl  The required AC_OUTPUT calls
  139. dnl  XXX: this feature is only supported starting from automake-1.7
  140. AC_DEFUN([VLC_MAKEFILES], [AC_OUTPUT([
  141. EOF
  142. rm -f m4/private.m4-tmp4 && cat > m4/private.m4-tmp4 << EOF
  143. dnl  Helper macro for vlc-config generation
  144. AC_DEFUN([VLC_CONFIG_HELPER], [
  145.   cat >> vlc-config.in << BLAH
  146. EOF
  147. modules=""
  148. rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
  149. # Autogenerated by bootstrap - DO NOT EDIT
  150. EXTRA_DIST = LIST
  151. SUBDIRS = `sed -ne 's,modules/([^/]*)/Makefile,1,p' configure.ac | xargs`
  152. #DIST_SUBDIRS = $(SUBDIRS)
  153. EOF
  154. for dir in `sed -ne 's,modules/(.*)/Makefile,1,p' configure.ac`
  155. do
  156.   printf "."
  157.   mf="modules/${dir}/Modules.am"
  158.   basedir="`echo "${dir}" | cut -f1 -d/`"
  159.   # automake will not recurse for make dist if we don't define SUBDIRS = .
  160.   subdirs="`sed -ne 's,'modules/${dir}'/([^/]*)/Makefile,1,p' configure.ac | xargs`"
  161.   rm -f modules/${dir}/Makefile.am && cat > modules/${dir}/Makefile.am << EOF
  162. # Autogenerated by bootstrap - DO NOT EDIT - edit Modules.am instead
  163. NULL =
  164. libvlc_LIBRARIES =
  165. noinst_LIBRARIES =
  166. noinst_HEADERS =
  167. EXTRA_DIST = Modules.am
  168. BUILT_SOURCES =
  169. SUBDIRS = ${subdirs}
  170. #DIST_SUBDIRS = $(SUBDIRS)
  171. libvlcdir = $(libdir)/vlc/${basedir}
  172. include Modules.am
  173. if BUILD_MOZILLA
  174. if HAVE_WIN32
  175. # There's no need for pic code on win32 so get rid of this to substantially
  176. # reduce the compilation time.
  177. pic = no
  178. endif
  179. else
  180. pic = no
  181. endif
  182. clean-local:
  183. -rm -f *.a *.so *.dll *.sl *.dylib
  184. all: all-modules
  185. all-modules:
  186. @set fnord $$MAKEFLAGS; amf=$$2; targets=`\
  187. 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; \
  188. 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; \
  189. 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; \
  190. `; case "$$targets" in *lib*) $(MAKE) $(AM_MAKEFLAGS) $$targets || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \
  191. test -z "$$fail"
  192. EOF
  193.   for mod in `sed -n -e 's/^ *SOURCES_([^ ]*).*/1/p' < ${mf}`
  194.   do
  195.     if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
  196.         PRIVATE='#'; else
  197.         PRIVATE=''; fi
  198.     if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
  199.         NODIST=''; else
  200.         NODIST='#'; fi
  201. #    cat >> m4/private.m4-tmp1 << EOF
  202. #dnl  AM_CONDITIONAL(${mod}_p, test x$${mod}_p = xyes)
  203. #dnl  AM_CONDITIONAL(${mod}_b, test x$${mod}_b = xyes)
  204. #EOF
  205.     cat >> m4/private.m4-tmp4 << EOF
  206.     ${mod}) list="\${list} ${dir}/lib${mod}" ;;
  207. EOF
  208. # Generation of modules/**/Makefile.am
  209. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  210. # - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
  211. #   S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
  212. #   the resulting file size.
  213. # - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
  214. #   work properly with any automake version I tested.
  215.     cat >> modules/${dir}/Makefile.am << EOF
  216. # The ${mod} plugin
  217. EOF
  218.     if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
  219. clean-local: clean-${mod}
  220. clean-${mod}:
  221. -test -z "$(nodist_SOURCES_${mod})" || rm -f $(nodist_SOURCES_${mod})
  222. EOF
  223.     fi
  224.     cat >> modules/${dir}/Makefile.am << EOF
  225. if UNTRUE
  226. L${mod}p = lib${mod}_plugin.a
  227. D${mod}p = lib${mod}_plugin$(LIBEXT)
  228. L${mod}b = lib${mod}.a
  229. L${mod}pic = lib${mod}_pic.a
  230. EOF
  231.     if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
  232. B${mod} = $(nodist_SOURCES_${mod})
  233. EOF
  234.     fi
  235.     cat >> modules/${dir}/Makefile.am << EOF
  236. endif
  237. EOF
  238.     if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
  239. ${PRIVATE}BUILT_SOURCES += $(B${mod})
  240. EOF
  241.     fi
  242.     cat >> modules/${dir}/Makefile.am << EOF
  243. ${PRIVATE}lib${mod}_plugin_a_SOURCES = $(SOURCES_${mod})
  244. EOF
  245.     if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
  246. ${PRIVATE}nodist_lib${mod}_plugin_a_SOURCES = $(nodist_SOURCES_${mod})
  247. EOF
  248.     fi
  249.     cat >> modules/${dir}/Makefile.am << EOF
  250. lib${mod}_plugin_a_CFLAGS = `$(VLC_CONFIG) --cflags plugin ${mod}`
  251. lib${mod}_plugin_a_CXXFLAGS = `$(VLC_CONFIG) --cxxflags plugin ${mod}`
  252. lib${mod}_plugin_a_OBJCFLAGS = `$(VLC_CONFIG) --objcflags plugin ${mod}`
  253. lib${mod}_pic_a_SOURCES = ${PRIVATE}$(SOURCES_${mod})
  254. EOF
  255.     if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
  256. nodist_lib${mod}_pic_a_SOURCES = ${PRIVATE}$(nodist_SOURCES_${mod})
  257. EOF
  258.     fi
  259.     cat >> modules/${dir}/Makefile.am << EOF
  260. lib${mod}_pic_a_CFLAGS = `$(VLC_CONFIG) --cflags builtin pic ${mod}`
  261. lib${mod}_pic_a_CXXFLAGS = `$(VLC_CONFIG) --cxxflags builtin pic ${mod}`
  262. lib${mod}_pic_a_OBJCFLAGS = `$(VLC_CONFIG) --objcflags builtin pic ${mod}`
  263. lib${mod}_a_SOURCES = ${PRIVATE}$(SOURCES_${mod})
  264. EOF
  265.     if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
  266. nodist_lib${mod}_a_SOURCES = ${PRIVATE}$(nodist_SOURCES_${mod})
  267. EOF
  268.     fi
  269.     cat >> modules/${dir}/Makefile.am << EOF
  270. lib${mod}_a_CFLAGS = `$(VLC_CONFIG) --cflags builtin ${mod}`
  271. lib${mod}_a_CXXFLAGS = `$(VLC_CONFIG) --cxxflags builtin ${mod}`
  272. lib${mod}_a_OBJCFLAGS = `$(VLC_CONFIG) --objcflags builtin ${mod}`
  273. libvlc_LIBRARIES += $(L${mod}b) $(L${mod}pic)
  274. lib${mod}_DATA = $(D${mod}p)
  275. lib${mod}dir = $(libdir)/vlc/${topdir}
  276. ${PRIVATE}noinst_LIBRARIES += $(L${mod}p)
  277. ${PRIVATE}lib${mod}_plugin$(LIBEXT): $(lib${mod}_plugin_a_OBJECTS)
  278. ${PRIVATE} @case `$(VLC_CONFIG) --linkage ${mod}` in \
  279. ${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}` ;; \
  280. ${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}` ;; \
  281. ${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}` ;; \
  282. ${PRIVATE} esac
  283. EOF
  284.   done
  285. done
  286. cat >> m4/private.m4-tmp1 << EOF
  287.   AM_CONDITIONAL(UNTRUE, false)
  288. ])
  289. EOF
  290. cat m4/private.m4-tmp1 >> m4/private.m4 && rm -f m4/private.m4-tmp1
  291. cat >> m4/private.m4-tmp2 << EOF
  292. ])
  293. EOF
  294. cat m4/private.m4-tmp2 >> m4/private.m4 && rm -f m4/private.m4-tmp2
  295. cat >> m4/private.m4-tmp3 << EOF
  296. ])])
  297. EOF
  298. cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
  299. cat >> m4/private.m4-tmp4 << EOF
  300. BLAH
  301. ])
  302. EOF
  303. cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
  304. echo " done."
  305. ###
  306. ###  classic bootstrap stuff
  307. ###
  308. set -x
  309. # remove autotools cruft
  310. rm -f aclocal.m4 configure config.log config.h config.h.in
  311. rm -Rf autom4te.cache
  312. # remove old autotools extra cruft
  313. rm -f config.guess config.sub missing mkinstalldirs compile depcomp install-sh
  314. # remove new autotools extra cruft
  315. rm -Rf autotools
  316. mkdir autotools
  317. # remove libtool cruft
  318. rm -f ltmain.sh libtool ltconfig
  319. # remove gettext cruft
  320. rm -f ABOUT-NLS
  321. rm -Rf intl
  322. # remove old vlc cruft
  323. rm -f m4/oldgettext.m4 stamp-pic configure.ac.in Modules.am
  324. # remove new vlc cruft
  325. rm -f stamp-builtin stamp-h* mozilla/stamp-pic
  326. # Automake complains if these are not present
  327. rm -f vlc-config.in && printf "" > vlc-config.in
  328. if [ "$GETTEXT" != "yes" ]; then
  329.   test -d intl || mkdir intl
  330.   printf "" > intl/Makefile.am
  331.   printf "" > ABOUT-NLS
  332. fi
  333. # Do the rest
  334. ${autopoint} -f
  335. ${aclocal} ${ACLOCAL_ARGS}
  336. ${autoconf}
  337. ${autoheader}
  338. ${automake} --add-missing --copy
  339. ##
  340. ##  files which need to be regenerated
  341. ##
  342. rm -f vlc-config.in vlc-config
  343. rm -f src/misc/modules_builtin.h src/misc/modules_plugin.h
  344. rm -f include/vlc_symbols.h
  345. rm -f mozilla/vlcintf.h
  346. # Shut up
  347. set +x
  348. ##
  349. ##  Tell the user about gettext, pkg-config and sed
  350. ##
  351. case "${GETTEXT}" in
  352.   yes) ;;
  353.   no) cat << EOF
  354. ===========================================================
  355. IMPORTANT NOTE: you do not have gettext installed on your
  356. system. The vlc build will work, but you will not have
  357. internationalization support. We suggest installing gettext.
  358. EOF
  359.   ;;
  360.   old) cat << EOF
  361. ==========================================================
  362. NOTE: you have an old version of gettext installed on your
  363. system. The vlc build will work, but if your system does not
  364. have libintl you will not have internationalization support.
  365. We suggest upgrading to gettext 0.11.5 or later.
  366. EOF
  367.   ;;
  368. esac
  369. case "$PKGCONFIG" in
  370.   yes) ;;
  371.   no) cat << EOF
  372. ==============================================================
  373. NOTE: you do not have the "pkg-config" utility on your system;
  374. detection of the Gtk-2.0 and GNOME 2.0 libraries will not be
  375. reliable.
  376. EOF
  377.   ;;
  378. esac
  379. case "$AUTOMAKESUCKS" in
  380.   no) ;;
  381.   yes) cat << EOF
  382. =============================================================
  383. IMPORTANT NOTE: your version of automake has a bug which will
  384. prevent proper plugin compilation. Either compile VLC with
  385. the --disable-plugins flag, or use a version of automake newer
  386. than 1.6.1 (1.6.2 is OK, and so are the 1.5 series).
  387. EOF
  388.   ;;
  389. esac
  390. case "$INSTALLSUCKS" in
  391.   no) ;;
  392.   yes) cat << EOF
  393. =============================================================
  394. IMPORTANT NOTE: your version of automake has a bug which will
  395. prevent proper installation. Do not use "make install" with this
  396. version of automake, or use a version of automake newer than 1.5
  397. (such as 1.6 or 1.7).
  398. EOF
  399.   ;;
  400. esac