66985a4e15b2b238a60ffb95f8613d85c11fa837
[ncurses.git] / test / configure.in
1 dnl***************************************************************************
2 dnl Copyright (c) 1998-2007,2008 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.67 2008/09/06 22:10:23 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_CPPFLAGS
124         CF_NCURSES_VERSION
125         CF_CURSES_LIBS
126         ;;
127 ncurses)
128         CF_NCURSES_CPPFLAGS
129         CF_NCURSES_LIBS
130         ;;
131 ncursesw)
132         cf_cv_libtype=w
133         CF_UTF8_LIB
134         CF_NCURSES_CPPFLAGS(ncursesw)
135         CF_NCURSES_LIBS(ncursesw)
136         ;;
137 pdcurses) #(vi
138         CF_PDCURSES_X11
139         ;;
140 esac
141
142 dnl If we've not specified a library, assume we're using sysvr4 libraries
143 dnl installed conventionally (e.g., SunOS 5.x - solaris).
144
145 dnl Autoconf builds up the $LIBS in reverse order
146
147 case $cf_cv_screen in #(vi
148 pdcurses) #(vi
149         ;;
150 *)
151         # look for curses-related libraries
152         AC_CHECK_LIB(panel$cf_cv_libtype,new_panel)
153         AC_CHECK_LIB(menu$cf_cv_libtype,menu_driver)
154         AC_CHECK_LIB(form$cf_cv_libtype,form_driver)
155
156         # look for curses-related headers
157         AC_CHECK_HEADERS( \
158                 nc_alloc.h \
159                 nomacros.h \
160                 form.h \
161                 menu.h \
162                 panel.h \
163                 )
164         ;;
165 esac
166
167 AC_TYPE_SIGNAL
168
169 AC_STDC_HEADERS
170 AC_HEADER_TIME
171 AC_CHECK_HEADERS( \
172 getopt.h \
173 locale.h \
174 stdarg.h \
175 sys/ioctl.h \
176 sys/select.h \
177 sys/time.h \
178 termios.h \
179 unistd.h \
180 )
181
182 AC_CHECK_FUNCS( \
183 gettimeofday \
184 mblen \
185 mbrlen \
186 mbrtowc \
187 mbsrtowcs \
188 mbstowcs \
189 mbtowc \
190 strdup \
191 wcsrtombs \
192 wcstombs \
193 )
194
195 CF_CURSES_FUNCS( \
196 chgat \
197 color_set \
198 filter \
199 getbegx \
200 getcurx \
201 getmaxx \
202 getnstr \
203 getparx \
204 getwin \
205 mvvline \
206 mvwvline \
207 napms \
208 putwin \
209 resize_term \
210 resizeterm \
211 ripoffline \
212 setupterm \
213 slk_color \
214 slk_init \
215 termattrs \
216 tgetent \
217 tigetnum \
218 tigetstr \
219 typeahead \
220 use_default_colors \
221 vsscanf \
222 wchgat \
223 winsstr \
224 wresize \
225 )
226
227 AC_CACHE_CHECK(for ncurses extended functions,cf_cv_ncurses_ext_funcs,[
228 AC_TRY_LINK([
229 #include <${cf_cv_ncurses_header-curses.h}>],
230 [
231         (void) assume_default_colors (0, 0);
232         (void) curses_version ();
233         (void) define_key (0, 0);
234         (void) is_term_resized (0, 0);
235         (void) key_defined (0);
236         (void) keybound (0, 0);
237         (void) keyok (0, 0);
238         (void) resize_term (0, 0);
239         (void) resizeterm (0, 0);
240         (void) use_default_colors ();
241         (void) use_extended_names (0);
242         (void) wresize (0, 0, 0);],
243         [cf_cv_ncurses_ext_funcs=yes],
244         [cf_cv_ncurses_ext_funcs=no])
245 ])
246 test "$cf_cv_ncurses_ext_funcs" != no && AC_DEFINE(NCURSES_EXT_FUNCS)
247
248 AC_CACHE_CHECK(for wide-character functions,cf_cv_widechar_funcs,[
249 AC_TRY_LINK([
250 #include <${cf_cv_ncurses_header-curses.h}>],
251 [
252         static wchar_t src_wchar[2];
253         static cchar_t dst_cchar;
254         setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0);
255         ],
256         [cf_cv_widechar_funcs=yes],
257         [cf_cv_widechar_funcs=no])
258 ])
259 if test "$cf_cv_widechar_funcs" != no ; then
260         AC_DEFINE(USE_WIDEC_SUPPORT,1)
261 else
262         AC_DEFINE(USE_WIDEC_SUPPORT,0)
263 fi
264
265 CF_SYS_TIME_SELECT
266 CF_FUNC_CURSES_VERSION
267 CF_CURSES_ACS_MAP
268 CF_CURSES_WACS_MAP
269 CF_CURSES_CHECK_TYPE(attr_t,long)
270 CF_CURSES_CHECK_TYPE(mbstate_t,long)
271
272 TEST_ARGS="$LIBS"
273 LIBS=
274
275 dnl ---------------------------------------------------------------------------
276
277 AC_OUTPUT(Makefile,[
278 CF_PRG_RULES([$srcdir/mk-test.awk ECHO_LINK="$ECHO_LD"], .)
279         cat >>Makefile <<TEST_EOF
280
281 # These rules are generated so we do not rely on suffix rules, which do not
282 # work consistently for different make-programs (the '\$(MODEL)/' confuses
283 # some, and the '\$x' confuses others).
284 TEST_EOF
285 LIST=`sed -e 's/[[      ]].*//' -e '/^[[#@]]/d' $srcdir/modules`
286 for N in $LIST
287 do
288         cat >>Makefile <<TEST_EOF
289
290 \$(MODEL)/$N.o : $N.c \\
291         test.priv.h \\
292         ncurses_cfg.h
293         @echo compiling $N; \$(CC) -c \$(CFLAGS_DEFAULT) $N.c
294 TEST_EOF
295 done
296 ],[
297 AWK="$AWK"
298 ECHO_LD="$ECHO_LD"
299 ],cat)