ncurses 5.9 - patch 20111126
[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.101 2011/10/29 21:17:36 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 CF_TOP_BUILDDIR
64 CC_G_OPT="-g"                                   AC_SUBST(CC_G_OPT)
65 CC_SHARED_OPTS=unknown                  AC_SUBST(CC_SHARED_OPTS)
66 CPPFLAGS="$CPPFLAGS"                    AC_SUBST(CPPFLAGS)
67 DFT_DEP_SUFFIX=""                               AC_SUBST(DFT_DEP_SUFFIX)
68 DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'`    AC_SUBST(DFT_OBJ_SUBDIR)
69 DFT_UPR_MODEL="NORMAL"                  AC_SUBST(DFT_UPR_MODEL)
70 LD="ld"                                                 AC_SUBST(LD)
71 LDFLAGS_SHARED=""                               AC_SUBST(LDFLAGS_SHARED)
72 LDFLAGS_STATIC=""                               AC_SUBST(LDFLAGS_STATIC)
73 LD_MODEL=""                                             AC_SUBST(LD_MODEL)
74 LD_SHARED_OPTS=""                               AC_SUBST(LD_SHARED_OPTS)
75 LIBTOOL=""                                              AC_SUBST(LIBTOOL)
76 LIB_CLEAN=""                                    AC_SUBST(LIB_CLEAN)
77 LIB_COMPILE=""                                  AC_SUBST(LIB_COMPILE)
78 LIB_LINK='${CC}'                                AC_SUBST(LIB_LINK)
79 LINK_TESTS=""                                   AC_SUBST(LINK_TESTS)
80 LOCAL_LDFLAGS=""                                AC_SUBST(LOCAL_LDFLAGS)
81 PTHREAD="-lm"                                   AC_SUBST(PTHREAD)
82 TEST_ARGS=""                                    AC_SUBST(TEST_ARGS)
83 TEST_DEPS=""                                    AC_SUBST(TEST_DEPS)
84 TEST_LIBS=""                                    AC_SUBST(TEST_LIBS)
85 TINFO_LDFLAGS=''                                AC_SUBST(TINFO_LDFLAGS)
86 TINFO_LIBS='$(LIBS_CURSES)'             AC_SUBST(TINFO_LIBS)
87 cf_cv_abi_version=""                    AC_SUBST(cf_cv_abi_version)
88 cf_cv_rel_version=""                    AC_SUBST(cf_cv_rel_version)
89
90 cf_cv_screen=curses
91 cf_cv_libtype=
92
93 AC_EXEEXT
94 AC_OBJEXT
95
96 CF_ANSI_CC_REQD
97 CF_GCC_ATTRIBUTES
98 CF_XOPEN_SOURCE
99 AC_C_CONST
100 CF_SIG_ATOMIC_T
101
102 CF_DISABLE_ECHO
103 CF_ENABLE_WARNINGS
104
105 CF_DISABLE_LEAKS
106
107 dnl ---------------------------------------------------------------------------
108 AC_MSG_CHECKING(if you want to check for wide-character functions)
109 CF_ARG_DISABLE(widec,
110         [  --disable-widec           disable checks for wide-character functions],
111         cf_enable_widec=no,
112         cf_enable_widec=yes,
113         yes)
114 AC_MSG_RESULT($cf_enable_widec)
115
116 CF_WITH_CURSES_DIR
117
118 dnl ---------------------------------------------------------------------------
119 dnl NcursesW, installed in conventional location
120 AC_MSG_CHECKING(for specified curses library type)
121 AC_ARG_WITH(ncursesw,
122         [  --with-ncursesw         use wide ncurses-libraries (installed)],
123         [cf_cv_screen=ncursesw],[
124
125 dnl Ncurses, installed in conventional location
126 AC_ARG_WITH(ncurses,
127         [  --with-ncurses          use ncurses-libraries (installed)],
128         [cf_cv_screen=ncurses],[
129
130 AC_ARG_WITH(pdcurses,
131         [  --with-pdcurses         compile/link with pdcurses X11 library],
132         [cf_cv_screen=pdcurses],[
133
134 AC_ARG_WITH(curses-colr,
135         [  --with-curses-colr      compile/link with HPUX 10.x color-curses],
136         [cf_cv_screen=curses_colr],[
137
138 AC_ARG_WITH(curses-5lib,
139         [  --with-curses-5lib      compile/link with SunOS 5lib curses],
140         [cf_cv_screen=curses_5lib])])])])])
141
142 AC_MSG_RESULT($cf_cv_screen)
143
144 case $cf_cv_screen in
145 curses|curses_*)
146         CF_CURSES_CONFIG
147         CF_NETBSD_FORM_H
148         CF_NETBSD_MENU_H
149         ;;
150 ncurses)
151         CF_NCURSES_CONFIG
152         ;;
153 ncursesw)
154         cf_cv_libtype=w
155         CF_UTF8_LIB
156         CF_NCURSES_CONFIG(ncursesw)
157         ;;
158 pdcurses) #(vi
159         CF_PDCURSES_X11
160         ;;
161 esac
162
163 dnl If we've not specified a library, assume we're using sysvr4 libraries
164 dnl installed conventionally (e.g., SunOS 5.x - solaris).
165
166 dnl Autoconf builds up the $LIBS in reverse order
167
168 case $cf_cv_screen in #(vi
169 pdcurses) #(vi
170         ;;
171 *)
172         # look for curses-related libraries
173         AC_CHECK_LIB(panel$cf_cv_libtype,new_panel)
174         AC_CHECK_LIB(menu$cf_cv_libtype,menu_driver)
175         AC_CHECK_LIB(form$cf_cv_libtype,form_driver)
176
177         # look for curses-related headers
178         AC_CHECK_HEADERS( \
179                 nc_alloc.h \
180                 nomacros.h \
181                 form.h \
182                 menu.h \
183                 panel.h \
184                 term_entry.h \
185                 )
186         ;;
187 esac
188
189 AC_TYPE_SIGNAL
190
191 AC_STDC_HEADERS
192 AC_HEADER_TIME
193 AC_CHECK_HEADERS( \
194 getopt.h \
195 locale.h \
196 math.h \
197 stdarg.h \
198 sys/ioctl.h \
199 sys/select.h \
200 sys/time.h \
201 termios.h \
202 unistd.h \
203 )
204
205 CF_GETOPT_HEADER
206
207 AC_CHECK_FUNCS( \
208 gettimeofday \
209 strdup \
210 )
211
212 if test "$cf_enable_widec" = yes; then
213 AC_CHECK_FUNCS( \
214 mblen \
215 mbrlen \
216 mbrtowc \
217 mbsrtowcs \
218 mbstowcs \
219 mbtowc \
220 wcsrtombs \
221 wcstombs \
222 )
223 fi
224
225 CF_CURSES_FUNCS( \
226 assume_default_colors \
227 chgat \
228 color_set \
229 filter \
230 getbegx \
231 getcurx \
232 getmaxx \
233 getnstr \
234 getparx \
235 getwin \
236 mvvline \
237 mvwvline \
238 napms \
239 putwin \
240 resize_term \
241 resizeterm \
242 ripoffline \
243 scr_dump \
244 setupterm \
245 slk_color \
246 slk_init \
247 termattrs \
248 tgetent \
249 tigetnum \
250 tigetstr \
251 typeahead \
252 use_default_colors \
253 use_screen \
254 use_window \
255 vsscanf \
256 vw_printw \
257 wchgat \
258 winsstr \
259 wresize \
260 wsyncdown \
261 )
262
263 CF_TPUTS_PROTO
264 CF_NCURSES_EXT_FUNCS
265
266 if test "$cf_enable_widec" = yes
267 then
268         # workaround for systems with ncurses before 20111029, due to change of
269         # feature test macro from _XPG5 to _XOPEN_SOURCE
270         if test -n "$cf_cv_ncurses_version" && test "x$cf_cv_ncurses_version" != xno
271         then
272                 cf_define_xpg5=no
273                 AC_MSG_CHECKING(if _XPG5 should be defined to enable wide-characters)
274
275                 AC_TRY_COMPILE([
276 #include <${cf_cv_ncurses_header:-curses.h}>],
277                         [int x = _XPG5],,
278                         [cf_save_cppflags="$CPPFLAGS"
279                          CPPFLAGS="$CPPFLAGS -D_XPG5"
280                          AC_TRY_COMPILE([
281 #include <${cf_cv_ncurses_header:-curses.h}>],
282                                 [int x = _XPG5],
283                                 [cf_define_xpg5=yes])
284                          CPPFLAGS="$cf_save_cppflags"])
285                 AC_MSG_RESULT($cf_define_xpg5)
286
287                 if test "$cf_define_xpg5" = yes
288                 then
289                         CPPFLAGS="$CPPFLAGS -D_XPG5"
290                 fi
291         fi
292
293         AC_CACHE_CHECK(for wide-character functions,cf_cv_widechar_funcs,[
294         AC_TRY_LINK([
295 #include <${cf_cv_ncurses_header:-curses.h}>],
296         [
297                 static wchar_t src_wchar[2];
298                 static cchar_t dst_cchar;
299                 setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0);
300                 ],
301                 [cf_cv_widechar_funcs=yes],
302                 [cf_cv_widechar_funcs=no])
303         ])
304         if test "$cf_cv_widechar_funcs" != no ; then
305                 AC_DEFINE(USE_WIDEC_SUPPORT,1)
306         else
307                 AC_DEFINE(USE_WIDEC_SUPPORT,0)
308         fi
309 else
310         AC_DEFINE(USE_WIDEC_SUPPORT,0)
311 fi
312
313 CF_SYS_TIME_SELECT
314 CF_FUNC_CURSES_VERSION
315 CF_CURSES_ACS_MAP
316
317 if test "$cf_enable_widec" = yes; then
318         CF_CURSES_WACS_MAP
319         CF_CURSES_WACS_SYMBOLS
320 fi
321
322 CF_CURSES_CHECK_TYPE(attr_t,long)
323
324 if test "$cf_enable_widec" = yes; then
325         CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T, NCURSES_OK_MBSTATE_T)
326         CF_WCHAR_TYPE(wchar_t,   NCURSES_WCHAR_T,   NCURSES_OK_WCHAR_T)
327         CF_WCHAR_TYPE(wint_t,    NCURSES_WINT_T,    NCURSES_OK_WINT_T)
328
329         if test "$NCURSES_OK_MBSTATE_T" = 0 ; then
330                 CF_CURSES_CHECK_TYPE(mbstate_t,long)
331         fi
332
333         if test "$NCURSES_OK_WCHAR_T" = 0 ; then
334                 CF_CURSES_CHECK_TYPE(wchar_t,long)
335         fi
336
337         if test "$NCURSES_OK_WINT_T" = 0 ; then
338                 CF_CURSES_CHECK_TYPE(wint_t,long)
339         fi
340 fi
341
342 CF_CURSES_CHECK_DATA(boolnames)
343 CF_CURSES_CHECK_DATA(boolfnames)
344
345 CF_DISABLE_RPATH_HACK
346
347 TEST_ARGS="$LIBS"
348 LIBS=
349
350 dnl ---------------------------------------------------------------------------
351
352 AC_OUTPUT(Makefile,[
353 CF_PRG_RULES([$srcdir/mk-test.awk INSTALL=yes ECHO_LINK="$ECHO_LD"], .)
354         cat >>Makefile <<TEST_EOF
355
356 # These rules are generated so we do not rely on suffix rules, which do not
357 # work consistently for different make-programs (the '\$(MODEL)/' confuses
358 # some, and the '\$x' confuses others).
359 TEST_EOF
360
361 LIST=`sed -e 's/[[      ]].*//' -e '/^[[#@]]/d' $srcdir/modules`
362 for N in $LIST
363 do
364         cat >>Makefile <<TEST_EOF
365
366 \$(MODEL)/$N.o : \$(srcdir)/$N.c \\
367         \$(srcdir)/test.priv.h \\
368         ncurses_cfg.h
369         @echo compiling $N; \$(CC) -c \$(CFLAGS_DEFAULT) \$(srcdir)/$N.c
370 TEST_EOF
371 done
372
373 if test -f ../config.guess && test -f ../config.sub
374 then
375         cat >>Makefile <<TEST_EOF
376
377 # if we used CF_INHERIT for getting these files, we can remove them
378 distclean::
379         rm -f config.guess config.sub
380 TEST_EOF
381 fi
382 ],[
383 AWK="$AWK"
384 ECHO_LD="$ECHO_LD"
385 ],cat)