X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=aclocal.m4;h=09260c46cc5502b04dfdf4de1418330f2554be75;hp=46a9f1f7f4cf1a359d6e0840b29bd6cb8bb940a5;hb=73dd18dba5148d708638caa25c085d82f704e972;hpb=f3ec084eb66ba14feb6357b674fb85dd474933d8 diff --git a/aclocal.m4 b/aclocal.m4 index 46a9f1f7..09260c46 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -29,7 +29,7 @@ dnl*************************************************************************** dnl dnl Author: Thomas E. Dickey 1995-on dnl -dnl $Id: aclocal.m4,v 1.904 2020/03/20 00:46:13 tom Exp $ +dnl $Id: aclocal.m4,v 1.914 2020/05/31 20:50:13 tom Exp $ dnl Macros used in NCURSES auto-configuration script. dnl dnl These macros are maintained separately from NCURSES. The copyright on @@ -158,10 +158,28 @@ AC_DEFUN([CF_ADD_ADAFLAGS],[ AC_SUBST(ADAFLAGS) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_ADD_CFLAGS version: 13 updated: 2017/02/25 18:57:40 +dnl CF_ADD_CXXFLAGS version: 1 updated: 2020/04/04 16:16:13 +dnl --------------- +dnl Copy non-preprocessor flags to $CXXFLAGS, preprocessor flags to $CPPFLAGS +dnl The second parameter if given makes this macro verbose. +dnl +dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, +dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily +dnl confused by the quotes (which require backslashes to keep them usable). +AC_DEFUN([CF_ADD_CXXFLAGS], +[ +cf_save_CXXFLAGS="$CFLAGS" +CFLAGS="$CXXFLAGS" +CF_ADD_CFLAGS($1 ifelse($2,,,[,$2])) +CXXFLAGS="$CFLAGS" +CFLAGS="$cf_save_CXXFLAGS" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_CFLAGS version: 14 updated: 2020/04/04 16:16:13 dnl ------------- dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS -dnl The second parameter if given makes this macro verbose. +dnl $1 = flags to add +dnl $2 = if given makes this macro verbose. dnl dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily @@ -442,7 +460,7 @@ ifelse([$3],,[ :]dnl ])dnl ])])dnl dnl --------------------------------------------------------------------------- -dnl CF_AR_FLAGS version: 6 updated: 2015/10/10 15:25:05 +dnl CF_AR_FLAGS version: 7 updated: 2020/04/04 11:37:29 dnl ----------- dnl Check for suitable "ar" (archiver) options for updating an archive. dnl @@ -453,39 +471,55 @@ AC_DEFUN([CF_AR_FLAGS],[ AC_REQUIRE([CF_PROG_AR]) AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[ - cf_cv_ar_flags=unknown - for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv - do + case $cf_cv_system_name in + (*-msvc*) + cf_cv_ar_flags='' + cat >mk_static_lib.sh <<-EOF + #!$SHELL + MSVC_BIN="[$]AR" + out="\[$]1" + shift + exec \[$]MSVC_BIN -out:"\[$]out" \[$]@ + EOF + chmod +x mk_static_lib.sh + AR=`pwd`/mk_static_lib.sh + ;; + (*) + cf_cv_ar_flags=unknown + for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv + do - # check if $ARFLAGS already contains this choice - if test "x$ARFLAGS" != "x" ; then - cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` - if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then - cf_cv_ar_flags= - break + # check if $ARFLAGS already contains this choice + if test "x$ARFLAGS" != "x" ; then + cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` + if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then + cf_cv_ar_flags= + break + fi fi - fi - rm -f conftest.$ac_cv_objext - rm -f conftest.a + rm -f conftest.$ac_cv_objext + rm -f conftest.a - cat >conftest.$ac_ext <conftest.$ac_ext <&AC_FD_CC - $AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext 2>&AC_FD_CC 1>/dev/null - if test -f conftest.a ; then - cf_cv_ar_flags=$cf_ar_flags + if AC_TRY_EVAL(ac_compile) ; then + echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&AC_FD_CC + $AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext 2>&AC_FD_CC 1>/dev/null + if test -f conftest.a ; then + cf_cv_ar_flags=$cf_ar_flags + break + fi + else + CF_VERBOSE(cannot compile test-program) break fi - else - CF_VERBOSE(cannot compile test-program) - break - fi - done - rm -f conftest.a conftest.$ac_ext conftest.$ac_cv_objext + done + rm -f conftest.a conftest.$ac_ext conftest.$ac_cv_objext + ;; + esac ]) if test -n "$ARFLAGS" ; then @@ -1012,6 +1046,28 @@ if test "$cf_cv_have_$1" = yes ; then AC_DEFINE_UNQUOTED($cf_result) fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_FVISIBILITY version: 2 updated: 2020/04/04 16:16:13 +dnl -------------------- +dnl Check whether the compiler understands -fvisibility=hidden +dnl +dnl $1 = compiler +dnl $2 = compiler-flags variable name +dnl $3 = cache variable to set +AC_DEFUN([CF_CHECK_FVISIBILITY],[ +AC_CACHE_CHECK(if $1 -fvisibility=hidden option works,$3,[ + cf_save_cflags="[$]$2" + $2="[$]$2 -fvisibility=hidden" + AC_TRY_LINK([ +__attribute__ ((visibility("default"))) int somefunc() {return 42;} + ],[ + if (somefunc()) return 1; +], + [$3=yes], + [$3=no]) + $2=$cf_save_cflags +]) ])dnl dnl --------------------------------------------------------------------------- dnl CF_CHECK_GETENV version: 1 updated: 2019/06/23 15:28:15 @@ -1140,13 +1196,13 @@ then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CHECK_GNAT_VERSION version: 2 updated: 2019/12/31 08:53:54 +dnl CF_CHECK_GNAT_VERSION version: 3 updated: 2020/05/23 19:39:36 dnl --------------------- AC_DEFUN([CF_CHECK_GNAT_VERSION], [ AC_REQUIRE([CF_GNAT_VERSION]) case $cf_cv_gnat_version in -(3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|20[[0-9]][[0-9]]) +(3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|[[1-9]][[0-9]].[[0-9]]*|20[[0-9]][[0-9]]) cf_cv_prog_gnat_correct=yes ;; (*) @@ -2755,7 +2811,7 @@ test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS" AC_SUBST(GNATPREP_OPTS) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GNAT_GENERICS version: 4 updated: 2019/12/31 08:53:54 +dnl CF_GNAT_GENERICS version: 5 updated: 2020/05/31 16:49:35 dnl ---------------- AC_DEFUN([CF_GNAT_GENERICS], [ @@ -2763,7 +2819,7 @@ AC_REQUIRE([CF_GNAT_VERSION]) AC_MSG_CHECKING(if GNAT supports generics) case $cf_cv_gnat_version in -(3.[[1-9]]*|[[4-9]].*) +(3.[[1-9]]*|[[4-9]].*|[[1-9]][[0-9]].*) cf_gnat_generics=yes ;; (*) @@ -3995,7 +4051,7 @@ fi test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version ])dnl dnl --------------------------------------------------------------------------- -dnl CF_LIB_PREFIX version: 12 updated: 2015/10/17 19:03:33 +dnl CF_LIB_PREFIX version: 13 updated: 2020/04/04 10:11:47 dnl ------------- dnl Compute the library-prefix for the given host system dnl $1 = variable to set @@ -4009,6 +4065,9 @@ define([CF_LIB_PREFIX], LIB_PREFIX='' fi ;; + (*-msvc*) + LIB_PREFIX='' + ;; (*) LIB_PREFIX='lib' ;; esac @@ -4016,7 +4075,7 @@ ifelse($1,,,[$1=$LIB_PREFIX]) AC_SUBST(LIB_PREFIX) ])dnl dnl --------------------------------------------------------------------------- -dnl CF_LIB_RULES version: 89 updated: 2020/03/07 20:05:14 +dnl CF_LIB_RULES version: 90 updated: 2020/04/04 10:11:47 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 @@ -4037,7 +4096,7 @@ cf_prefix=$LIB_PREFIX AC_REQUIRE([CF_SUBST_NCURSES_VERSION]) case $cf_cv_shlib_version in -(cygdll|msysdll|mingw) +(cygdll|msysdll|mingw|msvcdll) TINFO_NAME=$TINFO_ARG_SUFFIX TINFO_SUFFIX=.dll ;; @@ -4165,6 +4224,10 @@ CF_EOF cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` cf_add_lib="../lib/lib${cf_libname}${cf_cygsuf}" ;; + (msvcdll) + cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` + cf_add_lib="../lib/${cf_libname}${cf_cygsuf}" + ;; (*) cf_add_lib= ;; @@ -4260,7 +4323,7 @@ CF_EOF CXX_MODEL=$cf_ITEM if test "$CXX_MODEL" = SHARED; then case $cf_cv_shlib_version in - (cygdll|msysdll|mingw) + (cygdll|msysdll|mingw|msvcdll) test "x$with_shared_cxx" = xno && CF_VERBOSE(overriding CXX_MODEL to SHARED) with_shared_cxx=yes ;; @@ -4642,7 +4705,7 @@ fi ]) ]) dnl --------------------------------------------------------------------------- -dnl CF_LIB_SUFFIX version: 25 updated: 2015/04/17 21:13:04 +dnl CF_LIB_SUFFIX version: 26 updated: 2020/04/04 10:11:47 dnl ------------- dnl Compute the library file-suffix from the given model name dnl $1 = model name @@ -4657,11 +4720,25 @@ AC_DEFUN([CF_LIB_SUFFIX], $3=[$]$2 ;; (Xdebug) - $2='_g.a' + case $cf_cv_system_name in + (*-msvc*) + $2='_g.lib' + ;; + (*) + $2='_g.a' + ;; + esac $3=[$]$2 ;; (Xprofile) - $2='_p.a' + case $cf_cv_system_name in + (*-msvc*) + $2='_p.lib' + ;; + (*) + $2='_p.a' + ;; + esac $3=[$]$2 ;; (Xshared) @@ -4670,6 +4747,10 @@ AC_DEFUN([CF_LIB_SUFFIX], $2='.so' $3=[$]$2 ;; + (*-msvc*) + $2='.dll' + $3='.dll.lib' + ;; (cygwin*|msys*|mingw*) $2='.dll' $3='.dll.a' @@ -4697,7 +4778,14 @@ AC_DEFUN([CF_LIB_SUFFIX], esac ;; (*) - $2='.a' + case $target in + (*-msvc*) + $2='.lib' + ;; + (*) + $2='.a' + ;; + esac $3=[$]$2 ;; esac @@ -6556,7 +6644,7 @@ do done ])dnl dnl --------------------------------------------------------------------------- -dnl CF_SHARED_OPTS version: 94 updated: 2020/02/29 16:09:19 +dnl CF_SHARED_OPTS version: 96 updated: 2020/05/23 19:39:36 dnl -------------- dnl -------------- dnl Attempt to determine the appropriate CC/LD options for creating a shared @@ -6783,8 +6871,8 @@ CF_EOF MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' ;; (mingw*msvc*) - cf_cv_shlib_version=mingw - cf_cv_shlib_version_infix=mingw + cf_cv_shlib_version=msvcdll + cf_cv_shlib_version_infix=msvcdll shlibdir=$bindir MAKE_DLLS= if test "$DFT_LWR_MODEL" = "shared" ; then @@ -6793,25 +6881,96 @@ CF_EOF EXTRA_LDFLAGS="-link -dll $EXTRA_LDFLAGS" fi CC_SHARED_OPTS= - MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${LD} ${CFLAGS}' - RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ ${LD} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.lib" cat >mk_shared_lib.sh <<-CF_EOF #!$SHELL - SHARED_LIB=\$1 - IMPORT_LIB=\`echo "\$1" | sed -e 's/[0-9]*\.dll$\.dll.a/'\` + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.lib/'\` shift - my_ld=\$1 + my_ld=\[$]1 shift cat <<-EOF Linking shared library ** SHARED LIB \$SHARED_LIB ** IMPORT_LIB \$IMPORT_LIB EOF - args=\$(echo \$* | sed -E "s#-l(\w*)#lib\1.a#g" | sed -E "s#-L(\w*)#-LIBPATH:\1#g") + args=\$(echo \[$]* | sed -E "s#-l(\w*)#\1.dll.lib#g" | sed -E "s#-L(\w*)#-LIBPATH:\1#g") exec \$my_ld -DLL -IMPLIB:"\${IMPORT_LIB}" -OUT:"\${SHARED_LIB}" ${LDFLAGS} \$args mv "\${IMPORT_LIB}" "\${IMPORT_LIB}" CF_EOF chmod +x mk_shared_lib.sh + cat >mk_prog.sh <<-CF_EOF + #!$SHELL + shift + # Ignore first argument (compiler) and use LD (link.exe) unconditionally + LD="[$]LD" + clopts=() + ldopts=() + libs=() + isdll=0 + while test \[$]# -gt 0; do + case "\[$]1" in + -link) + # ignore -link argument + ;; + -dll) + isdll=1 + ;; + -W* | -w*) + # ignore warnings + ;; + -D*) + clopts+=("\[$]1") + ;; + -I*) + clopts+=("\[$]1") + ;; + -l*) + libs+=("\`echo \"\[$]1\" | sed \"s/^-l//\"\`") + ;; + -L*) + ldopts+=("\`echo \"\[$]1\" | sed \"s/^-L/-LIBPATH:/\"\`") + ;; + *.obj | *.o) + ldopts+=("\[$]1") + ;; + -Wl,*) + for linkarg in \`echo '\[$]1' | sed -e 's/-Wl,//' -e 's/,/ /'\`; do + ldopts+=("\[$]{linkarg}") + done + ;; + *.lib) + ldopts+=("\[$]1") + ;; + -o) + shift + ldopts+=("-out:\[$]1") + ;; + *) + clopts+=("\[$]1") + ldopts+=("\[$]1") + ;; + esac + shift + done + if [[ "\$isdll" -ne 0 ]]; then + for lib in \[$]{libs[[*]]}; do + ldopts+=("\[$]lib.dll.lib") + done + else + for lib in \[$]{libs[[*]]}; do + ldopts+=("\[$]lib.lib") + done + fi + cat <<-EOF + Creating program + ** ld options: "\[$]{ldopts[[@]]}" +EOF + exec \[$]LD \[$]{ldopts[[@]]} +CF_EOF + chmod +x mk_prog.sh + LINK_PROGS="$SHELL ${rel_builddir}/mk_prog.sh" ;; (mingw*) cf_cv_shlib_version=mingw