69141c6762462a91400a15c32cf53b295ad397eb
[ncurses.git] / test / configure.in
1 dnl***************************************************************************
2 dnl Copyright (c) 1998-2009,2010 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.76 2010/01/30 23:52: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.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_PROG_MAKE_SET
50 AC_PROG_CC
51 AC_PROG_CPP
52 AC_PROG_AWK
53
54 dnl Things that we don't need (or must override) if we're not building ncurses
55 CC_G_OPT="-g"                                   AC_SUBST(CC_G_OPT)
56 CC_SHARED_OPTS=unknown                  AC_SUBST(CC_SHARED_OPTS)
57 CPPFLAGS="$CPPFLAGS"                    AC_SUBST(CPPFLAGS)
58 DFT_DEP_SUFFIX=""                               AC_SUBST(DFT_DEP_SUFFIX)
59 DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'`    AC_SUBST(DFT_OBJ_SUBDIR)
60 DFT_UPR_MODEL="NORMAL"                  AC_SUBST(DFT_UPR_MODEL)
61 LD="ld"                                                 AC_SUBST(LD)
62 LDFLAGS_SHARED=""                               AC_SUBST(LDFLAGS_SHARED)
63 LDFLAGS_STATIC=""                               AC_SUBST(LDFLAGS_STATIC)
64 LD_MODEL=""                                             AC_SUBST(LD_MODEL)
65 LD_SHARED_OPTS=""                               AC_SUBST(LD_SHARED_OPTS)
66 LIBTOOL=""                                              AC_SUBST(LIBTOOL)
67 LIB_CLEAN=""                                    AC_SUBST(LIB_CLEAN)
68 LIB_COMPILE=""                                  AC_SUBST(LIB_COMPILE)
69 LIB_LINK='${CC}'                                AC_SUBST(LIB_LINK)
70 LINK_TESTS=""                                   AC_SUBST(LINK_TESTS)
71 LINT=lint                                               AC_SUBST(LINT)
72 LINT_OPTS=""                                    AC_SUBST(LINT_OPTS)
73 LOCAL_LDFLAGS=""                                AC_SUBST(LOCAL_LDFLAGS)
74 MATH_LIB="-lm"                                  AC_SUBST(MATH_LIB)
75 PTHREAD="-lm"                                   AC_SUBST(PTHREAD)
76 TEST_ARGS=""                                    AC_SUBST(TEST_ARGS)
77 TEST_DEPS=""                                    AC_SUBST(TEST_DEPS)
78 TEST_LIBS=""                                    AC_SUBST(TEST_LIBS)
79 TINFO_ARGS='$(LIBS_CURSES)'             AC_SUBST(TINFO_ARGS)
80 cf_cv_abi_version=""                    AC_SUBST(cf_cv_abi_version)
81 cf_cv_rel_version=""                    AC_SUBST(cf_cv_rel_version)
82
83 cf_cv_screen=curses
84 cf_cv_libtype=
85
86 AC_EXEEXT
87 AC_OBJEXT
88
89 CF_ANSI_CC_REQD
90 CF_GCC_ATTRIBUTES
91 CF_XOPEN_SOURCE
92 AC_C_CONST
93 CF_SIG_ATOMIC_T
94
95 CF_DISABLE_ECHO
96 CF_ENABLE_WARNINGS
97
98 CF_WITH_CURSES_DIR
99
100 dnl SunOS 4.x
101 AC_ARG_WITH(5lib,
102         [  --with-5lib             use SunOS sysv-libraries],
103         [LIBS="-L/usr/5lib $LIBS"
104          CPPFLAGS="$CPPFLAGS -I/usr/5include"])
105
106 dnl ---------------------------------------------------------------------------
107 dnl NcursesW, installed in conventional location
108 AC_ARG_WITH(ncursesw,
109         [  --with-ncursesw         use wide ncurses-libraries (installed)],
110         [cf_cv_screen=ncursesw],[
111
112 dnl Ncurses, installed in conventional location
113 AC_ARG_WITH(ncurses,
114         [  --with-ncurses          use ncurses-libraries (installed)],
115         [cf_cv_screen=ncurses],[
116
117 AC_ARG_WITH(pdcurses,
118         [  --with-pdcurses         compile/link with pdcurses X11 library],
119         [cf_cv_screen=pdcurses])])])
120
121 case $cf_cv_screen in
122 curses)
123         CF_CURSES_CONFIG
124         ;;
125 ncurses)
126         CF_NCURSES_CONFIG
127         ;;
128 ncursesw)
129         cf_cv_libtype=w
130         CF_UTF8_LIB
131         CF_NCURSES_CONFIG(ncursesw)
132         ;;
133 pdcurses) #(vi
134         CF_PDCURSES_X11
135         ;;
136 esac
137
138 dnl If we've not specified a library, assume we're using sysvr4 libraries
139 dnl installed conventionally (e.g., SunOS 5.x - solaris).
140
141 dnl Autoconf builds up the $LIBS in reverse order
142
143 case $cf_cv_screen in #(vi
144 pdcurses) #(vi
145         ;;
146 *)
147         # look for curses-related libraries
148         AC_CHECK_LIB(panel$cf_cv_libtype,new_panel)
149         AC_CHECK_LIB(menu$cf_cv_libtype,menu_driver)
150         AC_CHECK_LIB(form$cf_cv_libtype,form_driver)
151
152         # look for curses-related headers
153         AC_CHECK_HEADERS( \
154                 nc_alloc.h \
155                 nomacros.h \
156                 form.h \
157                 menu.h \
158                 panel.h \
159                 )
160         ;;
161 esac
162
163 AC_TYPE_SIGNAL
164
165 AC_STDC_HEADERS
166 AC_HEADER_TIME
167 AC_CHECK_HEADERS( \
168 getopt.h \
169 locale.h \
170 stdarg.h \
171 sys/ioctl.h \
172 sys/select.h \
173 sys/time.h \
174 termios.h \
175 unistd.h \
176 )
177
178 AC_CHECK_FUNCS( \
179 gettimeofday \
180 mblen \
181 mbrlen \
182 mbrtowc \
183 mbsrtowcs \
184 mbstowcs \
185 mbtowc \
186 strdup \
187 wcsrtombs \
188 wcstombs \
189 )
190
191 CF_CURSES_FUNCS( \
192 chgat \
193 color_set \
194 filter \
195 getbegx \
196 getcurx \
197 getmaxx \
198 getnstr \
199 getparx \
200 getwin \
201 mvvline \
202 mvwvline \
203 napms \
204 putwin \
205 resize_term \
206 resizeterm \
207 ripoffline \
208 setupterm \
209 slk_color \
210 slk_init \
211 termattrs \
212 tgetent \
213 tigetnum \
214 tigetstr \
215 typeahead \
216 use_default_colors \
217 vw_printw \
218 vsscanf \
219 wchgat \
220 winsstr \
221 wresize \
222 )
223
224 AC_CACHE_CHECK(for ncurses extended functions,cf_cv_ncurses_ext_funcs,[
225 AC_TRY_LINK([
226 #include <${cf_cv_ncurses_header-curses.h}>],
227 [
228         (void) assume_default_colors (0, 0);
229         (void) curses_version ();
230         (void) define_key (0, 0);
231         (void) is_term_resized (0, 0);
232         (void) key_defined (0);
233         (void) keybound (0, 0);
234         (void) keyok (0, 0);
235         (void) resize_term (0, 0);
236         (void) resizeterm (0, 0);
237         (void) use_default_colors ();
238         (void) use_extended_names (0);
239         (void) wresize (0, 0, 0);],
240         [cf_cv_ncurses_ext_funcs=yes],
241         [cf_cv_ncurses_ext_funcs=no])
242 ])
243 test "$cf_cv_ncurses_ext_funcs" != no && AC_DEFINE(NCURSES_EXT_FUNCS)
244
245 AC_CACHE_CHECK(for wide-character functions,cf_cv_widechar_funcs,[
246 AC_TRY_LINK([
247 #include <${cf_cv_ncurses_header-curses.h}>],
248 [
249         static wchar_t src_wchar[2];
250         static cchar_t dst_cchar;
251         setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0);
252         ],
253         [cf_cv_widechar_funcs=yes],
254         [cf_cv_widechar_funcs=no])
255 ])
256 if test "$cf_cv_widechar_funcs" != no ; then
257         AC_DEFINE(USE_WIDEC_SUPPORT,1)
258 else
259         AC_DEFINE(USE_WIDEC_SUPPORT,0)
260 fi
261
262 AC_FUNC_VFORK
263 CF_SYS_TIME_SELECT
264 CF_FUNC_CURSES_VERSION
265 CF_CURSES_ACS_MAP
266 CF_CURSES_WACS_MAP
267
268 CF_CURSES_CHECK_TYPE(attr_t,long)
269
270 CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T, NCURSES_OK_MBSTATE_T)
271 CF_WCHAR_TYPE(wchar_t,   NCURSES_WCHAR_T,   NCURSES_OK_WCHAR_T)
272 CF_WCHAR_TYPE(wint_t,    NCURSES_WINT_T,    NCURSES_OK_WINT_T)
273
274 if test "$NCURSES_OK_MBSTATE_T" = 0 ; then
275         CF_CURSES_CHECK_TYPE(mbstate_t,long)
276 fi
277
278 if test "$NCURSES_OK_WCHAR_T" = 0 ; then
279         CF_CURSES_CHECK_TYPE(wchar_t,long)
280 fi
281
282 if test "$NCURSES_OK_WINT_T" = 0 ; then
283         CF_CURSES_CHECK_TYPE(wint_t,long)
284 fi
285
286 CF_CURSES_CHECK_DATA(boolnames)
287 CF_CURSES_CHECK_DATA(boolfnames)
288
289 TEST_ARGS="$LIBS"
290 LIBS=
291
292 dnl ---------------------------------------------------------------------------
293
294 AC_OUTPUT(Makefile,[
295 CF_PRG_RULES([$srcdir/mk-test.awk ECHO_LINK="$ECHO_LD"], .)
296         cat >>Makefile <<TEST_EOF
297
298 # These rules are generated so we do not rely on suffix rules, which do not
299 # work consistently for different make-programs (the '\$(MODEL)/' confuses
300 # some, and the '\$x' confuses others).
301 TEST_EOF
302 LIST=`sed -e 's/[[      ]].*//' -e '/^[[#@]]/d' $srcdir/modules`
303 for N in $LIST
304 do
305         cat >>Makefile <<TEST_EOF
306
307 \$(MODEL)/$N.o : $N.c \\
308         test.priv.h \\
309         ncurses_cfg.h
310         @echo compiling $N; \$(CC) -c \$(CFLAGS_DEFAULT) $N.c
311 TEST_EOF
312 done
313 ],[
314 AWK="$AWK"
315 ECHO_LD="$ECHO_LD"
316 ],cat)