1 dnl***************************************************************************
2 dnl Copyright (c) 2010-2016,2018 Free Software Foundation, Inc. *
4 dnl Permission is hereby granted, free of charge, to any person obtaining a *
5 dnl copy of this software and associated documentation files (the *
6 dnl "Software"), to deal in the Software without restriction, including *
7 dnl without limitation the rights to use, copy, modify, merge, publish, *
8 dnl distribute, distribute with modifications, sublicense, and/or sell *
9 dnl copies of the Software, and to permit persons to whom the Software is *
10 dnl furnished to do so, subject to the following conditions: *
12 dnl The above copyright notice and this permission notice shall be included *
13 dnl in all copies or substantial portions of the Software. *
15 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
16 dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
17 dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
18 dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
19 dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
20 dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
21 dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
23 dnl Except as contained in this notice, the name(s) of the above copyright *
24 dnl holders shall not be used in advertising or otherwise to promote the *
25 dnl sale, use or other dealings in this Software without prior written *
27 dnl***************************************************************************
29 dnl Author: Thomas E. Dickey
31 dnl $Id: configure.in,v 1.68 2018/11/10 22:08:09 tom Exp $
32 dnl Process this file with autoconf to produce a configure script.
34 dnl See https://invisible-island.net/autoconf/ for additional information.
36 dnl ---------------------------------------------------------------------------
37 AC_PREREQ(2.52.20030208)
38 AC_REVISION($Revision: 1.68 $)
40 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
44 CF_HELP_MESSAGE(General Options:)
48 ### Save the given $CFLAGS to allow user-override.
49 cf_user_CFLAGS="$CFLAGS"
51 ### Default install-location
54 ### Checks for programs.
55 CF_PROG_CC(gnatgcc gcc cc)
57 AC_PROG_GCC_TRADITIONAL
58 CF_PROG_CC_C_O(CC,[$CFLAGS $CPPFLAGS])
70 AC_SYS_LONG_FILE_NAMES
72 # if we find pkg-config, check if we should install the ".pc" files.
74 CF_WITH_PKG_CONFIG_LIBDIR
76 AC_MSG_CHECKING(if you want to build test-programs)
78 [ --without-tests suppress build with test-programs],
79 [cf_with_tests=$withval],
81 AC_MSG_RESULT($cf_with_tests)
83 AC_MSG_CHECKING(if we should assume mixed-case filenames)
84 AC_ARG_ENABLE(mixed-case,
85 [ --enable-mixed-case tic should assume mixed-case filenames],
86 [enable_mixedcase=$enableval],
87 [enable_mixedcase=auto])
88 AC_MSG_RESULT($enable_mixedcase)
89 if test "$enable_mixedcase" = "auto" ; then
90 CF_MIXEDCASE_FILENAMES
92 cf_cv_mixedcase=$enable_mixedcase
93 if test "$enable_mixedcase" = "yes" ; then
94 AC_DEFINE(MIXEDCASE_FILENAMES)
98 # do this after mixed-case option (tags/TAGS is not as important as tic).
103 dnl These are standard among *NIX systems, but not when cross-compiling
104 AC_CHECK_TOOL(RANLIB, ranlib, ':')
105 AC_CHECK_TOOL(LD, ld, ld)
106 AC_CHECK_TOOL(AR, ar, ar)
110 dnl Special option for use by system-builders: the install-prefix is used to
111 dnl adjust the location into which the actual install is done, so that an
112 dnl archive can be built without modifying the host system's configuration.
113 AC_MSG_CHECKING(if you have specified an install-prefix)
114 AC_ARG_WITH(install-prefix,
115 [ --with-install-prefix prefixes actual install-location ($DESTDIR)],
119 (*) DESTDIR="$withval"
122 AC_MSG_RESULT($DESTDIR)
125 ###############################################################################
126 CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:)
127 # If we're cross-compiling, allow the user to override the tools and their
128 # options. The configure script is oriented toward identifying the host
129 # compiler, etc., but we need a build compiler to generate parts of the source.
132 ###############################################################################
133 CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
135 ### Options to allow the user to specify the set of libraries which are used.
136 ### Use "--without-normal --with-shared" to allow the default model to be
137 ### shared, for example.
140 AC_MSG_CHECKING(if you want to build shared C-objects)
142 [ --with-shared generate shared C-objects (needed for --with-ada-sharedlib)],
143 [with_shared=$withval],
145 AC_MSG_RESULT($with_shared)
146 test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared"
148 AC_MSG_CHECKING(for specified models)
149 test -z "$cf_list_models" && cf_list_models=normal
150 AC_MSG_RESULT($cf_list_models)
152 ### Use the first model as the default, and save its suffix for use in building
153 ### up test-applications.
154 AC_MSG_CHECKING(for default model)
155 DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
156 AC_MSG_RESULT($DFT_LWR_MODEL)
158 CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
160 AC_SUBST(DFT_LWR_MODEL)dnl the default model ("normal")
161 AC_SUBST(DFT_UPR_MODEL)dnl the default model ("NORMAL")
165 CF_WITH_LIB_PREFIX(cf_prefix)
170 ###############################################################################
172 dnl Not all ports of gcc support the -g option
174 if test X"$CC_G_OPT" = X"" ; then
176 test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT=''
180 AC_MSG_CHECKING(for default loader flags)
181 case $DFT_LWR_MODEL in
182 (normal) LD_MODEL='' ;;
183 (debug) LD_MODEL=$CC_G_OPT ;;
184 (profile) LD_MODEL='-pg';;
185 (shared) LD_MODEL='' ;;
187 AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg)
188 AC_MSG_RESULT($LD_MODEL)
192 # The test/sample programs in the original tree link using rpath option.
193 # Make it optional for packagers.
194 if test -n "$LOCAL_LDFLAGS"
196 AC_MSG_CHECKING(if you want to link sample programs with rpath option)
197 AC_ARG_ENABLE(rpath-link,
198 [ --enable-rpath-link link sample programs with rpath option],
199 [with_rpath_link=$enableval],
200 [with_rpath_link=yes])
201 AC_MSG_RESULT($with_rpath_link)
202 if test "$with_rpath_link" = no
209 ###############################################################################
210 CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
212 ### use option --enable-broken-linker to force on use of broken-linker support
213 AC_MSG_CHECKING(if you want broken-linker support code)
214 AC_ARG_ENABLE(broken_linker,
215 [ --enable-broken_linker compile with broken-linker support code],
216 [with_broken_linker=$enableval],
217 [with_broken_linker=${BROKEN_LINKER:-no}])
218 AC_MSG_RESULT($with_broken_linker)
221 if test "$with_broken_linker" = yes ; then
222 AC_DEFINE(BROKEN_LINKER)
224 elif test "$DFT_LWR_MODEL" = shared ; then
225 case $cf_cv_system_name in
227 AC_DEFINE(BROKEN_LINKER)
229 CF_VERBOSE(cygwin linker is broken anyway)
233 AC_SUBST(BROKEN_LINKER)
235 # Check to define _XOPEN_SOURCE "automatically"
240 ### Enable compiling-in rcs id's
241 AC_MSG_CHECKING(if RCS identifiers should be compiled-in)
243 [ --with-rcs-ids compile-in RCS identifiers],
244 [with_rcs_ids=$withval],
246 AC_MSG_RESULT($with_rcs_ids)
247 test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS,1,[Define to 1 if RCS identifiers should be compiled-in)])
249 ###############################################################################
250 CF_HELP_MESSAGE(Extensions:)
252 ### Note that some functions (such as const) are normally disabled anyway.
253 AC_MSG_CHECKING(if you want to build with function extensions)
254 AC_ARG_ENABLE(ext-funcs,
255 [ --disable-ext-funcs disable function-extensions],
256 [with_ext_funcs=$enableval],
257 [with_ext_funcs=yes])
258 AC_MSG_RESULT($with_ext_funcs)
259 if test "$with_ext_funcs" = yes ; then
261 AC_DEFINE(HAVE_USE_DEFAULT_COLORS,1,[Define to 1 if we have use_default_colors function])
262 AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 if we have ncurses extended functions])
266 AC_SUBST(NCURSES_EXT_FUNCS)
268 ### use option --enable-const to turn on use of const beyond that in XSI.
269 AC_MSG_CHECKING(for extended use of const keyword)
271 [ --enable-const compile with extra/non-standard const],
272 [with_ext_const=$enableval],
274 AC_MSG_RESULT($with_ext_const)
275 NCURSES_CONST='/*nothing*/'
276 if test "$with_ext_const" = yes ; then
279 AC_SUBST(NCURSES_CONST)
281 ###############################################################################
282 # These options are relatively safe to experiment with.
283 CF_HELP_MESSAGE(Development Code:)
284 AC_MSG_CHECKING(if you want all development code)
286 [ --without-develop disable development options],
287 [with_develop=$withval],
289 AC_MSG_RESULT($with_develop)
291 ###############################################################################
292 # These are just experimental, probably should not be in a package:
293 CF_HELP_MESSAGE(Experimental Code:)
295 # This is still experimental (20080329), but should ultimately be moved to
296 # the script-block --with-normal, etc.
299 AC_MSG_CHECKING(if you want to use weak-symbols for pthreads)
300 AC_ARG_ENABLE(weak-symbols,
301 [ --enable-weak-symbols enable weak-symbols for pthreads],
302 [use_weak_symbols=$withval],
303 [use_weak_symbols=no])
304 AC_MSG_RESULT($use_weak_symbols)
305 if test "$use_weak_symbols" = yes ; then
308 cf_cv_weak_symbols=no
311 if test $cf_cv_weak_symbols = yes ; then
312 AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define to 1 to enable weak-symbols for pthreads])
316 if test "$with_pthread" = "yes" ; then
317 AC_DEFINE(USE_PTHREADS,1,[Define to 1 to use the pthreads library])
319 if test $cf_cv_weak_symbols = yes ; then
325 # OpenSUSE is installing ncurses6, using reentrant option.
326 AC_CHECK_FUNC(_nc_TABSIZE,[assume_reentrant=yes], [assume_reentrant=no])
328 # Reentrant code has to be opaque; there's little advantage to making ncurses
329 # opaque outside of that, so there is no --enable-opaque option. We can use
330 # this option without --with-pthreads, but this will be always set for
332 AC_MSG_CHECKING(if you want experimental reentrant code)
333 AC_ARG_ENABLE(reentrant,
334 [ --enable-reentrant compile with experimental reentrant code],
335 [with_reentrant=$enableval],
336 [with_reentrant=$assume_reentrant])
337 AC_MSG_RESULT($with_reentrant)
338 if test "$with_reentrant" = yes ; then
339 cf_cv_enable_reentrant=1
340 if test $cf_cv_weak_symbols = yes ; then
341 CF_REMOVE_LIB(LIBS,$LIBS,pthread)
342 elif test "$assume_reentrant" = no ; then
343 LIB_SUFFIX="t${LIB_SUFFIX}"
345 AC_DEFINE(USE_REENTRANT,1,[Define to 1 to compile with experimental reentrant code])
347 cf_cv_enable_reentrant=0
349 AC_SUBST(cf_cv_enable_reentrant)
351 ### Allow using a different wrap-prefix
352 if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
353 AC_MSG_CHECKING(for prefix used to wrap public variables)
354 AC_ARG_WITH(wrap-prefix,
355 [ --with-wrap-prefix=XXX override prefix used for public variables],
356 [NCURSES_WRAP_PREFIX=$withval],
357 [NCURSES_WRAP_PREFIX=_nc_])
358 AC_MSG_RESULT($NCURSES_WRAP_PREFIX)
360 NCURSES_WRAP_PREFIX=_nc_
362 AC_SUBST(NCURSES_WRAP_PREFIX)
363 AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX",[Define to override _nc_ ncurses internal prefix])
365 ###############################################################################
366 CF_HELP_MESSAGE(Testing/development Options:)
368 ### use option --disable-echo to suppress full display compiling commands
371 ### use option --enable-warnings to turn on all gcc warnings
372 AC_MSG_CHECKING(if you want to see compiler warnings)
373 AC_ARG_ENABLE(warnings,
374 [ --enable-warnings build: turn on GCC compiler warnings],
375 [with_warnings=$enableval])
376 AC_MSG_RESULT($with_warnings)
378 if test "x$with_warnings" = "xyes"; then
379 CF_ADD_ADAFLAGS(-gnatg)
380 CF_GCC_WARNINGS(Wno-unknown-pragmas Wswitch-enum)
384 ### use option --enable-assertions to turn on generation of assertion code
385 AC_MSG_CHECKING(if you want to enable runtime assertions)
386 AC_ARG_ENABLE(assertions,
387 [ --enable-assertions test: turn on generation of assertion code],
388 [with_assertions=$enableval],
389 [with_assertions=no])
390 AC_MSG_RESULT($with_assertions)
393 if test "$with_assertions" = no
395 CPPFLAGS="$CPPFLAGS -DNDEBUG"
397 CF_ADD_ADAFLAGS(-gnata)
401 ### use option --disable-leaks to suppress "permanent" leaks, for testing
402 AC_DEFINE(HAVE_NC_ALLOC_H,1,[Define to 1 if we have nc_alloc.h header])
404 ### use option --enable-expanded to generate certain macros as functions
405 AC_ARG_ENABLE(expanded,
406 [ --enable-expanded test: generate functions for certain macros],
407 [test "$enableval" = yes && AC_DEFINE(NCURSES_EXPANDED,1,[Define to 1 if ncurses macros should be expanded as functions])])
409 ### use option --disable-macros to suppress macros in favor of functions
410 AC_ARG_ENABLE(macros,
411 [ --disable-macros test: use functions rather than macros],
412 [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS,1,[Define to 1 if ncurses macros should be expanded as functions])])
414 # Normally we only add trace() to the debug-library. Allow this to be
415 # extended to all models of the ncurses library:
417 case "$CFLAGS $CPPFLAGS" in
423 AC_MSG_CHECKING(whether to add trace feature to all models)
425 [ --with-trace test: add trace() function to all models of ncurses],
426 [cf_with_trace=$withval],
427 [cf_with_trace=$cf_all_traces])
428 AC_MSG_RESULT($cf_with_trace)
430 if test "$cf_with_trace" = yes ; then
432 CF_ADD_CFLAGS(-DTRACE)
439 CF_DISABLE_GNAT_PROJECTS
441 ### Checks for libraries.
442 case $cf_cv_system_name in
446 AC_CHECK_FUNC(gettimeofday,
447 AC_DEFINE(HAVE_GETTIMEOFDAY),[
449 AC_CHECK_LIB(bsd, gettimeofday,
450 AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday])
451 LIBS="$LIBS -lbsd")])dnl CLIX: bzero, select, gettimeofday
455 ### Checks for header files.
456 AC_CHECK_SIZEOF([signed char], 0)
461 ### checks for compiler characteristics
465 ### Checks for external-data
468 ### Checks for library functions.
471 dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
472 if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then
473 CF_STRIP_G_OPT(CFLAGS)
474 CF_STRIP_G_OPT(CXXFLAGS)
477 CF_HELP_MESSAGE(Ada95 Binding Options:)
479 dnl Check for availability of GNU Ada Translator (GNAT).
480 dnl At the moment we support no other Ada95 compiler.
481 if test "$cf_with_ada" != "no" ; then
483 if test "$cf_cv_prog_gnat_correct" = yes; then
494 cf_ada_package=terminal_interface
495 AC_SUBST(cf_ada_package)
499 CF_WITH_ADA_SHAREDLIB
501 AC_MSG_ERROR(No usable Ada compiler found)
504 AC_MSG_ERROR(The Ada compiler is needed for this package)
507 ################################################################################
511 AC_SUBST(TINFO_LDFLAGS2)
515 ### Construct the list of include-directories to be generated
519 ### Build up pieces for makefile rules
520 AC_MSG_CHECKING(default library suffix)
521 CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl
522 AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("")
523 AC_MSG_RESULT($DFT_ARG_SUFFIX)
525 AC_MSG_CHECKING(default library-dependency suffix)
526 CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_LIB_SUFFIX,DFT_DEP_SUFFIX)dnl
527 AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a")
528 AC_MSG_RESULT($DFT_DEP_SUFFIX)
530 AC_MSG_CHECKING(default object directory)
531 CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl
532 AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj")
533 AC_MSG_RESULT($DFT_OBJ_SUBDIR)
535 ### Set up low-level terminfo dependencies for makefiles.
537 if test "$DFT_LWR_MODEL" = shared ; then
538 case $cf_cv_system_name in
540 # "lib" files have ".dll.a" suffix, "cyg" files have ".dll"
543 # "lib" files have ".dll.a" suffix, "msys-" files have ".dll"
548 USE_CFG_SUFFIX=${DFT_ARG_SUFFIX}
549 AC_SUBST(USE_CFG_SUFFIX)
551 ### Construct the list of subdirectories for which we'll customize makefiles
552 ### with the appropriate compile-rules.
554 SUB_MAKEFILES="gen/adacurses${USE_ARG_SUFFIX}-config:gen/adacurses-config.in"
556 AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR',[Define to override ':' as the library path-separator])
558 ### Now that we're done running tests, add the compiler-warnings, if any
559 CF_ADD_CFLAGS($EXTRA_CFLAGS)
561 ################################################################################
569 dnl for separate build, this is good enough for "sh $(top_srcdir)/misc/shlib"
570 NCURSES_SHLIB2="sh -c"
571 AC_SUBST(NCURSES_SHLIB2)
573 ADA_SUBDIRS="include gen src doc"
574 if test "x$cf_with_tests" != "xno" ; then
575 ADA_SUBDIRS="$ADA_SUBDIRS samples"
577 for cf_dir in $ADA_SUBDIRS
579 SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile"
581 AC_SUBST(ADA_SUBDIRS)
584 AC_SUBST(NCURSES_TREE)
587 AC_SUBST(EXTERNAL_TREE)
589 # match layout used by make-tar.sh
590 ADAHTML_DIR=../doc/ada
591 AC_SUBST(ADAHTML_DIR)
593 if test "x$cross_compiling" = xyes ; then
594 ADAGEN_LDFLAGS='$(CROSS_LDFLAGS)'
596 ADAGEN_LDFLAGS='$(NATIVE_LDFLAGS)'
599 AC_SUBST(ADAGEN_LDFLAGS)
603 doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in \
605 if test -z "$USE_OLD_MAKERULES" ; then
606 $AWK -f $srcdir/mk-1st.awk <$srcdir/src/modules >>src/Makefile
609 ### Special initialization commands, used to pass information from the
610 ### configuration-run into config.status
613 DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
614 DFT_LWR_MODEL="$DFT_LWR_MODEL"
616 LIB_PREFIX="$LIB_PREFIX"
617 LIB_SUFFIX="$LIB_SUFFIX"
619 NCURSES_MAJOR="$NCURSES_MAJOR"
620 NCURSES_MINOR="$NCURSES_MINOR"
621 NCURSES_PATCH="$NCURSES_PATCH"
622 USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
623 cf_cv_abi_version="$cf_cv_abi_version"
624 cf_cv_rel_version="$cf_cv_rel_version"
625 cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
626 cf_cv_shared_soname='$cf_cv_shared_soname'
627 cf_cv_shlib_version="$cf_cv_shlib_version"
628 cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix"
629 cf_cv_system_name="$cf_cv_system_name"
634 ${MAKE:-make} preinstall