1 dnl***************************************************************************
2 dnl Copyright (c) 2010 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.21 2010/11/06 22:11:21 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.13.20020210)
38 AC_REVISION($Revision: 1.21 $)
40 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
44 CF_CHECK_CACHE([AC_CANONICAL_SYSTEM])
45 AC_ARG_WITH(system-type,
46 [ --with-system-type=XXX test: override derived host system-type],
47 [AC_MSG_WARN(overriding system type to $withval)
48 cf_cv_system_name=$withval])
50 ### Save the given $CFLAGS to allow user-override.
51 cf_user_CFLAGS="$CFLAGS"
53 ### Default install-location
56 ### Checks for programs.
61 AC_PROG_GCC_TRADITIONAL
74 AC_SYS_LONG_FILE_NAMES
76 # if we find pkg-config, check if we should install the ".pc" files.
79 if test "$PKG_CONFIG" != no ; then
80 AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG)
82 # Leave this as something that can be overridden in the environment.
83 if test -z "$PKG_CONFIG_LIBDIR" ; then
84 PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'`/lib/pkgconfig
86 PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'`
87 if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then
88 AC_ARG_ENABLE(pc-files,
89 [ --enable-pc-files generate and install .pc files for pkg-config],
90 [enable_pc_files=$enableval],
92 AC_MSG_RESULT($enable_pc_files)
95 AC_MSG_WARN(did not find library $PKG_CONFIG_LIBDIR)
99 AC_SUBST(PKG_CONFIG_LIBDIR)
101 AC_MSG_CHECKING(if you want to build test-programs)
103 [ --without-tests suppress build with test-programs],
104 [cf_with_tests=$withval],
106 AC_MSG_RESULT($cf_with_tests)
108 AC_MSG_CHECKING(if we should assume mixed-case filenames)
109 AC_ARG_ENABLE(mixed-case,
110 [ --enable-mixed-case tic should assume mixed-case filenames],
111 [enable_mixedcase=$enableval],
112 [enable_mixedcase=auto])
113 AC_MSG_RESULT($enable_mixedcase)
114 if test "$enable_mixedcase" = "auto" ; then
115 CF_MIXEDCASE_FILENAMES
117 cf_cv_mixedcase=$enable_mixedcase
118 if test "$enable_mixedcase" = "yes" ; then
119 AC_DEFINE(MIXEDCASE_FILENAMES)
123 # do this after mixed-case option (tags/TAGS is not as important as tic).
128 dnl These are standard among *NIX systems, but not when cross-compiling
129 AC_CHECK_TOOL(RANLIB, ranlib, ':')
130 AC_CHECK_TOOL(LD, ld, ld)
131 AC_CHECK_TOOL(AR, ar, ar)
134 dnl Special option for use by system-builders: the install-prefix is used to
135 dnl adjust the location into which the actual install is done, so that an
136 dnl archive can be built without modifying the host system's configuration.
137 AC_MSG_CHECKING(if you have specified an install-prefix)
138 AC_ARG_WITH(install-prefix,
139 [ --with-install-prefix prefixes actual install-location ($DESTDIR)],
140 [case "$withval" in #(vi
143 *) DESTDIR="$withval"
146 AC_MSG_RESULT($DESTDIR)
149 ###############################################################################
150 CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:)
151 # If we're cross-compiling, allow the user to override the tools and their
152 # options. The configure script is oriented toward identifying the host
153 # compiler, etc., but we need a build compiler to generate parts of the source.
156 ###############################################################################
157 CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
159 ### Options to allow the user to specify the set of libraries which are used.
160 ### Use "--without-normal --with-shared" to allow the default model to be
161 ### shared, for example.
163 AC_MSG_CHECKING(for specified models)
164 test -z "$cf_list_models" && cf_list_models=normal
165 AC_MSG_RESULT($cf_list_models)
167 ### Use the first model as the default, and save its suffix for use in building
168 ### up test-applications.
169 AC_MSG_CHECKING(for default model)
170 DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
171 AC_MSG_RESULT($DFT_LWR_MODEL)
173 CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
175 AC_SUBST(DFT_LWR_MODEL)dnl the default model ("normal")
176 AC_SUBST(DFT_UPR_MODEL)dnl the default model ("NORMAL")
180 CF_LIB_PREFIX(cf_prefix)
181 LIB_PREFIX=$cf_prefix
187 ###############################################################################
189 dnl Not all ports of gcc support the -g option
191 if test X"$CC_G_OPT" = X"" ; then
193 test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT=''
197 AC_MSG_CHECKING(for default loader flags)
198 case $DFT_LWR_MODEL in
199 normal) LD_MODEL='' ;;
200 debug) LD_MODEL=$CC_G_OPT ;;
201 profile) LD_MODEL='-pg';;
202 shared) LD_MODEL='' ;;
204 AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg)
205 AC_MSG_RESULT($LD_MODEL)
209 ###############################################################################
210 CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
214 ### use option --enable-broken-linker to force on use of broken-linker support
215 AC_MSG_CHECKING(if you want broken-linker support code)
216 AC_ARG_ENABLE(broken_linker,
217 [ --enable-broken_linker compile with broken-linker support code],
218 [with_broken_linker=$enableval],
219 [with_broken_linker=${BROKEN_LINKER:-no}])
220 AC_MSG_RESULT($with_broken_linker)
223 if test "$with_broken_linker" = yes ; then
224 AC_DEFINE(BROKEN_LINKER)
226 elif test "$DFT_LWR_MODEL" = shared ; then
227 case $cf_cv_system_name in #(vi
229 AC_DEFINE(BROKEN_LINKER)
231 CF_VERBOSE(cygwin linker is broken anyway)
235 AC_SUBST(BROKEN_LINKER)
237 # Check to define _XOPEN_SOURCE "automatically"
242 ### Enable compiling-in rcs id's
243 AC_MSG_CHECKING(if RCS identifiers should be compiled-in)
245 [ --with-rcs-ids compile-in RCS identifiers],
246 [with_rcs_ids=$withval],
248 AC_MSG_RESULT($with_rcs_ids)
249 test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS)
251 ###############################################################################
252 CF_HELP_MESSAGE(Extensions:)
254 ### Note that some functions (such as const) are normally disabled anyway.
255 AC_MSG_CHECKING(if you want to build with function extensions)
256 AC_ARG_ENABLE(ext-funcs,
257 [ --disable-ext-funcs disable function-extensions],
258 [with_ext_funcs=$enableval],
259 [with_ext_funcs=yes])
260 AC_MSG_RESULT($with_ext_funcs)
261 if test "$with_ext_funcs" = yes ; then
263 AC_DEFINE(HAVE_USE_DEFAULT_COLORS)
264 AC_DEFINE(NCURSES_EXT_FUNCS)
268 AC_SUBST(NCURSES_EXT_FUNCS)
270 ### use option --enable-const to turn on use of const beyond that in XSI.
271 AC_MSG_CHECKING(for extended use of const keyword)
273 [ --enable-const compile with extra/non-standard const],
274 [with_ext_const=$enableval],
276 AC_MSG_RESULT($with_ext_const)
277 NCURSES_CONST='/*nothing*/'
278 if test "$with_ext_const" = yes ; then
281 AC_SUBST(NCURSES_CONST)
283 ###############################################################################
284 # These options are relatively safe to experiment with.
285 CF_HELP_MESSAGE(Development Code:)
286 AC_MSG_CHECKING(if you want all development code)
288 [ --without-develop disable development options],
289 [with_develop=$withval],
291 AC_MSG_RESULT($with_develop)
293 ###############################################################################
294 # These are just experimental, probably should not be in a package:
295 CF_HELP_MESSAGE(Experimental Code:)
297 # This is still experimental (20080329), but should ultimately be moved to
298 # the script-block --with-normal, etc.
301 AC_MSG_CHECKING(if you want to use weak-symbols for pthreads)
302 AC_ARG_ENABLE(weak-symbols,
303 [ --enable-weak-symbols enable weak-symbols for pthreads],
304 [use_weak_symbols=$withval],
305 [use_weak_symbols=no])
306 AC_MSG_RESULT($use_weak_symbols)
307 if test "$use_weak_symbols" = yes ; then
310 cf_cv_weak_symbols=no
313 if test $cf_cv_weak_symbols = yes ; then
314 AC_DEFINE(USE_WEAK_SYMBOLS)
318 if test "$with_pthread" = "yes" ; then
319 AC_DEFINE(USE_PTHREADS)
321 if test $cf_cv_weak_symbols = yes ; then
327 # Reentrant code has to be opaque; there's little advantage to making ncurses
328 # opaque outside of that, so there is no --enable-opaque option. We can use
329 # this option without --with-pthreads, but this will be always set for
331 AC_MSG_CHECKING(if you want experimental reentrant code)
332 AC_ARG_ENABLE(reentrant,
333 [ --enable-reentrant compile with experimental reentrant code],
334 [with_reentrant=$enableval],
336 AC_MSG_RESULT($with_reentrant)
337 if test "$with_reentrant" = yes ; then
338 cf_cv_enable_reentrant=1
339 if test $cf_cv_weak_symbols = yes ; then
340 CF_REMOVE_LIB(LIBS,$LIBS,pthread)
342 LIB_SUFFIX="t${LIB_SUFFIX}"
344 AC_DEFINE(USE_REENTRANT)
346 cf_cv_enable_reentrant=0
348 AC_SUBST(cf_cv_enable_reentrant)
350 ### Allow using a different wrap-prefix
351 if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
352 AC_MSG_CHECKING(for prefix used to wrap public variables)
353 AC_ARG_WITH(wrap-prefix,
354 [ --with-wrap-prefix=XXX override prefix used for public variables],
355 [NCURSES_WRAP_PREFIX=$withval],
356 [NCURSES_WRAP_PREFIX=_nc_])
357 AC_MSG_RESULT($NCURSES_WRAP_PREFIX)
359 NCURSES_WRAP_PREFIX=_nc_
361 AC_SUBST(NCURSES_WRAP_PREFIX)
362 AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX")
364 ###############################################################################
365 CF_HELP_MESSAGE(Testing/development Options:)
367 ### use option --disable-echo to suppress full display compiling commands
368 AC_MSG_CHECKING(if you want to display full commands during build)
370 [ --enable-echo build: display "compiling" commands (default)],
371 [with_echo=$enableval],
373 if test "$with_echo" = yes; then
376 ECHO_LINK='@ echo linking $@ ... ;'
378 AC_MSG_RESULT($with_echo)
381 ### use option --enable-warnings to turn on all gcc warnings
382 AC_MSG_CHECKING(if you want to see compiler warnings)
383 AC_ARG_ENABLE(warnings,
384 [ --enable-warnings build: turn on GCC compiler warnings],
385 [with_warnings=$enableval])
386 AC_MSG_RESULT($with_warnings)
388 if test "x$with_warnings" = "xyes"; then
389 ADAFLAGS="$ADAFLAGS -gnatg"
390 CF_GCC_WARNINGS(Wdeclaration-after-statement Wextra Wno-unknown-pragmas Wswitch-enum)
394 ### use option --enable-assertions to turn on generation of assertion code
395 AC_MSG_CHECKING(if you want to enable runtime assertions)
396 AC_ARG_ENABLE(assertions,
397 [ --enable-assertions test: turn on generation of assertion code],
398 [with_assertions=$enableval],
399 [with_assertions=no])
400 AC_MSG_RESULT($with_assertions)
403 if test "$with_assertions" = no
406 CPPFLAGS="$CPPFLAGS -DNDEBUG"
408 ADAFLAGS="$ADAFLAGS -gnata"
412 ### use option --disable-leaks to suppress "permanent" leaks, for testing
413 AC_DEFINE(HAVE_NC_ALLOC_H)
415 ### use option --enable-expanded to generate certain macros as functions
416 AC_ARG_ENABLE(expanded,
417 [ --enable-expanded test: generate functions for certain macros],
418 [test "$enableval" = yes && AC_DEFINE(NCURSES_EXPANDED)])
420 ### use option --disable-macros to suppress macros in favor of functions
421 AC_ARG_ENABLE(macros,
422 [ --disable-macros test: use functions rather than macros],
423 [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS)])
425 # Normally we only add trace() to the debug-library. Allow this to be
426 # extended to all models of the ncurses library:
428 case "$CFLAGS $CPPFLAGS" in
434 AC_MSG_CHECKING(whether to add trace feature to all models)
436 [ --with-trace test: add trace() function to all models of ncurses],
437 [cf_with_trace=$withval],
438 [cf_with_trace=$cf_all_traces])
439 AC_MSG_RESULT($cf_with_trace)
441 if test "$cf_with_trace" = yes ; then
443 CF_ADD_CFLAGS(-DTRACE)
450 ### Checks for libraries.
451 case $cf_cv_system_name in #(vi
455 AC_CHECK_FUNC(gettimeofday,
456 AC_DEFINE(HAVE_GETTIMEOFDAY),[
458 AC_CHECK_LIB(bsd, gettimeofday,
459 AC_DEFINE(HAVE_GETTIMEOFDAY)
460 LIBS="$LIBS -lbsd")])dnl CLIX: bzero, select, gettimeofday
464 ### Checks for header files.
469 ### checks for compiler characteristics
473 ### Checks for external-data
476 ### Checks for library functions.
481 dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
482 if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then
483 CF_STRIP_G_OPT(CFLAGS)
484 CF_STRIP_G_OPT(CXXFLAGS)
487 CF_HELP_MESSAGE(Ada95 Binding Options:)
489 dnl Check for availability of GNU Ada Translator (GNAT).
490 dnl At the moment we support no other Ada95 compiler.
491 if test "$cf_with_ada" != "no" ; then
493 if test "$cf_cv_prog_gnat_correct" = yes; then
494 CF_ADD_ADAFLAGS(-O3 -gnatpn)
500 cf_ada_package=terminal_interface
501 AC_SUBST(cf_ada_package)
505 CF_WITH_ADA_SHAREDLIB
509 ################################################################################
513 AC_SUBST(TINFO_ARGS2)
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 #(vi
540 # "lib" files have ".dll.a" suffix, "cyg" files have ".dll"
545 ### Construct the list of subdirectories for which we'll customize makefiles
546 ### with the appropriate compile-rules.
548 SUB_MAKEFILES="gen/adacurses${DFT_ARG_SUFFIX}-config:gen/adacurses-config.in"
550 AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR')
552 ### Now that we're done running tests, add the compiler-warnings, if any
553 CF_ADD_CFLAGS($EXTRA_CFLAGS)
555 ################################################################################
557 if test x"$enable_pc_files" = xyes ; then \
558 SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in"
563 AC_SUBST(MAKE_PC_FILES)
564 AC_SUBST(cross_compiling)
566 ################################################################################
574 dnl for separate build, this is good enough for "sh $(top_srcdir)/misc/shlib"
575 NCURSES_SHLIB2="sh -c"
576 AC_SUBST(NCURSES_SHLIB2)
578 ADA_SUBDIRS="include gen src"
579 if test "x$cf_with_tests" != "xno" ; then
580 ADA_SUBDIRS="$ADA_SUBDIRS samples"
582 for cf_dir in $ADA_SUBDIRS
584 SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile"
586 AC_SUBST(ADA_SUBDIRS)
589 AC_SUBST(NCURSES_TREE)
592 AC_SUBST(EXTERNAL_TREE)
597 if test -z "$USE_OLD_MAKERULES" ; then
598 $AWK -f $srcdir/mk-1st.awk <$srcdir/src/modules >>src/Makefile
601 ### Special initialization commands, used to pass information from the
602 ### configuration-run into config.status
605 DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
606 DFT_LWR_MODEL="$DFT_LWR_MODEL"
607 ECHO_LINK="$ECHO_LINK"
609 LIB_SUFFIX="$LIB_SUFFIX"
611 NCURSES_MAJOR="$NCURSES_MAJOR"
612 NCURSES_MINOR="$NCURSES_MINOR"
613 NCURSES_PATCH="$NCURSES_PATCH"
614 USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
615 cf_cv_abi_version="$cf_cv_abi_version"
616 cf_cv_rel_version="$cf_cv_rel_version"
617 cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
618 cf_cv_shared_soname='$cf_cv_shared_soname'
619 cf_cv_shlib_version="$cf_cv_shlib_version"
620 cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix"
621 cf_cv_system_name="$cf_cv_system_name"
626 ${MAKE:-make} preinstall