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