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