ncurses 6.0 - patch 20170107
[ncurses.git] / test / configure.in
1 dnl***************************************************************************
2 dnl Copyright (c) 1998-2015,2016 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.128 2016/09/10 22:06:22 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.52.20030208)
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 CF_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,pow(sin(x),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 LIBTOOL_OPTS=""                                 AC_SUBST(LIBTOOL_OPTS)
77 LIB_CLEAN=""                                    AC_SUBST(LIB_CLEAN)
78 LIB_COMPILE=""                                  AC_SUBST(LIB_COMPILE)
79 LIB_LINK='${CC}'                                AC_SUBST(LIB_LINK)
80 LINK_TESTS=""                                   AC_SUBST(LINK_TESTS)
81 LOCAL_LDFLAGS=""                                AC_SUBST(LOCAL_LDFLAGS)
82 PACKAGE="ncurses-examples"              AC_SUBST(PACKAGE)
83 PTHREAD="-lm"                                   AC_SUBST(PTHREAD)
84 TEST_ARGS=""                                    AC_SUBST(TEST_ARGS)
85 TEST_DEPS=""                                    AC_SUBST(TEST_DEPS)
86 TEST_LIBS=""                                    AC_SUBST(TEST_LIBS)
87 TINFO_LDFLAGS=''                                AC_SUBST(TINFO_LDFLAGS)
88 TINFO_LIBS='$(LIBS_CURSES)'             AC_SUBST(TINFO_LIBS)
89 cf_cv_abi_version=""                    AC_SUBST(cf_cv_abi_version)
90 cf_cv_rel_version=""                    AC_SUBST(cf_cv_rel_version)
91 includesubdir=""                                AC_SUBST(includesubdir)
92
93 cf_cv_screen=curses
94 cf_cv_libtype=
95
96 AC_EXEEXT
97 AC_OBJEXT
98
99 CF_GCC_ATTRIBUTES
100 CF_ENABLE_STRING_HACKS
101 CF_XOPEN_SOURCE
102 CF_SIG_ATOMIC_T
103
104 # Work around breakage on OS X
105 CF_SIGWINCH
106
107 # Checks for CODESET support.
108 AM_LANGINFO_CODESET
109
110 dnl ---------------------------------------------------------------------------
111 CF_HELP_MESSAGE(General Options:)
112 CF_PKG_CONFIG
113 CF_DISABLE_ECHO
114
115 dnl ---------------------------------------------------------------------------
116 CF_HELP_MESSAGE(Curses Version-dependent Options:)
117 CF_NCURSES_WRAP_PREFIX
118
119 AC_MSG_CHECKING(if you want to check for wide-character functions)
120 CF_ARG_DISABLE(widec,
121         [  --disable-widec         disable checks for wide-character functions],
122         cf_enable_widec=no,
123         cf_enable_widec=yes,
124         yes)
125 AC_MSG_RESULT($cf_enable_widec)
126
127 dnl ---------------------------------------------------------------------------
128 CF_HELP_MESSAGE(Curses Version-dependent Options:)
129 CF_WITH_NCURSES_ETC
130
131 case $cf_cv_screen in
132 (ncurses*)
133         cf_cv_libtype=`echo "$cf_cv_screen" | sed -e 's/^ncurses//'`
134         ;;
135 (curses|curses_*)
136         CF_NETBSD_FORM_H
137         CF_NETBSD_MENU_H
138         ;;
139 esac
140
141 dnl If we've not specified a library, assume we're using sysvr4 libraries
142 dnl installed conventionally (e.g., SunOS 5.x - solaris).
143
144 dnl Autoconf builds up the $LIBS in reverse order
145
146 case $cf_cv_screen in
147 (pdcurses)
148         ;;
149 (*)
150         # look for curses-related libraries
151         CF_CHECK_CURSES_LIB(panel,$cf_cv_libtype,new_panel)
152         CF_CHECK_CURSES_LIB(menu,$cf_cv_libtype,menu_driver)
153         CF_CHECK_CURSES_LIB(form,$cf_cv_libtype,form_driver)
154
155         # look for curses-related headers
156         AC_CHECK_HEADERS( \
157                 nc_alloc.h \
158                 nomacros.h \
159                 form.h \
160                 menu.h \
161                 panel.h \
162                 term_entry.h \
163                 )
164         ;;
165 esac
166
167 AC_STDC_HEADERS
168 AC_HEADER_TIME
169 AC_CHECK_HEADERS( \
170 getopt.h \
171 locale.h \
172 math.h \
173 stdarg.h \
174 sys/ioctl.h \
175 sys/select.h \
176 sys/time.h \
177 termios.h \
178 unistd.h \
179 )
180
181 CF_GETOPT_HEADER
182
183 AC_CHECK_FUNCS( \
184 getopt \
185 gettimeofday \
186 )
187
188 if test "x$ac_cv_func_getopt" = xno; then
189         AC_MSG_ERROR(getopt is required for building programs)
190 fi
191
192 if test "$cf_enable_widec" = yes; then
193 AC_CHECK_FUNCS( \
194 mblen \
195 mbrlen \
196 mbrtowc \
197 mbsrtowcs \
198 mbstowcs \
199 mbtowc \
200 wcsrtombs \
201 wcstombs \
202 )
203 fi
204
205 CF_CURSES_FUNCS( \
206 assume_default_colors \
207 chgat \
208 color_set \
209 filter \
210 getbegx \
211 getcurx \
212 getmaxx \
213 getnstr \
214 getparx \
215 getwin \
216 mvvline \
217 mvwvline \
218 napms \
219 putwin \
220 resize_term \
221 resizeterm \
222 restartterm \
223 ripoffline \
224 scr_dump \
225 setupterm \
226 slk_color \
227 slk_init \
228 termattrs \
229 tgetent \
230 tigetnum \
231 tigetstr \
232 typeahead \
233 use_default_colors \
234 use_env \
235 use_extended_names \
236 use_screen \
237 use_window \
238 vid_puts \
239 vidputs \
240 vsscanf \
241 vw_printw \
242 wchgat \
243 winsstr \
244 wresize \
245 wsyncdown \
246 )
247
248 CF_TPUTS_PROTO
249 CF_NCURSES_EXT_FUNCS
250
251 if test "$cf_enable_widec" = yes
252 then
253         # workaround for systems with ncurses before 20111029, due to change of
254         # feature test macro from _XPG5 to _XOPEN_SOURCE
255         if test -n "$cf_cv_ncurses_version" && test "x$cf_cv_ncurses_version" != xno
256         then
257                 cf_define_xpg5=no
258                 AC_MSG_CHECKING(if _XPG5 should be defined to enable wide-characters)
259
260                 AC_TRY_COMPILE([
261 #include <${cf_cv_ncurses_header:-curses.h}>],
262                         [int x = _XPG5],,
263                         [cf_save_cppflags="$CPPFLAGS"
264                          CPPFLAGS="$CPPFLAGS -D_XPG5"
265                          AC_TRY_COMPILE([
266 #include <${cf_cv_ncurses_header:-curses.h}>],
267                                 [int x = _XPG5],
268                                 [cf_define_xpg5=yes])
269                          CPPFLAGS="$cf_save_cppflags"])
270                 AC_MSG_RESULT($cf_define_xpg5)
271
272                 if test "$cf_define_xpg5" = yes
273                 then
274                         CPPFLAGS="$CPPFLAGS -D_XPG5"
275                 fi
276         fi
277
278         AC_CACHE_CHECK(for wide-character functions,cf_cv_widechar_funcs,[
279         AC_TRY_LINK([
280 #include <${cf_cv_ncurses_header:-curses.h}>],
281         [
282                 static wchar_t src_wchar[2];
283                 static cchar_t dst_cchar;
284                 setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0);
285                 ],
286                 [cf_cv_widechar_funcs=yes],
287                 [cf_cv_widechar_funcs=no])
288         ])
289         if test "$cf_cv_widechar_funcs" != no ; then
290                 AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to enable wide-character support in (n)curses])
291         else
292                 AC_DEFINE(USE_WIDEC_SUPPORT,0)
293         fi
294 else
295         AC_DEFINE(USE_WIDEC_SUPPORT,0)
296 fi
297
298 AC_CACHE_CHECK(if $cf_cv_screen library uses pthreads,cf_cv_use_pthreads,[
299 AC_TRY_LINK([
300 #include <${cf_cv_ncurses_header:-curses.h}>
301 extern void _nc_init_pthreads(void);
302 ],
303 [
304         initscr();
305         _nc_init_pthreads();
306         ],
307         [cf_cv_use_pthreads=yes],
308         [cf_cv_use_pthreads=no])
309 ])
310 test $cf_cv_use_pthreads = yes && AC_DEFINE(USE_PTHREADS)
311
312 CF_SYS_TIME_SELECT
313
314 # special check for test/ditto.c
315 CF_FUNC_OPENPTY
316 if test "$cf_cv_func_openpty" != no ; then
317         AC_DEFINE_UNQUOTED(USE_OPENPTY_HEADER,<$cf_cv_func_openpty>,[Define to actual header for openpty function])
318         AC_DEFINE(USE_XTERM_PTY,1,[Define to 1 if we should assume xterm pseudoterminal interface])
319         if test "x$cf_cv_lib_util" = xyes ; then
320                 CF_ADD_LIB(util,TEST_LIBS)
321         fi
322 fi
323
324 CF_FUNC_CURSES_VERSION
325
326 CF_CURSES_ACS_MAP
327 if test "$cf_enable_widec" = yes; then
328         CF_CURSES_WACS_MAP
329         CF_CURSES_WACS_SYMBOLS
330 fi
331
332 CF_CURSES_CHECK_TYPE(attr_t,long)
333
334 if test "$cf_enable_widec" = yes; then
335         CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T, NCURSES_OK_MBSTATE_T)
336         CF_WCHAR_TYPE(wchar_t,   NCURSES_WCHAR_T,   NCURSES_OK_WCHAR_T)
337         CF_WCHAR_TYPE(wint_t,    NCURSES_WINT_T,    NCURSES_OK_WINT_T)
338
339         if test "$NCURSES_OK_MBSTATE_T" = 0 ; then
340                 CF_CURSES_CHECK_TYPE(mbstate_t,long)
341         fi
342
343         if test "$NCURSES_OK_WCHAR_T" = 0 ; then
344                 CF_CURSES_CHECK_TYPE(wchar_t,long)
345         fi
346
347         if test "$NCURSES_OK_WINT_T" = 0 ; then
348                 CF_CURSES_CHECK_TYPE(wint_t,long)
349         fi
350 fi
351
352 CF_CURSES_CHECK_DATA(ospeed)
353 CF_CURSES_CHECK_DATA(boolnames)
354 CF_CURSES_CHECK_DATA(boolfnames)
355 CF_CURSES_CHECK_DATA(ttytype)
356
357 dnl ---------------------------------------------------------------------------
358 CF_HELP_MESSAGE(Testing/development Options:)
359 CF_ENABLE_WARNINGS
360 CF_DISABLE_LEAKS
361 CF_DISABLE_RPATH_HACK
362
363 TEST_ARGS="$LIBS"
364 LIBS=
365
366 dnl ---------------------------------------------------------------------------
367
368 AC_OUTPUT(Makefile,[
369 CF_PRG_RULES([$srcdir/mk-test.awk INSTALL=yes ECHO_LINK="$ECHO_LD"], .)
370         cat >>Makefile <<TEST_EOF
371
372 # These rules are generated so we do not rely on suffix rules, which do not
373 # work consistently for different make-programs (the '\$(MODEL)/' confuses
374 # some, and the '\$x' confuses others).
375 TEST_EOF
376
377 LIST=`sed -e 's/[[      ]].*//' -e '/^[[#@]]/d' $srcdir/modules`
378 for N in $LIST
379 do
380         cat >>Makefile <<TEST_EOF
381
382 \$(MODEL)/$N.o : \$(srcdir)/$N.c \\
383         \$(srcdir)/test.priv.h \\
384         ncurses_cfg.h
385         $SHOW_CC
386         $ECHO_CC\$(CC) -c \$(CFLAGS_DEFAULT) \$(srcdir)/$N.c
387 TEST_EOF
388 done
389
390 if test -f ../config.guess && test -f ../config.sub
391 then
392         cat >>Makefile <<TEST_EOF
393
394 # if we used CF_INHERIT for getting these files, we can remove them
395 distclean::
396         rm -f config.guess config.sub
397 TEST_EOF
398 fi
399 ],[
400 AWK="$AWK"
401 ECHO_CC="$ECHO_CC"
402 ECHO_LD="$ECHO_LD"
403 SHOW_CC="$SHOW_LD"
404 ],cat)