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