xref: /freebsd/contrib/ncurses/configure.in (revision cee8be2c78f15bed6d2339d41e3f8c232d41bb33)
1dnl***************************************************************************
2dnl Copyright 2018-2019,2020 Thomas E. Dickey                                *
3dnl Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
4dnl                                                                          *
5dnl Permission is hereby granted, free of charge, to any person obtaining a  *
6dnl copy of this software and associated documentation files (the            *
7dnl "Software"), to deal in the Software without restriction, including      *
8dnl without limitation the rights to use, copy, modify, merge, publish,      *
9dnl distribute, distribute with modifications, sublicense, and/or sell       *
10dnl copies of the Software, and to permit persons to whom the Software is    *
11dnl furnished to do so, subject to the following conditions:                 *
12dnl                                                                          *
13dnl The above copyright notice and this permission notice shall be included  *
14dnl in all copies or substantial portions of the Software.                   *
15dnl                                                                          *
16dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23dnl                                                                          *
24dnl Except as contained in this notice, the name(s) of the above copyright   *
25dnl holders shall not be used in advertising or otherwise to promote the     *
26dnl sale, use or other dealings in this Software without prior written       *
27dnl authorization.                                                           *
28dnl***************************************************************************
29dnl
30dnl Author: Thomas E. Dickey 1995-on
31dnl
32dnl $Id: configure.in,v 1.697 2020/02/08 20:56:13 tom Exp $
33dnl Process this file with autoconf to produce a configure script.
34dnl
35dnl For additional information, see
36dnl     https://invisible-island.net/autoconf/
37dnl     https://invisible-island.net/autoconf/my-autoconf.html
38dnl
39dnl ---------------------------------------------------------------------------
40AC_PREREQ(2.52.20200111)
41AC_REVISION($Revision: 1.697 $)
42AC_INIT(ncurses/base/lib_initscr.c)
43AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
44
45AC_DEFUN([AC_PATH_XTRA],[])dnl ignore dependencies on this
46
47CF_TOP_BUILDDIR
48CF_SUBST_NCURSES_VERSION
49CF_VERSION_INFO(NCURSES,ncurses)
50
51CF_WITH_REL_VERSION(NCURSES)
52CF_NCURSES_WITH_ABI_VERSION
53
54CF_WITH_SYSTYPE
55
56###	Save the given $CFLAGS to allow user-override.
57cf_user_CFLAGS="$CFLAGS"
58
59###	Default install-location
60CF_CFG_DEFAULTS
61### Defaults for ncurses ABI
62CF_ABI_DEFAULTS
63
64###	Checks for programs.
65AC_ARG_WITH(ada,
66	[  --without-ada           suppress check for Ada compiler, don't build demo],
67	[cf_with_ada=$withval],
68	[cf_with_ada=yes])
69
70if test "x$cf_with_ada" = xyes
71then
72	cf_prog_cc="gnatgcc gcc cc"
73else
74	cf_prog_cc="gcc cc"
75fi
76CF_PROG_CC($cf_prog_cc)
77
78AC_PROG_CPP
79AC_PROG_GCC_TRADITIONAL
80CF_PROG_CC_C_O(CC,[$CFLAGS $CPPFLAGS])
81CF_PROG_LDCONFIG
82
83dnl DEFECT in autoconf 2.12:	an attempt to set policy, this breaks the
84dnl				configure script by not letting us test if C++
85dnl				is present, making this option necessary.
86AC_MSG_CHECKING(if you want to ensure bool is consistent with C++)
87AC_ARG_WITH(cxx,
88	[  --without-cxx           do not adjust ncurses bool to match C++],
89	[cf_with_cxx=$withval],
90	[cf_with_cxx=yes])
91AC_MSG_RESULT($cf_with_cxx)
92if test "X$cf_with_cxx" = Xno ; then
93	CXX=""
94	GXX=""
95else
96	# with autoconf 2.13, we can change the error to a warning:
97	pushdef([AC_MSG_ERROR],
98		[AC_MSG_RESULT(no)
99		 AC_MSG_WARN([You don't have any C++ compiler, too bad])
100		cf_with_cxx=no; CXX=""; GXX="";])dnl
101	AC_PROG_CXX
102	popdef([AC_MSG_ERROR])dnl
103
104	AC_LANG_PUSH(C++)
105	if test "x$cf_with_cxx" != xno
106	then
107		# Several of the C++ configurations do not work, particularly when
108		# cross-compiling (20140913 -TD)
109		AC_MSG_CHECKING(if $CXX works)
110
111		save_CPPFLAGS="$CPPFLAGS"
112		eval cf_includedir=${includedir}
113		CPPFLAGS="$CPPFLAGS -I${cf_includedir}"
114		AC_TRY_COMPILE([
115#include <stdlib.h>
116#include <stdio.h>
117],
118		[
119		printf("Hello world!\n")
120		],
121		[cf_cxx_works=yes],
122		[cf_cxx_works=no])
123		CPPFLAGS="$save_CPPFLAGS"
124
125		AC_MSG_RESULT($cf_cxx_works)
126		if test "x$cf_cxx_works" = xno
127		then
128			AC_MSG_WARN([Ignore $CXX, since it cannot compile hello-world.])
129			cf_with_cxx=no; CXX=""; GXX="";
130		fi
131	fi
132	AC_LANG_POP
133
134	# autoconf 2.5x removed the error (hardcoding it to g++, or just blank)
135	if test "$CXX" = "g++" ; then
136		AC_PATH_PROG(CXX,g++)
137	fi
138	case "x$CXX" in
139	(x|xg++)
140		AC_MSG_WARN([You don't have any C++ compiler, too bad])
141		cf_with_cxx=no; CXX=""; GXX="";
142		;;
143	esac
144fi
145
146CF_GXX_VERSION
147case $GXX_VERSION in
148(1*|2.[[0-6]]*)
149	# GXX=""; CXX=""; ac_cv_prog_gxx=no
150	# cf_cxx_library=no
151	AC_MSG_WARN(templates do not work)
152	;;
153esac
154
155AC_MSG_CHECKING(if you want to build C++ binding and demo)
156AC_ARG_WITH(cxx-binding,
157	[  --without-cxx-binding   do not build C++ binding and demo],
158	[cf_with_cxx_binding=$withval],
159	[cf_with_cxx_binding=$cf_with_cxx])
160AC_MSG_RESULT($cf_with_cxx_binding)
161
162AC_MSG_CHECKING(if you want to build with Ada)
163AC_MSG_RESULT($cf_with_ada)
164
165AC_MSG_CHECKING(if you want to install terminal database)
166AC_ARG_ENABLE(db-install,
167	[  --disable-db-install    suppress install of terminal database],
168	[cf_with_db_install=$enableval],
169	[cf_with_db_install=yes])
170AC_MSG_RESULT($cf_with_db_install)
171
172AC_MSG_CHECKING(if you want to install manpages)
173AC_ARG_WITH(manpages,
174	[  --without-manpages      suppress install of manpages],
175	[cf_with_manpages=$withval],
176	[cf_with_manpages=yes])
177AC_MSG_RESULT($cf_with_manpages)
178
179AC_MSG_CHECKING(if you want to build programs such as tic)
180AC_ARG_WITH(progs,
181	[  --without-progs         suppress build/install with programs (e.g., tic)],
182	[cf_with_progs=$withval],
183	[cf_with_progs=yes])
184AC_MSG_RESULT($cf_with_progs)
185
186if test -f $srcdir/tack/tack.h; then
187	if test "x$cross_compiling" = xyes ; then
188		CF_VERBOSE(ignoring tack because we are cross-compiling)
189		cf_with_tack=no
190	else
191		AC_MSG_CHECKING(if you want to build the tack program)
192		AC_ARG_WITH(tack,
193			[  --without-tack          suppress build/install with tack program],
194			[cf_with_tack=$withval],
195			[cf_with_tack=$cf_with_progs])
196		AC_MSG_RESULT($cf_with_tack)
197	fi
198else
199	cf_with_tack=no
200fi
201
202AC_MSG_CHECKING(if you want to build test-programs)
203AC_ARG_WITH(tests,
204	[  --without-tests         suppress build/install with test-programs],
205	[cf_with_tests=$withval],
206	[cf_with_tests=yes])
207AC_MSG_RESULT($cf_with_tests)
208
209AC_MSG_CHECKING(if you wish to install curses.h)
210AC_ARG_WITH(curses-h,
211	[  --without-curses-h      install curses.h as ncurses.h only],
212	[with_curses_h=$withval],
213	[with_curses_h=yes])
214AC_MSG_RESULT($with_curses_h)
215
216modules_to_build="ncurses"
217test "X$cf_with_progs" != Xno && modules_to_build="$modules_to_build progs"
218test "X$cf_with_tack"  != Xno && modules_to_build="$modules_to_build tack"
219modules_to_build="$modules_to_build panel menu form"
220
221AC_ARG_PROGRAM
222
223CF_PROG_AWK
224CF_PROG_EGREP
225CF_PROG_INSTALL
226CF_PROG_LINT
227CF_PROG_LN_S
228
229AC_SYS_LONG_FILE_NAMES
230
231# Provide for renaming "ncurses5-config" to "ncurses5X-config", etc., in case
232# of package conflict.
233cf_config_suffix=
234AC_ARG_WITH(config-suffix,
235	[  --with-config-suffix=X  suffixes ncursesXX-config file],
236	[case "x$withval" in
237	(xyes|xno)
238		AC_MSG_WARN(expected a value for config-suffix option)
239		;;
240	(*)	cf_config_suffix="$withval"
241		;;
242	esac])
243AC_SUBST(cf_config_suffix)
244
245# If we find pkg-config, check if we should install the ".pc" files.
246CF_PKG_CONFIG
247CF_WITH_PKG_CONFIG_LIBDIR
248CF_ENABLE_PC_FILES
249if test -z "$MAKE_PC_FILES"
250then
251	AC_MSG_CHECKING(for suffix to add to pc-files)
252AC_ARG_WITH(pc-suffix,
253	[  --with-pc-suffix        suffixes pc-files],
254	[case "x$withval" in
255	(xyes|xno)
256		PC_MODULE_SUFFIX=
257		;;
258	(*)	PC_MODULE_SUFFIX="$withval"
259		;;
260	esac])
261	test -z "$PC_MODULE_SUFFIX" && PC_MODULE_SUFFIX=none
262	AC_MSG_RESULT($PC_MODULE_SUFFIX)
263	test "$PC_MODULE_SUFFIX" = none && PC_MODULE_SUFFIX=
264	AC_SUBST(PC_MODULE_SUFFIX)
265fi
266
267AC_MSG_CHECKING(if we should assume mixed-case filenames)
268AC_ARG_ENABLE(mixed-case,
269	[  --enable-mixed-case     tic should assume mixed-case filenames],
270	[enable_mixedcase=$enableval],
271	[enable_mixedcase=auto])
272AC_MSG_RESULT($enable_mixedcase)
273if test "$enable_mixedcase" = "auto" ; then
274	CF_MIXEDCASE_FILENAMES
275else
276	cf_cv_mixedcase=$enable_mixedcase
277	if test "x$enable_mixedcase" = "xyes" ; then
278		AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if tic should assume mixed-case filenames])
279	fi
280fi
281
282# do this after mixed-case option (tags/TAGS is not as important as tic).
283AC_PROG_MAKE_SET
284CF_MAKE_TAGS
285CF_MAKEFLAGS
286
287dnl These are standard among *NIX systems, but not when cross-compiling
288AC_CHECK_TOOL(RANLIB, ranlib, ':')
289AC_CHECK_TOOL(LD, ld, ld)
290AC_CHECK_TOOL(AR, ar, ar)
291AC_CHECK_TOOL(NM, nm, nm)
292CF_AR_FLAGS
293
294dnl Special option for use by system-builders: the install-prefix is used to
295dnl adjust the location into which the actual install is done, so that an
296dnl archive can be built without modifying the host system's configuration.
297AC_MSG_CHECKING(if you have specified an install-prefix)
298AC_ARG_WITH(install-prefix,
299	[  --with-install-prefix   prefixes actual install-location ($DESTDIR)],
300	[case "x$withval" in
301	(xyes|xno)
302		;;
303	(*)	DESTDIR="$withval"
304		;;
305	esac])
306AC_MSG_RESULT($DESTDIR)
307AC_SUBST(DESTDIR)
308
309###############################################################################
310CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:)
311# If we're cross-compiling, allow the user to override the tools and their
312# options.  The configure script is oriented toward identifying the host
313# compiler, etc., but we need a build compiler to generate parts of the source.
314CF_BUILD_CC
315
316###############################################################################
317CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
318
319### Options to allow the user to specify the set of libraries which are used.
320### Use "--without-normal --with-shared" to allow the default model to be
321### shared, for example.
322cf_list_models=""
323AC_SUBST(cf_list_models)dnl	the complete list of models ("normal debug")
324
325CF_WITH_LIBTOOL
326if test "$with_libtool" != "no" ; then
327
328cf_list_models="$cf_list_models libtool"
329
330else
331
332AC_MSG_CHECKING(if you want to build shared libraries)
333AC_ARG_WITH(shared,
334	[  --with-shared           generate shared-libraries],
335	[with_shared=$withval],
336	[with_shared=no])
337AC_MSG_RESULT($with_shared)
338test "x$with_shared" = "xyes" && cf_list_models="$cf_list_models shared"
339
340AC_MSG_CHECKING(if you want to build static libraries)
341AC_ARG_WITH(normal,
342	[  --with-normal           generate normal-libraries (default)],
343	[with_normal=$withval],
344	[with_normal=yes])
345AC_MSG_RESULT($with_normal)
346test "x$with_normal" = "xyes" && cf_list_models="$cf_list_models normal"
347
348AC_MSG_CHECKING(if you want to build debug libraries)
349AC_ARG_WITH(debug,
350	[  --with-debug            generate debug-libraries (default)],
351	[with_debug=$withval],
352	[with_debug=yes])
353AC_MSG_RESULT($with_debug)
354test "x$with_debug" = "xyes" && cf_list_models="$cf_list_models debug"
355
356AC_MSG_CHECKING(if you want to build profiling libraries)
357AC_ARG_WITH(profile,
358	[  --with-profile          generate profile-libraries],
359	[with_profile=$withval],
360	[with_profile=no])
361AC_MSG_RESULT($with_profile)
362test "x$with_profile" = "xyes" && cf_list_models="$cf_list_models profile"
363
364fi
365
366if test "X$cf_with_cxx_binding" != Xno; then
367if test "x$with_shared" = "xyes"; then
368AC_MSG_CHECKING(if you want to build C++ shared libraries)
369AC_ARG_WITH(cxx-shared,
370	[  --with-cxx-shared       generate C++ shared-libraries],
371	[with_shared_cxx=$withval],
372	[with_shared_cxx=no])
373AC_MSG_RESULT($with_shared_cxx)
374fi
375fi
376
377###############################################################################
378
379AC_MSG_CHECKING(for specified models)
380test -z "$cf_list_models" && cf_list_models=normal
381dnl If we use libtool to generate libraries, then it must be the only
382dnl specified model.
383test "$with_libtool" != "no" && cf_list_models=libtool
384AC_MSG_RESULT($cf_list_models)
385
386### Use the first model as the default, and save its suffix for use in building
387### up test-applications.
388AC_MSG_CHECKING(for default model)
389DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
390AC_MSG_RESULT($DFT_LWR_MODEL)
391
392CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
393
394AC_SUBST(DFT_LWR_MODEL)dnl	the default model ("normal")
395AC_SUBST(DFT_UPR_MODEL)dnl	the default model ("NORMAL")
396
397TICS_NAME=tic
398AC_SUBST(TICS_NAME)
399
400TINFO_NAME=tinfo
401AC_SUBST(TINFO_NAME)
402
403LIB_NAME=ncurses
404AC_SUBST(LIB_NAME)
405
406LIB_DIR=../lib
407LIB_2ND=../../lib
408
409CF_WITH_LIB_PREFIX(cf_prefix)
410
411LIB_SUFFIX=
412AC_SUBST(LIB_SUFFIX)
413CF_PATHSEP
414
415###############################################################################
416
417AC_MSG_CHECKING(if you want to build a separate terminfo library)
418AC_ARG_WITH(termlib,
419	[  --with-termlib          generate separate terminfo library],
420	[with_termlib=$withval],
421	[with_termlib=no])
422AC_MSG_RESULT($with_termlib)
423
424AC_MSG_CHECKING(if you want to build a separate tic library)
425AC_ARG_WITH(ticlib,
426	[  --with-ticlib           generate separate tic library],
427	[with_ticlib=$withval],
428	[with_ticlib=no])
429AC_MSG_RESULT($with_ticlib)
430
431dnl Not all ports of gcc support the -g option
432
433if test X"$CC_G_OPT" = X"" ; then
434	CC_G_OPT='-g'
435	test -n "$GCC" && test "x${ac_cv_prog_cc_g}" != xyes && CC_G_OPT=''
436fi
437AC_SUBST(CC_G_OPT)
438
439if test X"$CXX_G_OPT" = X"" ; then
440	CXX_G_OPT='-g'
441	test -n "$GXX" && test "x${ac_cv_prog_cxx_g}" != xyes && CXX_G_OPT=''
442fi
443AC_SUBST(CXX_G_OPT)
444
445AC_MSG_CHECKING(for default loader flags)
446case $DFT_LWR_MODEL in
447(libtool) LD_MODEL=''   ;;
448(normal)  LD_MODEL=''   ;;
449(debug)   LD_MODEL=$CC_G_OPT ;;
450(profile) LD_MODEL='-pg';;
451(shared)  LD_MODEL=''   ;;
452esac
453AC_SUBST(LD_MODEL)dnl		the type of link (e.g., -g or -pg)
454AC_MSG_RESULT($LD_MODEL)
455
456case $DFT_LWR_MODEL in
457(shared)
458CF_ENABLE_RPATH
459AC_MSG_CHECKING(if shared libraries should be relinked during install)
460AC_ARG_ENABLE(relink,
461[  --disable-relink        relink shared libraries during install],
462[cf_cv_do_relink=$enableval],
463[cf_cv_do_relink=yes])
464AC_MSG_RESULT($cf_cv_do_relink)
465	;;
466esac
467
468# we will build libraries one-level down.
469rel_builddir=..
470CF_SHARED_OPTS
471for model in $cf_list_models; do
472	case $model in
473	(libtool)
474		CF_WITH_LIBTOOL_OPTS
475		CF_WITH_EXPORT_SYMS
476		;;
477	(shared)
478		if test "$CC_SHARED_OPTS" = "unknown"; then
479			AC_ERROR(Shared libraries are not supported in this version)
480		fi
481		# workaround for inept transition to PIE vs PIC...
482		AC_MSG_CHECKING(if current CFLAGS link properly)
483		AC_TRY_LINK(
484			[#include <stdio.h>],
485			[printf("Hello work\n");],
486			[cf_cflags_work=yes],
487			[cf_cflags_work=no])
488		AC_MSG_RESULT($cf_cflags_work)
489		if test "$cf_cflags_work" = no
490		then
491			CF_VERBOSE(try to work around by appending shared-options)
492			CFLAGS="$CFLAGS $CC_SHARED_OPTS"
493		fi
494		CF_WITH_VERSIONED_SYMS
495		;;
496	esac
497done
498
499### Checks for special libraries, must be done up-front.
500SHLIB_LIST=""
501CF_WITH_GPM
502if test "$with_gpm" != no ; then
503	AC_MSG_CHECKING(if you want to load GPM dynamically)
504	AC_ARG_WITH(dlsym,
505		[  --without-dlsym         do not use dlsym() to load GPM dynamically],
506		[with_dlsym=$withval],
507		[with_dlsym=yes])
508	AC_MSG_RESULT($with_dlsym)
509	if test "x$with_dlsym" = xyes ; then
510		CF_FUNC_DLSYM
511		if test "x$with_gpm" != xyes ; then
512			CF_VERBOSE(assuming soname for gpm is $with_gpm)
513			cf_cv_gpm_soname="$with_gpm"
514		else
515			CF_LIB_SONAME([#include <gpm.h>],[if (Gpm_Open(0,0)) Gpm_Close();],gpm)
516		fi
517		test "$cf_cv_gpm_soname" != "unknown" && AC_DEFINE_UNQUOTED(LIBGPM_SONAME,"$cf_cv_gpm_soname",[Define as needed to set the gpm share library soname])
518		SHLIB_LIST="-ldl $SHLIB_LIST"
519		CF_ADD_LIB(dl,PRIVATE_LIBS)
520	else
521		SHLIB_LIST="-lgpm $SHLIB_LIST"
522		CF_ADD_LIB(gpm,TEST_LIBS)
523		CF_ADD_LIB(gpm,PRIVATE_LIBS)
524	fi
525	AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library])
526	CF_CHECK_GPM_WGETCH
527fi
528
529CF_WITH_PCRE2
530CF_WITH_SYSMOUSE
531
532# pretend that ncurses==ncursesw==ncursest
533AC_MSG_CHECKING(if you want to disable library suffixes)
534CF_ARG_DISABLE(lib-suffixes,
535	[  --disable-lib-suffixes  disable library suffixes],
536	[disable_lib_suffixes=yes],
537	[disable_lib_suffixes=no],
538	no)
539AC_MSG_RESULT($disable_lib_suffixes)
540
541### If we're building with rpath, try to link non-standard libs that way too.
542if test "$DFT_LWR_MODEL" = "shared" && test "x$cf_cv_enable_rpath" != xno; then
543	CF_DISABLE_RPATH_HACK
544fi
545
546###############################################################################
547CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
548
549###	use option --with-extra-suffix to append suffix to headers and libraries
550AC_MSG_CHECKING(if you wish to append extra suffix to header/library paths)
551EXTRA_SUFFIX=
552AC_ARG_WITH(extra-suffix,
553	[  --with-extra-suffix=X   append extra suffix to header/library paths],
554	[case x$withval in
555	(no)
556		;;
557	(xyes|x)
558		EXTRA_SUFFIX=$cf_cv_abi_version
559		;;
560	(*)
561		EXTRA_SUFFIX=$withval
562		;;
563	esac
564	])
565AC_MSG_RESULT($EXTRA_SUFFIX)
566AC_SUBST(EXTRA_SUFFIX)
567
568###	use option --disable-overwrite to leave out the link to -lcurses
569AC_MSG_CHECKING(if you wish to install ncurses overwriting curses)
570AC_ARG_ENABLE(overwrite,
571	[  --disable-overwrite     put headers in subdir, omit link to -lcurses],
572	[with_overwrite=$enableval],
573	[if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi])
574AC_MSG_RESULT($with_overwrite)
575
576AC_MSG_CHECKING(if external terminfo-database is used)
577AC_ARG_ENABLE(database,
578	[  --disable-database      do not use terminfo, only fallbacks/termcap],
579	[use_database=$enableval],
580	[use_database=yes])
581AC_MSG_RESULT($use_database)
582
583case $host_os in
584(os2*)
585	TERMINFO_SRC='${top_srcdir}/misc/emx.src'
586	;;
587(*)
588	TERMINFO_SRC='${top_srcdir}/misc/terminfo.src'
589	;;
590esac
591AC_SUBST(TERMINFO_SRC)
592
593NCURSES_USE_DATABASE=0
594if test "$use_database" != no ; then
595	NCURSES_USE_DATABASE=1
596
597	AC_MSG_CHECKING(which terminfo source-file will be installed)
598	AC_ARG_WITH(database,
599		[  --with-database=XXX     specify terminfo source to install],
600		[TERMINFO_SRC=$withval])
601	AC_MSG_RESULT($TERMINFO_SRC)
602
603	AC_MSG_CHECKING(whether to use hashed database instead of directory/tree)
604	AC_ARG_WITH(hashed-db,
605		[  --with-hashed-db        specify hashed-database library],,
606		[with_hashed_db=no])
607	AC_MSG_RESULT($with_hashed_db)
608else
609	with_hashed_db=no
610fi
611AC_SUBST(NCURSES_USE_DATABASE)
612
613AC_MSG_CHECKING(for list of fallback descriptions)
614AC_ARG_WITH(fallbacks,
615	[  --with-fallbacks=XXX    specify list of fallback terminal descriptions],
616	[with_fallback=$withval],
617	[with_fallback=])
618AC_MSG_RESULT($with_fallback)
619
620case ".$with_fallback" in
621(.|.no)
622	FALLBACK_LIST=
623	;;
624(.yes)
625	AC_MSG_WARN(expected a list of terminal descriptions)
626	;;
627(*)
628	FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'`
629	;;
630esac
631
632USE_FALLBACKS=
633test -z "$FALLBACK_LIST" && USE_FALLBACKS="#"
634AC_SUBST(FALLBACK_LIST)
635AC_SUBST(USE_FALLBACKS)
636
637# The fallback feature in ncurses relies upon tic/infocmp outside the build
638# tree for generating the terminal descriptions that will be compiled into the
639# library.  If your toolchain is old, it may not handle current terminal
640# databases.  Use configure-options to point to the tools which will be used,
641# rather than the first ones found on the $PATH.
642if test -n "$FALLBACK_LIST"
643then
644	CF_WITH_PATH_PROG(TIC,     tic,     [for fallbacks], $PATH:/usr/local/ncurses/bin)
645	CF_WITH_PATH_PROG(INFOCMP, infocmp, [for fallbacks], $PATH:/usr/local/ncurses/bin)
646else
647	: ${TIC:=tic}
648	: ${INFOCMP:=infocmp}
649fi
650AC_SUBST(TIC)
651AC_SUBST(INFOCMP)
652
653AC_MSG_CHECKING(if you want modern xterm or antique)
654AC_ARG_WITH(xterm-new,
655	[  --without-xterm-new     specify if xterm terminfo should be old version],
656	[with_xterm_new=$withval],
657	[with_xterm_new=yes])
658case $with_xterm_new in
659(no) with_xterm_new=xterm-old;;
660(*)	 with_xterm_new=xterm-new;;
661esac
662AC_MSG_RESULT($with_xterm_new)
663WHICH_XTERM=$with_xterm_new
664AC_SUBST(WHICH_XTERM)
665
666AC_MSG_CHECKING(if xterm backspace sends BS or DEL)
667AC_ARG_WITH(xterm-kbs,
668	[  --with-xterm-kbs=XXX    specify if xterm backspace sends BS or DEL],
669	[with_xterm_kbs=$withval],
670	[with_xterm_kbs=BS])
671case x$with_xterm_kbs in
672(xyes|xno|xBS|xbs|x8)
673	with_xterm_kbs=BS
674	;;
675(xDEL|xdel|x127)
676	with_xterm_kbs=DEL
677	;;
678(*)
679	with_xterm_kbs=$withval
680	;;
681esac
682AC_MSG_RESULT($with_xterm_kbs)
683XTERM_KBS=$with_xterm_kbs
684AC_SUBST(XTERM_KBS)
685
686MAKE_TERMINFO=
687if test "$use_database" = no ; then
688	TERMINFO="${datadir}/terminfo"
689	MAKE_TERMINFO="#"
690else
691
692AC_MSG_CHECKING(for list of terminfo directories)
693CF_WITH_PATHLIST(terminfo-dirs,
694	[  --with-terminfo-dirs=XXX specify list of terminfo directories],
695	TERMINFO_DIRS,
696	DATADIR/terminfo,
697	${datadir}/terminfo)
698AC_MSG_RESULT($TERMINFO_DIRS)
699test -n "$TERMINFO_DIRS" && AC_DEFINE_UNQUOTED(TERMINFO_DIRS,"$TERMINFO_DIRS",[Define as needed to predefine the TERMINFO_DIR searchlist])
700
701case "x$TERMINFO" in
702x???:*)
703	AC_MSG_WARN(ignoring non-directory/file TERMINFO value)
704	unset TERMINFO
705	;;
706esac
707
708AC_MSG_CHECKING(for default terminfo directory)
709CF_WITH_PATH(default-terminfo-dir,
710	[  --with-default-terminfo-dir=DIR default terminfo directory],
711	TERMINFO,
712	DATADIR/terminfo,
713	${datadir}/terminfo)
714AC_MSG_RESULT($TERMINFO)
715AC_DEFINE_UNQUOTED(TERMINFO,"$TERMINFO",[Define to set the default terminal database path])
716
717fi
718
719AC_SUBST(TERMINFO)
720AC_SUBST(MAKE_TERMINFO)
721
722###	use option --disable-big-core to make tic run on small machines
723###	We need 4Mb, check if we can allocate 50% more than that.
724AC_MSG_CHECKING(if big-core option selected)
725AC_ARG_ENABLE(big-core,
726	[  --disable-big-core      assume machine has little memory],
727	[with_big_core=$enableval],
728	[AC_TRY_RUN([
729#include <stdlib.h>
730#include <string.h>
731int main() {
732	unsigned long n = 6000000L;
733	char *s = malloc(n);
734	if (s != 0)
735		s[0] = s[n-1] = 0;
736	${cf_cv_main_return:-return}(s == 0);
737}],
738	[with_big_core=yes],
739	[with_big_core=no],
740	[with_big_core=no])])
741AC_MSG_RESULT($with_big_core)
742test "x$with_big_core" = "xyes" && AC_DEFINE(HAVE_BIG_CORE,1,[Define to 1 if machine has ample memory for tic])
743
744### ISO C only guarantees 512-char strings, we have tables which load faster
745### when constructed using "big" strings.  More than the C compiler, the awk
746### program is a limit on most vendor UNIX systems.  Check that we can build.
747AC_MSG_CHECKING(if big-strings option selected)
748AC_ARG_ENABLE(big-strings,
749	[  --disable-big-strings   assume compiler has only standard-size strings],
750	[with_big_strings=$enableval],
751	[CF_AWK_BIG_PRINTF(12000,with_big_strings)])
752AC_MSG_RESULT($with_big_strings)
753
754USE_BIG_STRINGS=0
755test "x$with_big_strings" = "xyes" && USE_BIG_STRINGS=1
756AC_SUBST(USE_BIG_STRINGS)
757
758###	use option --enable-termcap to compile in the termcap fallback support
759AC_MSG_CHECKING(if you want termcap-fallback support)
760AC_ARG_ENABLE(termcap,
761	[  --enable-termcap        compile in termcap fallback support],
762	[with_termcap=$enableval],
763	[with_termcap=no])
764AC_MSG_RESULT($with_termcap)
765
766NCURSES_USE_TERMCAP=0
767if test "x$with_termcap" != "xyes" ; then
768	if test "$use_database" = no ; then
769		if test -z "$with_fallback" ; then
770			AC_ERROR(You have disabled the database w/o specifying fallbacks)
771		fi
772	fi
773	AC_DEFINE(PURE_TERMINFO,1,[Define to 1 if we should support only terminfo])
774else
775
776	if test "$with_ticlib" != no ; then
777		AC_ERROR(Options --with-ticlib and --enable-termcap cannot be combined)
778	fi
779
780	NCURSES_USE_TERMCAP=1
781	AC_MSG_CHECKING(for list of termcap files)
782	CF_WITH_PATHLIST(termpath,
783		[  --with-termpath=XXX     specify list of termcap files],
784		TERMPATH,
785		/etc/termcap:/usr/share/misc/termcap)
786	AC_MSG_RESULT($TERMPATH)
787	test -n "$TERMPATH" && AC_DEFINE_UNQUOTED(TERMPATH,"$TERMPATH",[Define to set the termcap searchlist])
788
789	###	use option --enable-getcap to use a hacked getcap for reading termcaps
790	AC_MSG_CHECKING(if fast termcap-loader is needed)
791	AC_ARG_ENABLE(getcap,
792		[  --enable-getcap         fast termcap load, no xrefs to terminfo],
793		[with_getcap=$enableval],
794		[with_getcap=no])
795	AC_MSG_RESULT($with_getcap)
796	test "x$with_getcap" = "xyes" && AC_DEFINE(USE_GETCAP,1,[Define to 1 to use fast termcap-loader])
797
798	AC_MSG_CHECKING(if translated termcaps will be cached in ~/.terminfo)
799	AC_ARG_ENABLE(getcap-cache,
800		[  --enable-getcap-cache   cache translated termcaps in ~/.terminfo],
801		[with_getcap_cache=$enableval],
802		[with_getcap_cache=no])
803	AC_MSG_RESULT($with_getcap_cache)
804	test "x$with_getcap_cache" = "xyes" && AC_DEFINE(USE_GETCAP_CACHE,1,[Define to 1 if translated termcap should be stored in $HOME/.terminfo])
805
806fi
807AC_SUBST(NCURSES_USE_TERMCAP)
808
809###   Use option --disable-home-terminfo to completely remove ~/.terminfo
810AC_MSG_CHECKING(if ~/.terminfo is wanted)
811AC_ARG_ENABLE(home-terminfo,
812	[  --disable-home-terminfo drop ~/.terminfo from terminfo search-path],
813	[with_home_terminfo=$enableval],
814	[with_home_terminfo=yes])
815AC_MSG_RESULT($with_home_terminfo)
816test "x$with_home_terminfo" = "xyes" && AC_DEFINE(USE_HOME_TERMINFO,1,[Define to 1 if $HOME/.terminfo feature is wanted])
817
818AC_MSG_CHECKING(if you want to use restricted environment when running as root)
819AC_ARG_ENABLE(root-environ,
820	[  --disable-root-environ  restrict environment when running as root],
821	[with_root_environ=$enableval],
822	[with_root_environ=yes])
823AC_MSG_RESULT($with_root_environ)
824test "x$with_root_environ" = xyes && AC_DEFINE(USE_ROOT_ENVIRON,1,[Define to 1 if environment should be restricted for root user])
825
826###   Use option --enable-symlinks to make tic use symlinks, not hard links
827###   to reduce storage requirements for the terminfo database.
828CF_LINK_FUNCS
829
830with_links=no
831with_symlinks=no
832
833# soft links (symbolic links) are useful for some systems where hard links do
834# not work, or to make it simpler to copy terminfo trees around.
835if test "x$ac_cv_func_symlink" = xyes ; then
836	AC_MSG_CHECKING(if tic should use symbolic links)
837	AC_ARG_ENABLE(symlinks,
838	[  --enable-symlinks       make tic use symbolic links not hard links],
839	[with_symlinks=$enableval],
840	[with_symlinks=no])
841	AC_MSG_RESULT($with_symlinks)
842fi
843
844# If we have hard links and did not choose to use soft links instead, there is
845# no reason to make this choice optional - use the hard links.
846if test "$with_symlinks" = no ; then
847	AC_MSG_CHECKING(if tic should use hard links)
848	if test "x$ac_cv_func_link" = xyes ; then
849		with_links=yes
850	else
851		with_links=no
852	fi
853	AC_MSG_RESULT($with_links)
854fi
855
856test "x$with_links" = xyes && AC_DEFINE(USE_LINKS,1,[Define to 1 if hardlinks should be used in terminfo database])
857test "x$with_symlinks" = xyes && AC_DEFINE(USE_SYMLINKS,1,[Define to 1 if symbolic links should be used in terminfo database])
858
859###   use option --enable-broken-linker to force on use of broken-linker support
860CF_ENABLE_BROKEN_LINKER
861
862###   use option --enable-bsdpad to have tputs process BSD-style prefix padding
863AC_MSG_CHECKING(if tputs should process BSD-style prefix padding)
864AC_ARG_ENABLE(bsdpad,
865	[  --enable-bsdpad         recognize BSD-style prefix padding],
866	[with_bsdpad=$enableval],
867	[with_bsdpad=no])
868AC_MSG_RESULT($with_bsdpad)
869test "x$with_bsdpad" = xyes && AC_DEFINE(BSD_TPUTS,1,[Define to 1 to recognize BSD-style prefix padding])
870
871###   use option --enable-widec to turn on use of wide-character support
872NCURSES_CH_T=chtype
873NCURSES_LIBUTF8=0
874
875NEED_WCHAR_H=0
876NCURSES_MBSTATE_T=0
877NCURSES_WCHAR_T=0
878NCURSES_WINT_T=0
879
880# Check to define _XOPEN_SOURCE "automatically"
881CPPFLAGS_before_XOPEN="$CPPFLAGS"
882CF_XOPEN_SOURCE(600)
883CPPFLAGS_after_XOPEN="$CPPFLAGS"
884
885# Work around breakage on OS X
886CF_SIGWINCH
887
888# Checks for CODESET support.
889AM_LANGINFO_CODESET
890
891# use these variables to work around a defect in gcc's fixincludes.
892NCURSES_OK_WCHAR_T=
893NCURSES_OK_WINT_T=
894
895AC_MSG_CHECKING(if you want wide-character code)
896AC_ARG_ENABLE(widec,
897	[  --enable-widec          compile with wide-char/UTF-8 code],
898	[with_widec=$enableval],
899	[with_widec=no])
900AC_MSG_RESULT($with_widec)
901
902NCURSES_WCWIDTH_GRAPHICS=1
903AC_SUBST(NCURSES_WCWIDTH_GRAPHICS)
904
905if test "x$with_widec" = xyes ; then
906	if test "x$disable_lib_suffixes" = xno ; then
907		LIB_SUFFIX="w${LIB_SUFFIX}"
908	fi
909	AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to compile with wide-char/UTF-8 code])
910	AC_DEFINE(NCURSES_WIDECHAR,1,[Define to 1 to compile with wide-char/UTF-8 code])
911
912	CF_CHECK_WCHAR_H
913	CF_CHECK_WCWIDTH_GRAPHICS
914	test "$cf_cv_wcwidth_graphics" = no && NCURSES_WCWIDTH_GRAPHICS=0
915
916	# with_overwrite=no
917	NCURSES_CH_T=cchar_t
918	AC_CHECK_FUNCS(putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs)
919	if test "x$ac_cv_func_putwc" != xyes ; then
920		CF_UTF8_LIB
921		if test "$cf_cv_utf8_lib" != no ; then
922			NCURSES_LIBUTF8=1
923		fi
924	fi
925	CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T)
926	CF_WCHAR_TYPE(wchar_t,   NCURSES_WCHAR_T,   NCURSES_OK_WCHAR_T)
927	CF_WCHAR_TYPE(wint_t,    NCURSES_WINT_T,    NCURSES_OK_WINT_T)
928
929	if test "$NCURSES_MBSTATE_T" != 0; then
930		AC_DEFINE(NEED_MBSTATE_T_DEF,1,[Define to 1 if we must declare mbstate_t])
931	fi
932fi
933AC_SUBST(NCURSES_CH_T)
934AC_SUBST(NCURSES_LIBUTF8)
935
936AC_SUBST(NEED_WCHAR_H)
937AC_SUBST(NCURSES_MBSTATE_T)
938AC_SUBST(NCURSES_WCHAR_T)
939AC_SUBST(NCURSES_WINT_T)
940
941AC_SUBST(NCURSES_OK_WCHAR_T)
942AC_SUBST(NCURSES_OK_WINT_T)
943
944###   use option --disable-lp64 to allow long chtype
945AC_MSG_CHECKING(whether to enable _LP64 definition in curses.h)
946AC_ARG_ENABLE(lp64,
947	[  --disable-lp64          allow chtype to be long (ignore _LP64)],
948	[with_lp64=$enableval],
949	[with_lp64=$cf_dft_with_lp64])
950AC_MSG_RESULT($with_lp64)
951
952if test "x$with_lp64" = xyes ; then
953	cf_cv_enable_lp64=1
954else
955	cf_cv_enable_lp64=0
956fi
957AC_SUBST(cf_cv_enable_lp64)
958
959CF_LARGEFILE
960
961###   use option --disable-tparm-varargs to make tparm() conform to X/Open
962AC_MSG_CHECKING(if you want tparm not to use X/Open fixed-parameter list)
963AC_ARG_ENABLE(tparm-varargs,
964	[  --disable-tparm-varargs compile tparm() without varargs interface],
965	[with_tparm_varargs=$enableval],
966	[with_tparm_varargs=yes])
967AC_MSG_RESULT($with_tparm_varargs)
968NCURSES_TPARM_VARARGS=0
969test "x$with_tparm_varargs" = xyes && NCURSES_TPARM_VARARGS=1
970AC_SUBST(NCURSES_TPARM_VARARGS)
971
972###   use option --disable-tic-depends to make libtic not explicitly depend on ncurses/ncursesw
973if test "$with_ticlib" != no ; then
974AC_MSG_CHECKING(if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library)
975AC_ARG_ENABLE(tic-depends,
976	[  --disable-tic-depends   link tic library without explicit dependency on ncurses library],
977	[with_tic_depends=$enableval],
978	[with_tic_depends=yes])
979AC_MSG_RESULT($with_tic_depends)
980else
981	with_tic_depends=no
982fi
983
984###   use option --disable-wattr-macros to suppress wattr* macros from curses.h
985AC_MSG_CHECKING(if you want to suppress wattr* macros to help with ncurses5/ncurses6 transition)
986AC_ARG_ENABLE(wattr-macros,
987	[  --disable-wattr-macros  suppress wattr* macros to help with ncurses5/ncurses6 transition],
988	[with_wattr_macros=$enableval],
989	[with_wattr_macros=yes])
990if [[ "x$with_wattr_macros" != xyes ]]; then
991	NCURSES_WATTR_MACROS=0
992	AC_MSG_RESULT(yes)
993else
994	NCURSES_WATTR_MACROS=1
995	AC_MSG_RESULT(no)
996fi
997AC_SUBST(NCURSES_WATTR_MACROS)
998
999CF_WITH_X11_RGB
1000
1001###   use option --with-bool to override bool's type
1002AC_MSG_CHECKING(for type of bool)
1003AC_ARG_WITH(bool,
1004	[  --with-bool=TYPE        override fallback type of bool variable],
1005	[NCURSES_BOOL="$withval"],
1006	[NCURSES_BOOL=auto])
1007AC_MSG_RESULT($NCURSES_BOOL)
1008AC_SUBST(NCURSES_BOOL)
1009
1010AC_MSG_CHECKING(for alternate terminal capabilities file)
1011AC_ARG_WITH(caps,
1012	[  --with-caps=alt         compile with alternate Caps file],
1013	[TERMINFO_CAPS=Caps.$withval],
1014	[TERMINFO_CAPS=Caps])
1015test -f "${srcdir}/include/${TERMINFO_CAPS}" || TERMINFO_CAPS=Caps
1016AC_MSG_RESULT($TERMINFO_CAPS)
1017AC_SUBST(TERMINFO_CAPS)
1018
1019###   use option --with-chtype to override chtype's type
1020AC_MSG_CHECKING(for type of chtype)
1021AC_ARG_WITH(chtype,
1022	[  --with-chtype=TYPE      override type of chtype],
1023	[NCURSES_CHTYPE="$withval"],
1024	[NCURSES_CHTYPE=$cf_dft_chtype])
1025AC_MSG_RESULT($NCURSES_CHTYPE)
1026
1027###   use option --with-ospeed to override ospeed's type
1028AC_MSG_CHECKING(for type of ospeed)
1029AC_ARG_WITH(ospeed,
1030	[  --with-ospeed=TYPE      override type of ospeed variable],
1031	[NCURSES_OSPEED="$withval"],
1032	[NCURSES_OSPEED=short])
1033AC_MSG_RESULT($NCURSES_OSPEED)
1034AC_SUBST(NCURSES_OSPEED)
1035
1036###   use option --with-mmask-t to override mmask_t's type
1037AC_MSG_CHECKING(for type of mmask_t)
1038AC_ARG_WITH(mmask-t,
1039	[  --with-mmask-t=TYPE     override type of mmask_t],
1040	[NCURSES_MMASK_T="$withval"],
1041	[NCURSES_MMASK_T=$cf_dft_mmask_t])
1042AC_MSG_RESULT($NCURSES_MMASK_T)
1043
1044###   use option --with-ccharw-max to override CCHARW_MAX size
1045AC_MSG_CHECKING(for size CCHARW_MAX)
1046AC_ARG_WITH(ccharw-max,
1047	[  --with-ccharw-max=XXX   override size CCHARW_MAX],
1048	[NCURSES_CCHARW_MAX="$withval"],
1049	[NCURSES_CCHARW_MAX=5])
1050AC_MSG_RESULT($NCURSES_CCHARW_MAX)
1051AC_SUBST(NCURSES_CCHARW_MAX)
1052
1053AC_CHECK_SIZEOF([signed char])
1054if test "$ac_cv_sizeof_signed_char" = 1 ; then
1055	NCURSES_SBOOL="signed char"
1056else
1057	NCURSES_SBOOL="char"
1058fi
1059AC_MSG_CHECKING(if you want to use signed Boolean array in term.h)
1060AC_ARG_ENABLE(signed-char,
1061	[  --enable-signed-char    compile using signed Boolean's in term.h],
1062	[with_signed_char=$enableval],
1063	[with_signed_char=no])
1064AC_MSG_RESULT($with_signed_char)
1065test "x$with_signed_char" != xyes && NCURSES_SBOOL="char"
1066AC_SUBST(NCURSES_SBOOL)
1067
1068###   use option --with-tparm-arg to override tparm's argument type
1069AC_MSG_CHECKING(for type of tparm args)
1070AC_ARG_WITH(tparm-arg,
1071	[  --with-tparm-arg=TYPE   override parameter type of tparm],
1072	[NCURSES_TPARM_ARG="$withval"],
1073	[NCURSES_TPARM_ARG=$cf_dft_tparm_arg])
1074AC_MSG_RESULT($NCURSES_TPARM_ARG)
1075AC_SUBST(NCURSES_TPARM_ARG)
1076
1077### Enable compiling-in rcs id's
1078AC_MSG_CHECKING(if RCS identifiers should be compiled-in)
1079AC_ARG_WITH(rcs-ids,
1080	[  --with-rcs-ids          compile-in RCS identifiers],
1081	[with_rcs_ids=$withval],
1082	[with_rcs_ids=no])
1083AC_MSG_RESULT($with_rcs_ids)
1084test "x$with_rcs_ids" = xyes && AC_DEFINE(USE_RCS_IDS,1,[Define to 1 to compile-in RCS identifiers])
1085
1086###############################################################################
1087CF_MAN_PAGES([ captoinfo clear infocmp infotocap reset tabs tic toe tput tset ])
1088
1089###############################################################################
1090CF_HELP_MESSAGE(Extensions:)
1091
1092### Note that some functions (such as const) are normally disabled anyway.
1093AC_MSG_CHECKING(if you want to build with function extensions)
1094AC_ARG_ENABLE(ext-funcs,
1095	[  --disable-ext-funcs     disable function-extensions],
1096	[with_ext_funcs=$enableval],
1097	[with_ext_funcs=yes])
1098AC_MSG_RESULT($with_ext_funcs)
1099if test "x$with_ext_funcs" = xyes ; then
1100	NCURSES_EXT_FUNCS=1
1101	AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 to enable ncurses extended functions])
1102	AC_DEFINE(HAVE_ASSUME_DEFAULT_COLORS,1,[Define to 1 to enable assume_default_colors() function in test-programs])
1103	AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 to enable curses_version() function in test-programs])
1104	AC_DEFINE(HAVE_HAS_KEY,1,[Define to 1 to enable has_key() function in test-programs])
1105	AC_DEFINE(HAVE_RESIZETERM,1,[Define to 1 to enable resizeterm() function in test-programs])
1106	AC_DEFINE(HAVE_RESIZE_TERM,1,[Define to 1 to enable resize_term() function in test-programs])
1107	AC_DEFINE(HAVE_TERM_ENTRY_H,1,[Define to 1 to enable term_entry() function in test-programs])
1108	AC_DEFINE(HAVE_USE_DEFAULT_COLORS,1,[Define to 1 to enable use_default_colors() function in test-programs])
1109	AC_DEFINE(HAVE_USE_EXTENDED_NAMES,1,[Define to 1 to enable use_extended_names() function in test-programs])
1110	AC_DEFINE(HAVE_USE_SCREEN,1,[Define to 1 to enable use_screen() function in test-programs])
1111	AC_DEFINE(HAVE_USE_WINDOW,1,[Define to 1 to enable use_window() function in test-programs])
1112	AC_DEFINE(HAVE_WRESIZE,1,[Define to 1 to enable wresize() function in test-programs])
1113	GENERATED_EXT_FUNCS=generated
1114	test "x$with_ext_funcs" = xyes || cf_dft_ext_spfuncs=no
1115else
1116	NCURSES_EXT_FUNCS=0
1117	GENERATED_EXT_FUNCS=
1118fi
1119AC_SUBST(NCURSES_EXT_FUNCS)
1120AC_SUBST(GENERATED_EXT_FUNCS)
1121
1122AC_MSG_CHECKING(if you want to build with SCREEN extensions)
1123AC_ARG_ENABLE(sp-funcs,
1124	[  --enable-sp-funcs       enable SCREEN-extensions],
1125	[with_sp_funcs=$enableval],
1126	[with_sp_funcs=$cf_dft_ext_spfuncs])
1127AC_MSG_RESULT($with_sp_funcs)
1128if test "x$with_sp_funcs" = xyes ; then
1129	NCURSES_SP_FUNCS=1
1130	AC_DEFINE(NCURSES_SP_FUNCS,1,[Define to 1 to enable SCREEN-extensions])
1131	AC_DEFINE(HAVE_TPUTS_SP,1,[Define to 1 to enable tputs_sp() function in test-programs])
1132	GENERATED_SP_FUNCS=generated
1133else
1134	NCURSES_SP_FUNCS=0
1135	GENERATED_SP_FUNCS=
1136fi
1137AC_SUBST(NCURSES_SP_FUNCS)
1138AC_SUBST(GENERATED_SP_FUNCS)
1139
1140AC_MSG_CHECKING(if you want to build with terminal-driver)
1141AC_ARG_ENABLE(term-driver,
1142	[  --enable-term-driver    enable terminal-driver],
1143	[with_term_driver=$enableval],
1144	[with_term_driver=no])
1145AC_MSG_RESULT($with_term_driver)
1146if test "x$with_term_driver" = xyes ; then
1147	AC_DEFINE(USE_TERM_DRIVER,1,[Define to 1 to enable terminal-driver])
1148	if test "x$with_termlib" != xno ; then
1149		AC_MSG_ERROR(The term-driver option conflicts with the termlib option)
1150	fi
1151	if test "x$with_sp_funcs" != xyes ; then
1152		AC_MSG_ERROR(The term-driver option relies upon sp-funcs)
1153	fi
1154fi
1155
1156###   use option --enable-const to turn on use of const beyond that in XSI.
1157AC_MSG_CHECKING(for extended use of const keyword)
1158AC_ARG_ENABLE(const,
1159	[  --enable-const          compile with extra/non-standard const],
1160	[with_ext_const=$enableval],
1161	[with_ext_const=$cf_dft_ext_const])
1162AC_MSG_RESULT($with_ext_const)
1163NCURSES_CONST='/*nothing*/'
1164if test "x$with_ext_const" = xyes ; then
1165	NCURSES_CONST=const
1166fi
1167AC_SUBST(NCURSES_CONST)
1168
1169###   use option --enable-ext-colors to turn on use of colors beyond 16.
1170AC_MSG_CHECKING(if you want to use extended colors)
1171AC_ARG_ENABLE(ext-colors,
1172	[  --enable-ext-colors     compile for 256-color support],
1173	[with_ext_colors=$enableval],
1174	[with_ext_colors=$cf_dft_ext_colors])
1175AC_MSG_RESULT($with_ext_colors)
1176NCURSES_EXT_COLORS=0
1177if test "x$with_ext_colors" = xyes ; then
1178	if test "x$with_widec" != xyes ; then
1179		AC_MSG_WARN(This option applies only to wide-character library)
1180	else
1181		# cannot be ABI 5 since it changes sizeof(cchar_t)
1182		CF_NCURSES_ABI_6
1183		NCURSES_EXT_COLORS=1
1184		AC_DEFINE(NCURSES_EXT_COLORS,1,[Define to 1 to compile for 256-color support])
1185		AC_DEFINE(HAVE_ALLOC_PAIR,1,[Define to 1 to enable alloc_pair() function])
1186		AC_DEFINE(HAVE_INIT_EXTENDED_COLOR,1,[Define to 1 to enable init_extended_color() function in test-programs])
1187		AC_DEFINE(HAVE_RESET_COLOR_PAIRS,1,[Define to 1 to enable reset_color_pairs() function in test-programs])
1188	fi
1189fi
1190AC_SUBST(NCURSES_EXT_COLORS)
1191
1192###   use option --enable-ext-mouse to modify coding to support 5-button mice
1193AC_MSG_CHECKING(if you want to use extended mouse encoding)
1194AC_ARG_ENABLE(ext-mouse,
1195	[  --enable-ext-mouse      compile for extended mouse-encoding],
1196	[with_ext_mouse=$enableval],
1197	[with_ext_mouse=$cf_dft_ext_mouse])
1198AC_MSG_RESULT($with_ext_mouse)
1199NCURSES_MOUSE_VERSION=1
1200if test "x$with_ext_mouse" = xyes ; then
1201	NCURSES_MOUSE_VERSION=2
1202	CF_NCURSES_ABI_6
1203fi
1204AC_SUBST(NCURSES_MOUSE_VERSION)
1205
1206###   use option --enable-ext-putwin to turn on extended screendumps
1207AC_MSG_CHECKING(if you want to use extended putwin/screendump)
1208AC_ARG_ENABLE(ext-putwin,
1209	[  --enable-ext-putwin     compile with extended putwin/screendump],
1210	[with_ext_putwin=$enableval],
1211	[with_ext_putwin=$cf_dft_ext_putwin])
1212AC_MSG_RESULT($with_ext_putwin)
1213if test "x$with_ext_putwin" = xyes ; then
1214	AC_DEFINE(NCURSES_EXT_PUTWIN,1,[Define to 1 to compile with extended putwin/screendump])
1215fi
1216
1217AC_MSG_CHECKING(if you want \$NCURSES_NO_PADDING code)
1218AC_ARG_ENABLE(no-padding,
1219	[  --enable-no-padding     compile with $NCURSES_NO_PADDING code],
1220	[with_no_padding=$enableval],
1221	[with_no_padding=$with_ext_funcs])
1222AC_MSG_RESULT($with_no_padding)
1223test "x$with_no_padding" = xyes && AC_DEFINE(NCURSES_NO_PADDING,1,[Define to 1 to compile with $NCURSES_NO_PADDING code])
1224
1225###   use option --enable-sigwinch to turn on use of SIGWINCH logic
1226AC_MSG_CHECKING(if you want SIGWINCH handler)
1227AC_ARG_ENABLE(sigwinch,
1228	[  --enable-sigwinch       compile with SIGWINCH handler],
1229	[with_sigwinch=$enableval],
1230	[with_sigwinch=$with_ext_funcs])
1231AC_MSG_RESULT($with_sigwinch)
1232test "x$with_sigwinch" = xyes && AC_DEFINE(USE_SIGWINCH,1,[Define to 1 to compile with SIGWINCH handler])
1233
1234###   use option --enable-tcap-names to allow user to define new capabilities
1235AC_MSG_CHECKING(if you want user-definable terminal capabilities like termcap)
1236AC_ARG_ENABLE(tcap-names,
1237	[  --enable-tcap-names     compile with user-definable terminal capabilities],
1238	[with_tcap_names=$enableval],
1239	[with_tcap_names=$with_ext_funcs])
1240AC_MSG_RESULT($with_tcap_names)
1241NCURSES_XNAMES=0
1242test "x$with_tcap_names" = xyes && NCURSES_XNAMES=1
1243AC_SUBST(NCURSES_XNAMES)
1244
1245##############################################################################
1246CF_HELP_MESSAGE(Reentrant Code:)
1247CF_WITH_PTHREAD
1248
1249if test "x$with_pthread" != xno; then
1250	AC_CHECK_FUNC(pthread_kill,[
1251		AC_MSG_CHECKING(if you want to allow EINTR in wgetch with pthreads)
1252		AC_ARG_ENABLE(pthreads-eintr,
1253			[  --enable-pthreads-eintr enable EINTR in wgetch with pthreads],
1254			[use_pthreads_eintr=$enableval],
1255			[use_pthreads_eintr=no])
1256		AC_MSG_RESULT($use_pthreads_eintr)
1257		if test "x$use_pthreads_eintr" = xyes ; then
1258			AC_DEFINE(USE_PTHREADS_EINTR,1,[Define to 1 to enable EINTR in wgetch with pthreads])
1259		fi])
1260
1261	AC_MSG_CHECKING(if you want to use weak-symbols for pthreads)
1262	AC_ARG_ENABLE(weak-symbols,
1263		[  --enable-weak-symbols   enable weak-symbols for pthreads],
1264		[use_weak_symbols=$enableval],
1265		[use_weak_symbols=no])
1266	AC_MSG_RESULT($use_weak_symbols)
1267	if test "x$use_weak_symbols" = xyes ; then
1268		CF_WEAK_SYMBOLS
1269	else
1270		cf_cv_weak_symbols=no
1271	fi
1272
1273	if test "x$cf_cv_weak_symbols" = xyes ; then
1274		AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define to 1 to enable weak-symbols for pthreads])
1275	fi
1276fi
1277
1278PTHREAD=
1279if test "x$with_pthread" = "xyes" ; then
1280	AC_DEFINE(USE_PTHREADS,1,[Define to 1 to use pthreads feature])
1281	enable_reentrant=yes
1282	if test "x$cf_cv_weak_symbols" = xyes ; then
1283		PTHREAD=-lpthread
1284		CF_ADD_LIB(pthread,PRIVATE_LIBS)
1285	fi
1286fi
1287AC_SUBST(PTHREAD)
1288
1289# Reentrant code has to be opaque; there's little advantage to making ncurses
1290# opaque outside of that, so there is no --enable-opaque option.  We can use
1291# this option without --with-pthreads, but this will be always set for
1292# pthreads.
1293AC_MSG_CHECKING(if you want reentrant code)
1294AC_ARG_ENABLE(reentrant,
1295	[  --enable-reentrant      compile with reentrant code],
1296	[with_reentrant=$enableval],
1297	[with_reentrant=no])
1298AC_MSG_RESULT($with_reentrant)
1299if test "x$with_reentrant" = xyes ; then
1300	cf_cv_enable_reentrant=1
1301	cf_cv_enable_opaque="NCURSES_INTERNALS"
1302	NCURSES_SIZE_T=int
1303	if test "x$cf_cv_weak_symbols" = xyes ; then
1304		CF_REMOVE_LIB(LIBS,$LIBS,pthread)
1305		CF_ADD_LIB(pthread,TEST_LIBS)
1306		CF_ADD_LIB(pthread,TEST_LIBS2)
1307		CF_ADD_LIB(pthread,PRIVATE_LIBS)
1308	else
1309		# when not using weak symbols but with_reentrant,
1310		# add 't' to the library suffix on all platforms
1311		# except cygwin, where we only do that if ALSO
1312		# compiling with full thread support.
1313		case "$host" in
1314		(*cygwin* | *msys*)
1315			if test "$with_pthread" = "yes" ; then
1316				if test "x$disable_lib_suffixes" = "xno" ; then
1317					LIB_SUFFIX="t${LIB_SUFFIX}"
1318				fi
1319			fi ;;
1320		(*)
1321			if test "x$disable_lib_suffixes" = "xno" ; then
1322				LIB_SUFFIX="t${LIB_SUFFIX}"
1323			fi
1324			;;
1325		esac
1326	fi
1327	AC_DEFINE(USE_REENTRANT,1,[Define to 1 to use reentrant feature])
1328	CF_NCURSES_ABI_6
1329else
1330	cf_cv_enable_reentrant=0
1331	cf_cv_enable_opaque="NCURSES_OPAQUE"
1332	NCURSES_SIZE_T=short
1333fi
1334AC_SUBST(cf_cv_enable_reentrant)
1335AC_SUBST(cf_cv_enable_opaque)
1336
1337AC_SUBST(NCURSES_SIZE_T)
1338
1339AC_MSG_CHECKING(if you want opaque curses-library structures)
1340CF_ARG_ENABLE(opaque-curses,
1341	[  --enable-opaque-curses  make curses WINDOW, etc., "opaque"],
1342	[enable_opaque_curses=yes],[
1343	 test "$cf_cv_enable_reentrant" = 1 && enable_opaque_curses=yes
1344	 test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=no
1345	])
1346AC_MSG_RESULT($enable_opaque_curses)
1347
1348test "$cf_cv_enable_reentrant" = 1 && \
1349test "$enable_opaque_curses" = no && \
1350AC_MSG_ERROR(reentrant configuration requires opaque library)
1351
1352AC_MSG_CHECKING(if you want opaque form-library structures)
1353AC_ARG_ENABLE(opaque-form,
1354	[  --enable-opaque-form    make form-library structures "opaque"],
1355	[enable_opaque_form=yes],[enable_opaque_form=no])
1356AC_MSG_RESULT($enable_opaque_form)
1357
1358AC_MSG_CHECKING(if you want opaque menu-library structures)
1359AC_ARG_ENABLE(opaque-menu,
1360	[  --enable-opaque-menu    make menu-library structures "opaque"],
1361	[enable_opaque_menu=yes],[enable_opaque_menu=no])
1362AC_MSG_RESULT($enable_opaque_menu)
1363
1364AC_MSG_CHECKING(if you want opaque panel-library structures)
1365AC_ARG_ENABLE(opaque-panel,
1366	[  --enable-opaque-panel   make panel-library structures "opaque"],
1367	[enable_opaque_panel=yes],[enable_opaque_panel=no])
1368AC_MSG_RESULT($enable_opaque_panel)
1369
1370NCURSES_OPAQUE=0;		test "$enable_opaque_curses" = yes && NCURSES_OPAQUE=1
1371NCURSES_OPAQUE_FORM=0;	test "$enable_opaque_form"   = yes && NCURSES_OPAQUE_FORM=1
1372NCURSES_OPAQUE_MENU=0;	test "$enable_opaque_menu"   = yes && NCURSES_OPAQUE_MENU=1
1373NCURSES_OPAQUE_PANEL=0;	test "$enable_opaque_panel"  = yes && NCURSES_OPAQUE_PANEL=1
1374
1375AC_SUBST(NCURSES_OPAQUE)
1376AC_SUBST(NCURSES_OPAQUE_FORM)
1377AC_SUBST(NCURSES_OPAQUE_MENU)
1378AC_SUBST(NCURSES_OPAQUE_PANEL)
1379
1380### Allow using a different wrap-prefix
1381if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
1382	AC_MSG_CHECKING(for prefix used to wrap public variables)
1383	AC_ARG_WITH(wrap-prefix,
1384		[  --with-wrap-prefix=XXX  override prefix used for public variables],
1385		[NCURSES_WRAP_PREFIX=$withval],
1386		[NCURSES_WRAP_PREFIX=_nc_])
1387	AC_MSG_RESULT($NCURSES_WRAP_PREFIX)
1388else
1389	NCURSES_WRAP_PREFIX=_nc_
1390fi
1391AC_SUBST(NCURSES_WRAP_PREFIX)
1392AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX",[Define to override _nc_ prefix])
1393
1394###############################################################################
1395# These options are relatively safe to experiment with.
1396CF_HELP_MESSAGE(Development Code:)
1397AC_MSG_CHECKING(if you want all development code)
1398AC_ARG_WITH(develop,
1399	[  --without-develop       disable development options],
1400	[with_develop=$withval],
1401	[with_develop=no])
1402AC_MSG_RESULT($with_develop)
1403
1404###   use option --enable-hard-tabs to turn on use of hard-tabs optimize
1405AC_MSG_CHECKING(if you want hard-tabs code)
1406AC_ARG_ENABLE(hard-tabs,
1407	[  --enable-hard-tabs      compile with hard-tabs code],,
1408	[enable_hard_tabs=$with_develop])
1409AC_MSG_RESULT($enable_hard_tabs)
1410test "x$enable_hard_tabs" = xyes && AC_DEFINE(USE_HARD_TABS,1,[Define to 1 to compile with hard-tabs code])
1411
1412###   use option --enable-xmc-glitch to turn on use of magic-cookie optimize
1413AC_MSG_CHECKING(if you want limited support for xmc)
1414AC_ARG_ENABLE(xmc-glitch,
1415	[  --enable-xmc-glitch     compile with support for xmc (magic-cookie)],,
1416	[enable_xmc_glitch=$with_develop])
1417AC_MSG_RESULT($enable_xmc_glitch)
1418test "x$enable_xmc_glitch" = xyes && AC_DEFINE(USE_XMC_SUPPORT,1,[Define to 1 to compile with support for xmc (magic-cookie)])
1419
1420###############################################################################
1421# These are just experimental, probably should not be in a package:
1422CF_HELP_MESSAGE(Experimental Code:)
1423
1424AC_MSG_CHECKING(if you do not want to assume colors are white-on-black)
1425AC_ARG_ENABLE(assumed-color,
1426	[  --disable-assumed-color do not assume anything about default-colors],
1427	[with_assumed_color=$enableval],
1428	[with_assumed_color=yes])
1429AC_MSG_RESULT($with_assumed_color)
1430test "x$with_assumed_color" = xyes && AC_DEFINE(USE_ASSUMED_COLOR,1,[Define to 1 to assume things about default-colors])
1431
1432###   use option --enable-hashmap to turn on use of hashmap scrolling logic
1433AC_MSG_CHECKING(if you want hashmap scrolling-optimization code)
1434AC_ARG_ENABLE(hashmap,
1435	[  --disable-hashmap       compile without hashmap scrolling-optimization],
1436	[with_hashmap=$enableval],
1437	[with_hashmap=yes])
1438AC_MSG_RESULT($with_hashmap)
1439test "x$with_hashmap" = xyes && AC_DEFINE(USE_HASHMAP,1,[Define to 1 to compile with hashmap scrolling-optimization])
1440
1441###   use option --enable-colorfgbg to turn on use of $COLORFGBG environment
1442AC_MSG_CHECKING(if you want colorfgbg code)
1443AC_ARG_ENABLE(colorfgbg,
1444	[  --enable-colorfgbg      compile-in experimental $COLORFGBG code],
1445	[with_colorfgbg=$enableval],
1446	[with_colorfgbg=no])
1447AC_MSG_RESULT($with_colorfgbg)
1448test "x$with_colorfgbg" = xyes && AC_DEFINE(USE_COLORFGBG,1,[Define to 1 to compile-in experimental $COLORFGBG code])
1449
1450###   use option --enable-interop to turn on use of bindings used for interop
1451AC_MSG_CHECKING(if you want interop bindings)
1452AC_ARG_ENABLE(interop,
1453	[  --enable-interop        compile-in interop bindings],
1454	[with_exp_interop=$enableval],
1455	[with_exp_interop=$cf_dft_interop])
1456AC_MSG_RESULT($with_exp_interop)
1457
1458NCURSES_INTEROP_FUNCS=0
1459test "x$with_exp_interop" = xyes && NCURSES_INTEROP_FUNCS=1
1460AC_SUBST(NCURSES_INTEROP_FUNCS)
1461
1462
1463AC_MSG_CHECKING(if you want experimental safe-sprintf code)
1464AC_ARG_ENABLE(safe-sprintf,
1465	[  --enable-safe-sprintf   compile with experimental safe-sprintf code],
1466	[with_safe_sprintf=$enableval],
1467	[with_safe_sprintf=no])
1468AC_MSG_RESULT($with_safe_sprintf)
1469
1470###   use option --disable-scroll-hints to turn off use of scroll-hints scrolling logic
1471# when hashmap is used scroll hints are useless
1472if test "$with_hashmap" = no ; then
1473AC_MSG_CHECKING(if you want to experiment without scrolling-hints code)
1474AC_ARG_ENABLE(scroll-hints,
1475	[  --disable-scroll-hints  compile without scroll-hints code],
1476	[with_scroll_hints=$enableval],
1477	[with_scroll_hints=yes])
1478AC_MSG_RESULT($with_scroll_hints)
1479test "x$with_scroll_hints" = xyes && AC_DEFINE(USE_SCROLL_HINTS,1,[Define to 1 to compile without scroll-hints code])
1480fi
1481
1482AC_MSG_CHECKING(if you want wgetch-events code)
1483AC_ARG_ENABLE(wgetch-events,
1484	[  --enable-wgetch-events  compile with wgetch-events code],
1485	[with_wgetch_events=$enableval],
1486	[with_wgetch_events=no])
1487AC_MSG_RESULT($with_wgetch_events)
1488test "x$with_wgetch_events" = xyes && AC_DEFINE(NCURSES_WGETCH_EVENTS,1,[Define to 1 to compile with wgetch-events code])
1489
1490###############################################################################
1491CF_HELP_MESSAGE(Testing/development Options:)
1492
1493###	use option --disable-echo to suppress full display compiling commands
1494CF_DISABLE_ECHO
1495if test "x$enable_echo" = xyes; then
1496	ECHO_LINK=
1497else
1498	ECHO_LINK='@ echo linking $@ ... ;'
1499	test -n "$LIBTOOL" && LIBTOOL="$LIBTOOL --silent"
1500	test -n "$LIBTOOL_CXX" && LIBTOOL_CXX="$LIBTOOL_CXX --silent"
1501fi
1502AC_SUBST(ECHO_LINK)
1503
1504# --disable-stripping is used for debugging
1505CF_INSTALL_OPTS
1506
1507# If we're avoiding relinking of shared libraries during install, that is to
1508# avoid modifying the build-tree.  For the same reason, avoid doing ranlib if
1509# the install program has "-p" (for preserving timestamps).
1510cf_cv_do_reranlib=yes
1511if test "x$cf_cv_install_p" = xyes
1512then
1513	if test "x$cf_cv_do_relink" != xyes
1514	then
1515		cf_cv_do_reranlib=no
1516		INSTALL_OPT_P="-p"
1517		INSTALL_LIB="$INSTALL_LIB $INSTALL_OPT_P"
1518	fi
1519fi
1520AC_SUBST(INSTALL_OPT_P)
1521
1522###	use option --enable-warnings to turn on all gcc warnings
1523AC_MSG_CHECKING(if you want to see compiler warnings)
1524AC_ARG_ENABLE(warnings,
1525	[  --enable-warnings       build: turn on GCC compiler warnings],
1526	[with_warnings=$enableval])
1527AC_MSG_RESULT($with_warnings)
1528
1529if test "x$with_warnings" = "xyes"; then
1530 	CF_ADD_ADAFLAGS(-gnatg)
1531	CF_GCC_WARNINGS(Wno-unknown-pragmas Wswitch-enum)
1532	if test "x$cf_with_cxx" = xyes ; then
1533		CF_GXX_WARNINGS(Wno-unused)
1534	fi
1535fi
1536CF_GCC_ATTRIBUTES
1537CF_ENABLE_STRING_HACKS
1538
1539###	use option --enable-assertions to turn on generation of assertion code
1540AC_MSG_CHECKING(if you want to enable runtime assertions)
1541AC_ARG_ENABLE(assertions,
1542	[  --enable-assertions     test: turn on generation of assertion code],
1543	[with_assertions=$enableval],
1544	[with_assertions=no])
1545AC_MSG_RESULT($with_assertions)
1546if test -n "$GCC"
1547then
1548	if test "$with_assertions" = no
1549	then
1550		CPPFLAGS="$CPPFLAGS -DNDEBUG"
1551	else
1552		CF_ADD_ADAFLAGS(-gnata)
1553	fi
1554fi
1555
1556###	use option --disable-leaks to suppress "permanent" leaks, for testing
1557CF_DISABLE_LEAKS
1558AC_DEFINE(HAVE_NC_ALLOC_H,1,[Define to 1 if we have nc_alloc.h header])
1559
1560###	use option --enable-expanded to generate certain macros as functions
1561AC_ARG_ENABLE(expanded,
1562	[  --enable-expanded       test: generate functions for certain macros],
1563	[test "x$enableval" = xyes && AC_DEFINE(NCURSES_EXPANDED,1,[Define to 1 to generate functions for certain macros])])
1564
1565###	use option --disable-macros to suppress macros in favor of functions
1566AC_ARG_ENABLE(macros,
1567	[  --disable-macros        test: use functions rather than macros],
1568	[test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS,1,[Define to 1 to use functions rather than macros])])
1569
1570# Normally we only add trace() to the debug-library.  Allow this to be
1571# extended to all models of the ncurses library:
1572cf_all_traces=no
1573case "$CFLAGS $CPPFLAGS" in
1574(*-DTRACE*)
1575	cf_all_traces=yes
1576	;;
1577esac
1578
1579AC_MSG_CHECKING(whether to add trace feature to all models)
1580AC_ARG_WITH(trace,
1581[  --with-trace            test: add trace() function to all models of ncurses],
1582[cf_with_trace=$withval],
1583[cf_with_trace=$cf_all_traces])
1584AC_MSG_RESULT($cf_with_trace)
1585
1586if test "x$cf_with_trace" = xyes ; then
1587	LIB_TRACING=all
1588	ADA_TRACE=TRUE
1589	CF_ADD_CFLAGS(-DTRACE)
1590	AC_DEFINE(HAVE__TRACEF,1,[Define to 1 if we have _tracef function])
1591else
1592	LIB_TRACING=DEBUG
1593	ADA_TRACE=FALSE
1594fi
1595
1596AC_SUBST(ADA_TRACE)
1597
1598CF_DISABLE_GNAT_PROJECTS
1599
1600###	Checks for libraries.
1601case $cf_cv_system_name in
1602(*mingw32*|*mingw64*)
1603	CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN"
1604	# Note: WINVER may be a problem with Windows 10
1605	;;
1606(*)
1607AC_CHECK_FUNC(gettimeofday,
1608	AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[
1609
1610AC_CHECK_LIB(bsd, gettimeofday,
1611	AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function])
1612	CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday
1613	;;
1614esac
1615
1616CF_MATH_LIB(MATH_LIB,pow(sin(x),x))
1617AC_SUBST(MATH_LIB)
1618
1619###	Checks for header files.
1620AC_STDC_HEADERS
1621AC_HEADER_DIRENT
1622AC_HEADER_TIME
1623CF_REGEX
1624
1625dnl These are some other potentially nonportable headers.
1626AC_CHECK_HEADERS( \
1627fcntl.h \
1628getopt.h \
1629limits.h \
1630locale.h \
1631math.h \
1632poll.h \
1633sys/bsdtypes.h \
1634sys/ioctl.h \
1635sys/param.h \
1636sys/poll.h \
1637sys/select.h \
1638sys/time.h \
1639sys/times.h \
1640ttyent.h \
1641unistd.h \
1642wctype.h \
1643)
1644
1645CF_GETOPT_HEADER
1646
1647CF_CHECK_ENVIRON(environ)
1648CF_CHECK_GETENV
1649if test "x$cf_cv_consistent_getenv" = xno && \
1650	test "x$cf_with_trace" = xyes
1651then
1652	AC_MSG_WARN(The NCURSES_TRACE environment variable is not supported with this configuration)
1653fi
1654
1655# check for ISC (this may also define _POSIX_SOURCE)
1656# Note: even non-Posix ISC needs <sys/bsdtypes.h> to declare fd_set
1657if test "x$ISC" = xyes ; then
1658	AC_CHECK_LIB(cposix,main)
1659	AC_CHECK_LIB(inet,bzero,CF_ADD_LIB(inet))dnl also 'select()'
1660fi
1661
1662CF_SYS_TIME_SELECT
1663
1664###	checks for compiler characteristics
1665AC_LANG_C
1666AC_C_CONST
1667CF_C_INLINE(NCURSES_INLINE,1200)
1668CF_SIG_ATOMIC_T
1669
1670if test $NCURSES_CHTYPE = auto ; then
1671	CF_TYPEOF_CHTYPE
1672else
1673	cf_cv_typeof_chtype=$NCURSES_CHTYPE
1674fi
1675test "$cf_cv_typeof_chtype" = unsigned && cf_cv_typeof_chtype=""
1676AC_SUBST(cf_cv_typeof_chtype)
1677
1678CF_UNSIGNED_LITERALS
1679cf_cv_1UL="1"
1680test ".$cf_cv_unsigned_literals" = .yes && cf_cv_1UL="${cf_cv_1UL}U"
1681test ".$cf_cv_typeof_chtype"    = .long && cf_cv_1UL="${cf_cv_1UL}L"
1682AC_SUBST(cf_cv_1UL)
1683
1684if test $NCURSES_MMASK_T = auto ; then
1685	cf_cv_typeof_mmask_t=long
1686else
1687	cf_cv_typeof_mmask_t=$NCURSES_MMASK_T
1688fi
1689test "$cf_cv_typeof_mmask_t" = unsigned && cf_cv_typeof_mmask_t=""
1690AC_SUBST(cf_cv_typeof_mmask_t)
1691
1692###	Checks for external-data
1693CF_ERRNO
1694CF_LINK_DATAONLY
1695
1696###	Checks for library functions.
1697AC_CHECK_FUNCS( \
1698getcwd \
1699getegid \
1700geteuid \
1701getopt \
1702getttynam \
1703issetugid \
1704localeconv \
1705poll \
1706putenv \
1707remove \
1708select \
1709setbuf \
1710setbuffer \
1711setenv \
1712setvbuf \
1713sigaction \
1714sigvec \
1715strdup \
1716strstr \
1717sysconf \
1718tcgetpgrp \
1719times \
1720tsearch \
1721vsnprintf \
1722)
1723
1724if test "x$ac_cv_func_getopt" = xno && \
1725   test "x$cf_with_progs$cf_with_tests" != xnono; then
1726	AC_MSG_ERROR(getopt is required for building programs)
1727fi
1728
1729if test "x$with_safe_sprintf" = xyes
1730then
1731	if test "x$ac_cv_func_vsnprintf" = xyes
1732	then
1733		AC_MSG_WARN(will use vsnprintf instead of safe-sprintf option)
1734	else
1735		AC_DEFINE(USE_SAFE_SPRINTF,1,[Define to 1 to compile with experimental safe-sprintf code])
1736	fi
1737fi
1738
1739if test "x$with_getcap" = "xyes" ; then
1740	CF_CGETENT
1741fi
1742
1743CF_ISASCII
1744CF_STRUCT_SIGACTION
1745CF_FUNC_NANOSLEEP
1746CF_FUNC_TERMIOS
1747CF_FUNC_VSSCANF
1748CF_MKSTEMP
1749
1750# setup for prototype of fallback for vsscanf()
1751CF_SUBST_IF(["$cf_cv_func_vsscanf" = vsscanf], HAVE_VSSCANF, 1, 0)
1752
1753dnl FIXME (may need this) AC_SYS_RESTARTABLE_SYSCALLS
1754if test "x$cross_compiling" = xyes ; then
1755	AC_MSG_WARN(cross compiling: assume setvbuf params not reversed)
1756else
1757	AC_FUNC_SETVBUF_REVERSED
1758fi
1759AC_CHECK_TYPE(intptr_t, long)
1760AC_CHECK_TYPE(ssize_t, int)
1761CF_TYPE_SIGACTION
1762CF_SIZECHANGE
1763CF_FUNC_MEMMOVE
1764CF_FUNC_POLL
1765CF_VA_COPY
1766AC_FUNC_VFORK
1767CF_FOPEN_BIN_R
1768
1769# special check for test/ditto.c
1770CF_FUNC_OPENPTY
1771if test "$cf_cv_func_openpty" != no ; then
1772	AC_DEFINE_UNQUOTED(USE_OPENPTY_HEADER,<$cf_cv_func_openpty>,[Define to actual header for openpty function])
1773	AC_DEFINE(USE_XTERM_PTY,1,[Define to 1 if we should assume xterm pseudoterminal interface])
1774	if test "x$cf_cv_lib_util" = xyes ; then
1775		CF_ADD_LIB(util,TEST_LIBS)
1776	fi
1777fi
1778AC_SUBST(TEST_LIBS)
1779AC_SUBST(TEST_LIBS2)
1780
1781if test "$with_hashed_db" != no ; then
1782	AC_DEFINE(USE_HASHED_DB,1,[Define to 1 if we should build terminfo in hashed database])
1783	CF_HASHED_DB($with_hashed_db)
1784fi
1785
1786dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
1787if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then
1788	CF_STRIP_G_OPT(CFLAGS)
1789	CF_STRIP_G_OPT(CXXFLAGS)
1790fi
1791
1792# Just in case, check if the C compiler has a bool type.
1793CF_BOOL_DECL(cf_cv_cc_bool_type)
1794
1795# Check for C++ compiler characteristics (and ensure that it's there!)
1796if test -n "$CXX" ; then
1797	AC_LANG_CPLUSPLUS
1798	CF_STDCPP_LIBRARY
1799	CF_PROG_CC_C_O(CXX,[$CXXFLAGS $CPPFLAGS])
1800
1801	case $GXX_VERSION in
1802	(1*|2.[0-6]*)
1803		cf_cxx_library=yes
1804		;;
1805	(*-2.7*|2.7*)
1806		CF_GPP_LIBRARY
1807		;;
1808	(*)
1809		cf_cxx_library=no
1810		;;
1811	esac
1812
1813	AC_CHECK_HEADERS(typeinfo)
1814	CF_CXX_IOSTREAM_NAMESPACE
1815	CF_BOOL_DECL
1816	CF_BOOL_SIZE
1817	CF_ETIP_DEFINES
1818	CF_CPP_PARAM_INIT
1819	CF_CPP_STATIC_CAST
1820	CF_CXX_AR_FLAGS
1821else
1822	cf_cxx_library=no
1823	cf_cv_builtin_bool=1
1824
1825	# Just because we are not configuring against C++ right now does not
1826	# mean that a user will not want to use C++.  Some distributors disable
1827	# the C++ portion of this configuration as a shortcut (or just to avoid
1828	# compiling the demo in the c++ directory).  So we need a reasonable
1829	# default for the 'bool' type.
1830	#
1831	# Caveat: since the storage of the bool type is not standardized, it
1832	# may change.
1833
1834	if test "$NCURSES_BOOL" != auto ; then
1835		cf_cv_type_of_bool=$NCURSES_BOOL
1836		cf_cv_header_stdbool_h=0
1837	else
1838		if test "$cf_cv_header_stdbool_h" = 1 ; then
1839			CF_BOOL_SIZE
1840		else
1841			AC_MSG_CHECKING(for fallback type of bool)
1842			case "$host_cpu" in
1843			(i?86)	cf_cv_type_of_bool=char	;;
1844			(*)	cf_cv_type_of_bool=int	;;
1845			esac
1846			AC_MSG_RESULT($cf_cv_type_of_bool)
1847		fi
1848	fi
1849fi
1850AC_SUBST(CXXLIBS)
1851
1852# If the C compiler did not declare bool, and we did not determine that the C++
1853# compiler does not declare bool, turn on an ifdef in curses.h that makes the
1854# ncurses library use the same type as C++ bool.  Note that this allows one to
1855# specify the type of bool in a configure-script option and postpone
1856# integration with the C++ compiler provided that the types are compatible.
1857USE_CXX_BOOL=1
1858if test $cf_cv_cc_bool_type = 1
1859then
1860	# oops: C has a bool.  Unlikely, but C++ could differ.
1861	USE_CXX_BOOL=0
1862elif test $cf_cv_builtin_bool = 0
1863then
1864	# C++ has no bool
1865	USE_CXX_BOOL=0
1866else
1867	# this is the normal case
1868	USE_CXX_BOOL='defined(__cplusplus)'
1869fi
1870AC_SUBST(USE_CXX_BOOL)
1871
1872CF_HELP_MESSAGE(Ada Binding Options:)
1873
1874dnl If the Ada95 source-tree is present, add that to the build unless it will
1875dnl not work, or was not requested.
1876if test -f "${srcdir}/Ada95/Makefile.in" ; then
1877
1878dnl libtool does not know anything about GNAT, though a change made in 1998
1879dnl provided for it "someday".  Disable the ada subtree if we are using
1880dnl libtool -TD 20070714
1881	if test "$cf_with_ada" != "no" ; then
1882		if test "$with_libtool" != "no"; then
1883			AC_MSG_WARN(libtool does not support Ada - disabling feature)
1884			cf_with_ada=no
1885		fi
1886	fi
1887
1888dnl Check for availability of GNU Ada Translator (GNAT).
1889dnl At the moment we support no other Ada compiler.
1890	if test "$cf_with_ada" != "no" ; then
1891		CF_PROG_GNAT
1892		if test	"x$cf_cv_prog_gnat_correct" = xyes; then
1893			CF_ADD_ADAFLAGS(-gnatpn)
1894			CF_FIXUP_ADAFLAGS
1895
1896			CF_GNATPREP_OPT_T
1897
1898			CF_GNAT_GENERICS
1899			CF_GNAT_SIGINT
1900			CF_GNAT_PROJECTS
1901
1902			CF_WITH_ADA_COMPILER
1903
1904			cf_ada_package=terminal_interface
1905			AC_SUBST(cf_ada_package)
1906
1907			CF_WITH_ADA_INCLUDE
1908			CF_WITH_ADA_OBJECTS
1909			CF_WITH_ADA_SHAREDLIB
1910
1911			# allow the Ada binding to be renamed
1912			CF_WITH_ADA_LIBNAME(AdaCurses)
1913		fi
1914	fi
1915else
1916	cf_with_ada=no
1917fi
1918
1919# do this "late" to avoid conflict with header-checks
1920if test "x$with_widec" = xyes ; then
1921	AC_CHECK_SIZEOF(wchar_t)
1922	# cross-compiling to mingw can run into the problem that attempting to
1923	# link with the regex library fails, causing the test to not set this to
1924	# a number.  "recent" autoconf does not address this problem either -TD
1925	if test -z "$ac_cv_sizeof_wchar_t"
1926	then
1927		CF_VERBOSE(test failed (assume 2))
1928		sed /SIZEOF_WCHAR_T/d confdefs.h >confdefs.tmp
1929		mv confdefs.tmp confdefs.h
1930		echo "#define SIZEOF_WCHAR_T 2" >>confdefs.h
1931	fi
1932fi
1933
1934### Construct the ncurses library-subsets, if any, from this set of keywords:
1935###	none, base, ext_funcs, ext_tinfo, ticlib, termlib, widechar
1936###
1937### ticlib modules may be a separate library, otherwise contained in termlib.
1938### termlib modules may be a separate library, otherwise contained in ncurses.
1939###
1940### The of "+" or " " between the tokens controls the way the script
1941### chooses to split module lists into libraries.
1942###
1943### (see CF_LIB_RULES).
1944AC_MSG_CHECKING(for library subsets)
1945LIB_SUBSETS=
1946
1947if test "x$cf_with_progs" = xyes || test "$with_ticlib" != no || test "$with_termcap" != no; then
1948	LIB_SUBSETS="${LIB_SUBSETS}ticlib"
1949	if test "$with_ticlib" != no ; then
1950		LIB_SUBSETS="${LIB_SUBSETS} "
1951	else
1952		LIB_SUBSETS="${LIB_SUBSETS}+"
1953	fi
1954fi
1955
1956LIB_SUBSETS="${LIB_SUBSETS}termlib"
1957test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo"
1958
1959if test "$with_termlib" != no ; then
1960	LIB_SUBSETS="${LIB_SUBSETS} "
1961else
1962	LIB_SUBSETS="${LIB_SUBSETS}+"
1963fi
1964
1965LIB_SUBSETS="${LIB_SUBSETS}base"
1966
1967# Most term-driver calls are to tinfo, but some like init_pair are to the
1968# base library (so it resides in base).
1969if test "$with_term_driver" != no ; then
1970	LIB_SUBSETS="${LIB_SUBSETS}+port_drivers"
1971	case $cf_cv_system_name in
1972	(*mingw32*|*mingw64*)
1973		LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con"
1974		CPPFLAGS="$CPPFLAGS -DUSE_WIN32CON_DRIVER"
1975		;;
1976	(*)
1977		LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo"
1978		;;
1979	esac
1980fi
1981
1982test "x$with_widec"     = xyes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
1983test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
1984
1985AC_MSG_RESULT($LIB_SUBSETS)
1986
1987### Construct the list of include-directories to be generated
1988CF_INCLUDE_DIRS
1989CF_ADA_INCLUDE_DIRS
1990
1991### Build up pieces for makefile rules
1992AC_MSG_CHECKING(default library suffix)
1993CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl
1994AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("")
1995AC_MSG_RESULT($DFT_ARG_SUFFIX)
1996
1997AC_MSG_CHECKING(default library-dependency suffix)
1998CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_LIB_SUFFIX,DFT_DEP_SUFFIX)dnl
1999AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a")
2000AC_MSG_RESULT($DFT_DEP_SUFFIX)
2001
2002AC_MSG_CHECKING(default object directory)
2003CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl
2004AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj")
2005AC_MSG_RESULT($DFT_OBJ_SUBDIR)
2006
2007if test "x$cf_with_cxx" = xyes ; then
2008AC_MSG_CHECKING(c++ library-dependency suffix)
2009if test "$with_libtool" != "no"; then
2010	# libtool thinks it can make c++ shared libraries (perhaps only g++)
2011	CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX
2012elif test "$with_shared_cxx" != "no"; then
2013	# also for g++ users...
2014	CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX
2015else
2016	# we normally make a static library because C/C++ library rules differ
2017	CF_LIB_SUFFIX(normal,CXX_LIB_SUFFIX,CXX_DEP_SUFFIX)
2018fi
2019AC_MSG_RESULT($CXX_LIB_SUFFIX)
2020AC_SUBST(CXX_LIB_SUFFIX)
2021fi
2022
2023# do not want -ldl in build except as needed for -lncurses dependency
2024if test "x$with_dlsym" = xyes ; then
2025if test $DFT_LWR_MODEL = shared || \
2026   test $DFT_LWR_MODEL = libtool ; then
2027	CF_REMOVE_LIB(LIBS,$LIBS,dl)
2028fi
2029fi
2030### Set up low-level terminfo dependencies for makefiles.
2031
2032# TICS_LIST and TINFO_LIST are needed to build libtic.so and libterm.so, but
2033# do not need libdl
2034TICS_LIST=
2035if test "x$with_dlsym" = xyes ; then
2036	CF_REMOVE_LIB(TINFO_LIST,$SHLIB_LIST,dl)
2037fi
2038
2039USE_ARG_SUFFIX="${DFT_ARG_SUFFIX}${EXTRA_SUFFIX}"
2040USE_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}"
2041USE_CFG_SUFFIX=${DFT_ARG_SUFFIX}${cf_cv_abi_version}
2042if test -n "$EXTRA_SUFFIX" && test "x$EXTRA_SUFFIX" != "x${cf_cv_abi_version}"
2043then
2044	USE_CFG_SUFFIX="${USE_CFG_SUFFIX}${EXTRA_SUFFIX}"
2045fi
2046AC_SUBST(USE_ARG_SUFFIX)
2047AC_SUBST(USE_CFG_SUFFIX)
2048AC_SUBST(USE_LIB_SUFFIX)
2049
2050if test "$with_ticlib" != no ; then
2051
2052	if test "x$with_ticlib" != xyes ; then
2053		TICS_NAME=$with_ticlib
2054		TICS_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${USE_LIB_SUFFIX}//"`"
2055		TICS_ARG_SUFFIX="${with_ticlib}`echo ${USE_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
2056		TICS_DEP_SUFFIX="${with_ticlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
2057		TICS_LIB_SUFFIX="${with_ticlib}"
2058	else
2059		TICS_SUFFIX=${DFT_LIB_SUFFIX}
2060		TICS_ARG_SUFFIX="${TICS_NAME}${USE_ARG_SUFFIX}"
2061		TICS_DEP_SUFFIX="${TICS_NAME}${DFT_DEP_SUFFIX}"
2062		TICS_LIB_SUFFIX="${TICS_NAME}${USE_LIB_SUFFIX}"
2063	fi
2064	TICS_LDFLAGS="-L${LIB_DIR}"
2065	TICS_LIBS="-l${TICS_ARG_SUFFIX}"
2066else
2067	TICS_SUFFIX=${DFT_LIB_SUFFIX}
2068	TICS_LDFLAGS="-L${LIB_DIR}"
2069	TICS_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX}"
2070fi
2071AC_SUBST(TICS_ARG_SUFFIX)
2072AC_SUBST(TICS_DEP_SUFFIX)
2073AC_SUBST(TICS_LIB_SUFFIX)
2074AC_SUBST(TICS_LDFLAGS)
2075AC_SUBST(TICS_LIBS)
2076
2077if test "$with_termlib" != no ; then
2078
2079	if test "x$with_termlib" != xyes ; then
2080		TINFO_NAME=$with_termlib
2081		TINFO_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${USE_LIB_SUFFIX}//"`"
2082		TINFO_ARG_SUFFIX="${with_termlib}`echo ${USE_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
2083		TINFO_DEP_SUFFIX="${with_termlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
2084		TINFO_LIB_SUFFIX="${with_termlib}"
2085	else
2086		TINFO_SUFFIX=${DFT_LIB_SUFFIX}
2087		TINFO_ARG_SUFFIX="${TINFO_NAME}${USE_ARG_SUFFIX}"
2088		TINFO_DEP_SUFFIX="${TINFO_NAME}${DFT_DEP_SUFFIX}"
2089		TINFO_LIB_SUFFIX="${TINFO_NAME}${USE_LIB_SUFFIX}"
2090	fi
2091
2092	TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}"
2093	TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}"
2094	if test "$DFT_LWR_MODEL" = "libtool"; then
2095		TEST_ARGS="${TEST_DEPS}"
2096		TEST_ARG2="${TEST_DEP2}"
2097		TINFO_LDFLAGS="-L${LIB_DIR}"
2098		TINFO_LIBS="$TEST_ARGS"
2099		TICS_LIST="$SHLIB_LIST $TEST_ARGS"
2100		SHLIB_LIST="${SHLIB_LIST} $TEST_ARGS"
2101	else
2102		TEST_ARGS="-l${TINFO_ARG_SUFFIX}"
2103		TEST_ARG2="-l${TINFO_ARG_SUFFIX}"
2104		if test "x$with_term_driver" != xno ; then
2105			TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${USE_ARG_SUFFIX}"
2106			TICS_LIBS="$TICS_LIBS -l${LIB_NAME}${USE_ARG_SUFFIX}"
2107			TINFO_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS"
2108		else
2109			TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
2110			TINFO_LIBS="$TEST_ARGS"
2111		fi
2112		TINFO_LDFLAGS="-L${LIB_DIR}"
2113		SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
2114	fi
2115else
2116	# the next lines are needed for linking libtic over libncurses
2117	TINFO_NAME=${LIB_NAME}
2118	TINFO_SUFFIX=${DFT_LIB_SUFFIX}
2119	TINFO_ARG_SUFFIX=${LIB_NAME}${USE_ARG_SUFFIX}
2120	if test "x$with_tic_depends" = xyes ; then
2121		TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${USE_ARG_SUFFIX}"
2122	else
2123		TICS_LIST="$SHLIB_LIST"
2124	fi
2125
2126	TINFO_LDFLAGS="-L${LIB_DIR}"
2127	TINFO_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX}"
2128fi
2129
2130if test "$DFT_LWR_MODEL" = shared ; then
2131	case $cf_cv_system_name in
2132	(cygwin*|msys*)
2133		# "lib" files have ".dll.a" suffix, "cyg"or "msys-" files have ".dll"
2134		TINFO_SUFFIX=.dll
2135		;;
2136	esac
2137fi
2138
2139AC_SUBST(TINFO_ARG_SUFFIX)
2140AC_SUBST(TINFO_DEP_SUFFIX)
2141AC_SUBST(TINFO_LIB_SUFFIX)
2142AC_SUBST(TINFO_LDFLAGS)
2143AC_SUBST(TINFO_LIBS)
2144
2145if test "x$with_dlsym" = xyes ; then
2146	CF_REMOVE_LIB(TICS_LIST,$TICS_LIST,dl)
2147fi
2148
2149if test "$DFT_LWR_MODEL" = "libtool"; then
2150	OBJEXT=lo
2151fi
2152
2153# needed for Ada95
2154TINFO_LDFLAGS2=`echo "$TINFO_LDFLAGS" | sed -e 's,-L\.\./,-L../../,'`
2155AC_SUBST(TINFO_LDFLAGS2)
2156
2157case $DFT_LWR_MODEL in
2158(normal|debug|profile)
2159	CF_LDFLAGS_STATIC
2160	;;
2161esac
2162
2163AC_MSG_CHECKING(where we will install curses.h)
2164AC_SUBST(includesubdir)
2165includesubdir=
2166if test "$with_overwrite" = no && \
2167 ( test "x$includedir" = 'x${prefix}/include' || \
2168   test "x$includedir" = "x${prefix}/include" )
2169then
2170	includesubdir="/ncurses${USE_LIB_SUFFIX}"
2171fi
2172AC_MSG_RESULT(${includedir}${includesubdir})
2173
2174### Resolve a conflict between normal and wide-curses by forcing applications
2175### that will need libutf8 to add it to their configure script.
2176if test "$with_overwrite" != no ; then
2177if test "$NCURSES_LIBUTF8" = 1 ; then
2178	NCURSES_LIBUTF8='defined(HAVE_LIBUTF8_H)'
2179	AC_MSG_WARN(Wide-character applications must define HAVE_LIBUTF8_H to include curses.h)
2180fi
2181fi
2182WITH_OVERWRITE=$with_overwrite
2183
2184AC_SUBST(WITH_OVERWRITE)
2185AC_SUBST(TICS_LIST)
2186AC_SUBST(TINFO_LIST)
2187AC_SUBST(SHLIB_LIST)
2188
2189# used to separate tack out of the tree
2190NCURSES_TREE=
2191AC_SUBST(NCURSES_TREE)
2192
2193### predefined stuff for the test programs
2194AC_DEFINE(HAVE_SLK_COLOR,1,[Define to 1 if we have slk_color for test-programs])
2195
2196### Construct the list of subdirectories for which we'll customize makefiles
2197### with the appropriate compile-rules.
2198
2199CF_SRC_MODULES($modules_to_build)
2200
2201if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then
2202   SUB_MAKEFILES="$SUB_MAKEFILES Ada95/src/library.gpr:Ada95/src/library.gpr.in"
2203   SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${USE_CFG_SUFFIX}-config:Ada95/gen/adacurses-config.in"
2204   SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${USE_CFG_SUFFIX}-config.1:man/MKada_config.in"
2205fi
2206
2207CF_DIRS_TO_MAKE
2208
2209# symbols that differ when compiling Ada95 by itself.
2210NCURSES_SHLIB2=$SHELL' $(top_srcdir)/misc/shlib'
2211AC_SUBST(NCURSES_SHLIB2)
2212
2213# values to use as strings
2214AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR',[Define to override ':' as library path-separator])
2215
2216AC_DEFINE_UNQUOTED(NCURSES_VERSION_STRING, "${NCURSES_MAJOR}.${NCURSES_MINOR}.${NCURSES_PATCH}",[Define to 1 if machine has ample memory for tic])
2217
2218### Now that we're done running tests, add the compiler-warnings, if any
2219CF_ADD_CFLAGS($EXTRA_CFLAGS)
2220
2221### Define substitutions for header files to avoid name-pollution
2222CF_SUBST_IF(["x$cf_cv_have_tcgetattr" = xyes], HAVE_TCGETATTR, 1, 0)
2223CF_SUBST_IF(["x$ac_cv_header_stdint_h" = xyes], HAVE_STDINT_H, 1, 0)
2224CF_SUBST_IF(["x$ac_cv_header_termio_h" = xyes], HAVE_TERMIO_H, 1, 0)
2225CF_SUBST_IF(["x$ac_cv_header_termios_h" = xyes], HAVE_TERMIOS_H, 1, 0)
2226
2227################################################################################
2228test "x$use_database" = xyes && \
2229SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in"
2230
2231SUB_MAKEFILES="$SUB_MAKEFILES misc/ncurses-config:misc/ncurses-config.in"
2232SUB_MAKEFILES="$SUB_MAKEFILES man/ncurses${USE_CFG_SUFFIX}-config.1:man/MKncu_config.in"
2233
2234if test "x$enable_pc_files" = xyes && test -z "$MAKE_PC_FILES" ; then
2235SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in"
2236fi
2237AC_SUBST(cross_compiling)
2238
2239if test "x$cf_with_tests" != xno ; then
2240	MAKE_TESTS=
2241else
2242	MAKE_TESTS="#"
2243fi
2244AC_SUBST(MAKE_TESTS)
2245
2246ADAHTML_DIR=../../doc/html/ada
2247AC_SUBST(ADAHTML_DIR)
2248
2249# these could be configurable, but are not currently
2250PANEL_NAME=panel
2251MENU_NAME=menu
2252FORM_NAME=form
2253CXX_NAME=ncurses++
2254
2255AC_SUBST(PANEL_NAME)
2256AC_SUBST(MENU_NAME)
2257AC_SUBST(FORM_NAME)
2258AC_SUBST(CXX_NAME)
2259
2260# workaround for OS/2 (20151017)
2261case $cf_cv_system_name in
2262(os2*)
2263	LIBTOOL_OPTS_CXX="-os2dllname ncurs++"
2264	;;
2265(*)
2266	LIBTOOL_OPTS_CXX=
2267	;;
2268esac
2269AC_SUBST(LIBTOOL_OPTS_CXX)
2270
2271# workaround for g++ versus Solaris (20131116)
2272case $cf_cv_system_name in
2273(solaris2*)
2274	case "x$CPPFLAGS" in
2275	(*-D_XOPEN_SOURCE_EXTENDED*)
2276		CF_VERBOSE(moving _XOPEN_SOURCE_EXTENDED to work around g++ problem)
2277		CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
2278		CPPFLAGS=`echo "x$CPPFLAGS" | sed -e  's/^.//' -e 's/-D_XOPEN_SOURCE_EXTENDED//'`
2279		;;
2280	esac
2281	;;
2282esac
2283
2284# Help to automatically enable the extended curses features when using either
2285# the *-config or the ".pc" files by adding defines.
2286AC_MSG_CHECKING(for defines to add to ncurses${USE_CFG_SUFFIX}-config script)
2287PKG_CFLAGS=
2288for cf_loop1 in $CPPFLAGS_after_XOPEN
2289do
2290	cf_found=no
2291	for cf_loop2 in $CPPFLAGS_before_XOPEN
2292	do
2293		if test "x$cf_loop1" = "x$cf_loop2"
2294		then
2295			cf_found=yes
2296			break
2297		fi
2298	done
2299	test "$cf_found" = no && PKG_CFLAGS="$PKG_CFLAGS $cf_loop1"
2300done
2301AC_MSG_RESULT($PKG_CFLAGS)
2302AC_SUBST(PKG_CFLAGS)
2303
2304# AC_CHECK_SIZEOF demands a literal parameter, no variables.  So we do this.
2305case "x$NCURSES_OSPEED" in
2306(*short*)
2307	cf_compatible=1
2308	;;
2309(*)
2310	cf_compatible=0
2311	;;
2312esac
2313AC_DEFINE_UNQUOTED(NCURSES_OSPEED_COMPAT,$cf_compatible,[Define to 1 if termcap variable ospeed is short])
2314
2315case "x$cf_cv_typeof_chtype" in
2316(xshort|xint|xlong)
2317	cf_cv_typeof_chtype="unsigned $cf_cv_typeof_chtype"
2318	;;
2319esac
2320
2321case "x$cf_cv_typeof_mmask_t" in
2322(xshort|xint|xlong)
2323	cf_cv_typeof_mmask_t="unsigned $cf_cv_typeof_mmask_t"
2324	;;
2325esac
2326
2327# substitute into misc/Makefile to suppress
2328# (un)install.data from the
2329# (un)install rules.
2330if test "x$cf_with_db_install" = "xno"; then
2331	MISC_INSTALL_DATA=
2332	MISC_UNINSTALL_DATA=
2333else
2334	MISC_INSTALL_DATA=install.data
2335	MISC_UNINSTALL_DATA=uninstall.data
2336fi
2337AC_SUBST(MISC_INSTALL_DATA)
2338AC_SUBST(MISC_UNINSTALL_DATA)
2339
2340if test "x$cf_with_db_install" = "xno" || test "x$TERMINFO_SRC" = "xno"; then
2341	MAKE_DATABASE="#"
2342else
2343	MAKE_DATABASE="$MAKE_TERMINFO"
2344fi
2345AC_SUBST(MAKE_DATABASE)
2346
2347dnl Override the package used for exported symbols
2348if test -n "$PACKAGE"
2349then
2350	PACKAGE="${PACKAGE}${DFT_ARG_SUFFIX}"
2351	export PACKAGE
2352	echo "package: $PACKAGE"
2353fi
2354
2355UNALTERED_SYMS=
2356cf_filter_syms=no
2357
2358if test -n "$RESULTING_SYMS"
2359then
2360	cf_filter_syms=$cf_dft_filter_syms
2361	CF_VERBOSE(will map symbols to ABI=$cf_cv_abi_version)
2362fi
2363
2364if test "x$WILDCARD_SYMS" = xno
2365then
2366	cf_filter_syms=yes
2367fi
2368
2369test "x$cf_with_trace" = xyes && NCURSES_INLINE=
2370
2371UNALTERED_SYMS=`echo "$RESULTING_SYMS" | sed -e 's/\\$/\\\\$/g'`
2372if test $cf_filter_syms = yes
2373then
2374	RESULTING_SYMS=resulting.map
2375fi
2376AC_SUBST(UNALTERED_SYMS)
2377
2378if test "x$cross_compiling" = xyes ; then
2379	ADAGEN_LDFLAGS='$(CROSS_LDFLAGS)'
2380	CHECK_BUILD="#"
2381else
2382	ADAGEN_LDFLAGS='$(NATIVE_LDFLAGS)'
2383	CHECK_BUILD=
2384fi
2385AC_SUBST(ADAGEN_LDFLAGS)
2386AC_SUBST(CHECK_BUILD)
2387AC_SUBST(PRIVATE_LIBS)
2388
2389# This is used for the *-config script and *.pc data files.
2390CF_LD_SEARCHPATH
2391
2392AC_DEFINE(HAVE_CURSES_DATA_BOOLNAMES,1,[definition needed for in-tree build of tack])
2393
2394AC_OUTPUT( \
2395	include/MKterm.h.awk \
2396	include/curses.head:include/curses.h.in \
2397	include/ncurses_dll.h \
2398	include/termcap.h \
2399	include/unctrl.h \
2400	$SUB_MAKEFILES \
2401	Makefile,[
2402if test "x$cf_with_tests" != xno ; then
2403	CF_PRG_RULES([$srcdir/test/mk-test.awk INSTALL=no ECHO_LINK="$ECHO_LD"], test)
2404fi
2405CF_LIB_RULES($SRC_SUBDIRS)
2406
2407if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then
2408if test -z "$USE_OLD_MAKERULES" ; then
2409	$AWK -f $srcdir/Ada95/mk-1st.awk <$srcdir/Ada95/src/modules >>Ada95/src/Makefile
2410fi
2411fi
2412],[
2413### Special initialization commands, used to pass information from the
2414### configuration-run into config.status
2415
2416AWK="$AWK"
2417ALTERNATE_SYMS="$ALTERNATE_SYMS"
2418DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
2419DFT_LWR_MODEL="$DFT_LWR_MODEL"
2420ECHO_LD="$ECHO_LD"
2421EXTRA_SUFFIX="$EXTRA_SUFFIX"
2422LDCONFIG="$LDCONFIG"
2423LIBTOOL_VERSION="$LIBTOOL_VERSION"
2424LIB_NAME="$LIB_NAME"
2425LIB_PREFIX="$LIB_PREFIX"
2426LIB_SUBSETS="$LIB_SUBSETS"
2427LIB_SUFFIX="$LIB_SUFFIX"
2428LIB_TRACING="$LIB_TRACING"
2429LN_S="$LN_S"
2430MAKE_TERMINFO="$MAKE_TERMINFO"
2431NCURSES_MAJOR="$NCURSES_MAJOR"
2432NCURSES_MINOR="$NCURSES_MINOR"
2433NCURSES_OSPEED="$NCURSES_OSPEED"
2434NCURSES_PATCH="$NCURSES_PATCH"
2435SRC_SUBDIRS="$SRC_SUBDIRS"
2436TERMINFO="$TERMINFO"
2437TICS_ARG_SUFFIX="$TICS_ARG_SUFFIX"
2438TICS_LIB_SUFFIX="$TICS_LIB_SUFFIX"
2439TICS_NAME="$TICS_NAME"
2440TICS_SUFFIX="$TICS_SUFFIX"
2441TIC_PATH="$TIC_PATH"
2442TINFO_ARG_SUFFIX="$TINFO_ARG_SUFFIX"
2443TINFO_LIB_SUFFIX="$TINFO_LIB_SUFFIX"
2444TINFO_NAME="$TINFO_NAME"
2445TINFO_SUFFIX="$TINFO_SUFFIX"
2446UNALTERED_SYMS="$UNALTERED_SYMS"
2447USE_ARG_SUFFIX="$USE_ARG_SUFFIX"
2448USE_CFG_SUFFIX="$USE_CFG_SUFFIX"
2449USE_LIB_SUFFIX="$USE_LIB_SUFFIX"
2450USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
2451WILDCARD_SYMS="$WILDCARD_SYMS"
2452WITH_CURSES_H="$with_curses_h"
2453WITH_ECHO="${enable_echo:=yes}"
2454WITH_OVERWRITE="$with_overwrite"
2455cf_LIST_MODELS="$cf_list_models"
2456cf_cv_abi_version="$cf_cv_abi_version"
2457cf_cv_do_relink="$cf_cv_do_relink"
2458cf_cv_do_reranlib="$cf_cv_do_reranlib"
2459cf_cv_do_symlinks="$cf_cv_do_symlinks"
2460cf_cv_enable_lp64="$cf_cv_enable_lp64"
2461cf_cv_enable_opaque="$cf_cv_enable_opaque"
2462cf_cv_prog_CC_c_o=$cf_cv_prog_CC_c_o
2463cf_cv_prog_CXX_c_o=$cf_cv_prog_CXX_c_o
2464cf_cv_prog_gnat_correct=$cf_cv_prog_gnat_correct
2465cf_cv_rel_version="$cf_cv_rel_version"
2466cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
2467cf_cv_shared_soname='$cf_cv_shared_soname'
2468cf_cv_shlib_version="$cf_cv_shlib_version"
2469cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix"
2470cf_cv_system_name="$cf_cv_system_name"
2471cf_cv_term_driver="$with_term_driver"
2472cf_with_ada="$cf_with_ada"
2473cf_with_cxx_binding="$cf_with_cxx_binding"
2474cf_with_db_install="$cf_with_db_install"
2475cf_with_manpages="$cf_with_manpages"
2476cf_with_tests="$cf_with_tests"
2477host="$host"
2478target="$target"
2479with_shared_cxx="$with_shared_cxx"
2480
2481],cat)dnl
2482${MAKE:-make} preinstall
2483