gdb: fix detection of compilation and linking flags for source-highlight
authorRuslan Kabatsayev <b7.10110111@gmail.com>
Fri, 11 Feb 2022 17:10:23 +0000 (20:10 +0300)
committerAndrew Burgess <aburgess@redhat.com>
Tue, 22 Feb 2022 14:42:06 +0000 (14:42 +0000)
Currently there are two problems with the detection of
source-highlight via pkg-config in GDB's configure script:

1. The LDFLAGS variable is used to pass the 'pkg-config --libs' output
to AC_LINK_IFELSE, which results in the "-L/some/path
-lsource-highlight" preceding the conftest.cpp, which can result in a
failure to find symbols referenced in conftest.cpp, if the linker is
using --as-needed by default.

2. The CFLAGS variable is used to pass the 'pkg-config --cflags'
output to AC_LINK_IFELSE.  However, as the current language is C++,
AC_LINK_IFELSE will actuall use CXXFLAGS, not CFLAGS, so any flags
returned from pkg-config will not be seen.

This patch fixes both of these mistakes, allowing GDB to correctly
configure and build using source-highlight installed into a custom
prefix, e.g. ~/opt/gdb-git (because the system version of
source-highlight is too old).

gdb/configure
gdb/configure.ac

index e751edc3f9a15e24eb61668bd3f910739ff68126..425bdb08a7351e6891c70960de7c60b80b5e9d26 100755 (executable)
@@ -12148,10 +12148,10 @@ 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"
+      save_CXXFLAGS="$CXXFLAGS"
+      save_LIBS="$LIBS"
+      CXXFLAGS="$CXXFLAGS $srchigh_pkg_cflags"
+      LIBS="$LIBS $srchigh_pkg_libs"
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <srchilite/sourcehighlight.h>
@@ -12173,8 +12173,8 @@ else
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-      CFLAGS="$save_CFLAGS"
-      LDFLAGS="$save_LDFLAGS"
+      CXXFLAGS="$save_CXXFLAGS"
+      LIBS="$save_LIBS"
       ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
index 5a380ce38d98584461412fa2ce55584ffb3ce26a..c6fa19b20bc99f13ce44d182eeee93fe4762cf42 100644 (file)
@@ -1242,10 +1242,10 @@ either use --disable-source-highlight or dnl
       # 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"
+      save_CXXFLAGS="$CXXFLAGS"
+      save_LIBS="$LIBS"
+      CXXFLAGS="$CXXFLAGS $srchigh_pkg_cflags"
+      LIBS="$LIBS $srchigh_pkg_libs"
       AC_LINK_IFELSE(
         [AC_LANG_PROGRAM(
           [#include <srchilite/sourcehighlight.h>],
@@ -1255,8 +1255,8 @@ either use --disable-source-highlight or dnl
         [have_usable_source_highlight=yes],
         [have_usable_source_highlight=no]
       )
-      CFLAGS="$save_CFLAGS"
-      LDFLAGS="$save_LDFLAGS"
+      CXXFLAGS="$save_CXXFLAGS"
+      LIBS="$save_LIBS"
       AC_LANG_POP(C++)
 
       if test "${have_usable_source_highlight}" = "yes"; then