ncurses 5.9 - patch 20110924
[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.99 2011/09/24 15:42:11 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         AC_CACHE_CHECK(for wide-character functions,cf_cv_widechar_funcs,[
269         AC_TRY_LINK([
270 #include <${cf_cv_ncurses_header:-curses.h}>],
271         [
272                 static wchar_t src_wchar[2];
273                 static cchar_t dst_cchar;
274                 setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0);
275                 ],
276                 [cf_cv_widechar_funcs=yes],
277                 [cf_cv_widechar_funcs=no])
278         ])
279         if test "$cf_cv_widechar_funcs" != no ; then
280                 AC_DEFINE(USE_WIDEC_SUPPORT,1)
281         else
282                 AC_DEFINE(USE_WIDEC_SUPPORT,0)
283         fi
284 else
285         AC_DEFINE(USE_WIDEC_SUPPORT,0)
286 fi
287
288 CF_SYS_TIME_SELECT
289 CF_FUNC_CURSES_VERSION
290 CF_CURSES_ACS_MAP
291
292 if test "$cf_enable_widec" = yes; then
293         CF_CURSES_WACS_MAP
294         CF_CURSES_WACS_SYMBOLS
295 fi
296
297 CF_CURSES_CHECK_TYPE(attr_t,long)
298
299 if test "$cf_enable_widec" = yes; then
300         CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T, NCURSES_OK_MBSTATE_T)
301         CF_WCHAR_TYPE(wchar_t,   NCURSES_WCHAR_T,   NCURSES_OK_WCHAR_T)
302         CF_WCHAR_TYPE(wint_t,    NCURSES_WINT_T,    NCURSES_OK_WINT_T)
303
304         if test "$NCURSES_OK_MBSTATE_T" = 0 ; then
305                 CF_CURSES_CHECK_TYPE(mbstate_t,long)
306         fi
307
308         if test "$NCURSES_OK_WCHAR_T" = 0 ; then
309                 CF_CURSES_CHECK_TYPE(wchar_t,long)
310         fi
311
312         if test "$NCURSES_OK_WINT_T" = 0 ; then
313                 CF_CURSES_CHECK_TYPE(wint_t,long)
314         fi
315 fi
316
317 CF_CURSES_CHECK_DATA(boolnames)
318 CF_CURSES_CHECK_DATA(boolfnames)
319
320 TEST_ARGS="$LIBS"
321 LIBS=
322
323 dnl ---------------------------------------------------------------------------
324
325 AC_OUTPUT(Makefile,[
326 CF_PRG_RULES([$srcdir/mk-test.awk INSTALL=yes ECHO_LINK="$ECHO_LD"], .)
327         cat >>Makefile <<TEST_EOF
328
329 # These rules are generated so we do not rely on suffix rules, which do not
330 # work consistently for different make-programs (the '\$(MODEL)/' confuses
331 # some, and the '\$x' confuses others).
332 TEST_EOF
333
334 LIST=`sed -e 's/[[      ]].*//' -e '/^[[#@]]/d' $srcdir/modules`
335 for N in $LIST
336 do
337         cat >>Makefile <<TEST_EOF
338
339 \$(MODEL)/$N.o : \$(srcdir)/$N.c \\
340         \$(srcdir)/test.priv.h \\
341         ncurses_cfg.h
342         @echo compiling $N; \$(CC) -c \$(CFLAGS_DEFAULT) \$(srcdir)/$N.c
343 TEST_EOF
344 done
345
346 if test -f ../config.guess && test -f ../config.sub
347 then
348         cat >>Makefile <<TEST_EOF
349
350 # if we used CF_INHERIT for getting these files, we can remove them
351 distclean::
352         rm -f config.guess config.sub
353 TEST_EOF
354 fi
355 ],[
356 AWK="$AWK"
357 ECHO_LD="$ECHO_LD"
358 ],cat)