1 dnl***************************************************************************
2 dnl Copyright 2018-2019,2020 Thomas E. Dickey *
3 dnl Copyright 2010-2016,2018 Free Software Foundation, Inc. *
5 dnl Permission is hereby granted, free of charge, to any person obtaining a *
6 dnl copy of this software and associated documentation files (the *
7 dnl "Software"), to deal in the Software without restriction, including *
8 dnl without limitation the rights to use, copy, modify, merge, publish, *
9 dnl distribute, distribute with modifications, sublicense, and/or sell *
10 dnl copies of the Software, and to permit persons to whom the Software is *
11 dnl furnished to do so, subject to the following conditions: *
13 dnl The above copyright notice and this permission notice shall be included *
14 dnl in all copies or substantial portions of the Software. *
16 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
17 dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
18 dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
19 dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
20 dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
21 dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
22 dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
24 dnl Except as contained in this notice, the name(s) of the above copyright *
25 dnl holders shall not be used in advertising or otherwise to promote the *
26 dnl sale, use or other dealings in this Software without prior written *
28 dnl***************************************************************************
30 dnl Author: Thomas E. Dickey
32 dnl $Id: configure.in,v 1.79 2020/12/05 21:40:57 tom Exp $
33 dnl Process this file with autoconf to produce a configure script.
35 dnl For additional information, see
36 dnl https://invisible-island.net/autoconf/
37 dnl https://invisible-island.net/autoconf/my-autoconf.html
39 dnl ---------------------------------------------------------------------------
40 AC_PREREQ(2.52.20200111)
41 AC_REVISION($Revision: 1.79 $)
43 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
45 AC_DEFUN([AC_PATH_XTRA],[])dnl ignore dependencies on this
49 CF_HELP_MESSAGE(General Options:)
53 ### Save the given $CFLAGS to allow user-override.
54 cf_user_CFLAGS="$CFLAGS"
56 ### Default install-location
59 ### Checks for programs.
60 CF_PROG_CC(gnatgcc gcc cc)
62 AC_PROG_GCC_TRADITIONAL
63 CF_PROG_CC_C_O(CC,[$CFLAGS $CPPFLAGS])
75 AC_SYS_LONG_FILE_NAMES
77 # if we find pkg-config, check if we should install the ".pc" files.
79 CF_WITH_PKG_CONFIG_LIBDIR
81 AC_MSG_CHECKING(if you want to build test-programs)
83 [ --without-tests suppress build with test-programs],
84 [cf_with_tests=$withval],
86 AC_MSG_RESULT($cf_with_tests)
88 AC_MSG_CHECKING(if we should assume mixed-case filenames)
89 AC_ARG_ENABLE(mixed-case,
90 [ --enable-mixed-case tic should assume mixed-case filenames],
91 [enable_mixedcase=$enableval],
92 [enable_mixedcase=auto])
93 AC_MSG_RESULT($enable_mixedcase)
94 if test "$enable_mixedcase" = "auto" ; then
95 CF_MIXEDCASE_FILENAMES
97 cf_cv_mixedcase=$enable_mixedcase
98 if test "$enable_mixedcase" = "yes" ; then
99 AC_DEFINE(MIXEDCASE_FILENAMES)
103 # do this after mixed-case option (tags/TAGS is not as important as tic).
108 dnl These are standard among *NIX systems, but not when cross-compiling
109 AC_CHECK_TOOL(RANLIB, ranlib, ':')
110 AC_CHECK_TOOL(LD, ld, ld)
111 AC_CHECK_TOOL(AR, ar, ar)
115 dnl Special option for use by system-builders: the install-prefix is used to
116 dnl adjust the location into which the actual install is done, so that an
117 dnl archive can be built without modifying the host system's configuration.
118 AC_MSG_CHECKING(if you have specified an install-prefix)
119 AC_ARG_WITH(install-prefix,
120 [ --with-install-prefix prefixes actual install-location ($DESTDIR)],
124 (*) DESTDIR="$withval"
127 AC_MSG_RESULT($DESTDIR)
130 ###############################################################################
131 CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:)
132 # If we're cross-compiling, allow the user to override the tools and their
133 # options. The configure script is oriented toward identifying the host
134 # compiler, etc., but we need a build compiler to generate parts of the source.
137 ###############################################################################
138 CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
140 ### Options to allow the user to specify the set of libraries which are used.
141 ### Use "--without-normal --with-shared" to allow the default model to be
142 ### shared, for example.
145 AC_MSG_CHECKING(if you want to build shared C-objects)
147 [ --with-shared generate shared C-objects (needed for --with-ada-sharedlib)],
148 [with_shared=$withval],
150 AC_MSG_RESULT($with_shared)
151 test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared"
153 AC_MSG_CHECKING(for specified models)
154 test -z "$cf_list_models" && cf_list_models=normal
155 AC_MSG_RESULT($cf_list_models)
157 ### Use the first model as the default, and save its suffix for use in building
158 ### up test-applications.
159 AC_MSG_CHECKING(for default model)
160 DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
161 AC_MSG_RESULT($DFT_LWR_MODEL)
163 CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
165 AC_SUBST(DFT_LWR_MODEL)dnl the default model ("normal")
166 AC_SUBST(DFT_UPR_MODEL)dnl the default model ("NORMAL")
170 CF_WITH_LIB_PREFIX(cf_prefix)
175 ###############################################################################
177 dnl Not all ports of gcc support the -g option
179 if test X"$CC_G_OPT" = X"" ; then
181 test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT=''
185 AC_MSG_CHECKING(for default loader flags)
186 case $DFT_LWR_MODEL in
187 (normal) LD_MODEL='' ;;
188 (debug) LD_MODEL=$CC_G_OPT ;;
189 (profile) LD_MODEL='-pg';;
190 (shared) LD_MODEL='' ;;
192 AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg)
193 AC_MSG_RESULT($LD_MODEL)
197 # The test/sample programs in the original tree link using rpath option.
198 # Make it optional for packagers.
199 if test -n "$LOCAL_LDFLAGS"
201 AC_MSG_CHECKING(if you want to link sample programs with rpath option)
202 AC_ARG_ENABLE(rpath-link,
203 [ --enable-rpath-link link sample programs with rpath option],
204 [with_rpath_link=$enableval],
205 [with_rpath_link=yes])
206 AC_MSG_RESULT($with_rpath_link)
207 if test "$with_rpath_link" = no
214 ###############################################################################
215 CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
217 ### use option --enable-broken-linker to force on use of broken-linker support
218 CF_ENABLE_BROKEN_LINKER
220 # Check to define _XOPEN_SOURCE "automatically"
225 ### Enable compiling-in rcs id's
226 AC_MSG_CHECKING(if RCS identifiers should be compiled-in)
228 [ --with-rcs-ids compile-in RCS identifiers],
229 [with_rcs_ids=$withval],
231 AC_MSG_RESULT($with_rcs_ids)
232 test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS,1,[Define to 1 if RCS identifiers should be compiled-in)])
234 ###############################################################################
235 CF_HELP_MESSAGE(Extensions:)
237 ### Note that some functions (such as const) are normally disabled anyway.
238 AC_MSG_CHECKING(if you want to build with function extensions)
239 AC_ARG_ENABLE(ext-funcs,
240 [ --disable-ext-funcs disable function-extensions],
241 [with_ext_funcs=$enableval],
242 [with_ext_funcs=yes])
243 AC_MSG_RESULT($with_ext_funcs)
244 if test "$with_ext_funcs" = yes ; then
246 AC_DEFINE(HAVE_USE_DEFAULT_COLORS,1,[Define to 1 if we have use_default_colors function])
247 AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 if we have ncurses extended functions])
251 AC_SUBST(NCURSES_EXT_FUNCS)
253 ### use option --enable-const to turn on use of const beyond that in XSI.
254 AC_MSG_CHECKING(for extended use of const keyword)
256 [ --enable-const compile with extra/non-standard const],
257 [with_ext_const=$enableval],
259 AC_MSG_RESULT($with_ext_const)
260 NCURSES_CONST='/*nothing*/'
261 if test "$with_ext_const" = yes ; then
264 AC_SUBST(NCURSES_CONST)
266 ###############################################################################
267 # These options are relatively safe to experiment with.
268 CF_HELP_MESSAGE(Development Code:)
269 AC_MSG_CHECKING(if you want all development code)
271 [ --without-develop disable development options],
272 [with_develop=$withval],
274 AC_MSG_RESULT($with_develop)
276 ###############################################################################
277 # These are just experimental, probably should not be in a package:
278 CF_HELP_MESSAGE(Experimental Code:)
280 # This is still experimental (20080329), but should ultimately be moved to
281 # the script-block --with-normal, etc.
284 AC_MSG_CHECKING(if you want to use weak-symbols for pthreads)
285 AC_ARG_ENABLE(weak-symbols,
286 [ --enable-weak-symbols enable weak-symbols for pthreads],
287 [use_weak_symbols=$withval],
288 [use_weak_symbols=no])
289 AC_MSG_RESULT($use_weak_symbols)
290 if test "$use_weak_symbols" = yes ; then
293 cf_cv_weak_symbols=no
296 if test $cf_cv_weak_symbols = yes ; then
297 AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define to 1 to enable weak-symbols for pthreads])
301 if test "$with_pthread" = "yes" ; then
302 AC_DEFINE(USE_PTHREADS,1,[Define to 1 to use the pthreads library])
304 if test $cf_cv_weak_symbols = yes ; then
310 # OpenSUSE is installing ncurses6, using reentrant option.
311 AC_CHECK_FUNC(_nc_TABSIZE,[assume_reentrant=yes], [assume_reentrant=no])
313 # Reentrant code has to be opaque; there's little advantage to making ncurses
314 # opaque outside of that, so there is no --enable-opaque option. We can use
315 # this option without --with-pthreads, but this will be always set for
317 AC_MSG_CHECKING(if you want experimental reentrant code)
318 AC_ARG_ENABLE(reentrant,
319 [ --enable-reentrant compile with experimental reentrant code],
320 [with_reentrant=$enableval],
321 [with_reentrant=$assume_reentrant])
322 AC_MSG_RESULT($with_reentrant)
323 if test "$with_reentrant" = yes ; then
324 cf_cv_enable_reentrant=1
325 if test $cf_cv_weak_symbols = yes ; then
326 CF_REMOVE_LIB(LIBS,$LIBS,pthread)
327 elif test "$assume_reentrant" = no ; then
328 LIB_SUFFIX="t${LIB_SUFFIX}"
330 AC_DEFINE(USE_REENTRANT,1,[Define to 1 to compile with experimental reentrant code])
332 cf_cv_enable_reentrant=0
334 AC_SUBST(cf_cv_enable_reentrant)
336 ### Allow using a different wrap-prefix
337 if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
338 AC_MSG_CHECKING(for prefix used to wrap public variables)
339 AC_ARG_WITH(wrap-prefix,
340 [ --with-wrap-prefix=XXX override prefix used for public variables],
341 [NCURSES_WRAP_PREFIX=$withval],
342 [NCURSES_WRAP_PREFIX=_nc_])
343 AC_MSG_RESULT($NCURSES_WRAP_PREFIX)
345 NCURSES_WRAP_PREFIX=_nc_
347 AC_SUBST(NCURSES_WRAP_PREFIX)
348 AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX",[Define to override _nc_ ncurses internal prefix])
350 ###############################################################################
351 CF_HELP_MESSAGE(Testing/development Options:)
353 ### use option --disable-echo to suppress full display compiling commands
356 ### use option --enable-warnings to turn on all gcc warnings
357 AC_MSG_CHECKING(if you want to see compiler warnings)
358 AC_ARG_ENABLE(warnings,
359 [ --enable-warnings build: turn on GCC compiler warnings],
360 [with_warnings=$enableval])
361 AC_MSG_RESULT($with_warnings)
363 CF_ENABLE_WARNINGS(Wno-unknown-pragmas Wswitch-enum,yes)
364 if test "x$with_warnings" = "xyes"; then
365 CF_ADD_ADAFLAGS(-gnatg)
368 ### use option --enable-assertions to turn on generation of assertion code
369 AC_MSG_CHECKING(if you want to enable runtime assertions)
370 AC_ARG_ENABLE(assertions,
371 [ --enable-assertions test: turn on generation of assertion code],
372 [with_assertions=$enableval],
373 [with_assertions=no])
374 AC_MSG_RESULT($with_assertions)
377 if test "$with_assertions" = no
379 CPPFLAGS="$CPPFLAGS -DNDEBUG"
381 CF_ADD_ADAFLAGS(-gnata)
385 ### use option --disable-leaks to suppress "permanent" leaks, for testing
386 AC_DEFINE(HAVE_NC_ALLOC_H,1,[Define to 1 if we have nc_alloc.h header])
388 ### use option --enable-expanded to generate certain macros as functions
389 AC_ARG_ENABLE(expanded,
390 [ --enable-expanded test: generate functions for certain macros],
391 [test "$enableval" = yes && AC_DEFINE(NCURSES_EXPANDED,1,[Define to 1 if ncurses macros should be expanded as functions])])
393 ### use option --disable-macros to suppress macros in favor of functions
394 AC_ARG_ENABLE(macros,
395 [ --disable-macros test: use functions rather than macros],
396 [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS,1,[Define to 1 if ncurses macros should be expanded as functions])])
398 # Normally we only add trace() to the debug-library. Allow this to be
399 # extended to all models of the ncurses library:
401 case "$CFLAGS $CPPFLAGS" in
407 AC_MSG_CHECKING(whether to add trace feature to all models)
409 [ --with-trace test: add trace() function to all models of ncurses],
410 [cf_with_trace=$withval],
411 [cf_with_trace=$cf_all_traces])
412 AC_MSG_RESULT($cf_with_trace)
414 if test "$cf_with_trace" = yes ; then
416 CF_ADD_CFLAGS(-DTRACE)
423 CF_DISABLE_GNAT_PROJECTS
425 ### Checks for libraries.
426 case $cf_cv_system_name in
430 AC_CHECK_FUNC(gettimeofday,
431 AC_DEFINE(HAVE_GETTIMEOFDAY),[
433 AC_CHECK_LIB(bsd, gettimeofday,
434 AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday])
435 LIBS="$LIBS -lbsd")])dnl CLIX: bzero, select, gettimeofday
439 ### Checks for header files.
440 AC_CHECK_SIZEOF([signed char])
445 ### checks for compiler characteristics
449 ### Checks for external-data
452 ### Checks for library functions.
455 dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
456 if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then
457 CF_STRIP_G_OPT(CFLAGS)
458 CF_STRIP_G_OPT(CXXFLAGS)
461 CF_HELP_MESSAGE(Ada95 Binding Options:)
463 dnl Check for availability of GNU Ada Translator (GNAT).
464 dnl At the moment we support no other Ada95 compiler.
465 if test "$cf_with_ada" != "no" ; then
467 if test "$cf_cv_prog_gnat_correct" = yes; then
478 cf_ada_package=terminal_interface
479 AC_SUBST(cf_ada_package)
483 CF_WITH_ADA_SHAREDLIB
485 # allow the Ada binding to be renamed
486 CF_WITH_ADA_LIBNAME(AdaCurses)
488 AC_MSG_ERROR(No usable Ada compiler found)
491 AC_MSG_ERROR(The Ada compiler is needed for this package)
494 ################################################################################
498 AC_SUBST(TINFO_LDFLAGS2)
502 ### Construct the list of include-directories to be generated
506 ### Build up pieces for makefile rules
507 AC_MSG_CHECKING(default library suffix)
508 CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl
509 AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("")
510 AC_MSG_RESULT($DFT_ARG_SUFFIX)
512 AC_MSG_CHECKING(default library-dependency suffix)
513 CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_LIB_SUFFIX,DFT_DEP_SUFFIX)dnl
514 AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a")
515 AC_MSG_RESULT($DFT_DEP_SUFFIX)
517 AC_MSG_CHECKING(default object directory)
518 CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl
519 AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj")
520 AC_MSG_RESULT($DFT_OBJ_SUBDIR)
522 ### Set up low-level terminfo dependencies for makefiles.
524 if test "$DFT_LWR_MODEL" = shared ; then
525 case $cf_cv_system_name in
527 # "lib" files have ".dll.a" suffix, "cyg" files have ".dll"
530 # "lib" files have ".dll.a" suffix, "msys-" files have ".dll"
535 USE_ARG_SUFFIX=${DFT_ARG_SUFFIX}
536 AC_SUBST(USE_ARG_SUFFIX)
538 USE_LIB_SUFFIX=${DFT_ARG_SUFFIX}
539 AC_SUBST(USE_LIB_SUFFIX)
541 USE_CFG_SUFFIX=${DFT_ARG_SUFFIX}
542 AC_SUBST(USE_CFG_SUFFIX)
544 ### Construct the list of subdirectories for which we'll customize makefiles
545 ### with the appropriate compile-rules.
547 SUB_MAKEFILES="gen/adacurses${USE_ARG_SUFFIX}-config:gen/adacurses-config.in"
549 AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR',[Define to override ':' as the library path-separator])
551 ################################################################################
559 dnl for separate build, this is good enough for "sh $(top_srcdir)/misc/shlib"
560 NCURSES_SHLIB2="sh -c"
561 AC_SUBST(NCURSES_SHLIB2)
563 ADA_SUBDIRS="include gen src doc"
564 if test "x$cf_with_tests" != "xno" ; then
565 ADA_SUBDIRS="$ADA_SUBDIRS samples"
567 for cf_dir in $ADA_SUBDIRS
569 SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile"
571 AC_SUBST(ADA_SUBDIRS)
574 AC_SUBST(NCURSES_TREE)
577 AC_SUBST(EXTERNAL_TREE)
579 # match layout used by make-tar.sh
580 ADAHTML_DIR=../doc/ada
581 AC_SUBST(ADAHTML_DIR)
583 if test "x$cross_compiling" = xyes ; then
584 ADAGEN_LDFLAGS='$(CROSS_LDFLAGS)'
586 ADAGEN_LDFLAGS='$(NATIVE_LDFLAGS)'
589 AC_SUBST(ADAGEN_LDFLAGS)
593 src/library.gpr:src/library.gpr.in \
594 doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in \
596 if test -z "$USE_OLD_MAKERULES" ; then
597 $AWK -f $srcdir/mk-1st.awk <$srcdir/src/modules >>src/Makefile
600 ### Special initialization commands, used to pass information from the
601 ### configuration-run into config.status
604 DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
605 DFT_LWR_MODEL="$DFT_LWR_MODEL"
607 LIB_PREFIX="$LIB_PREFIX"
608 LIB_SUFFIX="$LIB_SUFFIX"
610 NCURSES_MAJOR="$NCURSES_MAJOR"
611 NCURSES_MINOR="$NCURSES_MINOR"
612 NCURSES_PATCH="$NCURSES_PATCH"
613 USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
614 cf_cv_VERSION_GNATMAKE=$cf_cv_VERSION_GNATMAKE
615 cf_cv_VERSION_GPRBUILD=$cf_cv_VERSION_GPRBUILD
616 cf_cv_abi_version="$cf_cv_abi_version"
617 cf_cv_rel_version="$cf_cv_rel_version"
618 cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
619 cf_cv_shared_soname='$cf_cv_shared_soname'
620 cf_cv_shlib_version="$cf_cv_shlib_version"
621 cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix"
622 cf_cv_system_name="$cf_cv_system_name"
627 ${MAKE:-make} preinstall