Update xcode project for recent source changes.
[theora.git] / configure.ac
1 dnl Process this file with autoconf to produce a configure script
2
3 dnl ------------------------------------------------
4 dnl Initialization and Versioning
5 dnl ------------------------------------------------
6
7 AC_INIT(libtheora,[1.0])
8
9 AC_CANONICAL_HOST
10 AC_CANONICAL_TARGET
11
12 AM_CONFIG_HEADER([config.h])
13 AC_CONFIG_SRCDIR([lib/enc/dct.c])
14 AM_INIT_AUTOMAKE
15 AM_MAINTAINER_MODE
16
17 dnl Library versioning
18 dnl CURRENT, REVISION, AGE
19 dnl - library source changed -> increment REVISION
20 dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
21 dnl - interfaces added -> increment AGE
22 dnl - interfaces removed -> AGE = 0
23
24 TH_LIB_CURRENT=3
25 TH_LIB_REVISION=4
26 TH_LIB_AGE=3
27 AC_SUBST(TH_LIB_CURRENT)
28 AC_SUBST(TH_LIB_REVISION)
29 AC_SUBST(TH_LIB_AGE)
30
31 THDEC_LIB_CURRENT=1
32 THDEC_LIB_REVISION=1
33 THDEC_LIB_AGE=0
34 AC_SUBST(THDEC_LIB_CURRENT)
35 AC_SUBST(THDEC_LIB_REVISION)
36 AC_SUBST(THDEC_LIB_AGE)
37
38 THENC_LIB_CURRENT=1
39 THENC_LIB_REVISION=1
40 THENC_LIB_AGE=0
41 AC_SUBST(THENC_LIB_CURRENT)
42 AC_SUBST(THENC_LIB_REVISION)
43 AC_SUBST(THENC_LIB_AGE)
44
45 dnl Extra linker options (for version script)
46 THEORA_LDFLAGS=""
47
48 dnl --------------------------------------------------  
49 dnl Check for programs
50 dnl --------------------------------------------------  
51
52 dnl save $CFLAGS since AC_PROG_CC likes to insert "-g -O2"
53 dnl if $CFLAGS is blank
54 cflags_save="$CFLAGS"
55 AC_PROG_CC
56 AC_PROG_CPP
57 CFLAGS="$cflags_save"
58
59 AM_PROG_CC_C_O
60 AC_LIBTOOL_WIN32_DLL
61 AM_PROG_LIBTOOL
62
63 dnl Add parameters for aclocal
64 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4")
65
66 dnl Check for doxygen
67 AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, true, false)
68 AM_CONDITIONAL(HAVE_DOXYGEN,$HAVE_DOXYGEN)
69 if test $HAVE_DOXYGEN = "false"; then
70         AC_MSG_WARN([*** doxygen not found, API documentation will not be built])
71 fi
72
73 dnl Check for tools used to build the format specification
74 AC_CHECK_PROG(HAVE_PDFLATEX, pdflatex, yes)
75 AC_CHECK_PROG(HAVE_BIBTEX, bibtex, yes)
76 AC_CHECK_PROG(HAVE_TRANSFIG, fig2dev, yes)
77 BUILD_SPEC="false"
78 if test -r doc/spec/spec.tex; then
79  if test "x$HAVE_PDFLATEX" = "xyes"; then
80   if test "x$HAVE_BIBTEX" = "xyes"; then
81     if test "x$HAVE_TRANSFIG" = "xyes"; then
82       tex_pkg_list=`fgrep usepackage doc/spec/spec.tex | grep \{ | grep -v ltablex`
83       tex_pkg_ok="yes"
84       for pkg_line in $tex_pkg_list; do
85         pkg_name=`echo $pkg_line | sed -e 's/.*{\(.*\)}.*/\1/'`
86         AC_MSG_CHECKING([for Tex package $pkg_name])
87         cat >conftest.tex <<_ACEOF
88 \\documentclass{book}
89 $pkg_line
90 \\begin{document}
91 Hello World.
92 \\end{document}
93 _ACEOF
94         if pdflatex -interaction batchmode -halt-on-error conftest < /dev/null > /dev/null 2>&1; then
95           AC_MSG_RESULT([ok])
96         else
97           tex_pkg_ok="no"
98           AC_MSG_RESULT([no])
99         fi
100       done
101       if test -w conftest.tex; then rm conftest.tex; fi
102       if test -w conftest.tex; then rm conftest.aux; fi
103       if test -w conftest.pdf; then rm conftest.pdf; fi
104       if test "x$tex_pkg_ok" = "xyes"; then
105         BUILD_SPEC="true"
106       fi
107     fi
108   fi
109  fi
110 fi
111 AM_CONDITIONAL(BUILD_SPEC, $BUILD_SPEC)
112 if test $BUILD_SPEC = "false"; then
113         AC_MSG_WARN([*** Format Specification will not built.])
114 fi
115
116 dnl Check for valgrind
117 VALGRIND_ENVIRONMENT=""
118 ac_enable_valgrind=no
119 AC_ARG_ENABLE(valgrind-testing,
120      [  --enable-valgrind-testing     enable running of tests inside Valgrind ],     [ ac_enable_valgrind=yes ], [ ac_enable_valgrind=no] )
121
122 if test "x${ac_enable_valgrind}" = xyes ; then
123   if test "x${enable_shared}" = xyes ; then
124     VALGRIND_ENVIRONMENT="libtool --mode=execute "
125   fi
126
127   AC_CHECK_PROG(HAVE_VALGRIND, valgrind, yes, no)
128   if test "x$HAVE_VALGRIND" = xyes ; then
129     VALGRIND_ENVIRONMENT="$VALGRIND_ENVIRONMENT valgrind -q --leak-check=yes --show-reachable=yes --num-callers=100"
130     AC_SUBST(VALGRIND_ENVIRONMENT)
131     TESTS_INFO="Type 'make check' to run test suite. Tests will be run under:
132   ${VALGRIND_ENVIRONMENT}"
133   else
134     TESTS_INFO="Type 'make check' to run test suite (Valgrind not found)"
135   fi
136 else
137   TESTS_INFO="Type 'make check' to run test suite (Valgrind testing not enabled)"
138 fi
139
140 dnl --------------------------------------------------
141 dnl Set build flags based on environment
142 dnl --------------------------------------------------
143
144 dnl Set some target options
145
146 cflags_save="$CFLAGS"
147 if test -z "$GCC"; then
148         case $host in 
149         *)
150                 DEBUG="-g -DDEBUG"
151                 CFLAGS="-O"
152                 PROFILE="-g -p -DDEBUG" ;;
153         esac
154 else
155
156         case $host in 
157         *)
158                 DEBUG="-g -Wall -Wno-parentheses -DDEBUG -D__NO_MATH_INLINES"
159                 CFLAGS="-Wall -Wno-parentheses -O3 -fforce-addr -fomit-frame-pointer -finline-functions -funroll-loops"
160                 PROFILE="-Wall -Wno-parentheses -pg -g -O3 -fno-inline-functions -DDEBUG";;
161         esac
162 fi
163 CFLAGS="$CFLAGS $cflags_save"
164
165 cpu_x86_64=no
166 cpu_x86_32=no
167 AC_ARG_ENABLE(asm,
168     [  --disable-asm           disable assembly optimizations ],
169     [ ac_enable_asm=$enableval ], [ ac_enable_asm=yes] )
170
171 # early gcc doesn't support named parameters; disable asm in this case
172 if ! test -z "$GCC"; then
173     AC_MSG_CHECKING([if the compiler version supports named asm params])
174     gcc_version=`${CC} -dumpversion`
175     gcc_version_major=`echo ${gcc_version} | cut -f 1 -d '.'`
176     gcc_version_minor=`echo ${gcc_version} | cut -f 2 -d '.'`
177     if test "${gcc_version_major}" -lt 3; then
178       ac_enable_asm=no
179       AC_MSG_RESULT([no (${gcc_version})])
180     elif test "${gcc_version_major}" -eq 3 -a "${gcc_version_minor}" -lt 1; then
181       ac_enable_asm=no
182       AC_MSG_RESULT([no (${gcc_version})])
183     else
184       AC_MSG_RESULT([ok (${gcc_version})])
185     fi
186 fi
187 if test "x${ac_enable_asm}" = xyes; then
188   cpu_optimization="no optimization for your platform, please send a patch"
189   case $target_cpu in
190   i[[3456]]86)
191     cpu_x86_32=yes 
192     cpu_optimization="32 bit x86"
193     AC_DEFINE([USE_ASM], [],  [make use of asm optimization])
194     if test "x$target_vendor" = "xapple"; then
195       THEORA_LDFLAGS="$THEORA_LDFLAGS  -Wl,-read_only_relocs,suppress"
196     fi
197     
198     AC_DEFINE([OC_X86ASM], [], [enable x86 assambler optimization])
199       ;;
200   x86_64)
201     cpu_x86_64=yes
202     cpu_optimization="64 bit x86"
203     AC_DEFINE([USE_ASM], [],  [make use of asm optimization])  
204     AC_DEFINE([OC_X86ASM], [], [enable x86 assambler optimization])
205     ;;
206   esac
207 else
208   cpu_optimization="disabled"
209 fi
210 AM_CONDITIONAL([CPU_x86_64], [test x$cpu_x86_64 = xyes])
211 AM_CONDITIONAL([CPU_x86_32], [test x$cpu_x86_32 = xyes])
212 AM_CONDITIONAL(OC_X86ASM,[test x$ac_enable_asm = xyes])
213
214 # Test whenever ld supports -version-script
215 AC_PROG_LD
216 AC_PROG_LD_GNU
217 AC_MSG_CHECKING([library versioning support])
218
219 THDEC_VERSION_ARG=""
220 THENC_VERSION_ARG=""
221 TH_VERSION_ARG=""
222 if test "x$lt_cv_prog_gnu_ld" = "xyes"; then
223  case "$target_os" in
224   *mingw*)
225     THEORA_LDFLAGS="$THEORA_LDFLAGS -no-undefined"
226     THDEC_VERSION_ARG="-export-symbols \$(top_srcdir)/win32/xmingw32/libtheoradec-all.def"
227     THENC_VERSION_ARG="-export-symbols \$(top_srcdir)/win32/xmingw32/libtheoraenc-all.def"
228     THENC_VERSION_ARG="$THENC_VERSION_ARG -ltheoradec"
229     THC_VERSION_ARG="-export-symbols \$(top_srcdir)/win32/libtheora.def"
230     AC_MSG_RESULT([no])
231     ;;
232   linux* | solaris* )
233     THDEC_VERSION_ARG='-Wl,--version-script=$(srcdir)/Version_script-dec'
234     THENC_VERSION_ARG='-Wl,--version-script=$(srcdir)/Version_script-enc'
235     TH_VERSION_ARG='-Wl,--version-script=$(srcdir)/Version_script'
236     AC_MSG_RESULT([yes])
237     ;;
238   *)
239     # build without versioning
240     AC_MSG_RESULT([no])
241     ;;
242  esac
243 fi
244  
245 THEORADEC_LDFLAGS="$THEORA_LDFLAGS $THDEC_VERSION_ARG"
246 THEORAENC_LDFLAGS="$THEORA_LDFLAGS $THENC_VERSION_ARG"
247 THEORA_LDFLAGS="$THEORA_LDFLAGS $TH_VERSION_ARG"
248 AC_SUBST(THEORADEC_LDFLAGS)
249 AC_SUBST(THEORAENC_LDFLAGS)
250 AC_SUBST(THEORA_LDFLAGS)
251
252 dnl --------------------------------------------------
253 dnl Checks for support libraries and headers
254 dnl --------------------------------------------------
255
256 dnl check for Ogg
257 HAVE_OGG=no
258
259 dnl first check through pkg-config since it's more flexible
260
261 dnl check for pkg-config itself so we don't try the m4 macro without pkg-config
262 AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
263 if test "x$HAVE_PKG_CONFIG" = "xyes"
264 then
265   PKG_CHECK_MODULES(OGG, ogg >= 1.1, HAVE_OGG=yes, HAVE_OGG=no)
266 fi
267 if test "x$HAVE_OGG" = "xno"
268 then
269   dnl fall back to the old school test
270   XIPH_PATH_OGG(, AC_MSG_ERROR([
271     libogg is required to build this package!
272     please see http://www.xiph.org/ for how to
273     obtain a copy.
274   ]))
275   cflags_save=$CFLAGS
276   libs_save=$LIBS
277   CFLAGS="$CFLAGS $OGG_CFLAGS"
278   LIBS="$LIBS $OGG_LIBS"
279   AC_CHECK_FUNC(oggpackB_read, , [
280     AC_MSG_ERROR([newer libogg version (1.1 or later) required])
281   ])
282   CFLAGS=$cflags_save
283   LIBS=$libs_save
284 fi
285
286
287 dnl check for Vorbis
288 HAVE_VORBIS=no
289
290 dnl first check through pkg-config since it's more flexible
291
292 if test "x$HAVE_PKG_CONFIG" = "xyes"
293 then
294   PKG_CHECK_MODULES(VORBIS, vorbis >= 1.0.1, HAVE_VORBIS=yes, HAVE_VORBIS=no)
295   dnl also set VORBISENC_LIBS since an examples needs it
296   dnl the old .m4 sets this to a value to use on top of VORBIS_LIBS,
297   dnl so we do the same here.
298   VORBISENC_LIBS="-lvorbisenc"
299   AC_SUBST(VORBISENC_LIBS)
300 fi
301 if test "x$HAVE_VORBIS" = "xno"
302 then
303   dnl fall back to the old school test
304   XIPH_PATH_VORBIS(HAVE_VORBIS=yes, HAVE_VORBIS=no)
305 fi
306
307 dnl check for SDL
308 HAVE_SDL=no
309
310 AM_PATH_SDL(,[
311   HAVE_SDL=yes
312   SDL_LIBS=`$SDL_CONFIG --libs`
313 ],AC_MSG_WARN([*** Unable to find SDL -- Not compiling example players ***]))
314
315 dnl check for OSS
316 HAVE_OSS=no
317
318 AC_CHECK_HEADERS([sys/soundcard.h soundcard.h machine/soundcard.h],[
319   HAVE_OSS=yes
320   break
321 ])
322 if test x$HAVE_OSS != xyes; then
323   AC_MSG_WARN([OSS audio support not found -- not compiling player_example])
324 fi
325
326 dnl check for libpng
327 HAVE_PNG=no
328 if test "x$HAVE_PKG_CONFIG" = "xyes"
329 then
330   PKG_CHECK_MODULES(PNG, libpng, HAVE_PNG=yes, HAVE_PNG=no)
331 fi
332 AC_SUBST(PNG_CFLAGS)
333 AC_SUBST(PNG_LIBS)
334
335 dnl --------------------------------------------------
336 dnl Overall build configuration options
337 dnl --------------------------------------------------
338
339 dnl Configuration option for building of floating point code.
340
341 ac_enable_float=yes
342 AC_ARG_ENABLE(float,
343      [  --disable-float         disable use of floating point code ],
344      [ ac_enable_float=$enableval ], [ ac_enable_float=yes] )
345
346 if test "x${ac_enable_float}" != xyes ; then
347     AC_DEFINE([THEORA_DISABLE_FLOAT], [], 
348   [Define to exclude floating point code from the build])
349 fi
350 AM_CONDITIONAL(THEORA_DISABLE_FLOAT, [test "x${ac_enable_float}" != xyes])
351
352 dnl Configuration option for building of encoding support.
353
354 ac_enable_encode=yes
355 AC_ARG_ENABLE(encode,
356      [  --disable-encode        disable encoding support ],
357      [ ac_enable_encode=$enableval ], [ ac_enable_encode=yes] )
358
359 if test "x${ac_enable_encode}" != xyes ; then
360     AC_DEFINE([THEORA_DISABLE_ENCODE], [],
361   [Define to exclude encode support from the build])
362 else
363     if test x$HAVE_VORBIS = xyes; then
364       BUILDABLE_EXAMPLES="$BUILDABLE_EXAMPLES encoder_example\$(EXEEXT)"
365     else
366       AC_MSG_NOTICE([Vorbis missing, cannot build example encoder])
367     fi
368 fi
369 AM_CONDITIONAL(THEORA_DISABLE_ENCODE, [test "x${ac_enable_encode}" != xyes])
370
371 dnl Configuration option for examples
372
373 ac_enable_examples=yes
374 AC_ARG_ENABLE(examples,
375      [  --disable-examples      disable examples ],
376      [ ac_enable_examples=$enableval ], [ ac_enable_examples=yes] )
377 AM_CONDITIONAL(THEORA_ENABLE_EXAMPLES, [test "x${ac_enable_examples}" != xno])
378
379 dnl --------------------------------------------------
380 dnl Check for headers
381 dnl --------------------------------------------------
382
383 dnl none here
384
385 dnl --------------------------------------------------
386 dnl Check for typedefs, structures, etc
387 dnl --------------------------------------------------
388
389 dnl none
390
391 dnl --------------------------------------------------
392 dnl Check for library functions
393 dnl --------------------------------------------------
394
395 dnl substitute the included getopt if the system doesn't support long options
396 AC_CHECK_FUNC(getopt_long,
397               [GETOPT_OBJS=''],
398               [GETOPT_OBJS='getopt.$(OBJEXT) getopt1.$(OBJEXT)'])
399 AC_SUBST(GETOPT_OBJS)
400
401 if test x$HAVE_SDL = xyes -a x$HAVE_OSS = xyes -a x$HAVE_VORBIS = xyes; then
402   BUILDABLE_EXAMPLES="$BUILDABLE_EXAMPLES player_example"
403 fi
404 if test x$HAVE_PNG = xyes; then
405   BUILDABLE_EXAMPLES="$BUILDABLE_EXAMPLES png2theora"
406 fi
407 AC_SUBST(BUILDABLE_EXAMPLES)
408
409 dnl --------------------------------------------------
410 dnl Do substitutions
411 dnl --------------------------------------------------
412
413 AC_SUBST(DEBUG)
414 AC_SUBST(PROFILE)
415
416 AC_OUTPUT([
417   Makefile 
418   lib/Makefile
419   include/Makefile include/theora/Makefile
420   examples/Makefile
421   doc/Makefile doc/Doxyfile doc/spec/Makefile
422   tests/Makefile
423   m4/Makefile
424   libtheora.spec
425   theora.pc
426   theora-uninstalled.pc
427   theoradec.pc
428   theoradec-uninstalled.pc
429   theoraenc.pc
430   theoraenc-uninstalled.pc
431 ])
432
433 AS_AC_EXPAND(LIBDIR, ${libdir})
434 AS_AC_EXPAND(INCLUDEDIR, ${includedir})
435 AS_AC_EXPAND(BINDIR, ${bindir})
436 AS_AC_EXPAND(DOCDIR, ${datadir}/doc)
437
438 if test $HAVE_DOXYGEN = "false"; then
439   doc_build="no"
440 else
441   doc_build="yes"
442 fi
443 if test $BUILD_SPEC = "false"; then
444   spec_build="no"
445 else
446   spec_build="yes"
447 fi
448
449 AC_MSG_RESULT([
450 ------------------------------------------------------------------------
451   $PACKAGE $VERSION:  Automatic configuration OK.
452
453   General configuration:
454
455     Encoding support: ........... ${ac_enable_encode}
456     Floating point support: ..... ${ac_enable_float}
457     Assembly optimization: ...... ${cpu_optimization}
458     Build example code: ......... ${ac_enable_examples}
459     API Documentation: .......... ${doc_build}
460     Format Documentation: ....... ${spec_build}
461
462   Installation paths:
463
464     libtheora: ................... ${LIBDIR}
465     C header files: .............. ${INCLUDEDIR}/theora
466     Documentation: ............... ${DOCDIR}/$PACKAGE
467
468   Building:
469
470     Type 'make' to compile $PACKAGE.
471
472     Type 'make install' to install $PACKAGE.
473
474     ${TESTS_INFO}
475
476   Example programs will be built but not installed.
477 ------------------------------------------------------------------------
478 ])
479