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