diff mbox series

Harden and adjust 'gcc/configure' parsing of '--enable-offload-targets' (was: [committed] Simplify omp-device-properties.h creation (PR bootstrap/92314))

Message ID 878siebqyv.fsf@euler.schwinge.homeip.net
State New
Headers show
Series Harden and adjust 'gcc/configure' parsing of '--enable-offload-targets' (was: [committed] Simplify omp-device-properties.h creation (PR bootstrap/92314)) | expand

Commit Message

Thomas Schwinge April 29, 2020, 9:07 a.m. UTC
Hi Jakub!

On 2019-11-02T00:38:02+0100, Jakub Jelinek <jakub@redhat.com> wrote:
> Apparently my recent change broke quite a lot of setups where people were
> configuring --enable-offload-targets= without having the corresponding
> offloading compiler already installed.
> The following patch simplifies it by removing the need to have it installed
> again for compiler building (it is still needed for testing as before),
> by adding new tmake_files with the needed rules and building everything
> while building the host compiler.

ACK, thanks for that re-work.


> --- gcc/configure.ac.jj       2019-10-31 11:05:50.461137028 +0100
> +++ gcc/configure.ac  2019-11-01 21:22:58.417920544 +0100
> @@ -1026,18 +1026,22 @@ AC_SUBST(real_target_noncanonical)
>  AC_SUBST(accel_dir_suffix)
>
>  for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
> -  tgt_dir=`echo $tgt | sed -n 's/.*=//p'`
>    tgt=`echo $tgt | sed 's/=.*//'`
>
>    if echo "$tgt" | grep "^hsa" > /dev/null ; then
>      enable_hsa=1
>    else
>      enable_offloading=1
> -    if test -n "$tgt_dir"; then
> -      omp_device_property="${tgt_dir}/lib/gcc/\$(real_target_noncanonical)/\$(version)/accel/${tgt}/omp-device-properties"
> -    else
> -      omp_device_property="\$(libsubdir)/accel/${tgt}/omp-device-properties"
> -    fi
> +    case "$tgt" in
> +      *-intelmicemul-*)
> +     omp_device_property=omp-device-properties-i386
> +     omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
> +     ;;
> +      nvptx*-*)
> +     omp_device_property=omp-device-properties-nvptx
> +     omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/nvptx/t-omp-device"
> +     ;;
> +    esac
>      omp_device_properties="${omp_device_properties} ${tgt}=${omp_device_property}"
>      omp_device_property_deps="${omp_device_property_deps} ${omp_device_property}"
>    fi

Discovered/developed in context of my commit
b6a0ae1d22c9675f4374c2cb2b5c0833bb1461f1 "[gcn] Fix
'omp-device-properties-gcn' handling",
<http://mid.mail-archive.com/87ees6brhe.fsf@euler.schwinge.homeip.net>,
I've now as obvious pushed to master branch commit
d20219b5ab26cd003ae78ac9f82be337fe4df261 "Harden and adjust
'gcc/configure' parsing of '--enable-offload-targets'".

Not sure why you'd diverged here, and in particular omitted the error
case, which right away would've caught this 'amdgcn' vs. 'gcn' problem
introduced by Tobias' commit 955cd057454b323419e06affa7df7d59dc3cd1fb
(r277797) "Add gcc/config/gcn/t-omp-device for OpenMP declare variant
kind/arch/isa".


Grüße
 Thomas


-----------------
Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany
Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter
diff mbox series

Patch

From d20219b5ab26cd003ae78ac9f82be337fe4df261 Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <thomas@codesourcery.com>
Date: Thu, 23 Apr 2020 21:59:07 +0200
Subject: [PATCH] Harden and adjust 'gcc/configure' parsing of
 '--enable-offload-targets'

Fix-up for commit d228ee80f8578be474595a517a228111fac26c5e "re PR
bootstrap/92314 (missing omp-device-properties', needed by
's-omp-device-properties-h')".

	gcc/
	* configure.ac <$enable_offload_targets>: Do parsing as done
	elsewhere.
	* configure: Regenerate.
---
 gcc/ChangeLog    |  4 ++++
 gcc/configure    | 13 ++++++++-----
 gcc/configure.ac |  9 ++++++---
 3 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 85d1c2b6f758..3df46e498f57 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@ 
 2020-04-29  Thomas Schwinge  <thomas@codesourcery.com>
 
+	* configure.ac <$enable_offload_targets>: Do parsing as done
+	elsewhere.
+	* configure: Regenerate.
+
 	* configure.ac <$enable_offload_targets>: 'amdgcn' is 'gcn'.
 	* configure: Regenerate.
 
diff --git a/gcc/configure b/gcc/configure
index 83101072aea0..c7bf5d1fdc6b 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -7920,18 +7920,21 @@  for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
   else
     enable_offloading=1
     case "$tgt" in
-      *-intelmicemul-*)
+      *-intelmic-* | *-intelmicemul-*)
 	omp_device_property=omp-device-properties-i386
 	omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
 	;;
-      amdgcn*-*)
+      amdgcn*)
 	omp_device_property=omp-device-properties-gcn
 	omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
 	;;
-      nvptx*-*)
+      nvptx*)
 	omp_device_property=omp-device-properties-nvptx
 	omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/nvptx/t-omp-device"
 	;;
+      *)
+	as_fn_error $? "unknown offload target specified" "$LINENO" 5
+	;;
     esac
     omp_device_properties="${omp_device_properties} ${tgt}=${omp_device_property}"
     omp_device_property_deps="${omp_device_property_deps} ${omp_device_property}"
@@ -18985,7 +18988,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 18988 "configure"
+#line 18991 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -19091,7 +19094,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 19094 "configure"
+#line 19097 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index b604047ae456..72f79f7ed322 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1045,18 +1045,21 @@  for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
   else
     enable_offloading=1
     case "$tgt" in
-      *-intelmicemul-*)
+      *-intelmic-* | *-intelmicemul-*)
 	omp_device_property=omp-device-properties-i386
 	omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
 	;;
-      amdgcn*-*)
+      amdgcn*)
 	omp_device_property=omp-device-properties-gcn
 	omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
 	;;
-      nvptx*-*)
+      nvptx*)
 	omp_device_property=omp-device-properties-nvptx
 	omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/nvptx/t-omp-device"
 	;;
+      *)
+	AC_MSG_ERROR([unknown offload target specified])
+	;;
     esac
     omp_device_properties="${omp_device_properties} ${tgt}=${omp_device_property}"
     omp_device_property_deps="${omp_device_property_deps} ${omp_device_property}"
-- 
2.26.2