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