* vlm.c: little bug fix for stop command
[vlc.git] / bootstrap
blob52845507189fbe7f18df84c1819b86f813bed16e
1 #! /bin/sh
3 ## bootstrap file for the VLC media player
4 ## $Id: bootstrap,v 1.83 2003/11/15 01:21:48 massiot Exp $
5 ##
6 ## Authors: Sam Hocevar <sam@zoy.org>
8 if test "$#" != "0"; then
9 echo "Usage: $0"
10 echo " Calls automake, autoconf, autoheader, autopoint and other auto* to generate"
11 echo " m4 macros and prepare Makefiles."
12 exit 1
15 ###
16 ### Get a sane environment, just in case
17 ###
18 LANG=C
19 export LANG
20 CYGWIN=binmode
21 export CYGWIN
23 set -e
24 set -x
27 ## Check for various tools
29 AUTOMAKESUCKS=no
30 INSTALLSUCKS=no
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
39 # Check for automake
40 amvers="none"
41 if automake-1.7 --version >/dev/null 2>&1; then
42 amvers="-1.7"
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"
49 elif automake-1.6 --version >/dev/null 2>&1; then
50 amvers="-1.6"
51 if expr "`automake-1.6 --version | sed -e '1s/[^0-9]*//' -e q`" "<=" "1.6.1" > /dev/null 2>&1; then
52 AUTOMAKESUCKS=yes
54 elif automake-1.5 --version >/dev/null 2>&1; then
55 INSTALLSUCKS=yes
56 amvers="-1.5"
57 elif automake --version > /dev/null 2>&1; then
58 amvers=""
59 case "`automake --version | sed -e '1s/[^0-9]*//' -e q`" in
60 0|0.*|1|1.[01234]|1.[01234][-.]*)
61 amvers="none" ;;
62 1.5|1.5.*)
63 INSTALLSUCKS=yes ;;
64 1.6|1.6.0|1.6.1)
65 AUTOMAKESUCKS=yes ;;
66 esac
69 if test "${amvers}" = "none"; then
70 set +x
71 echo "you need automake version 1.5 or later"
72 exit 1
75 # Check for gettext
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.
81 autopoint=autopoint
82 GETTEXT=yes
83 else
84 # User's gettext is too old. try to continue anyway.
85 autopoint=:
86 GETTEXT=old
87 fi;else
88 # we don't have gettext. grmbl. try to continue anyway.
89 autopoint=:
90 GETTEXT=no
93 # Check for pkg-config
94 if pkg-config --version >/dev/null 2>&1; then
95 # We have pkg-config, everything is cool.
96 PKGCONFIG=yes
97 else
98 PKGCONFIG=no
101 aclocal=aclocal${amvers}
102 automake=automake${amvers}
103 autoconf=autoconf
104 autoheader=autoheader
107 ## Generate the modules makefile, by parsing modules/**/Modules.am
110 set +x
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
153 modules=""
155 rm -f modules/Makefile.am && cat > modules/Makefile.am << EOF
156 # Autogenerated by bootstrap - DO NOT EDIT
157 EXTRA_DIST = LIST
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`
164 printf "."
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
173 NULL =
174 libvlc_LIBRARIES =
175 noinst_LIBRARIES =
176 noinst_HEADERS =
177 EXTRA_DIST = Modules.am
178 BUILT_SOURCES =
179 SUBDIRS = ${subdirs}
180 #DIST_SUBDIRS = \$(SUBDIRS)
181 libvlcdir = \$(libdir)/vlc/${basedir}
182 include Modules.am
184 if BUILD_MOZILLA
185 if HAVE_WIN32
186 # There's no need for pic code on win32 so get rid of this to substantially
187 # reduce the compilation time.
188 pic = no
189 endif
190 else
191 pic = no
192 endif
194 clean-local:
195 -rm -f *.a *.so *.dll *.sl *.dylib
197 all: all-modules
198 all-modules:
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; \\
204 test -z "\$\$fail"
207 for mod in `sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < ${mf}`
209 if grep '^SOURCES_'${mod}'.*=.*PRIVATE' < ${mf} >/dev/null 2>&1; then
210 PRIVATE='#'; else
211 PRIVATE=''; fi
212 if grep '^nodist_SOURCES_'${mod}'' < ${mf} >/dev/null 2>&1; then
213 NODIST=''; else
214 NODIST='#'; fi
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)
218 #EOF
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
230 # The ${mod} plugin
233 if [ "${NODIST}" != "#" ]; then cat >> modules/${dir}/Makefile.am << EOF
234 clean-local: clean-${mod}
235 clean-${mod}:
236 -test -z "\$(nodist_SOURCES_${mod})" || rm -f \$(nodist_SOURCES_${mod})
240 cat >> modules/${dir}/Makefile.am << EOF
241 if UNTRUE
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
252 endif
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}\` ;; \\
303 ${PRIVATE} esac
307 done
308 done
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
320 ])])
322 cat m4/private.m4-tmp3 >> m4/private.m4 && rm -f m4/private.m4-tmp3
323 cat >> m4/private.m4-tmp4 << EOF
324 BLAH
327 cat m4/private.m4-tmp4 >> m4/private.m4 && rm -f m4/private.m4-tmp4
329 echo " done."
332 ### classic bootstrap stuff
334 set -x
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
346 rm -f ABOUT-NLS
347 rm -Rf intl
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
361 # Do the rest
362 ${autopoint} -f
363 ${aclocal} -I m4
364 ${autoconf}
365 ${autoheader}
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
376 # Shut up
377 set +x
380 ## Tell the user about gettext, pkg-config and sed
382 case "${GETTEXT}" in
383 yes) ;;
384 no) cat << EOF
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.
392 old) cat << EOF
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.
401 esac
403 case "$PKGCONFIG" in
404 yes) ;;
405 no) cat << EOF
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
410 reliable.
413 esac
415 case "$AUTOMAKESUCKS" in
416 no) ;;
417 yes) cat << EOF
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).
426 esac
428 case "$INSTALLSUCKS" in
429 no) ;;
430 yes) cat << EOF
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).
439 esac