blob: 8a12523c40eecfb5674c04f3eef4761b65d869ae [file] [log] [blame]
Steve Kondikae271bc2015-11-15 02:50:53 +01001dnl***************************************************************************
2dnl Copyright (c) 1998-2014,2015 Free Software Foundation, Inc. *
3dnl *
4dnl Permission is hereby granted, free of charge, to any person obtaining a *
5dnl copy of this software and associated documentation files (the *
6dnl "Software"), to deal in the Software without restriction, including *
7dnl without limitation the rights to use, copy, modify, merge, publish, *
8dnl distribute, distribute with modifications, sublicense, and/or sell *
9dnl copies of the Software, and to permit persons to whom the Software is *
10dnl furnished to do so, subject to the following conditions: *
11dnl *
12dnl The above copyright notice and this permission notice shall be included *
13dnl in all copies or substantial portions of the Software. *
14dnl *
15dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
16dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
17dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
18dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
19dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
20dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
21dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
22dnl *
23dnl Except as contained in this notice, the name(s) of the above copyright *
24dnl holders shall not be used in advertising or otherwise to promote the *
25dnl sale, use or other dealings in this Software without prior written *
26dnl authorization. *
27dnl***************************************************************************
28dnl
29dnl Author: Thomas E. Dickey 1996, etc.
30dnl
31dnl $Id: configure.in,v 1.124 2015/08/08 20:24:49 tom Exp $
32dnl This is a simple configuration-script for the ncurses test programs that
33dnl allows the test-directory to be separately configured against a reference
34dnl system (i.e., sysvr4 curses)
35dnl
36dnl If you're configuring ncurses, you shouldn't need to use this script.
37dnl It's only for testing purposes.
38dnl
39dnl See http://invisible-island.net/autoconf/ for additional information.
40dnl ---------------------------------------------------------------------------
41AC_PREREQ(2.52.20030208)
42AC_INIT(ncurses.c)
43AC_CONFIG_HEADER(ncurses_cfg.h:ncurses_tst.hin)
44
45CF_INHERIT_SCRIPT(config.guess)
46CF_INHERIT_SCRIPT(config.sub)
47CF_CHECK_CACHE
48
49AC_ARG_PROGRAM
50
51AC_PROG_MAKE_SET
52CF_PROG_CC
53AC_PROG_CPP
54AC_PROG_AWK
55CF_PROG_INSTALL
56CF_PROG_LINT
57CF_MAKE_TAGS
58
59CF_MATH_LIB(MATH_LIB,pow(sin(x),x))
60AC_SUBST(MATH_LIB)
61
62dnl Things that we don't need (or must override) if we're not building ncurses
63CF_TOP_BUILDDIR
64CC_G_OPT="-g" AC_SUBST(CC_G_OPT)
65CC_SHARED_OPTS=unknown AC_SUBST(CC_SHARED_OPTS)
66CPPFLAGS="$CPPFLAGS" AC_SUBST(CPPFLAGS)
67DFT_DEP_SUFFIX="" AC_SUBST(DFT_DEP_SUFFIX)
68DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'` AC_SUBST(DFT_OBJ_SUBDIR)
69DFT_UPR_MODEL="NORMAL" AC_SUBST(DFT_UPR_MODEL)
70LD="ld" AC_SUBST(LD)
71LDFLAGS_SHARED="" AC_SUBST(LDFLAGS_SHARED)
72LDFLAGS_STATIC="" AC_SUBST(LDFLAGS_STATIC)
73LD_MODEL="" AC_SUBST(LD_MODEL)
74LD_SHARED_OPTS="" AC_SUBST(LD_SHARED_OPTS)
75LIBTOOL="" AC_SUBST(LIBTOOL)
76LIBTOOL_OPTS="" AC_SUBST(LIBTOOL_OPTS)
77LIB_CLEAN="" AC_SUBST(LIB_CLEAN)
78LIB_COMPILE="" AC_SUBST(LIB_COMPILE)
79LIB_LINK='${CC}' AC_SUBST(LIB_LINK)
80LINK_TESTS="" AC_SUBST(LINK_TESTS)
81LOCAL_LDFLAGS="" AC_SUBST(LOCAL_LDFLAGS)
82PACKAGE="ncurses-examples" AC_SUBST(PACKAGE)
83PTHREAD="-lm" AC_SUBST(PTHREAD)
84TEST_ARGS="" AC_SUBST(TEST_ARGS)
85TEST_DEPS="" AC_SUBST(TEST_DEPS)
86TEST_LIBS="" AC_SUBST(TEST_LIBS)
87TINFO_LDFLAGS='' AC_SUBST(TINFO_LDFLAGS)
88TINFO_LIBS='$(LIBS_CURSES)' AC_SUBST(TINFO_LIBS)
89cf_cv_abi_version="" AC_SUBST(cf_cv_abi_version)
90cf_cv_rel_version="" AC_SUBST(cf_cv_rel_version)
91includesubdir="" AC_SUBST(includesubdir)
92
93cf_cv_screen=curses
94cf_cv_libtype=
95
96AC_EXEEXT
97AC_OBJEXT
98
99CF_GCC_ATTRIBUTES
100CF_XOPEN_SOURCE
101CF_SIG_ATOMIC_T
102
103dnl ---------------------------------------------------------------------------
104CF_HELP_MESSAGE(General Options:)
105CF_PKG_CONFIG
106CF_DISABLE_ECHO
107
108dnl ---------------------------------------------------------------------------
109CF_HELP_MESSAGE(Curses Version-dependent Options:)
110CF_NCURSES_WRAP_PREFIX
111
112AC_MSG_CHECKING(if you want to check for wide-character functions)
113CF_ARG_DISABLE(widec,
114 [ --disable-widec disable checks for wide-character functions],
115 cf_enable_widec=no,
116 cf_enable_widec=yes,
117 yes)
118AC_MSG_RESULT($cf_enable_widec)
119
120dnl ---------------------------------------------------------------------------
121CF_HELP_MESSAGE(Curses Version-dependent Options:)
122CF_WITH_NCURSES_ETC
123
124case $cf_cv_screen in
125(ncurses*)
126 cf_cv_libtype=`echo "$cf_cv_screen" | sed -e 's/^ncurses//'`
127 ;;
128(curses|curses_*)
129 CF_NETBSD_FORM_H
130 CF_NETBSD_MENU_H
131 ;;
132esac
133
134dnl If we've not specified a library, assume we're using sysvr4 libraries
135dnl installed conventionally (e.g., SunOS 5.x - solaris).
136
137dnl Autoconf builds up the $LIBS in reverse order
138
139case $cf_cv_screen in
140(pdcurses)
141 ;;
142(*)
143 # look for curses-related libraries
144 CF_CHECK_CURSES_LIB(panel,$cf_cv_libtype,new_panel)
145 CF_CHECK_CURSES_LIB(menu,$cf_cv_libtype,menu_driver)
146 CF_CHECK_CURSES_LIB(form,$cf_cv_libtype,form_driver)
147
148 # look for curses-related headers
149 AC_CHECK_HEADERS( \
150 nc_alloc.h \
151 nomacros.h \
152 form.h \
153 menu.h \
154 panel.h \
155 term_entry.h \
156 )
157 ;;
158esac
159
160AC_STDC_HEADERS
161AC_HEADER_TIME
162AC_CHECK_HEADERS( \
163getopt.h \
164locale.h \
165math.h \
166stdarg.h \
167sys/ioctl.h \
168sys/select.h \
169sys/time.h \
170termios.h \
171unistd.h \
172)
173
174CF_GETOPT_HEADER
175
176AC_CHECK_FUNCS( \
177getopt \
178gettimeofday \
179)
180
181if test "x$ac_cv_func_getopt" = xno; then
182 AC_MSG_ERROR(getopt is required for building programs)
183fi
184
185if test "$cf_enable_widec" = yes; then
186AC_CHECK_FUNCS( \
187mblen \
188mbrlen \
189mbrtowc \
190mbsrtowcs \
191mbstowcs \
192mbtowc \
193wcsrtombs \
194wcstombs \
195)
196fi
197
198CF_CURSES_FUNCS( \
199assume_default_colors \
200chgat \
201color_set \
202filter \
203getbegx \
204getcurx \
205getmaxx \
206getnstr \
207getparx \
208getwin \
209mvvline \
210mvwvline \
211napms \
212putwin \
213resize_term \
214resizeterm \
215ripoffline \
216scr_dump \
217setupterm \
218slk_color \
219slk_init \
220termattrs \
221tgetent \
222tigetnum \
223tigetstr \
224typeahead \
225use_default_colors \
226use_env \
227use_extended_names \
228use_screen \
229use_window \
230vid_puts \
231vidputs \
232vsscanf \
233vw_printw \
234wchgat \
235winsstr \
236wresize \
237wsyncdown \
238)
239
240CF_TPUTS_PROTO
241CF_NCURSES_EXT_FUNCS
242
243if test "$cf_enable_widec" = yes
244then
245 # workaround for systems with ncurses before 20111029, due to change of
246 # feature test macro from _XPG5 to _XOPEN_SOURCE
247 if test -n "$cf_cv_ncurses_version" && test "x$cf_cv_ncurses_version" != xno
248 then
249 cf_define_xpg5=no
250 AC_MSG_CHECKING(if _XPG5 should be defined to enable wide-characters)
251
252 AC_TRY_COMPILE([
253#include <${cf_cv_ncurses_header:-curses.h}>],
254 [int x = _XPG5],,
255 [cf_save_cppflags="$CPPFLAGS"
256 CPPFLAGS="$CPPFLAGS -D_XPG5"
257 AC_TRY_COMPILE([
258#include <${cf_cv_ncurses_header:-curses.h}>],
259 [int x = _XPG5],
260 [cf_define_xpg5=yes])
261 CPPFLAGS="$cf_save_cppflags"])
262 AC_MSG_RESULT($cf_define_xpg5)
263
264 if test "$cf_define_xpg5" = yes
265 then
266 CPPFLAGS="$CPPFLAGS -D_XPG5"
267 fi
268 fi
269
270 AC_CACHE_CHECK(for wide-character functions,cf_cv_widechar_funcs,[
271 AC_TRY_LINK([
272#include <${cf_cv_ncurses_header:-curses.h}>],
273 [
274 static wchar_t src_wchar[2];
275 static cchar_t dst_cchar;
276 setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0);
277 ],
278 [cf_cv_widechar_funcs=yes],
279 [cf_cv_widechar_funcs=no])
280 ])
281 if test "$cf_cv_widechar_funcs" != no ; then
282 AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to enable wide-character support in (n)curses])
283 else
284 AC_DEFINE(USE_WIDEC_SUPPORT,0)
285 fi
286else
287 AC_DEFINE(USE_WIDEC_SUPPORT,0)
288fi
289
290AC_CACHE_CHECK(if $cf_cv_screen library uses pthreads,cf_cv_use_pthreads,[
291AC_TRY_LINK([
292#include <${cf_cv_ncurses_header:-curses.h}>
293extern void _nc_init_pthreads(void);
294],
295[
296 initscr();
297 _nc_init_pthreads();
298 ],
299 [cf_cv_use_pthreads=yes],
300 [cf_cv_use_pthreads=no])
301])
302test $cf_cv_use_pthreads = yes && AC_DEFINE(USE_PTHREADS)
303
304CF_SYS_TIME_SELECT
305CF_FUNC_CURSES_VERSION
306
307CF_CURSES_ACS_MAP
308if test "$cf_enable_widec" = yes; then
309 CF_CURSES_WACS_MAP
310 CF_CURSES_WACS_SYMBOLS
311fi
312
313CF_CURSES_CHECK_TYPE(attr_t,long)
314
315if test "$cf_enable_widec" = yes; then
316 CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T, NCURSES_OK_MBSTATE_T)
317 CF_WCHAR_TYPE(wchar_t, NCURSES_WCHAR_T, NCURSES_OK_WCHAR_T)
318 CF_WCHAR_TYPE(wint_t, NCURSES_WINT_T, NCURSES_OK_WINT_T)
319
320 if test "$NCURSES_OK_MBSTATE_T" = 0 ; then
321 CF_CURSES_CHECK_TYPE(mbstate_t,long)
322 fi
323
324 if test "$NCURSES_OK_WCHAR_T" = 0 ; then
325 CF_CURSES_CHECK_TYPE(wchar_t,long)
326 fi
327
328 if test "$NCURSES_OK_WINT_T" = 0 ; then
329 CF_CURSES_CHECK_TYPE(wint_t,long)
330 fi
331fi
332
333CF_CURSES_CHECK_DATA(ospeed)
334CF_CURSES_CHECK_DATA(boolnames)
335CF_CURSES_CHECK_DATA(boolfnames)
336
337dnl ---------------------------------------------------------------------------
338CF_HELP_MESSAGE(Testing/development Options:)
339CF_ENABLE_WARNINGS
340CF_DISABLE_LEAKS
341CF_DISABLE_RPATH_HACK
342
343TEST_ARGS="$LIBS"
344LIBS=
345
346dnl ---------------------------------------------------------------------------
347
348AC_OUTPUT(Makefile,[
349CF_PRG_RULES([$srcdir/mk-test.awk INSTALL=yes ECHO_LINK="$ECHO_LD"], .)
350 cat >>Makefile <<TEST_EOF
351
352# These rules are generated so we do not rely on suffix rules, which do not
353# work consistently for different make-programs (the '\$(MODEL)/' confuses
354# some, and the '\$x' confuses others).
355TEST_EOF
356
357LIST=`sed -e 's/[[ ]].*//' -e '/^[[#@]]/d' $srcdir/modules`
358for N in $LIST
359do
360 cat >>Makefile <<TEST_EOF
361
362\$(MODEL)/$N.o : \$(srcdir)/$N.c \\
363 \$(srcdir)/test.priv.h \\
364 ncurses_cfg.h
365 $SHOW_CC
366 $ECHO_CC\$(CC) -c \$(CFLAGS_DEFAULT) \$(srcdir)/$N.c
367TEST_EOF
368done
369
370if test -f ../config.guess && test -f ../config.sub
371then
372 cat >>Makefile <<TEST_EOF
373
374# if we used CF_INHERIT for getting these files, we can remove them
375distclean::
376 rm -f config.guess config.sub
377TEST_EOF
378fi
379],[
380AWK="$AWK"
381ECHO_CC="$ECHO_CC"
382ECHO_LD="$ECHO_LD"
383SHOW_CC="$SHOW_LD"
384],cat)