ncurses 5.9 - patch 20110423
[ncurses.git] / test / configure.in
1 dnl***************************************************************************
2 dnl Copyright (c) 1998-2010,2011 Free Software Foundation, Inc.              *
3 dnl                                                                          *
4 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
5 dnl copy of this software and associated documentation files (the            *
6 dnl "Software"), to deal in the Software without restriction, including      *
7 dnl without limitation the rights to use, copy, modify, merge, publish,      *
8 dnl distribute, distribute with modifications, sublicense, and/or sell       *
9 dnl copies of the Software, and to permit persons to whom the Software is    *
10 dnl furnished to do so, subject to the following conditions:                 *
11 dnl                                                                          *
12 dnl The above copyright notice and this permission notice shall be included  *
13 dnl in all copies or substantial portions of the Software.                   *
14 dnl                                                                          *
15 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
16 dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
17 dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
18 dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
19 dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
20 dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
21 dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
22 dnl                                                                          *
23 dnl Except as contained in this notice, the name(s) of the above copyright   *
24 dnl holders shall not be used in advertising or otherwise to promote the     *
25 dnl sale, use or other dealings in this Software without prior written       *
26 dnl authorization.                                                           *
27 dnl***************************************************************************
28 dnl
29 dnl Author: Thomas E. Dickey 1996, etc.
30 dnl
31 dnl $Id: configure.in,v 1.97 2011/04/23 22:10:32 tom Exp $
32 dnl This is a simple configuration-script for the ncurses test programs that
33 dnl allows the test-directory to be separately configured against a reference
34 dnl system (i.e., sysvr4 curses)
35 dnl
36 dnl If you're configuring ncurses, you shouldn't need to use this script.
37 dnl It's only for testing purposes.
38 dnl
39 dnl See http://invisible-island.net/autoconf/ for additional information.
40 dnl ---------------------------------------------------------------------------
41 AC_PREREQ(2.13.20020210)
42 AC_INIT(ncurses.c)
43 AC_CONFIG_HEADER(ncurses_cfg.h:ncurses_tst.hin)
44
45 CF_INHERIT_SCRIPT(config.guess)
46 CF_INHERIT_SCRIPT(config.sub)
47 CF_CHECK_CACHE
48
49 AC_ARG_PROGRAM
50
51 AC_PROG_MAKE_SET
52 AC_PROG_CC
53 AC_PROG_CPP
54 AC_PROG_AWK
55 CF_PROG_INSTALL
56 CF_PROG_LINT
57 CF_MAKE_TAGS
58
59 CF_MATH_LIB(MATH_LIB,sin(x))
60 AC_SUBST(MATH_LIB)
61
62 dnl Things that we don't need (or must override) if we're not building ncurses
63 CC_G_OPT="-g"                                   AC_SUBST(CC_G_OPT)
64 CC_SHARED_OPTS=unknown                  AC_SUBST(CC_SHARED_OPTS)
65 CPPFLAGS="$CPPFLAGS"                    AC_SUBST(CPPFLAGS)
66 DFT_DEP_SUFFIX=""                               AC_SUBST(DFT_DEP_SUFFIX)
67 DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'`    AC_SUBST(DFT_OBJ_SUBDIR)
68 DFT_UPR_MODEL="NORMAL"                  AC_SUBST(DFT_UPR_MODEL)
69 LD="ld"                                                 AC_SUBST(LD)
70 LDFLAGS_SHARED=""                               AC_SUBST(LDFLAGS_SHARED)
71 LDFLAGS_STATIC=""                               AC_SUBST(LDFLAGS_STATIC)
72 LD_MODEL=""                                             AC_SUBST(LD_MODEL)
73 LD_SHARED_OPTS=""                               AC_SUBST(LD_SHARED_OPTS)
74 LIBTOOL=""                                              AC_SUBST(LIBTOOL)
75 LIB_CLEAN=""                                    AC_SUBST(LIB_CLEAN)
76 LIB_COMPILE=""                                  AC_SUBST(LIB_COMPILE)
77 LIB_LINK='${CC}'                                AC_SUBST(LIB_LINK)
78 LINK_TESTS=""                                   AC_SUBST(LINK_TESTS)
79 LOCAL_LDFLAGS=""                                AC_SUBST(LOCAL_LDFLAGS)
80 PTHREAD="-lm"                                   AC_SUBST(PTHREAD)
81 TEST_ARGS=""                                    AC_SUBST(TEST_ARGS)
82 TEST_DEPS=""                                    AC_SUBST(TEST_DEPS)
83 TEST_LIBS=""                                    AC_SUBST(TEST_LIBS)
84 TINFO_ARGS='$(LIBS_CURSES)'             AC_SUBST(TINFO_ARGS)
85 cf_cv_abi_version=""                    AC_SUBST(cf_cv_abi_version)
86 cf_cv_rel_version=""                    AC_SUBST(cf_cv_rel_version)
87
88 cf_cv_screen=curses
89 cf_cv_libtype=
90
91 AC_EXEEXT
92 AC_OBJEXT
93
94 CF_ANSI_CC_REQD
95 CF_GCC_ATTRIBUTES
96 CF_XOPEN_SOURCE
97 AC_C_CONST
98 CF_SIG_ATOMIC_T
99
100 CF_DISABLE_ECHO
101 CF_ENABLE_WARNINGS
102
103 CF_DISABLE_LEAKS
104
105 dnl ---------------------------------------------------------------------------
106 AC_MSG_CHECKING(if you want to check for wide-character functions)
107 CF_ARG_DISABLE(widec,
108         [--disable-widec           disable checks for wide-character functions],
109         cf_enable_widec=no,
110         cf_enable_widec=yes,
111         yes)
112 AC_MSG_RESULT($cf_enable_widec)
113
114 CF_WITH_CURSES_DIR
115
116 dnl ---------------------------------------------------------------------------
117 dnl NcursesW, installed in conventional location
118 AC_MSG_CHECKING(for specified curses library type)
119 AC_ARG_WITH(ncursesw,
120         [  --with-ncursesw         use wide ncurses-libraries (installed)],
121         [cf_cv_screen=ncursesw],[
122
123 dnl Ncurses, installed in conventional location
124 AC_ARG_WITH(ncurses,
125         [  --with-ncurses          use ncurses-libraries (installed)],
126         [cf_cv_screen=ncurses],[
127
128 AC_ARG_WITH(pdcurses,
129         [  --with-pdcurses         compile/link with pdcurses X11 library],
130         [cf_cv_screen=pdcurses],[
131
132 AC_ARG_WITH(curses-colr,
133         [  --with-curses-colr      compile/link with HPUX 10.x color-curses],
134         [cf_cv_screen=curses_colr],[
135
136 AC_ARG_WITH(curses-5lib,
137         [  --with-curses-5lib      compile/link with SunOS 5lib curses],
138         [cf_cv_screen=curses_5lib])])])])])
139
140 AC_MSG_RESULT($cf_cv_screen)
141
142 case $cf_cv_screen in
143 curses|curses_*)
144         CF_CURSES_CONFIG
145         CF_NETBSD_FORM_H
146         CF_NETBSD_MENU_H
147         ;;
148 ncurses)
149         CF_NCURSES_CONFIG
150         ;;
151 ncursesw)
152         cf_cv_libtype=w
153         CF_UTF8_LIB
154         CF_NCURSES_CONFIG(ncursesw)
155         ;;
156 pdcurses) #(vi
157         CF_PDCURSES_X11
158         ;;
159 esac
160
161 dnl If we've not specified a library, assume we're using sysvr4 libraries
162 dnl installed conventionally (e.g., SunOS 5.x - solaris).
163
164 dnl Autoconf builds up the $LIBS in reverse order
165
166 case $cf_cv_screen in #(vi
167 pdcurses) #(vi
168         ;;
169 *)
170         # look for curses-related libraries
171         AC_CHECK_LIB(panel$cf_cv_libtype,new_panel)
172         AC_CHECK_LIB(menu$cf_cv_libtype,menu_driver)
173         AC_CHECK_LIB(form$cf_cv_libtype,form_driver)
174
175         # look for curses-related headers
176         AC_CHECK_HEADERS( \
177                 nc_alloc.h \
178                 nomacros.h \
179                 form.h \
180                 menu.h \
181                 panel.h \
182                 term_entry.h \
183                 )
184         ;;
185 esac
186
187 AC_TYPE_SIGNAL
188
189 AC_STDC_HEADERS
190 AC_HEADER_TIME
191 AC_CHECK_HEADERS( \
192 getopt.h \
193 locale.h \
194 math.h \
195 stdarg.h \
196 sys/ioctl.h \
197 sys/select.h \
198 sys/time.h \
199 termios.h \
200 unistd.h \
201 )
202
203 CF_GETOPT_HEADER
204
205 AC_CHECK_FUNCS( \
206 gettimeofday \
207 strdup \
208 )
209
210 if test "$cf_enable_widec" = yes; then
211 AC_CHECK_FUNCS( \
212 mblen \
213 mbrlen \
214 mbrtowc \
215 mbsrtowcs \
216 mbstowcs \
217 mbtowc \
218 wcsrtombs \
219 wcstombs \
220 )
221 fi
222
223 CF_CURSES_FUNCS( \
224 assume_default_colors \
225 chgat \
226 color_set \
227 filter \
228 getbegx \
229 getcurx \
230 getmaxx \
231 getnstr \
232 getparx \
233 getwin \
234 mvvline \
235 mvwvline \
236 napms \
237 putwin \
238 resize_term \
239 resizeterm \
240 ripoffline \
241 scr_dump \
242 setupterm \
243 slk_color \
244 slk_init \
245 termattrs \
246 tgetent \
247 tigetnum \
248 tigetstr \
249 typeahead \
250 use_default_colors \
251 use_screen \
252 use_window \
253 vsscanf \
254 vw_printw \
255 wchgat \
256 winsstr \
257 wresize \
258 wsyncdown \
259 )
260
261 CF_TPUTS_PROTO
262 CF_NCURSES_EXT_FUNCS
263
264 if test "$cf_enable_widec" = yes
265 then
266         AC_CACHE_CHECK(for wide-character functions,cf_cv_widechar_funcs,[
267         AC_TRY_LINK([
268 #include <${cf_cv_ncurses_header:-curses.h}>],
269         [
270                 static wchar_t src_wchar[2];
271                 static cchar_t dst_cchar;
272                 setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0);
273                 ],
274                 [cf_cv_widechar_funcs=yes],
275                 [cf_cv_widechar_funcs=no])
276         ])
277         if test "$cf_cv_widechar_funcs" != no ; then
278                 AC_DEFINE(USE_WIDEC_SUPPORT,1)
279         else
280                 AC_DEFINE(USE_WIDEC_SUPPORT,0)
281         fi
282 else
283         AC_DEFINE(USE_WIDEC_SUPPORT,0)
284 fi
285
286 CF_SYS_TIME_SELECT
287 CF_FUNC_CURSES_VERSION
288 CF_CURSES_ACS_MAP
289
290 if test "$cf_enable_widec" = yes; then
291         CF_CURSES_WACS_MAP
292         CF_CURSES_WACS_SYMBOLS
293 fi
294
295 CF_CURSES_CHECK_TYPE(attr_t,long)
296
297 if test "$cf_enable_widec" = yes; then
298         CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T, NCURSES_OK_MBSTATE_T)
299         CF_WCHAR_TYPE(wchar_t,   NCURSES_WCHAR_T,   NCURSES_OK_WCHAR_T)
300         CF_WCHAR_TYPE(wint_t,    NCURSES_WINT_T,    NCURSES_OK_WINT_T)
301
302         if test "$NCURSES_OK_MBSTATE_T" = 0 ; then
303                 CF_CURSES_CHECK_TYPE(mbstate_t,long)
304         fi
305
306         if test "$NCURSES_OK_WCHAR_T" = 0 ; then
307                 CF_CURSES_CHECK_TYPE(wchar_t,long)
308         fi
309
310         if test "$NCURSES_OK_WINT_T" = 0 ; then
311                 CF_CURSES_CHECK_TYPE(wint_t,long)
312         fi
313 fi
314
315 CF_CURSES_CHECK_DATA(boolnames)
316 CF_CURSES_CHECK_DATA(boolfnames)
317
318 TEST_ARGS="$LIBS"
319 LIBS=
320
321 dnl ---------------------------------------------------------------------------
322
323 AC_OUTPUT(Makefile,[
324 CF_PRG_RULES([$srcdir/mk-test.awk INSTALL=yes ECHO_LINK="$ECHO_LD"], .)
325         cat >>Makefile <<TEST_EOF
326
327 # These rules are generated so we do not rely on suffix rules, which do not
328 # work consistently for different make-programs (the '\$(MODEL)/' confuses
329 # some, and the '\$x' confuses others).
330 TEST_EOF
331
332 LIST=`sed -e 's/[[      ]].*//' -e '/^[[#@]]/d' $srcdir/modules`
333 for N in $LIST
334 do
335         cat >>Makefile <<TEST_EOF
336
337 \$(MODEL)/$N.o : \$(srcdir)/$N.c \\
338         \$(srcdir)/test.priv.h \\
339         ncurses_cfg.h
340         @echo compiling $N; \$(CC) -c \$(CFLAGS_DEFAULT) \$(srcdir)/$N.c
341 TEST_EOF
342 done
343
344 if test -f ../config.guess && test -f ../config.sub
345 then
346         cat >>Makefile <<TEST_EOF
347
348 # if we used CF_INHERIT for getting these files, we can remove them
349 distclean::
350         rm -f config.guess config.sub
351 TEST_EOF
352 fi
353 ],[
354 AWK="$AWK"
355 ECHO_LD="$ECHO_LD"
356 ],cat)