fixes for solaris
[platform/upstream/gstreamer.git] / configure.ac
1 AC_INIT
2 AC_CANONICAL_TARGET([])
3
4 dnl when going to/from release please set the nano (fourth number) right !
5 dnl releases only do Wall, cvs and prerelease does Werror too
6 AS_VERSION(gstreamer, GST_VERSION, 0, 5, 0, 1, GST_ERROR="-Wall", GST_ERROR="-Wall -Werror")
7 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
8 AM_MAINTAINER_MODE
9 AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
10
11 dnl our libraries and install dirs use major.minor as a version
12 GST_MAJORMINOR=$GST_VERSION_MAJOR.$GST_VERSION_MINOR
13 AC_SUBST(GST_MAJORMINOR)
14
15 dnl CURRENT, REVISION, AGE
16 dnl - library source changed -> increment REVISION
17 dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
18 dnl - interfaces added -> increment AGE
19 dnl - interfaces removed -> AGE = 0
20 AS_LIBTOOL(GST, 1, 0, 0)
21
22 AC_CONFIG_SRCDIR([gst/gst.c])
23 AM_CONFIG_HEADER(config.h)
24
25 dnl Add parameters for aclocal
26 dnl (This must come after AM_INIT_AUTOMAKE, since it modifies ACLOCAL)
27 ACLOCAL="$ACLOCAL -I common/m4 $ACLOCAL_FLAGS"
28
29 AC_PROG_CC
30 dnl For interactive UNIX (a Sun thing)
31 AC_ISC_POSIX
32 AM_PROG_CC_STDC
33 AM_PROG_AS
34 AS="${CC}"
35
36 dnl We disable static building for development, for time savings
37 dnl *NOTE*: dnl this line before release, so release does static too
38 dnl AM_DISABLE_STATIC
39
40 AC_HEADER_STDC([])
41
42
43 dnl ##############################
44 dnl # Do automated configuration #
45 dnl ##############################
46
47 dnl Check for tools:
48 dnl ================
49
50 dnl allow for different autotools
51 AS_AUTOTOOLS_ALTERNATE()
52
53 dnl modify pkg-config path
54 AC_ARG_WITH(pkg-config-path, 
55    AC_HELP_STRING([--with-pkg-config-path],
56                   [colon-separated list of pkg-config(1) dirs]),
57    [export PKG_CONFIG_PATH=${withval}])
58
59 GST_DOC()
60 GST_ARCH()
61
62 dnl we require bison for building of some of the marshal files
63 dnl FIXME: check if AC_PROG_YACC is suitable here
64 AC_PATH_PROG(BISON_PATH, bison, no)
65 if test x$BISON_PATH = xno; then
66   AC_MSG_ERROR(Could not find bison)
67 fi
68
69 dnl we require flex for building the parser
70 dnl FIXME: check if AC_PROG_LEX is suitable here
71 AC_PATH_PROG(FLEX_PATH, flex, no)
72 if test x$FLEX_PATH = xno; then
73   AC_MSG_ERROR(Could not find flex)
74 fi
75
76 dnl
77 dnl We should really use AC_SYS_LARGEFILE, but the problem is
78 dnl many of the plugins don't include "config.h".  To assure
79 dnl binary compatibility, it is necessary that all gstreamer
80 dnl code be compiled with the same sizeof(off_t), so we use
81 dnl the following crude hack.
82 dnl
83
84 dnl
85 dnl GST_CFLAGS are split up as GST_EXT_CFLAGS and GST_INT_CFLAGS
86 dnl same for libs
87 dnl this is so we can make GST_CFLAGS for external modules available
88 dnl without mixing in internal (uninstalled) CFLAGS
89 dnl
90
91 AC_MSG_CHECKING(for large file support)
92 AC_TRY_RUN([
93 #define _LARGEFILE_SOURCE
94 #define _FILE_OFFSET_BITS 64
95 #include <sys/types.h>
96 int main () { return !(sizeof(off_t) == 8); }
97 ],
98 [
99 AC_MSG_RESULT(yes)
100 GST_EXT_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
101 ],
102 [
103 AC_MSG_RESULT(no)
104 ],
105 [
106 AC_MSG_RESULT(no)
107 ])
108
109 dnl Check for essential libraries first:
110 dnl ====================================
111
112 dnl === GLib 2 ===
113 dnl Minimum required version of GLib2
114 dnl required for compilation without warnings
115 GLIB2_REQ="2.0.1"
116 AC_SUBST(GLIB2_REQ)
117
118 dnl Check for glib2
119 PKG_CHECK_MODULES(GLIB2, glib-2.0 >= $GLIB2_REQ gobject-2.0 gthread-2.0 gmodule-2.0,
120   HAVE_GLIB2=yes,HAVE_GLIB2=no)
121 GLIB_LIBS=$GLIB2_LIBS
122 GLIB_CFLAGS=$GLIB2_CFLAGS
123 AC_SUBST(GLIB_LIBS)
124 AC_SUBST(GLIB_CFLAGS)
125
126 if test "x$HAVE_GLIB2" = "xno"; then
127   AC_MSG_ERROR([GStreamer requires GLib 2.0 to compile.])
128 fi
129
130 GST_PKG_DEPS="glib-2.0, gobject-2.0, gmodule-2.0, gthread-2.0"
131 AC_SUBST(GST_PKG_DEPS)
132   
133 dnl === libxml 2 ===
134 dnl Minimum required version of libxml2
135 LIBXML2_REQ="2.4.9"
136 AC_SUBST(LIBXML2_REQ)
137
138 dnl check for libxml2
139 GST_LIBXML2_CHECK()
140
141 dnl popt checks
142 GST_CHECK_LIBHEADER(POPT, popt, poptStrippedArgv,, popt.h, POPT_LIBS="-lpopt",
143   AC_MSG_ERROR([popt 1.6.1 or newer is required to build gstreamer. You can
144                 download the latest version from 
145                 ftp://people.redhat.com/sopwith/popt/])
146 )
147 AC_MSG_NOTICE(Checking for POPT_TABLEEND)
148 AC_TRY_RUN([
149 #include <popt.h>
150 int main ()
151 {
152 #ifndef POPT_TABLEEND
153   return 1;
154 #else
155   return 0;
156 #endif
157 }
158 ],, [
159   dnl it failed
160   AC_MSG_ERROR([popt 1.6.1 or newer is required to build gstreamer. You can
161                 download the latest version from 
162                 ftp://people.redhat.com/sopwith/popt/])
163 ])
164
165 dnl Check for atomic.h
166 dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
167 dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
168 AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
169 dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
170 if test x$HAVE_ATOMIC_H = xyes; then
171   AC_TRY_RUN([
172 #include "asm/atomic.h"
173 main() { atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
174   ],, [
175     # Not successful
176     if test x$HAVE_ATOMIC_H = xyes; then
177       AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
178     fi
179     HAVE_ATOMIC_H=no
180   ], [
181     # Cross compiling
182     AC_MSG_RESULT(yes)
183     AC_MSG_WARN(Can't check properly for atomic reference counting.  Assuming OK.)
184   ])
185 fi
186
187 dnl ######################################################################
188 dnl # Check command line parameters, and set shell variables accordingly #
189 dnl ######################################################################
190
191 dnl FIXME: simplify all this down using a few m4 macros
192
193 AC_ARG_ENABLE(libmmx,
194 AC_HELP_STRING([--enable-libmmx],[use libmmx, if available]),
195 [case "${enableval}" in
196   yes) USE_LIBMMX=$HAVE_LIBMMX ;;
197   no)  USE_LIBMMX=no ;;
198   *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmmx) ;;
199 esac], 
200 [USE_LIBMMX=$HAVE_LIBMMX]) dnl Default value
201
202 AC_ARG_ENABLE(atomic,
203 AC_HELP_STRING([--enable-atomic],[use atomic reference counting header]),
204 [case "${enableval}" in
205   yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
206   noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
207   no)  USE_ATOMIC_H=no;;
208   *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
209 esac], 
210 [USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
211
212 AC_ARG_ENABLE(plugin-builddir,
213 AC_HELP_STRING([--enable-plugin-builddir],[allow tests/demos to use non-installed plugins]),
214 [case "${enableval}" in
215   yes) PLUGINS_USE_BUILDDIR=yes ;;
216   no)  PLUGINS_USE_BUILDDIR=no ;;
217   *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-builddir) ;;
218 esac], 
219 [PLUGINS_USE_BUILDDIR=no]) dnl Default value
220
221 GST_DEBUGINFO
222
223 AC_ARG_ENABLE(profiling,
224 AC_HELP_STRING([--enable-profiling],[adds -pg to compiler commandline, for profiling]),
225 [case "${enableval}" in
226   yes) USE_PROFILING=yes ;;
227   no)  UES_PROFILING=no ;;
228   *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
229 esac], 
230 [USE_PROFILING=no]) dnl Default value
231
232 dnl use a cache dir for storing element registry info.
233 dnl default to building registry in the source tree if we are enabling plugin build dir
234 if test "x$PLUGINS_USE_BUILDDIR" = "xyes"; then
235   GST_CACHE_DIR=`pwd`
236 else
237   dnl ${localstatedir} points to PREFIX/var
238   GST_CACHE_DIR=${localstatedir}/cache/gstreamer-$GST_MAJORMINOR
239 fi
240 AC_ARG_WITH(cachedir,
241 AC_HELP_STRING([--with-cachedir],[specify path to use for plugin and command completion registries]),
242 [case "${withval}" in
243   yes) AC_MSG_ERROR(bad value ${withval} for --with-cachedir) ;;
244   no) AC_MSG_ERROR(bad value ${withval} for --with-cachedir) ;;
245   *) GST_CACHE_DIR="${withval}" ;;
246 esac], 
247 [:]) dnl Default value
248
249 AS_AC_EXPAND(GST_CACHE_DIR, $GST_CACHE_DIR)
250 AC_MSG_NOTICE(Using $GST_CACHE_DIR as registry cache dir)
251
252
253 dnl building of tests
254 AC_ARG_ENABLE(tests,
255 AC_HELP_STRING([--disable-tests],[disable building test apps]),
256 [case "${enableval}" in
257   yes) BUILD_TESTS=yes ;;
258   no)  BUILD_TESTS=no ;;
259   *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
260 esac], 
261 [BUILD_TESTS=yes]) dnl Default value
262 AM_CONDITIONAL(BUILD_TESTS,         test "x$BUILD_TESTS" = "xyes")
263
264 dnl tests known to fail
265 AC_ARG_ENABLE(failing-tests,
266 AC_HELP_STRING([--disable-failing-tests],[disable building tests known to fail]),
267 [case "${enableval}" in
268   yes) BUILD_FAILING_TESTS=yes ;;
269   no)  BUILD_FAILING_TESTS=no ;;
270   *) AC_MSG_ERROR(bad value ${enableval} for --disable-failing-tests) ;;
271 esac], 
272 [BUILD_FAILING_TESTS=no]) dnl Default value
273 AM_CONDITIONAL(BUILD_FAILING_TESTS, test "x$BUILD_FAILING_TESTS" = "xyes")
274 if test x$BUILD_FAILING_TESTS = xyes; then
275   AC_MSG_WARN([building tests known to fail, use --disable-failing-tests to disable])
276 else
277   AC_MSG_WARN([Sissy ! By asking to not build the tests known to fail, you hereby waive your right to customer support.  If you do not agree with this EULA, please press Ctrl-C before the next line is printed.  By allowing the next line to be printed, you expressly acknowledge your acceptance of this EULA.])
278 fi
279
280 AC_ARG_ENABLE(examples,
281 AC_HELP_STRING([--disable-examples],[disable building examples]),
282 [case "${enableval}" in
283   yes) BUILD_EXAMPLES=yes ;;
284   no)  BUILD_EXAMPLES=no ;;
285   *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
286 esac], 
287 [BUILD_EXAMPLES=yes]) dnl Default value
288 AM_CONDITIONAL(BUILD_EXAMPLES,      test "x$BUILD_EXAMPLES" = "xyes")
289
290 dnl Next, check for the optional components:
291 dnl ========================================
292
293 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true)
294 GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save])
295 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true)
296 GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],)
297 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true)
298 GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem])
299 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true)
300 GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
301 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
302 GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
303 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
304 GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
305
306 GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
307
308 dnl ################################################
309 dnl # Set defines according to variables set above #
310 dnl ################################################
311
312
313 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
314 dnl HAVE_ and it is likely to be easier to stick with the old name
315 if test "x$USE_LIBMMX" = xyes; then
316   AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
317 fi
318
319 if test "x$USE_ATOMIC_H" = xyes; then
320   AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
321 fi
322
323 dnl test if we have pthread_attr_setstack; if not use the older calls
324 AC_CHECK_LIB(pthread, pthread_attr_setstack, 
325    AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACK, 1, 
326              [Defined if libpthread has pthread_attr_setstack ()]))
327
328 dnl test if we have posix_memalign; FreeBSD doesn't
329 AC_CHECK_FUNC(posix_memalign,
330    AC_DEFINE(HAVE_POSIX_MEMALIGN, 1,
331              [Defined if we have posix_memalign ()]))
332
333 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
334   AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this])
335 fi
336
337 if test "x$USE_DEBUG" = xyes; then
338    GST_INT_CFLAGS="$GST_INT_CFLAGS -g"
339 fi
340
341 if test "x$USE_PROFILING" = xyes; then
342 dnl  CFLAGS="$CFLAGS -pg -fprofile-arcs"
343   FOMIT_FRAME_POINTER=""
344 else
345   FOMIT_FRAME_POINTER="-fomit-frame-pointer"
346 fi
347
348 dnl
349 dnl AC_SUBST(FOMIT_FRAME_POINTER)
350 dnl
351
352 dnl #############################
353 dnl # Set automake conditionals #
354 dnl #############################
355
356 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
357 dnl HAVE_ and it is likely to be easier to stick with the old name
358 AM_CONDITIONAL(HAVE_ATOMIC_H,       test "x$USE_ATOMIC_H" = "xyes")
359
360 AM_CONDITIONAL(EXPERIMENTAL,        test "$EXPERIMENTAL" = "$xyes")
361 AM_CONDITIONAL(BROKEN,              test "$BROKEN" = "$xyes")
362
363 AM_CONDITIONAL(PLUGINS_USE_BUILDDIR,  test "x$PLUGINS_USE_BUILDDIR" = "xyes")
364
365
366 dnl ############################
367 dnl # Set up some more defines #
368 dnl ############################
369
370 dnl Set location of registry dir.
371 AC_DEFINE_UNQUOTED(GST_CACHE_DIR, "$GST_CACHE_DIR", [Define the registry directory])
372 AC_SUBST(GST_CACHE_DIR)
373
374 dnl Set location of plugin directory
375 if test "x${prefix}" = "xNONE"; then
376   PLUGINS_DIR=${ac_default_prefix}/lib/gstreamer-$GST_MAJORMINOR
377 else
378   PLUGINS_DIR=${prefix}/lib/gstreamer-$GST_MAJORMINOR
379 fi
380 AC_DEFINE_UNQUOTED(PLUGINS_DIR, "$PLUGINS_DIR", [Define the plugin directory])
381 AC_SUBST(PLUGINS_DIR)
382
383 dnl Set location of uninstalled plugin directory
384 PLUGINS_BUILDDIR=`pwd`
385 AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR, "$PLUGINS_BUILDDIR", [Define the uninstalled plugin directory])
386 AC_SUBST(PLUGINS_BUILDDIR)
387
388 dnl since glib and xml are package deps, there's no need to include their cflags
389 dnl in the pkg-config file
390
391 dnl for pkg-config
392 GST_PKG_CFLAGS=$GST_EXT_CFLAGS
393 GST_PKG_LIBS=$GST_EXT_LIBS
394 AC_SUBST(GST_PKG_CFLAGS)
395 AC_SUBST(GST_PKG_LIBS)
396
397 dnl finalize _CFLAGS and _LIBS
398 dnl add GLIB and XML if necessary to EXT_*
399 GST_CFLAGS="$GST_EXT_CFLAGS $XML_CFLAGS $GLIB_CFLAGS"
400 GST_LIBS="$GST_EXT_LIBS $XML_LIBS $GLIB_LIBS -lpopt"
401
402 dnl Private vars for libgst only
403 LIBGST_LIBS="$GST_LIBS"
404 LIBGST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir) $GST_ERROR"
405 AC_SUBST(LIBGST_LIBS)
406 AC_SUBST(LIBGST_CFLAGS)
407
408 dnl Vars for everyone else
409 GST_INT_LIBS="\$(top_builddir)/gst/libgstreamer-$GST_MAJORMINOR.la"
410 GST_INT_CFLAGS="$GST_INT_CFLAGS -I\$(top_srcdir)/libs -I\$(top_srcdir)/include"
411
412 AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
413 AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
414
415 GST_PLUGIN_LDFLAGS='-module -avoid-version'
416 AC_SUBST(GST_PLUGIN_LDFLAGS, "$GST_PLUGIN_LDFLAGS")
417
418 AC_CONFIG_SUBDIRS(libs/ext/cothreads)
419
420 dnl ##################################################
421 dnl # deps for examples from manual                  #
422 dnl ##################################################
423
424 PKG_CHECK_MODULES(LIBGNOMEUI, libgnomeui-2.0,
425                   HAVE_LIBGNOMEUI="yes", HAVE_LIBGNOMEUI="no")
426 AC_SUBST(LIBGNOMEUI_CFLAGS)
427 AC_SUBST(LIBGNOMEUI_LIBS)
428 AM_CONDITIONAL(HAVE_LIBGNOMEUI, test "x$HAVE_LIBGNOMEUI" = "xyes")
429
430 dnl ##################################################
431 dnl # Prepare informative messages to display at end #
432 dnl ##################################################
433
434 infomessages=
435
436 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
437   infomessages="$infomessages
438 *** Warning: You have configured using the --enable-plugin-builddir option.
439
440 This option is for development purposes only: binaries built with
441 it should be used with code in the build tree only.  To build an
442 installable version, use ./configure without the --enable-plugin-builddir
443 option.  Note that the autogen.sh script supplies the plugin builddir
444 option automatically -- run ./autogen.sh --disable-plugin-buildddir to make
445 an installable build.
446
447 "
448 fi
449
450 dnl #########################
451 dnl # Make the output files #
452 dnl #########################
453
454 dnl libs/ext/Makefile
455 AC_OUTPUT(
456 Makefile
457 include/Makefile
458 gst/Makefile
459 gst/gstversion.h
460 gst/autoplug/Makefile
461 gst/caches/Makefile
462 gst/elements/Makefile
463 gst/parse/Makefile
464 gst/schedulers/Makefile
465 gst/types/Makefile
466 gst/registries/Makefile
467 libs/Makefile
468 libs/gst/Makefile
469 libs/gst/bytestream/Makefile
470 libs/gst/getbits/Makefile
471 libs/gst/putbits/Makefile
472 libs/gst/control/Makefile
473 libs/ext/Makefile
474 tests/Makefile
475 tests/bufspeed/Makefile
476 tests/memchunk/Makefile
477 tests/muxing/Makefile
478 tests/seeking/Makefile
479 tests/sched/Makefile
480 tests/threadstate/Makefile
481 testsuite/Makefile
482 testsuite/bytestream/Makefile
483 testsuite/caps/Makefile
484 testsuite/cleanup/Makefile
485 testsuite/clock/Makefile
486 testsuite/dynparams/Makefile
487 testsuite/elements/Makefile
488 testsuite/plugin/Makefile
489 testsuite/refcounting/Makefile
490 testsuite/threads/Makefile
491 examples/Makefile
492 examples/autoplug/Makefile
493 examples/cutter/Makefile
494 examples/helloworld/Makefile
495 examples/helloworld2/Makefile
496 examples/launch/Makefile
497 examples/manual/Makefile
498 examples/mixer/Makefile
499 examples/pingpong/Makefile
500 examples/plugins/Makefile
501 examples/queue/Makefile
502 examples/queue2/Makefile
503 examples/queue3/Makefile
504 examples/queue4/Makefile
505 examples/thread/Makefile
506 examples/typefind/Makefile
507 examples/xml/Makefile
508 tools/Makefile
509 docs/Makefile
510 docs/devhelp/Makefile
511 docs/devhelp/html2xml.py
512 docs/faq/Makefile
513 docs/gst/Makefile
514 docs/gst/gstreamer.types
515 docs/libs/Makefile
516 docs/manual/Makefile
517 docs/pwg/Makefile
518 docs/plugins/Makefile
519 docs/plugins/gstreamer-plugins.types
520 docs/xsl/Makefile
521 stamp.h
522 gstreamer.pc
523 gstreamer-uninstalled.pc
524 gstreamer.spec,
525 echo "$infomessages", infomessages="$infomessages"
526 )