]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - configure.in
ncurses 6.2 - patch 20200711
[ncurses.git] / configure.in
index 889261af2efb0d36a1ea5972ce04757af814f940..d64cb1c1ea4f2fd1d00ebb7b32209ba711db2cdb 100644 (file)
@@ -1,5 +1,6 @@
 dnl***************************************************************************
-dnl Copyright (c) 1998-2018,2019 Free Software Foundation, Inc.              *
+dnl Copyright 2018-2019,2020 Thomas E. Dickey                                *
+dnl Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
 dnl copy of this software and associated documentation files (the            *
@@ -28,17 +29,21 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey 1995-on
 dnl
-dnl $Id: configure.in,v 1.689 2019/09/07 20:06:52 tom Exp $
+dnl $Id: configure.in,v 1.711 2020/07/11 20:18:40 tom Exp $
 dnl Process this file with autoconf to produce a configure script.
 dnl
-dnl See https://invisible-island.net/autoconf/ for additional information.
+dnl For additional information, see
+dnl     https://invisible-island.net/autoconf/
+dnl     https://invisible-island.net/autoconf/my-autoconf.html
 dnl
 dnl ---------------------------------------------------------------------------
-AC_PREREQ(2.52.20170501)
-AC_REVISION($Revision: 1.689 $)
+AC_PREREQ(2.52.20200111)
+AC_REVISION($Revision: 1.711 $)
 AC_INIT(ncurses/base/lib_initscr.c)
 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
 
+AC_DEFUN([AC_PATH_XTRA],[])dnl ignore dependencies on this
+
 CF_TOP_BUILDDIR
 CF_SUBST_NCURSES_VERSION
 CF_VERSION_INFO(NCURSES,ncurses)
@@ -140,9 +145,9 @@ fi
 
 CF_GXX_VERSION
 case $GXX_VERSION in
-(1*|2.[[0-6]]*)
-       # GXX=""; CXX=""; ac_cv_prog_gxx=no
-       # cf_cxx_library=no
+([[1-9]][[0-9]].*)
+       ;;
+(1.*|2.[[0-6]]*)
        AC_MSG_WARN(templates do not work)
        ;;
 esac
@@ -538,6 +543,23 @@ if test "$DFT_LWR_MODEL" = "shared" && test "x$cf_cv_enable_rpath" != xno; then
        CF_DISABLE_RPATH_HACK
 fi
 
+### Depending on the system, someone may use rpath to build ncurses but not
+# want users of the package to rely upon that feature.  Give those people an
+# option to suppress that detail from EXTRA_LDFLAGS.
+EXTRA_PKG_LDFLAGS="$EXTRA_LDFLAGS"
+if test -n "$EXTRA_PKG_LDFLAGS"
+then
+       AC_MSG_CHECKING(if you want to disable extra LDFLAGS for package-scripts)
+       CF_ARG_DISABLE(pkg-ldflags,
+               [  --disable-pkg-ldflags   disable extra LDFLAGS for package-scripts],
+               [disable_pkg_ldflags=yes],
+               [disable_pkg_ldflags=no],
+               no)
+       AC_MSG_RESULT($disable_pkg_ldflags)
+       test "$disable_pkg_ldflags" = yes && EXTRA_PKG_LDFLAGS=
+fi
+AC_SUBST(EXTRA_PKG_LDFLAGS)
+
 ###############################################################################
 CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
 
@@ -852,27 +874,7 @@ test "x$with_links" = xyes && AC_DEFINE(USE_LINKS,1,[Define to 1 if hardlinks sh
 test "x$with_symlinks" = xyes && AC_DEFINE(USE_SYMLINKS,1,[Define to 1 if symbolic links should be used in terminfo database])
 
 ###   use option --enable-broken-linker to force on use of broken-linker support
-AC_MSG_CHECKING(if you want broken-linker support code)
-AC_ARG_ENABLE(broken_linker,
-       [  --enable-broken_linker  compile with broken-linker support code],
-       [with_broken_linker=$enableval],
-       [with_broken_linker=${BROKEN_LINKER:-no}])
-AC_MSG_RESULT($with_broken_linker)
-
-BROKEN_LINKER=0
-if test "x$with_broken_linker" = xyes ; then
-       AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules])
-       BROKEN_LINKER=1
-elif test "$DFT_LWR_MODEL" = shared ; then
-       case $cf_cv_system_name in
-       (cygwin*)
-               AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules])
-               BROKEN_LINKER=1
-               CF_VERBOSE(cygwin linker is broken anyway)
-               ;;
-       esac
-fi
-AC_SUBST(BROKEN_LINKER)
+CF_ENABLE_BROKEN_LINKER
 
 ###   use option --enable-bsdpad to have tputs process BSD-style prefix padding
 AC_MSG_CHECKING(if tputs should process BSD-style prefix padding)
