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