dnl
dnl Author: Thomas E. Dickey 1995-on
dnl
-dnl $Id: aclocal.m4,v 1.605 2012/02/18 23:06:14 tom Exp $
+dnl $Id: aclocal.m4,v 1.608 2012/02/25 20:21:19 tom Exp $
dnl Macros used in NCURSES auto-configuration script.
dnl
dnl These macros are maintained separately from NCURSES. The copyright on
AC_MSG_RESULT($cf_cv_enable_rpath)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_ENABLE_STRING_HACKS version: 1 updated: 2012/02/25 06:33:21
+dnl ----------------------
+dnl On a few platforms, the compiler and/or loader nags with untruthful
+dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect,
+dnl and implying that most uses of the recommended alternatives are correct.
+dnl
+dnl Factually speaking, no one has actually counted the number of uses of these
+dnl functions versus the total of incorrect uses. Samples of a few thousand
+dnl instances are meaningless compared to the hundreds of millions of lines of
+dnl existing C code.
+dnl
+dnl strlcat/strlcpy are (as of 2012) non-standard, and are available on some
+dnl platforms, in implementations of varying quality. Likewise, snprintf is
+dnl standard - but evolved through phases, and older implementations are likely
+dnl to yield surprising results, as documented in manpages on various systems.
+AC_DEFUN([CF_ENABLE_STRING_HACKS],
+[
+AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings)
+AC_ARG_ENABLE(string-hacks,
+ [ --enable-string-hacks work around bogus compiler/loader warnings],
+ [with_string_hacks=$enableval],
+ [with_string_hacks=no])
+AC_MSG_RESULT($with_string_hacks)
+
+if test "x$with_string_hacks" = "xyes"; then
+ AC_DEFINE(USE_STRING_HACKS)
+ AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings)
+ AC_CHECK_FUNCS( strlcat strlcpy snprintf )
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39
dnl --------
dnl Check if 'errno' is declared in <errno.h>
AC_SUBST(LIB_PREFIX)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_RULES version: 63 updated: 2012/01/21 19:28:10
+dnl CF_LIB_RULES version: 64 updated: 2012/02/25 15:20:07
dnl ------------
dnl Append definitions and rules for the given models to the subdirectory
dnl Makefiles, and the recursion rule for the top-level Makefile. If the
cf_prefix=$LIB_PREFIX
AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
-if test $cf_cv_shlib_version = cygdll ; then
+case $cf_cv_shlib_version in #(vi
+cygdll|mingw)
TINFO_NAME=$TINFO_ARG_SUFFIX
TINFO_SUFFIX=.dll
-fi
+ ;;
+esac
if test -n "$TINFO_SUFFIX" ; then
case $TINFO_SUFFIX in
# cygwin needs import library, and has unique naming convention
# use autodetected ${cf_prefix} for import lib and static lib, but
# use 'cyg' prefix for shared lib.
- if test $cf_cv_shlib_version = cygdll ; then
+ case $cf_cv_shlib_version in #(vi
+ cygdll) #(vi
cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/cyg${cf_dir}${cf_cygsuf}"
continue
- fi
+ ;;
+ mingw)
+ cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
+ LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/lib${cf_dir}${cf_cygsuf}"
+ continue
+ ;;
+ esac
fi
LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/${cf_prefix}${cf_dir}${cf_suffix}"
done
])
])
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_SUFFIX version: 17 updated: 2011/07/02 15:36:04
+dnl CF_LIB_SUFFIX version: 18 updated: 2012/02/25 15:20:07
dnl -------------
dnl Compute the library file-suffix from the given model name
dnl $1 = model name
$2='.a'
$3=[$]$2
;;
- cygwin*) #(vi
+ cygwin*|mingw*) #(vi
$2='.dll'
$3='.dll.a'
;;
AC_SUBST(EXTRA_LDFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SHARED_OPTS version: 69 updated: 2011/07/30 19:31:39
+dnl CF_SHARED_OPTS version: 70 updated: 2012/02/25 15:20:07
dnl --------------
dnl --------------
dnl Attempt to determine the appropriate CC/LD options for creating a shared
CF_SHARED_SONAME
MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
;;
+ mingw*) #(vi
+ cf_cv_shlib_version=mingw
+ cf_cv_shlib_version_infix=mingw
+ CC_SHARED_OPTS=
+ MK_SHARED_LIB='sh ../mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ #MK_SHARED_LIB='${CC} ${CFLAGS} -mdll -Wl,-soname,'$cf_cv_shared_soname',-stats -o $[@]'
+ #MK_SHARED_LIB='${DLLTOOL} --export-all-symbols --output-exp --output-lib $[@]'
+ cat >mk_shared_lib.sh <<-CF_EOF
+ #!/bin/sh
+ SHARED_LIB=\[$]1
+ IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
+ shift
+ cat <<-EOF
+ Linking shared library
+ ** SHARED_LIB \[$]SHARED_LIB
+ ** IMPORT_LIB \[$]IMPORT_LIB
+EOF
+ exec \[$]* -shared -Wl,--out-implib=../lib/\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o ../lib/\[$]{SHARED_LIB}
+CF_EOF
+ chmod +x mk_shared_lib.sh
+ ;;
openbsd[[2-9]].*|mirbsd*) #(vi
if test "$DFT_LWR_MODEL" = "shared" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
+ CF_VERBOSE(CC_SHARED_OPTS: $CC_SHARED_OPTS)
+ CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB)
+
AC_SUBST(CC_SHARED_OPTS)
AC_SUBST(LD_RPATH_OPT)
AC_SUBST(LD_SHARED_OPTS)