@@ -1065,7 +1067,7 @@ AC_ARG_WITH(ccharw-max,
 AC_MSG_RESULT($NCURSES_CCHARW_MAX)
 AC_SUBST(NCURSES_CCHARW_MAX)
 
-AC_CHECK_SIZEOF([signed char], 0)
+AC_CHECK_SIZEOF([signed char])
 if test "$ac_cv_sizeof_signed_char" = 1 ; then
        NCURSES_SBOOL="signed char"
 else
@@ -1462,6 +1464,38 @@ AC_ARG_ENABLE(colorfgbg,
 AC_MSG_RESULT($with_colorfgbg)
 test "x$with_colorfgbg" = xyes && AC_DEFINE(USE_COLORFGBG,1,[Define to 1 to compile-in experimental $COLORFGBG code])
 
+###   use option --enable-fvisibility to turn on use of gcc-specific feature
+AC_MSG_CHECKING(if you want to use gcc -fvisibility option)
+AC_ARG_ENABLE(fvisibility,
+       [  --enable-fvisibility    compile with -fvisibility=hidden],
+       [cf_with_fvisibility=$enableval],
+       [cf_with_fvisibility=no])
+AC_MSG_RESULT($cf_with_fvisibility)
+
+NCURSES_IMPEXP=
+NCURSES_CXX_IMPEXP=
+if test "x$cf_with_fvisibility" = xyes; then
+       CF_CHECK_FVISIBILITY($CC,CFLAGS,cf_cv_fvisibility_hidden)
+       if test "x$cf_cv_fvisibility_hidden" = xyes
+       then
+               CF_ADD_CFLAGS([-fvisibility=hidden])
+               NCURSES_IMPEXP="__attribute__ ((visibility(\"default\")))"
+       fi
+       if test -n "$CXX"
+       then
+               AC_LANG_PUSH(C++)
+               CF_CHECK_FVISIBILITY($CXX,CXXFLAGS,cf_cv_fvisibility_hidden2)
+               if test "x$cf_cv_fvisibility_hidden2" = xyes
+               then
+                       CF_ADD_CXXFLAGS([-fvisibility=hidden])
+                       NCURSES_CXX_IMPEXP="__attribute__ ((visibility(\"default\")))"
+               fi
+               AC_LANG_POP
+       fi
+fi
+AC_SUBST(NCURSES_IMPEXP)
+AC_SUBST(NCURSES_CXX_IMPEXP)
+
 ###   use option --enable-interop to turn on use of bindings used for interop
 AC_MSG_CHECKING(if you want interop bindings)
 AC_ARG_ENABLE(interop,
@@ -1616,7 +1650,7 @@ CF_DISABLE_GNAT_PROJECTS
 case $cf_cv_system_name in
 (*mingw32*|*mingw64*)
        CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN"
-       LIBS=" -lpsapi $LIBS"
+       # Note: WINVER may be a problem with Windows 10
        ;;
 (*)
 AC_CHECK_FUNC(gettimeofday,
@@ -1727,6 +1761,7 @@ setenv \
 setvbuf \
 sigaction \
 sigvec \
+snprintf \
 strdup \
 strstr \
 sysconf \
@@ -1814,7 +1849,7 @@ if test -n "$CXX" ; then
        CF_PROG_CC_C_O(CXX,[$CXXFLAGS $CPPFLAGS])
 
        case $GXX_VERSION in
-       (1*|2.[0-6]*)
+       (1.*|2.[[0-6]]*|[[1-9]][[0-9]].*)
                cf_cxx_library=yes
                ;;
        (*-2.7*|2.7*)
@@ -1934,6 +1969,16 @@ fi
 # do this "late" to avoid conflict with header-checks
 if test "x$with_widec" = xyes ; then
        AC_CHECK_SIZEOF(wchar_t)
+       # cross-compiling to mingw can run into the problem that attempting to
+       # link with the regex library fails, causing the test to not set this to
+       # a number.  "recent" autoconf does not address this problem either -TD
+       if test -z "$ac_cv_sizeof_wchar_t"
+       then
+               CF_VERBOSE(test failed (assume 2))
+               sed /SIZEOF_WCHAR_T/d confdefs.h >confdefs.tmp
+               mv confdefs.tmp confdefs.h
+               echo "#define SIZEOF_WCHAR_T 2" >>confdefs.h
+       fi
 fi
 
 ### Construct the ncurses library-subsets, if any, from this set of keywords:
@@ -2186,6 +2231,17 @@ fi
 fi
 WITH_OVERWRITE=$with_overwrite
 
+### At least on MinGW a shared library build without libtool
+### requires adding the additional libs to the link list.
+case $cf_cv_system_name in
+(*mingw32*|*mingw64*)
+       if test "$DFT_LWR_MODEL" != "libtool"; then
+          SHLIB_LIST="$SHLIB_LIST ${LIBS}"
+       fi
+       ;;
+*)     ;;
+esac
+
 AC_SUBST(WITH_OVERWRITE)
 AC_SUBST(TICS_LIST)
 AC_SUBST(TINFO_LIST)
@@ -2198,6 +2254,12 @@ AC_SUBST(NCURSES_TREE)
 ### predefined stuff for the test programs
 AC_DEFINE(HAVE_SLK_COLOR,1,[Define to 1 if we have slk_color for test-programs])
 
+# pkgsrc uses these
+CF_WITH_LIB_BASENAME(FORM_NAME,form)
+CF_WITH_LIB_BASENAME(MENU_NAME,menu)
+CF_WITH_LIB_BASENAME(PANEL_NAME,panel)
+CF_WITH_LIB_BASENAME(CXX_NAME,cxx,ncurses++)
+
 ### Construct the list of subdirectories for which we'll customize makefiles
 ### with the appropriate compile-rules.
 
@@ -2251,17 +2313,6 @@ AC_SUBST(MAKE_TESTS)
 ADAHTML_DIR=../../doc/html/ada
 AC_SUBST(ADAHTML_DIR)
 
-# these could be configurable, but are not currently
-PANEL_NAME=panel
-MENU_NAME=menu
-FORM_NAME=form
-CXX_NAME=ncurses++
-
-AC_SUBST(PANEL_NAME)
-AC_SUBST(MENU_NAME)
-AC_SUBST(FORM_NAME)
-AC_SUBST(CXX_NAME)
-
 # workaround for OS/2 (20151017)
 case $cf_cv_system_name in
 (os2*)
@@ -2391,6 +2442,9 @@ AC_SUBST(ADAGEN_LDFLAGS)
 AC_SUBST(CHECK_BUILD)
 AC_SUBST(PRIVATE_LIBS)
 
+# This is used for the *-config script and *.pc data files.
+CF_LD_SEARCHPATH
+
 AC_DEFINE(HAVE_CURSES_DATA_BOOLNAMES,1,[definition needed for in-tree build of tack])
 
 AC_OUTPUT( \
@@ -2415,12 +2469,14 @@ fi
 ### Special initialization commands, used to pass information from the
 ### configuration-run into config.status
 
-AWK="$AWK"
 ALTERNATE_SYMS="$ALTERNATE_SYMS"
+AWK="$AWK"
+CXX_NAME="$CXX_NAME"
 DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
 DFT_LWR_MODEL="$DFT_LWR_MODEL"
 ECHO_LD="$ECHO_LD"
 EXTRA_SUFFIX="$EXTRA_SUFFIX"
+FORM_NAME="$FORM_NAME"
 LDCONFIG="$LDCONFIG"
 LIBTOOL_VERSION="$LIBTOOL_VERSION"
 LIB_NAME="$LIB_NAME"
@@ -2430,10 +2486,12 @@ LIB_SUFFIX="$LIB_SUFFIX"
 LIB_TRACING="$LIB_TRACING"
 LN_S="$LN_S"
 MAKE_TERMINFO="$MAKE_TERMINFO"
+MENU_NAME="$MENU_NAME"
 NCURSES_MAJOR="$NCURSES_MAJOR"
 NCURSES_MINOR="$NCURSES_MINOR"
 NCURSES_OSPEED="$NCURSES_OSPEED"
 NCURSES_PATCH="$NCURSES_PATCH"
+PANEL_NAME="$PANEL_NAME"
 SRC_SUBDIRS="$SRC_SUBDIRS"
 TERMINFO="$TERMINFO"
 TICS_ARG_SUFFIX="$TICS_ARG_SUFFIX"