diff options
-rwxr-xr-x | gdb/configure | 158 | ||||
-rw-r--r-- | gdb/configure.ac | 47 |
2 files changed, 151 insertions, 54 deletions
diff --git a/gdb/configure b/gdb/configure index 6e2dfb7..fe685f2 100755 --- a/gdb/configure +++ b/gdb/configure @@ -2367,6 +2367,52 @@ $as_echo "$ac_res" >&6; } } # ac_fn_c_check_func +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -2524,52 +2570,6 @@ $as_echo "$ac_res" >&6; } } # ac_fn_c_check_member -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - # ac_fn_cxx_check_func LINENO FUNC VAR # ------------------------------------ # Tests whether FUNC exists, setting the cache variable VAR accordingly @@ -12103,13 +12103,73 @@ $as_echo "no - pkg-config not found" >&6; } ;; esac - SRCHIGH_CFLAGS=`${pkg_config_prog_path} --cflags source-highlight` - SRCHIGH_LIBS=`${pkg_config_prog_path} --libs source-highlight` + srchigh_pkg_cflags=`${pkg_config_prog_path} --cflags source-highlight` + srchigh_pkg_libs=`${pkg_config_prog_path} --libs source-highlight` + + # Now that we have found a source-highlight library, check if we can use + # it. In particular, we're trying to detect the situation that the + # library is using the new libstdc++ library abi ( see + # https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html ) + # while the compiler being used to compile gdb is using the old abi. + # Such a situation will result in an undefined reference to + # srchilite::SourceHighlight::SourceHighlight(std::string const&). + # This situation can occur for instance when using a source highlight + # library compiled with g++ 7.5.0 while building gdb with g++ 4.8.5. + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + save_CFLAGS=$CFLAGS + save_LDFLAGS=$LDFLAGS + CFLAGS="$CFLAGS $srchigh_pkg_cflags" + LDFLAGS="$LDFLAGS $srchigh_pkg_libs" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <srchilite/sourcehighlight.h> +int +main () +{ +std::string outlang = "esc.outlang"; + new srchilite::SourceHighlight (outlang); + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + have_usable_source_highlight=yes +else + have_usable_source_highlight=no + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + if test "${have_usable_source_highlight}" = "yes"; then $as_echo "#define HAVE_SOURCE_HIGHLIGHT 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } + SRCHIGH_CFLAGS="$srchigh_pkg_cflags" + SRCHIGH_LIBS="$srchigh_pkg_libs" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + if test "${enable_source_highlight}" = "yes"; then + as_fn_error $? "source-highlight in your system could not be used" "$LINENO" 5 + fi + fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } diff --git a/gdb/configure.ac b/gdb/configure.ac index d4cfb6a..56e8a2d 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -1248,11 +1248,48 @@ either use --disable-source-highlight or dnl ;; esac - SRCHIGH_CFLAGS=`${pkg_config_prog_path} --cflags source-highlight` - SRCHIGH_LIBS=`${pkg_config_prog_path} --libs source-highlight` - AC_DEFINE([HAVE_SOURCE_HIGHLIGHT], 1, - [Define to 1 if the source-highlight library is available]) - AC_MSG_RESULT([yes]) + srchigh_pkg_cflags=`${pkg_config_prog_path} --cflags source-highlight` + srchigh_pkg_libs=`${pkg_config_prog_path} --libs source-highlight` + + # Now that we have found a source-highlight library, check if we can use + # it. In particular, we're trying to detect the situation that the + # library is using the new libstdc++ library abi ( see + # https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html ) + # while the compiler being used to compile gdb is using the old abi. + # Such a situation will result in an undefined reference to + # srchilite::SourceHighlight::SourceHighlight(std::string const&). + # This situation can occur for instance when using a source highlight + # library compiled with g++ 7.5.0 while building gdb with g++ 4.8.5. + AC_LANG_PUSH(C++) + save_CFLAGS=$CFLAGS + save_LDFLAGS=$LDFLAGS + CFLAGS="$CFLAGS $srchigh_pkg_cflags" + LDFLAGS="$LDFLAGS $srchigh_pkg_libs" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include <srchilite/sourcehighlight.h>], + [std::string outlang = "esc.outlang"; + new srchilite::SourceHighlight (outlang);] + )], + [have_usable_source_highlight=yes], + [have_usable_source_highlight=no] + ) + CFLAGS="$SAVE_CFLAGS" + LDFLAGS="$SAVE_LDFLAGS" + AC_LANG_POP(C++) + + if test "${have_usable_source_highlight}" = "yes"; then + AC_DEFINE([HAVE_SOURCE_HIGHLIGHT], 1, + [Define to 1 if the source-highlight library is available]) + AC_MSG_RESULT([yes]) + SRCHIGH_CFLAGS="$srchigh_pkg_cflags" + SRCHIGH_LIBS="$srchigh_pkg_libs" + else + AC_MSG_RESULT([no]) + if test "${enable_source_highlight}" = "yes"; then + AC_MSG_ERROR([source-highlight in your system could not be used]) + fi + fi else AC_MSG_RESULT([no]) if test "${enable_source_highlight}" = "yes"; then |