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.16 2010/07/03 21:18:11 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.16 $)
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 we should assume mixed-case filenames)
102 AC_ARG_ENABLE(mixed-case,
103 [ --enable-mixed-case tic should assume mixed-case filenames],
104 [enable_mixedcase=$enableval],
105 [enable_mixedcase=auto])
106 AC_MSG_RESULT($enable_mixedcase)
107 if test "$enable_mixedcase" = "auto" ; then
108 CF_MIXEDCASE_FILENAMES
110 cf_cv_mixedcase=$enable_mixedcase
111 if test "$enable_mixedcase" = "yes" ; then
112 AC_DEFINE(MIXEDCASE_FILENAMES)
116 # do this after mixed-case option (tags/TAGS is not as important as tic).
121 dnl These are standard among *NIX systems, but not when cross-compiling
122 AC_CHECK_TOOL(RANLIB, ranlib, ':')
123 AC_CHECK_TOOL(LD, ld, ld)
124 AC_CHECK_TOOL(AR, ar, ar)
127 dnl Special option for use by system-builders: the install-prefix is used to
128 dnl adjust the location into which the actual install is done, so that an
129 dnl archive can be built without modifying the host system's configuration.
130 AC_MSG_CHECKING(if you have specified an install-prefix)
131 AC_ARG_WITH(install-prefix,
132 [ --with-install-prefix prefixes actual install-location ($DESTDIR)],
133 [case "$withval" in #(vi
136 *) DESTDIR="$withval"
139 AC_MSG_RESULT($DESTDIR)
142 ###############################################################################
143 CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:)
144 # If we're cross-compiling, allow the user to override the tools and their
145 # options. The configure script is oriented toward identifying the host
146 # compiler, etc., but we need a build compiler to generate parts of the source.
149 ###############################################################################
150 CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
152 ### Options to allow the user to specify the set of libraries which are used.
153 ### Use "--without-normal --with-shared" to allow the default model to be
154 ### shared, for example.
156 AC_MSG_CHECKING(for specified models)
157 test -z "$cf_list_models" && cf_list_models=normal
158 AC_MSG_RESULT($cf_list_models)
160 ### Use the first model as the default, and save its suffix for use in building
161 ### up test-applications.
162 AC_MSG_CHECKING(for default model)
163 DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
164 AC_MSG_RESULT($DFT_LWR_MODEL)
166 CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
168 AC_SUBST(DFT_LWR_MODEL)dnl the default model ("normal")
169 AC_SUBST(DFT_UPR_MODEL)dnl the default model ("NORMAL")
173 CF_LIB_PREFIX(cf_prefix)
174 LIB_PREFIX=$cf_prefix
180 ###############################################################################
182 dnl Not all ports of gcc support the -g option
184 if test X"$CC_G_OPT" = X"" ; then
186 test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT=''
190 AC_MSG_CHECKING(for default loader flags)
191 case $DFT_LWR_MODEL in
192 normal) LD_MODEL='' ;;
193 debug) LD_MODEL=$CC_G_OPT ;;
194 profile) LD_MODEL='-pg';;
195 shared) LD_MODEL='' ;;
197 AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg)
198 AC_MSG_RESULT($LD_MODEL)
202 ###############################################################################
203 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 #(vi
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)
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)
257 AC_DEFINE(NCURSES_EXT_FUNCS)
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)
311 if test "$with_pthread" = "yes" ; then
312 AC_DEFINE(USE_PTHREADS)
314 if test $cf_cv_weak_symbols = yes ; then
320 # Reentrant code has to be opaque; there's little advantage to making ncurses
321 # opaque outside of that, so there is no --enable-opaque option. We can use
322 # this option without --with-pthreads, but this will be always set for
324 AC_MSG_CHECKING(if you want experimental reentrant code)
325 AC_ARG_ENABLE(reentrant,
326 [ --enable-reentrant compile with experimental reentrant code],
327 [with_reentrant=$enableval],
329 AC_MSG_RESULT($with_reentrant)
330 if test "$with_reentrant" = yes ; then
331 cf_cv_enable_reentrant=1
332 if test $cf_cv_weak_symbols = yes ; then
333 CF_REMOVE_LIB(LIBS,$LIBS,pthread)
335 LIB_SUFFIX="t${LIB_SUFFIX}"
337 AC_DEFINE(USE_REENTRANT)
339 cf_cv_enable_reentrant=0
341 AC_SUBST(cf_cv_enable_reentrant)
343 ### Allow using a different wrap-prefix
344 if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
345 AC_MSG_CHECKING(for prefix used to wrap public variables)
346 AC_ARG_WITH(wrap-prefix,
347 [ --with-wrap-prefix=XXX override prefix used for public variables],
348 [NCURSES_WRAP_PREFIX=$withval],
349 [NCURSES_WRAP_PREFIX=_nc_])
350 AC_MSG_RESULT($NCURSES_WRAP_PREFIX)
352 NCURSES_WRAP_PREFIX=_nc_
354 AC_SUBST(NCURSES_WRAP_PREFIX)
355 AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX")
357 ###############################################################################
358 CF_HELP_MESSAGE(Testing/development Options:)
360 ### use option --disable-echo to suppress full display compiling commands
361 AC_MSG_CHECKING(if you want to display full commands during build)
363 [ --enable-echo build: display "compiling" commands (default)],
364 [with_echo=$enableval],
366 if test "$with_echo" = yes; then
369 ECHO_LINK='@ echo linking $@ ... ;'
371 AC_MSG_RESULT($with_echo)
374 ### use option --enable-warnings to turn on all gcc warnings
375 AC_MSG_CHECKING(if you want to see compiler warnings)
376 AC_ARG_ENABLE(warnings,
377 [ --enable-warnings build: turn on GCC compiler warnings],
378 [with_warnings=$enableval])
379 AC_MSG_RESULT($with_warnings)
381 if test "x$with_warnings" = "xyes"; then
382 ADAFLAGS="$ADAFLAGS -gnatg"
383 CF_GCC_WARNINGS(Wdeclaration-after-statement Wextra Wno-unknown-pragmas Wswitch-enum)
387 ### use option --enable-assertions to turn on generation of assertion code
388 AC_MSG_CHECKING(if you want to enable runtime assertions)
389 AC_ARG_ENABLE(assertions,
390 [ --enable-assertions test: turn on generation of assertion code],
391 [with_assertions=$enableval],
392 [with_assertions=no])
393 AC_MSG_RESULT($with_assertions)
396 if test "$with_assertions" = no
399 CPPFLAGS="$CPPFLAGS -DNDEBUG"
401 ADAFLAGS="$ADAFLAGS -gnata"
405 ### use option --disable-leaks to suppress "permanent" leaks, for testing
406 AC_DEFINE(HAVE_NC_ALLOC_H)
408 ### use option --enable-expanded to generate certain macros as functions
409 AC_ARG_ENABLE(expanded,
410 [ --enable-expanded test: generate functions for certain macros],
411 [test "$enableval" = yes && AC_DEFINE(NCURSES_EXPANDED)])
413 ### use option --disable-macros to suppress macros in favor of functions
414 AC_ARG_ENABLE(macros,
415 [ --disable-macros test: use functions rather than macros],
416 [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS)])
418 # Normally we only add trace() to the debug-library. Allow this to be
419 # extended to all models of the ncurses library:
421 case "$CFLAGS $CPPFLAGS" in
427 AC_MSG_CHECKING(whether to add trace feature to all models)
429 [ --with-trace test: add trace() function to all models of ncurses],
430 [cf_with_trace=$withval],
431 [cf_with_trace=$cf_all_traces])
432 AC_MSG_RESULT($cf_with_trace)
434 if test "$cf_with_trace" = yes ; then
436 CF_ADD_CFLAGS(-DTRACE)
443 ### Checks for libraries.
444 case $cf_cv_system_name in #(vi
448 AC_CHECK_FUNC(gettimeofday,
449 AC_DEFINE(HAVE_GETTIMEOFDAY),[
451 AC_CHECK_LIB(bsd, gettimeofday,
452 AC_DEFINE(HAVE_GETTIMEOFDAY)
453 LIBS="$LIBS -lbsd")])dnl CLIX: bzero, select, gettimeofday
457 ### Checks for header files.
462 ### checks for compiler characteristics
466 ### Checks for external-data
469 ### Checks for library functions.
474 dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
475 if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then
476 CF_STRIP_G_OPT(CFLAGS)
477 CF_STRIP_G_OPT(CXXFLAGS)
480 CF_HELP_MESSAGE(Ada95 Binding Options:)
482 dnl Check for availability of GNU Ada Translator (GNAT).
483 dnl At the moment we support no other Ada95 compiler.
484 if test "$cf_with_ada" != "no" ; then
486 if test "$cf_cv_prog_gnat_correct" = yes; then
487 CF_ADD_ADAFLAGS(-O3 -gnatpn)
493 cf_ada_package=terminal_interface
494 AC_SUBST(cf_ada_package)
498 CF_WITH_ADA_SHAREDLIB
502 ################################################################################
506 AC_SUBST(TINFO_ARGS2)
508 ### Construct the list of include-directories to be generated
512 ### Build up pieces for makefile rules
513 AC_MSG_CHECKING(default library suffix)
514 CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl
515 AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("")
516 AC_MSG_RESULT($DFT_ARG_SUFFIX)
518 AC_MSG_CHECKING(default library-dependency suffix)
519 CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_LIB_SUFFIX,DFT_DEP_SUFFIX)dnl
520 AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a")
521 AC_MSG_RESULT($DFT_DEP_SUFFIX)
523 AC_MSG_CHECKING(default object directory)
524 CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl
525 AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj")
526 AC_MSG_RESULT($DFT_OBJ_SUBDIR)
528 ### Set up low-level terminfo dependencies for makefiles.
530 if test "$DFT_LWR_MODEL" = shared ; then
531 case $cf_cv_system_name in #(vi
533 # "lib" files have ".dll.a" suffix, "cyg" files have ".dll"
538 ### Construct the list of subdirectories for which we'll customize makefiles
539 ### with the appropriate compile-rules.
541 SUB_MAKEFILES="gen/adacurses${DFT_ARG_SUFFIX}-config:gen/adacurses-config.in"
543 AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR')
545 ### Now that we're done running tests, add the compiler-warnings, if any
546 CF_ADD_CFLAGS($EXTRA_CFLAGS)
548 ################################################################################
550 if test x"$enable_pc_files" = xyes ; then \
551 SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in"
556 AC_SUBST(MAKE_PC_FILES)
557 AC_SUBST(cross_compiling)
559 ################################################################################
567 dnl for separate build, this is good enough for "sh $(top_srcdir)/misc/shlib"
568 NCURSES_SHLIB2="sh -c"
569 AC_SUBST(NCURSES_SHLIB2)
571 dnl ditto for "$(top_srcdir)/tar-copy.sh"
572 for cf_path in . .. ../..
574 if test -f $cf_path/tar-copy.sh
576 NCURSES_COPY2=`echo 'sh $(top_srcdir)/'$cf_path'/tar-copy.sh' | sed -e 's,/./,/,'`
580 AC_SUBST(NCURSES_COPY2)
582 ADA_SUBDIRS="include gen src samples"
583 for cf_dir in $ADA_SUBDIRS
585 SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile"
587 AC_SUBST(ADA_SUBDIRS)
590 AC_SUBST(NCURSES_TREE)
593 AC_SUBST(EXTERNAL_TREE)
598 if test -z "$USE_OLD_MAKERULES" ; then
599 $AWK -f $srcdir/mk-1st.awk <$srcdir/src/modules >>src/Makefile
602 ### Special initialization commands, used to pass information from the
603 ### configuration-run into config.status
606 DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
607 DFT_LWR_MODEL="$DFT_LWR_MODEL"
608 ECHO_LINK="$ECHO_LINK"
610 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