Re: [RFA/gdb-9-branch] Abort configure immediately if building GDB in tree

Joel Brobecker
2020-01-17T18:16:09Z

[-- Attachment #1: Type: text/plain, Size: 1517 bytes --]

Hi Simon,

Thanks for the review.

> > +if test x"${enable_gdb}" != x"no"; then
> > + # For this branch, we do not support building GDB in-tree.
> > + # Try to detect whether we are in this situation or not by
> > + # searching for a couple of known files in the source directory.
> > + if test -f gnulib/update-gnulib.sh -a -f gdb/ChangeLog; then
> > + AC_MSG_ERROR([GDB must be configured and built in a directory separate from its sources])
>
> Finish the message with a period?

Of course! FWIW, I modeled this to other calls to AC_MSG_ERROR ;-)

> Some people who only know the "./configure && make && make install" recipe
> might not know how (or that it's even possible) to configure and build in a
> separate directory, so they'll be stuck there. I think it would be helpful
> to give an example of how to do that, like:
>
> GDB must be configured and built in a directory separate from its sources.
>
> To do so, create a dedicated directory for your GDB build and invoke the configure
> script from that directory:
>
> $ mkdir my-gdb-build
> $ cd my-gdb-build
> $ ../path/to/gdb-x.y.z/configure [configure args]
> $ make
>
> Otherwise, that looks good to me.

Attached is a revised patch. I chose to use the same sequence as
the one in gdb/README, just for consistency.

ChangeLog:

* configure.ac: Abort the build with an error if trying to build
GDB in tree.
* configure: Regenerate.

For gdb-9-branch only... OK to push?

--
Joel

[-- Attachment #2: 0001-Abort-configure-immediately-if-building-GDB-in-tree.patch --]
[-- Type: text/x-diff, Size: 2716 bytes --]

From 8664d4b725eeb9c5845fa36331f2184d2c1f8596 Mon Sep 17 00:00:00 2001
From: Joel Brobecker <brobecker@adacore.com>
Date: Fri, 17 Jan 2020 19:13:15 +0100
Subject: [PATCH] Abort configure immediately if building GDB in tree

The move of gnulib to the top src directory is causing the GDB build
to break if configured in tree. We hope to lift that limitation at
some point but, in the meantime, this commit allows us to abort
the initial configure right away with a clear error message should
the user attempt to build in tree.

ChangeLog:

* configure.ac: Abort the build with an error if trying to build
GDB in tree.
* configure: Regenerate.
---
configure | 17 +++++++++++++++++
configure.ac | 17 +++++++++++++++++
2 files changed, 34 insertions(+)

diff --git a/configure b/configure
index 6a9719f6091..7168a4e90e0 100755
--- a/configure
+++ b/configure
@@ -2279,6 +2279,23 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu

+if test x"${enable_gdb}" != x"no"; then
+ # For this branch, we do not support building GDB in-tree.
+ # Try to detect whether we are in this situation or not by
+ # searching for a couple of known files in the source directory.
+ if test -f gnulib/update-gnulib.sh -a -f gdb/ChangeLog; then
+ as_fn_error $? "GDB must be configured and built in a directory separate from its sources.
+
+To do so, create a dedicated directory for your GDB build and invoke
+the configure script from that directory:
+
+ $ mkdir build
+ $ cd build
+ $ <full path to your sources>/gdb-VERSION/configure [etc...]
+ $ make" "$LINENO" 5
+ fi
+fi
+
progname=$0
# if PWD already has a value, it is probably wrong.
if test -n "$PWD" ; then PWD=`${PWDCMD-pwd}`; fi
diff --git a/configure.ac b/configure.ac
index 7433badc217..e5ca1eaa57a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -33,6 +33,23 @@ m4_include([config/isl.m4])
AC_INIT(move-if-change)
AC_DISABLE_OPTION_CHECKING

+if test x"${enable_gdb}" != x"no"; then
+ # For this branch, we do not support building GDB in-tree.
+ # Try to detect whether we are in this situation or not by
+ # searching for a couple of known files in the source directory.
+ if test -f gnulib/update-gnulib.sh -a -f gdb/ChangeLog; then
+ AC_MSG_ERROR([GDB must be configured and built in a directory separate from its sources.
+
+To do so, create a dedicated directory for your GDB build and invoke
+the configure script from that directory:
+
+ $ mkdir build
+ $ cd build
+ $ <full path to your sources>/gdb-VERSION/configure [[etc...]]
+ $ make])
+ fi
+fi
+
progname=$0
# if PWD already has a value, it is probably wrong.
if test -n "$PWD" ; then PWD=`${PWDCMD-pwd}`; fi
--
2.17.1