Switch to using config.h for configuration options
[opusfile.git] / configure.ac
1 # autoconf source script for generating configure
2
3 dnl The package_version file will be automatically synced to the git revision
4 dnl by the update_version script when configured in the repository, but will
5 dnl remain constant in tarball releases unless it is manually edited.
6 m4_define([CURRENT_VERSION],
7           m4_esyscmd([ if test -e package_version || ./update_version; then
8                            . ./package_version
9                            printf "$PACKAGE_VERSION"
10                        else
11                            printf "unknown"
12                        fi ]))
13
14 AC_INIT([opusfile],[CURRENT_VERSION],[opus@xiph.org])
15 AC_CONFIG_SRCDIR([src/opusfile.c])
16 AC_CONFIG_MACRO_DIR([m4])
17
18 AC_USE_SYSTEM_EXTENSIONS
19 AC_SYS_LARGEFILE
20
21 AM_INIT_AUTOMAKE([1.11 foreign no-define])
22 AM_MAINTAINER_MODE([enable])
23 LT_INIT
24
25 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
26
27 dnl Library versioning for libtool.
28 dnl Please update these for releases.
29 dnl CURRENT, REVISION, AGE
30 dnl - library source changed -> increment REVISION
31 dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
32 dnl - interfaces added -> increment AGE
33 dnl - interfaces removed -> AGE = 0
34
35 OP_LT_CURRENT=0
36 OP_LT_REVISION=1
37 OP_LT_AGE=0
38
39 AC_SUBST(OP_LT_CURRENT)
40 AC_SUBST(OP_LT_REVISION)
41 AC_SUBST(OP_LT_AGE)
42
43 CC_CHECK_CFLAGS_APPEND(
44   [-std=c89 -pedantic -Wall -Wextra -Wno-parentheses -Wno-long-long])
45
46 # Platform-specific tweaks
47 case $host in
48   *-mingw*)
49     # -std=c89 causes some warnings under mingw.
50     CC_CHECK_CFLAGS_APPEND([-U__STRICT_ANSI__])
51     # We need WINNT>=0x501 (WindowsXP) for getaddrinfo/freeaddrinfo.
52     # It's okay to define this even when HTTP support is disabled, as it only
53     #  affects header declarations, not linking (unless we actually use some
54     #  XP-only functions).
55     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x501,
56      [We need at least WindowsXP for getaddrinfo/freaddrinfo])
57     host_mingw=true
58     ;;
59 esac
60 AM_CONDITIONAL(OP_WIN32, test "$host_mingw" = "true")
61
62 AC_ARG_ENABLE([assertions],
63   AS_HELP_STRING([--enable-assertions], [Enable assertions in code]),,
64   enable_assertions=no)
65
66 AS_IF([test "$enable_assertions" = "yes"], [
67   AC_DEFINE([OP_ENABLE_ASSERTIONS], [1], [Enable assertions in code])
68 ])
69
70 AC_ARG_ENABLE([http],
71   AS_HELP_STRING([--disable-http], [Disable HTTP support]),,
72   enable_http=yes)
73
74 AM_COND_IF(OP_WIN32,
75   AS_IF([test "$enable_http" != "no"],
76     AC_CHECK_HEADER([winsock2.h],,
77       AC_MSG_WARN([HTTP support requires a Winsock socket library.])
78       enable_http=no
79     )
80   ),
81   AS_IF([test "$enable_http" != "no"],
82     AC_CHECK_HEADER([sys/socket.h],,
83       AC_MSG_WARN([HTTP support requires a POSIX socket library.])
84       enable_http=no
85     )
86   )
87 )
88
89 AS_IF([test "$enable_http" != "no"], [
90    openssl="openssl"
91    AC_DEFINE([OP_ENABLE_HTTP], [1], [Enable HTTP support])
92    PKG_CHECK_MODULES([URL_DEPS], [openssl])
93 ])
94 AM_CONDITIONAL(OP_ENABLE_HTTP, [test "$enable_http" != "no"])
95 AC_SUBST([openssl])
96
97 PKG_CHECK_MODULES([DEPS], [ogg >= 1.3 opus >= 1.0.1])
98
99 AC_ARG_ENABLE([fixed-point],
100   AS_HELP_STRING([--enable-fixed-point], [Enable fixed-point calculation]),,
101   enable_fixed_point=no)
102 AC_ARG_ENABLE([float],
103   AS_HELP_STRING([--disable-float], [Disable floating-point API]),,
104   enable_float=yes)
105
106 AS_IF([test "$enable_float" = "no"],
107   [enable_fixed_point=yes
108    AC_DEFINE([OP_DISABLE_FLOAT_API], [1], [Disable floating-point API])
109   ]
110 )
111
112 AS_IF([test "$enable_fixed_point" = "yes"],
113   [AC_DEFINE([OP_FIXED_POINT], [1], [Enable fixed-point calculation])],
114   [dnl This only has to be tested for if float->fixed conversions are required
115    saved_LIBS="$LIBS"
116    AC_SEARCH_LIBS([lrintf], [m], [
117       AC_DEFINE([OP_HAVE_LRINTF], [1], [Enable use of lrintf function])
118       lrintf_notice="
119     Library for lrintf() ......... ${ac_cv_search_lrintf}"
120    ])
121    LIBS="$saved_LIBS"
122   ]
123 )
124
125 AS_CASE(["$ac_cv_search_lrintf"],
126   ["no"],[],
127   ["none required"],[],
128   [lrintf_lib="$ac_cv_search_lrintf"])
129
130 AC_SUBST([lrintf_lib])
131
132 CC_ATTRIBUTE_VISIBILITY([default], [
133   CC_FLAG_VISIBILITY([CFLAGS="${CFLAGS} -fvisibility=hidden"])
134 ])
135
136 dnl Check for doxygen
137 AC_ARG_ENABLE([doc],
138   AS_HELP_STRING([--disable-doc], [Do not build API documentation]),,
139   [enable_doc=yes]
140 )
141
142 AS_IF([test "$enable_doc" = "yes"], [
143   AC_CHECK_PROG([HAVE_DOXYGEN], [doxygen], [yes], [no])
144 ],[
145   HAVE_DOXYGEN=no
146 ])
147
148 AM_CONDITIONAL([HAVE_DOXYGEN], [test "$HAVE_DOXYGEN" = "yes"])
149
150 AC_CONFIG_FILES([
151   Makefile
152   opusfile.pc
153   opusurl.pc
154   opusfile-uninstalled.pc
155   opusurl-uninstalled.pc
156   doc/Doxyfile
157 ])
158 AC_CONFIG_HEADERS([config.h])
159 AC_OUTPUT
160
161 AC_MSG_NOTICE([
162 ------------------------------------------------------------------------
163   $PACKAGE_NAME $PACKAGE_VERSION: Automatic configuration OK.
164
165     Assertions ................... ${enable_assertions}
166
167     HTTP support ................. ${enable_http}
168     Fixed-point .................. ${enable_fixed_point}
169     Floating-point API ........... ${enable_float}${lrintf_notice}
170
171     Hidden visibility ............ ${cc_cv_flag_visibility}
172
173     API documentation ............ ${enable_doc}
174 ------------------------------------------------------------------------
175 ])