config: Add check whether D compiler works (PR103528)

Message ID 20211216231228.106506-1-ibuclaw@gdcproject.org
State New
Headers
Series config: Add check whether D compiler works (PR103528) |

Commit Message

Iain Buclaw Dec. 16, 2021, 11:12 p.m. UTC
  Hi,

This patch extends AC_PROG_GDC so that as well as checking for the
existence of a GDC compiler, also validate that it has also been built
with libphobos, otherwise warn or fail with the message that GDC is
required to build d.

Tested on a system running powerpcle-linux both without a D compiler,
and with a D compiler configured with --disable-libphobos.

This would also help with Solaris and Darwin ports, where support for
both D and runtime isn't present across all current releases. 

OK for mainline?

Regards,
Iain
---
config/ChangeLog:

	PR d/103528
	* acx.m4 (ACX_PROG_GDC): Add check whether D compiler works.

ChangeLog:

	* configure: Regenerate.
---
 config/acx.m4 | 13 +++++++++++++
 configure     | 19 +++++++++++++++++++
 2 files changed, 32 insertions(+)
  

Comments

Segher Boessenkool Dec. 18, 2021, 9:30 p.m. UTC | #1
On Fri, Dec 17, 2021 at 12:12:28AM +0100, Iain Buclaw wrote:
> Hi,
> 
> This patch extends AC_PROG_GDC so that as well as checking for the
> existence of a GDC compiler, also validate that it has also been built
> with libphobos, otherwise warn or fail with the message that GDC is
> required to build d.
> 
> Tested on a system running powerpcle-linux both without a D compiler,
> and with a D compiler configured with --disable-libphobos.
> 
> This would also help with Solaris and Darwin ports, where support for
> both D and runtime isn't present across all current releases. 
> 
> OK for mainline?

This fixes PR103739 by not building D at all anymore.  That is also a
regression of course, but at least it doesn't break bootstrap anymore :-)

Thanks,


Segher
  
Li, Pan2 via Gcc-patches Dec. 19, 2021, 8:54 p.m. UTC | #2
> On 18/12/2021 22:30 Segher Boessenkool <segher@kernel.crashing.org> wrote:
> 
>  
> On Fri, Dec 17, 2021 at 12:12:28AM +0100, Iain Buclaw wrote:
> > Hi,
> > 
> > This patch extends AC_PROG_GDC so that as well as checking for the
> > existence of a GDC compiler, also validate that it has also been built
> > with libphobos, otherwise warn or fail with the message that GDC is
> > required to build d.
> > 
> > Tested on a system running powerpcle-linux both without a D compiler,
> > and with a D compiler configured with --disable-libphobos.
> > 
> > This would also help with Solaris and Darwin ports, where support for
> > both D and runtime isn't present across all current releases. 
> > 
> > OK for mainline?
> 
> This fixes PR103739 by not building D at all anymore.  That is also a
> regression of course, but at least it doesn't break bootstrap anymore :-)
> 

Well, you don't have a working D compiler installed then!

As I mentioned in your bug report, from my testing, powerpc can be bootstrapped from gcc-10 or gcc-11 without issue.

Iain.
  

Patch

diff --git a/config/acx.m4 b/config/acx.m4
index 3c65d820628..b86c4f9e51d 100644
--- a/config/acx.m4
+++ b/config/acx.m4
@@ -425,7 +425,20 @@  AC_DEFUN([ACX_PROG_GDC],
 [AC_REQUIRE([AC_CHECK_TOOL_PREFIX])
 AC_REQUIRE([AC_PROG_CC])
 AC_CHECK_TOOL(GDC, gdc, no)
+AC_CACHE_CHECK([whether the D compiler works],
+		 acx_cv_d_compiler_works,
+[cat >conftest.d <<EOF
+module conftest; int main() { return 0; }
+EOF
+acx_cv_d_compiler_works=no
 if test "x$GDC" != xno; then
+  errors=`(${GDC} $1[]m4_ifval([$1], [ ])-c conftest.d) 2>&1 || echo failure`
+  if test x"$errors" = x && test -f conftest.$ac_objext; then
+    acx_cv_d_compiler_works=yes
+  fi
+  rm -f conftest.*
+fi])
+if test "x$GDC" != xno && test x$acx_cv_d_compiler_works != xno; then
   have_gdc=yes
 else
   have_gdc=no
diff --git a/configure b/configure
index 7f619d24ec5..869c654ea71 100755
--- a/configure
+++ b/configure
@@ -5721,7 +5721,26 @@  else
   GDC="$ac_cv_prog_GDC"
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the D compiler works" >&5
+$as_echo_n "checking whether the D compiler works... " >&6; }
+if ${acx_cv_d_compiler_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.d <<EOF
+module conftest; int main() { return 0; }
+EOF
+acx_cv_d_compiler_works=no
 if test "x$GDC" != xno; then
+  errors=`(${GDC} -c conftest.d) 2>&1 || echo failure`
+  if test x"$errors" = x && test -f conftest.$ac_objext; then
+    acx_cv_d_compiler_works=yes
+  fi
+  rm -f conftest.*
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_d_compiler_works" >&5
+$as_echo "$acx_cv_d_compiler_works" >&6; }
+if test "x$GDC" != xno && test x$acx_cv_d_compiler_works != xno; then
   have_gdc=yes
 else
   have_gdc=no