chiark / gitweb /
4d08050549a40deef769f6bb1ef1f836871ed9f8
[mLib] / configure.ac
1 dnl -*-autoconf-*-
2 dnl
3 dnl Configuration script for mLib
4 dnl
5 dnl (c) 2008 Straylight/Edgeware
6 dnl
7
8 dnl----- Licensing notice ---------------------------------------------------
9 dnl
10 dnl This file is part of the mLib utilities library.
11 dnl
12 dnl mLib is free software; you can redistribute it and/or modify
13 dnl it under the terms of the GNU Library General Public License as
14 dnl published by the Free Software Foundation; either version 2 of the
15 dnl License, or (at your option) any later version.
16 dnl
17 dnl mLib is distributed in the hope that it will be useful,
18 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
19 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 dnl GNU Library General Public License for more details.
21 dnl
22 dnl You should have received a copy of the GNU Library General Public
23 dnl License along with mLib; if not, write to the Free
24 dnl Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
25 dnl MA 02111-1307, USA.
26
27 dnl--------------------------------------------------------------------------
28 dnl Initialization.
29
30 mdw_AUTO_VERSION
31 AC_INIT([mLib], AUTO_VERSION, [mdw@distorted.org.uk], [mLib])
32 AC_CONFIG_SRCDIR([mLib.pc.in])
33 AC_CONFIG_AUX_DIR([config])
34 AM_INIT_AUTOMAKE([foreign subdir-objects])
35 mdw_SILENT_RULES
36
37 AC_PROG_CC
38 AM_PROG_CC_C_O
39 LT_INIT
40 AX_CFLAGS_WARN_ALL
41 mdw_LIBTOOL_VERSION_INFO
42
43 AC_CHECK_PROGS([AUTOM4TE], [autom4te])
44
45 mdw_MANEXT([mLib])
46
47 AC_DEFINE_UNQUOTED([SRCDIR], ["$(cd $srcdir && pwd)"],
48                    [absolute pathname for the source directory.])
49
50 dnl--------------------------------------------------------------------------
51 dnl C programming environment.
52
53 dnl Set the master library list.
54 MLIB_LIBS=
55 AC_SUBST([MLIB_LIBS])
56
57 dnl Headers.
58 AC_CHECK_HEADERS([float.h])
59 AC_CHECK_HEADERS([stdint.h])
60 AC_CHECK_HEADERS([valgrind/valgrind.h])
61 AC_CHECK_HEADERS([wchar.h])
62
63 dnl Libraries.
64 mdw_ORIG_LIBS=$LIBS LIBS=$MLIB_LIBS
65 AC_SEARCH_LIBS([sqrt], [m])
66 AC_SEARCH_LIBS([socket], [socket])
67 AC_SEARCH_LIBS([gethostbyname], [nsl resolv])
68 MLIB_LIBS=$LIBS LIBS=$mdw_ORIG_LIBS
69
70 dnl Functions.
71 AC_CHECK_FUNCS([mbrtowc])
72 AC_CHECK_FUNCS([snprintf])
73 AC_CHECK_FUNCS([wcwidth])
74
75 dnl Types.
76 AC_CHECK_TYPE([socklen_t], [],
77   [AC_DEFINE([socklen_t], [int],
78      [Define to `int' if <sys/socket.h> does not define])],
79   [AC_INCLUDES_DEFAULT
80 @%:@include <sys/socket.h>
81 ])
82
83 dnl Which version of struct msghdr do we have?
84 AC_CHECK_MEMBERS([struct msgdr.msg_control],,, [
85 @%:@include <sys/types.h>
86 @%:@include <sys/socket.h>
87 ])
88
89 dnl Find out whether we're cross-compiling.
90 AM_CONDITIONAL([CROSS_COMPILING], [test "$cross_compiling" = yes])
91
92 dnl Floating-point formats.
93 mdw_PROBE_FLTFMT
94
95 dnl--------------------------------------------------------------------------
96 dnl Terminal characteristics.
97
98 mdw_ORIG_LIBS=$LIBS LIBS=$MLIB_LIBS
99
100 AC_ARG_WITH([unibilium],
101   AS_HELP_STRING([--with-unibilium], [support `unibilium' library]),
102   [want_unibilium=$withval],
103   [want_unibilium=auto])
104
105 case $want_unibilium in
106   no) have_unibilium=no ;;
107   *) have_unibilium=check ;;
108 esac
109 case $have_unibilium in
110   check)
111     PKG_CHECK_MODULES([unibilium], [unibilium >= 2.0.0],
112       [CFLAGS="$CFLAGS $unibilium_CFLAGS"
113        LIBS="$LIBS $unibilium_LIBS"],
114       [have_unibilium=no])
115     ;;
116 esac
117
118 case $have_unibilium in check) have_unibilium=yes ;; esac
119 case $want_unibilium,$have_unibilium in
120   yes,no)
121     AC_MSG_ERROR([`unibilium' library not found but explicitly requested])
122     ;;
123   yes,yes | auto,yes)
124     use_unibilium=yes
125     AC_DEFINE([HAVE_UNIBILIUM], [1],
126               [define if you have (and want to use) the `unibilium' library.])
127     ;;
128   no,* | auto,no)
129     use_unibilium=no
130     ;;
131 esac
132 AM_CONDITIONAL([WITH_UNIBILIUM], [test "$use_unibilium" = yes])
133
134 AC_ARG_WITH([terminfo],
135   AS_HELP_STRING([--with-terminfo], [support `terminfo' library]),
136   [want_terminfo=$withval],
137   [want_terminfo=auto])
138
139 case $want_terminfo in
140   no) have_terminfo=no ;;
141   *) have_terminfo=check ;;
142 esac
143 case $have_terminfo in
144   check) AC_CHECK_HEADERS([term.h], [], [have_terminfo=no]) ;;
145 esac
146 case $have_terminfo in
147   check)
148     AC_SEARCH_LIBS([tparm], [tinfo], [], [have_terminfo=no])
149     AC_CHECK_FUNCS([tiparm])
150     ;;
151 esac
152 case $have_terminfo in check) have_terminfo=yes ;; esac
153
154 case $want_terminfo,$have_terminfo in
155   yes,no)
156     AC_MSG_ERROR([`terminfo' library not found but explicitly requested])
157     ;;
158   yes,yes | auto,yes)
159     use_terminfo=yes
160     AC_DEFINE([HAVE_TERMINFO], [1],
161               [define if you have (and want to use) the `terminfo' library.])
162     ;;
163   no,* | auto,no)
164     use_terminfo=no
165     ;;
166 esac
167 AM_CONDITIONAL([WITH_TERMINFO], [test "$use_terminfo" = yes])
168
169 AC_ARG_WITH([termcap],
170   AS_HELP_STRING([--with-termcap], [support `termcap' library]),
171   [want_termcap=$withval],
172   [want_termcap=auto])
173
174 case $want_termcap in
175   no) have_termcap=no ;;
176   *) have_termcap=check ;;
177 esac
178 case $have_termcap in
179   check) AC_CHECK_HEADERS([termcap.h], [], [have_termcap=no]) ;;
180 esac
181 case $have_termcap in
182   check)
183     AC_SEARCH_LIBS([tgoto], [termcap], [], [have_termcap=no])
184     AC_SEARCH_LIBS([tgetstr], [termcap], [], [have_termcap=no])
185     ;;
186 esac
187 case $have_termcap in check) have_termcap=yes ;; esac
188
189 case $want_termcap,$have_termcap in
190   yes,no)
191     AC_MSG_ERROR([`termcap' library not found but explicitly requested])
192     ;;
193   yes,yes | auto,yes)
194     use_termcap=yes
195     AC_DEFINE([HAVE_TERMCAP], [1],
196               [define if you have (and want to use) the `termcap' library.])
197     ;;
198   no,* | auto,no)
199     use_termcap=no
200     ;;
201 esac
202 AM_CONDITIONAL([WITH_TERMCAP], [test "$use_termcap" = yes])
203
204 MLIB_LIBS=$LIBS LIBS=$mdw_ORIG_LIBS
205
206 dnl--------------------------------------------------------------------------
207 dnl Name resolution.
208
209 AC_ARG_WITH([adns],
210   AS_HELP_STRING([--with-adns],
211                  [use ADNS library for background name resolution]),
212   [want_adns=$withval],
213   [want_adns=auto])
214
215 mdw_ORIG_LIBS=$LIBS LIBS=$MLIB_LIBS
216
217 case $want_adns in no) ;; *) have_adns=check ;; esac
218 case $have_adns in
219   check) AC_CHECK_HEADERS([adns.h], [], [have_adns=no]) ;;
220 esac
221 case $have_adns in
222   check) AC_SEARCH_LIBS([adns_init], [adns], [], [have_adns=no]) ;;
223 esac
224 case $have_adns in check) have_adns=yes ;; esac
225
226 case $want_adns,$have_adns in
227   yes,no)
228     AC_MSG_ERROR([ADNS library not found but explicitly requested])
229     ;;
230   yes,yes | auto,yes)
231     use_adns=yes
232     AC_DEFINE([HAVE_ADNS], [1],
233               [define if you have (and want to use) the ADNS library.])
234     ;;
235   no,* | auto,no)
236     use_adns=no
237     mdw_DEFINE_PATHS([
238       AC_DEFINE_UNQUOTED([BRES_SERVER],
239                          ["mdw_PATH($libexecdir)/$PACKAGE/mdw_PROG(bres)"],
240                          [pathname to the standalone `bres' binary.'])
241     ])
242     ;;
243 esac
244 AM_CONDITIONAL([WITH_ADNS], [test "$use_adns" = yes])
245
246 MLIB_LIBS=$LIBS LIBS=$mdw_ORIG_LIBS
247
248 dnl--------------------------------------------------------------------------
249 dnl Timers.
250
251 AC_CHECK_HEADERS([linux/perf_event.h])
252
253 mdw_ORIG_LIBS=$LIBS LIBS=$MLIB_LIBS
254 AC_SEARCH_LIBS([clock_gettime], [rt])
255 MLIB_LIBS=$LIBS LIBS=$mdw_ORIG_LIBS
256 if test "$ac_cv_search_clock_gettime" != no; then
257   AC_DEFINE([HAVE_CLOCK_GETTIME], [1],
258             [Define if you have the \`clock_gettime' function.])
259 fi
260
261 dnl--------------------------------------------------------------------------
262 dnl Python (used for testing).
263
264 AM_PATH_PYTHON([2.4],, [:])
265
266 dnl--------------------------------------------------------------------------
267 dnl Output.
268
269 AC_CONFIG_HEADERS([config/config.h])
270 AC_CONFIG_TESTDIR([t])
271
272 AC_CONFIG_FILES(
273   [Makefile]
274   [buf/Makefile]
275   [codec/Makefile]
276   [hash/Makefile]
277   [mem/Makefile]
278   [sel/Makefile]
279   [struct/Makefile]
280   [sys/Makefile]
281   [test/Makefile] [test/example/Makefile]
282   [trace/Makefile]
283   [ui/Makefile] [ui/example/Makefile]
284   [utils/Makefile]
285   [t/Makefile t/atlocal])
286 AC_OUTPUT
287
288 dnl------ That's all, folks -------------------------------------------------