1 dnl***************************************************************************
2 dnl Copyright (c) 2010-2014,2015 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.60 2015/04/18 18:49:57 tom Exp $
32 dnl Process this file with autoconf to produce a configure script.
34 dnl See http://invisible-island.net/autoconf/ for additional information.
36 dnl ---------------------------------------------------------------------------
37 AC_PREREQ(2.52.20030208)
38 AC_REVISION($Revision: 1.60 $)
40 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
46 ### Save the given $CFLAGS to allow user-override.
47 cf_user_CFLAGS="$CFLAGS"
49 ### Default install-location
52 ### Checks for programs.
53 CF_PROG_CC(gnatgcc gcc cc)
55 AC_PROG_GCC_TRADITIONAL
65 AC_SYS_LONG_FILE_NAMES
67 # if we find pkg-config, check if we should install the ".pc" files.
69 CF_WITH_PKG_CONFIG_LIBDIR
71 AC_MSG_CHECKING(if you want to build test-programs)
73 [ --without-tests suppress build with test-programs],
74 [cf_with_tests=$withval],
76 AC_MSG_RESULT($cf_with_tests)
78 AC_MSG_CHECKING(if we should assume mixed-case filenames)
79 AC_ARG_ENABLE(mixed-case,
80 [ --enable-mixed-case tic should assume mixed-case filenames],
81 [enable_mixedcase=$enableval],
82 [enable_mixedcase=auto])
83 AC_MSG_RESULT($enable_mixedcase)
84 if test "$enable_mixedcase" = "auto" ; then
85 CF_MIXEDCASE_FILENAMES
87 cf_cv_mixedcase=$enable_mixedcase
88 if test "$enable_mixedcase" = "yes" ; then
89 AC_DEFINE(MIXEDCASE_FILENAMES)
93 # do this after mixed-case option (tags/TAGS is not as important as tic).
98 dnl These are standard among *NIX systems, but not when cross-compiling
99 AC_CHECK_TOOL(RANLIB, ranlib, ':')
100 AC_CHECK_TOOL(LD, ld, ld)
101 AC_CHECK_TOOL(AR, ar, ar)
105 dnl Special option for use by system-builders: the install-prefix is used to
106 dnl adjust the location into which the actual install is done, so that an
107 dnl archive can be built without modifying the host system's configuration.
108 AC_MSG_CHECKING(if you have specified an install-prefix)
109 AC_ARG_WITH(install-prefix,
110 [ --with-install-prefix prefixes actual install-location ($DESTDIR)],
114 (*) DESTDIR="$withval"
117 AC_MSG_RESULT($DESTDIR)
120 ###############################################################################
121 CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:)
122 # If we're cross-compiling, allow the user to override the tools and their
123 # options. The configure script is oriented toward identifying the host
124 # compiler, etc., but we need a build compiler to generate parts of the source.
127 ###############################################################################
128 CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
130 ### Options to allow the user to specify the set of libraries which are used.
131 ### Use "--without-normal --with-shared" to allow the default model to be
132 ### shared, for example.
135 AC_MSG_CHECKING(if you want to build shared C-objects)
137 [ --with-shared generate shared C-objects (needed for --with-ada-sharedlib)],
138 [with_shared=$withval],
140 AC_MSG_RESULT($with_shared)
141 test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared"
143 AC_MSG_CHECKING(for specified models)
144 test -z "$cf_list_models" && cf_list_models=normal
145 AC_MSG_RESULT($cf_list_models)
147 ### Use the first model as the default, and save its suffix for use in building
148 ### up test-applications.
149 AC_MSG_CHECKING(for default model)
150 DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
151 AC_MSG_RESULT($DFT_LWR_MODEL)
153 CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
155 AC_SUBST(DFT_LWR_MODEL)dnl the default model ("normal")
156 AC_SUBST(DFT_UPR_MODEL)dnl the default model ("NORMAL")
160 CF_WITH_LIB_PREFIX(cf_prefix)
165 ###############################################################################
167 dnl Not all ports of gcc support the -g option
169 if test X"$CC_G_OPT" = X"" ; then
171 test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT=''
175 AC_MSG_CHECKING(for default loader flags)
176 case $DFT_LWR_MODEL in
177 (normal) LD_MODEL='' ;;
178 (debug) LD_MODEL=$CC_G_OPT ;;
179 (profile) LD_MODEL='-pg';;
180 (shared) LD_MODEL='' ;;
182 AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg)
183 AC_MSG_RESULT($LD_MODEL)
187 # The test/sample programs in the original tree link using rpath option.
188 # Make it optional for packagers.
189 if test -n "$LOCAL_LDFLAGS"
191 AC_MSG_CHECKING(if you want to link sample programs with rpath option)
192 AC_ARG_ENABLE(rpath-link,
193 [ --enable-rpath-link link sample programs with rpath option],
194 [with_rpath_link=$enableval],
195 [with_rpath_link=yes])
196 AC_MSG_RESULT($with_rpath_link)
197 if test "$with_rpath_link" = no
204 ###############################################################################
205 CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
207 ### use option --enable-broken-linker to force on use of broken-linker support
208 AC_MSG_CHECKING(if you want broken-linker support code)
209 AC_ARG_ENABLE(broken_linker,
210 [ --enable-broken_linker compile with broken-linker support code],
211 [with_broken_linker=$enableval],
212 [with_broken_linker=${BROKEN_LINKER:-no}])
213 AC_MSG_RESULT($with_broken_linker)
216 if test "$with_broken_linker" = yes ; then
217 AC_DEFINE(BROKEN_LINKER)
219 elif test "$DFT_LWR_MODEL" = shared ; then
220 case $cf_cv_system_name in
222 AC_DEFINE(BROKEN_LINKER)
224 CF_VERBOSE(cygwin linker is broken anyway)
228 AC_SUBST(BROKEN_LINKER)
230 # Check to define _XOPEN_SOURCE "automatically"
235 ### Enable compiling-in rcs id's
236 AC_MSG_CHECKING(if RCS identifiers should be compiled-in)
238 [ --with-rcs-ids compile-in RCS identifiers],
239 [with_rcs_ids=$withval],
241 AC_MSG_RESULT($with_rcs_ids)
242 test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS,1,[Define to 1 if RCS identifiers should be compiled-in)])
244 ###############################################################################
245 CF_HELP_MESSAGE(Extensions:)
247 ### Note that some functions (such as const) are normally disabled anyway.
248 AC_MSG_CHECKING(if you want to build with function extensions)
249 AC_ARG_ENABLE(ext-funcs,
250 [ --disable-ext-funcs disable function-extensions],
251 [with_ext_funcs=$enableval],
252 [with_ext_funcs=yes])
253 AC_MSG_RESULT($with_ext_funcs)
254 if test "$with_ext_funcs" = yes ; then
256 AC_DEFINE(HAVE_USE_DEFAULT_COLORS,1,[Define to 1 if we have use_default_colors function])
257 AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 if we have ncurses extended functions])
261 AC_SUBST(NCURSES_EXT_FUNCS)
263 ### use option --enable-const to turn on use of const beyond that in XSI.
264 AC_MSG_CHECKING(for extended use of const keyword)
266 [ --enable-const compile with extra/non-standard const],
267 [with_ext_const=$enableval],
269 AC_MSG_RESULT($with_ext_const)
270 NCURSES_CONST='/*nothing*/'
271 if test "$with_ext_const" = yes ; then
274 AC_SUBST(NCURSES_CONST)
276 ###############################################################################
277 # These options are relatively safe to experiment with.
278 CF_HELP_MESSAGE(Development Code:)
279 AC_MSG_CHECKING(if you want all development code)
281 [ --without-develop disable development options],
282 [with_develop=$withval],
284 AC_MSG_RESULT($with_develop)
286 ###############################################################################
287 # These are just experimental, probably should not be in a package:
288 CF_HELP_MESSAGE(Experimental Code:)
290 # This is still experimental (20080329), but should ultimately be moved to
291 # the script-block --with-normal, etc.
294 AC_MSG_CHECKING(if you want to use weak-symbols for pthreads)
295 AC_ARG_ENABLE(weak-symbols,
296 [ --enable-weak-symbols enable weak-symbols for pthreads],
297 [use_weak_symbols=$withval],
298 [use_weak_symbols=no])
299 AC_MSG_RESULT($use_weak_symbols)
300 if test "$use_weak_symbols" = yes ; then
303 cf_cv_weak_symbols=no
306 if test $cf_cv_weak_symbols = yes ; then
307 AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define to 1 to enable weak-symbols for pthreads])
311 if test "$with_pthread" = "yes" ; then
312 AC_DEFINE(USE_PTHREADS,1,[Define to 1 to use the pthreads library])
314 if test $cf_cv_weak_symbols = yes ; then
320 # OpenSUSE is installing ncurses6, using reentrant option.
321 AC_CHECK_FUNC(_nc_TABSIZE,[assume_reentrant=yes], [assume_reentrant=no])
323 # Reentrant code has to be opaque; there's little advantage to making ncurses
324 # opaque outside of that, so there is no --enable-opaque option. We can use
325 # this option without --with-pthreads, but this will be always set for
327 AC_MSG_CHECKING(if you want experimental reentrant code)
328 AC_ARG_ENABLE(reentrant,
329 [ --enable-reentrant compile with experimental reentrant code],
330 [with_reentrant=$enableval],
331 [with_reentrant=$assume_reentrant])
332 AC_MSG_RESULT($with_reentrant)
333 if test "$with_reentrant" = yes ; then
334 cf_cv_enable_reentrant=1
335 if test $cf_cv_weak_symbols = yes ; then
336 CF_REMOVE_LIB(LIBS,$LIBS,pthread)
337 elif test "$assume_reentrant" = no ; then
338 LIB_SUFFIX="t${LIB_SUFFIX}"
340 AC_DEFINE(USE_REENTRANT,1,[Define to 1 to compile with experimental reentrant code])
342 cf_cv_enable_reentrant=0
344 AC_SUBST(cf_cv_enable_reentrant)
346 ### Allow using a different wrap-prefix
347 if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
348 AC_MSG_CHECKING(for prefix used to wrap public variables)
349 AC_ARG_WITH(wrap-prefix,
350 [ --with-wrap-prefix=XXX override prefix used for public variables],
351 [NCURSES_WRAP_PREFIX=$withval],
352 [NCURSES_WRAP_PREFIX=_nc_])
353 AC_MSG_RESULT($NCURSES_WRAP_PREFIX)
355 NCURSES_WRAP_PREFIX=_nc_
357 AC_SUBST(NCURSES_WRAP_PREFIX)
358 AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX",[Define to override _nc_ ncurses internal prefix])
360 ###############################################################################
361 CF_HELP_MESSAGE(Testing/development Options:)
363 ### use option --disable-echo to suppress full display compiling commands
366 ### use option --enable-warnings to turn on all gcc warnings
367 AC_MSG_CHECKING(if you want to see compiler warnings)
368 AC_ARG_ENABLE(warnings,
369 [ --enable-warnings build: turn on GCC compiler warnings],
370 [with_warnings=$enableval])
371 AC_MSG_RESULT($with_warnings)
373 if test "x$with_warnings" = "xyes"; then
374 CF_ADD_ADAFLAGS(-gnatg)
375 CF_GCC_WARNINGS(Wno-unknown-pragmas Wswitch-enum)
379 ### use option --enable-assertions to turn on generation of assertion code
380 AC_MSG_CHECKING(if you want to enable runtime assertions)
381 AC_ARG_ENABLE(assertions,
382 [ --enable-assertions test: turn on generation of assertion code],
383 [with_assertions=$enableval],
384 [with_assertions=no])
385 AC_MSG_RESULT($with_assertions)
388 if test "$with_assertions" = no
390 CPPFLAGS="$CPPFLAGS -DNDEBUG"
392 CF_ADD_ADAFLAGS(-gnata)
396 ### use option --disable-leaks to suppress "permanent" leaks, for testing
397 AC_DEFINE(HAVE_NC_ALLOC_H,1,[Define to 1 if we have nc_alloc.h header])
399 ### use option --enable-expanded to generate certain macros as functions
400 AC_ARG_ENABLE(expanded,
401 [ --enable-expanded test: generate functions for certain macros],
402 [test "$enableval" = yes && AC_DEFINE(NCURSES_EXPANDED,1,[Define to 1 if ncurses macros should be expanded as functions])])
404 ### use option --disable-macros to suppress macros in favor of functions
405 AC_ARG_ENABLE(macros,
406 [ --disable-macros test: use functions rather than macros],
407 [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS,1,[Define to 1 if ncurses macros should be expanded as functions])])
409 # Normally we only add trace() to the debug-library. Allow this to be
410 # extended to all models of the ncurses library:
412 case "$CFLAGS $CPPFLAGS" in
418 AC_MSG_CHECKING(whether to add trace feature to all models)
420 [ --with-trace test: add trace() function to all models of ncurses],
421 [cf_with_trace=$withval],
422 [cf_with_trace=$cf_all_traces])
423 AC_MSG_RESULT($cf_with_trace)
425 if test "$cf_with_trace" = yes ; then
427 CF_ADD_CFLAGS(-DTRACE)
434 CF_DISABLE_GNAT_PROJECTS
436 ### Checks for libraries.
437 case $cf_cv_system_name in
441 AC_CHECK_FUNC(gettimeofday,
442 AC_DEFINE(HAVE_GETTIMEOFDAY),[
444 AC_CHECK_LIB(bsd, gettimeofday,
445 AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday])
446 LIBS="$LIBS -lbsd")])dnl CLIX: bzero, select, gettimeofday
450 ### Checks for header files.
455 ### checks for compiler characteristics
459 ### Checks for external-data
462 ### Checks for library functions.
465 dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
466 if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then
467 CF_STRIP_G_OPT(CFLAGS)
468 CF_STRIP_G_OPT(CXXFLAGS)
471 CF_HELP_MESSAGE(Ada95 Binding Options:)
473 dnl Check for availability of GNU Ada Translator (GNAT).
474 dnl At the moment we support no other Ada95 compiler.
475 if test "$cf_with_ada" != "no" ; then
477 if test "$cf_cv_prog_gnat_correct" = yes; then
488 cf_ada_package=terminal_interface
489 AC_SUBST(cf_ada_package)
493 CF_WITH_ADA_SHAREDLIB
495 AC_MSG_ERROR(No usable Ada compiler found)
498 AC_MSG_ERROR(The Ada compiler is needed for this package)
501 ################################################################################
505 AC_SUBST(TINFO_LDFLAGS2)
509 ### Construct the list of include-directories to be generated
513 ### Build up pieces for makefile rules
514 AC_MSG_CHECKING(default library suffix)
515 CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl
516 AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("")
517 AC_MSG_RESULT($DFT_ARG_SUFFIX)
519 AC_MSG_CHECKING(default library-dependency suffix)
520 CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_LIB_SUFFIX,DFT_DEP_SUFFIX)dnl
521 AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a")
522 AC_MSG_RESULT($DFT_DEP_SUFFIX)
524 AC_MSG_CHECKING(default object directory)
525 CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl
526 AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj")
527 AC_MSG_RESULT($DFT_OBJ_SUBDIR)
529 ### Set up low-level terminfo dependencies for makefiles.
531 if test "$DFT_LWR_MODEL" = shared ; then
532 case $cf_cv_system_name in
534 # "lib" files have ".dll.a" suffix, "cyg" files have ".dll"
537 # "lib" files have ".dll.a" suffix, "msys-" files have ".dll"
542 USE_CFG_SUFFIX=${DFT_ARG_SUFFIX}
543 AC_SUBST(USE_CFG_SUFFIX)
545 ### Construct the list of subdirectories for which we'll customize makefiles
546 ### with the appropriate compile-rules.
548 SUB_MAKEFILES="gen/adacurses${USE_ARG_SUFFIX}-config:gen/adacurses-config.in"
550 AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR',[Define to override ':' as the library path-separator])
552 ### Now that we're done running tests, add the compiler-warnings, if any
553 CF_ADD_CFLAGS($EXTRA_CFLAGS)
555 ################################################################################
563 dnl for separate build, this is good enough for "sh $(top_srcdir)/misc/shlib"
564 NCURSES_SHLIB2="sh -c"
565 AC_SUBST(NCURSES_SHLIB2)
567 ADA_SUBDIRS="include gen src doc"
568 if test "x$cf_with_tests" != "xno" ; then
569 ADA_SUBDIRS="$ADA_SUBDIRS samples"
571 for cf_dir in $ADA_SUBDIRS
573 SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile"
575 AC_SUBST(ADA_SUBDIRS)
578 AC_SUBST(NCURSES_TREE)
581 AC_SUBST(EXTERNAL_TREE)
583 # match layout used by make-tar.sh
584 ADAHTML_DIR=../doc/ada
585 AC_SUBST(ADAHTML_DIR)
589 doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in \
591 if test -z "$USE_OLD_MAKERULES" ; then
592 $AWK -f $srcdir/mk-1st.awk <$srcdir/src/modules >>src/Makefile
595 ### Special initialization commands, used to pass information from the
596 ### configuration-run into config.status
599 DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
600 DFT_LWR_MODEL="$DFT_LWR_MODEL"
602 LIB_PREFIX="$LIB_PREFIX"
603 LIB_SUFFIX="$LIB_SUFFIX"
605 NCURSES_MAJOR="$NCURSES_MAJOR"
606 NCURSES_MINOR="$NCURSES_MINOR"
607 NCURSES_PATCH="$NCURSES_PATCH"
608 USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
609 cf_cv_abi_version="$cf_cv_abi_version"
610 cf_cv_rel_version="$cf_cv_rel_version"
611 cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
612 cf_cv_shared_soname='$cf_cv_shared_soname'
613 cf_cv_shlib_version="$cf_cv_shlib_version"
614 cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix"
615 cf_cv_system_name="$cf_cv_system_name"
620 ${MAKE:-make} preinstall