Hi!

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.

Bootstrapped/regtested on x86_64-linux and i686-linux, tested also with
x86_64-intelmicemul-linux-gnu and nvptx-none offloading, committed to trunk.

2019-11-02  Jakub Jelinek  <ja...@redhat.com>

        PR bootstrap/92314
        * configure.ac: Don't look for omp-device-properties files from
        installed offloading compilers.  Instead add tmake_file snippets
        for configured offloading targets and use files they generate.
        * Makefile.in (install): Don't depend on
        install-omp-device-properties.
        (install-omp-device-properties): Remove goal.
        * config/i386/t-omp-device: New file.
        * config/i386/t-intelmic (omp-device-properties): Remove goal.
        * config/nvptx/t-omp-device: New file.
        * config/nvptx/t-nvptx (omp-device-properties): Remove goal.
        * configure: Regenerated.

--- 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
@@ -2065,7 +2069,7 @@ do
                tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
        fi
 done
-tmake_file="${tmake_file_}"
+tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
 
 out_object_file=`basename $out_file .c`.o
 common_out_object_file=`basename $common_out_file .c`.o
--- gcc/Makefile.in.jj  2019-10-31 11:05:50.491136565 +0100
+++ gcc/Makefile.in     2019-11-01 21:04:12.720107538 +0100
@@ -3476,10 +3476,6 @@ ifeq ($(enable_plugin),yes)
 install: install-plugin
 endif
 
-ifeq ($(enable_as_accelerator),yes)
-install: install-omp-device-properties
-endif
-
 install-strip: override INSTALL_PROGRAM = $(INSTALL_STRIP_PROGRAM)
 ifneq ($(STRIP),)
 install-strip: STRIPPROG = $(STRIP)
@@ -3665,11 +3661,6 @@ install-driver: installdirs xgcc$(exeext
          fi; \
        fi
 
-# Install omp-device-properties file for accelerator compilers.
-install-omp-device-properties: omp-device-properties installdirs
-       $(INSTALL_DATA) omp-device-properties \
-         $(DESTDIR)$(libsubdir)/omp-device-properties
-
 # Install the info files.
 # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir
 # to do the install.
--- gcc/config/i386/t-omp-device.jj     2019-11-01 21:02:23.010782525 +0100
+++ gcc/config/i386/t-omp-device        2019-11-01 21:02:45.117445012 +0100
@@ -0,0 +1,6 @@
+omp-device-properties-i386: $(srcdir)/config/i386/i386-options.c
+       echo kind: cpu > $@
+       echo arch: x86 x86_64 i386 i486 i586 i686 ia32 >> $@
+       echo isa: sse4 `sed -n '/^static struct ix86_target_opts 
isa2\?_opts\[\] =/,/^};/p' \
+         $(srcdir)/config/i386/i386-options.c | \
+         sed -n 's/",.*$$//;s/\./_/;s/^  { "-m//p'` >> $@
--- gcc/config/i386/t-intelmic.jj       2019-10-31 11:05:50.533135914 +0100
+++ gcc/config/i386/t-intelmic  2019-11-01 21:02:55.715283208 +0100
@@ -8,10 +8,3 @@ ALL_HOST_OBJS += mkoffload.o
 mkoffload$(exeext): mkoffload.o collect-utils.o libcommon-target.a 
$(LIBIBERTY) $(LIBDEPS)
        $(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
          mkoffload.o collect-utils.o libcommon-target.a $(LIBIBERTY) $(LIBS)
-
-omp-device-properties: $(srcdir)/config/i386/i386-options.c
-       echo kind: cpu > omp-device-properties
-       echo arch: x86 x86_64 i386 i486 i586 i686 ia32 >> omp-device-properties
-       echo isa: sse4 `sed -n '/^static struct ix86_target_opts 
isa2\?_opts\[\] =/,/^};/p' \
-         $(srcdir)/config/i386/i386-options.c | \
-         sed -n 's/",.*$$//;s/\./_/;s/^  { "-m//p'` >> omp-device-properties
--- gcc/config/nvptx/t-omp-device.jj    2019-11-01 21:02:03.297083500 +0100
+++ gcc/config/nvptx/t-omp-device       2019-11-01 21:01:52.996240773 +0100
@@ -0,0 +1,4 @@
+omp-device-properties-nvptx: $(srcdir)/config/nvptx/nvptx.c
+       echo kind: gpu > $@
+       echo arch: nvptx >> $@
+       echo isa: sm_30 sm_35 >> $@
--- gcc/config/nvptx/t-nvptx.jj 2019-10-31 11:05:50.539135821 +0100
+++ gcc/config/nvptx/t-nvptx    2019-11-01 21:03:24.380845555 +0100
@@ -10,8 +10,3 @@ mkoffload$(exeext): mkoffload.o collect-
          mkoffload.o collect-utils.o libcommon-target.a $(LIBIBERTY) $(LIBS)
 
 MULTILIB_OPTIONS = mgomp
-
-omp-device-properties: $(srcdir)/config/nvptx/nvptx.c
-       echo kind: gpu > omp-device-properties
-       echo arch: nvptx >> omp-device-properties
-       echo isa: sm_30 sm_35 >> omp-device-properties
--- gcc/configure.jj    2019-10-31 11:05:50.608134752 +0100
+++ gcc/configure       2019-11-01 21:23:09.097757470 +0100
@@ -7881,18 +7881,22 @@ fi
 
 
 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
@@ -12536,7 +12540,7 @@ do
                tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
        fi
 done
-tmake_file="${tmake_file_}"
+tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
 
 out_object_file=`basename $out_file .c`.o
 common_out_object_file=`basename $common_out_file .c`.o
@@ -18864,7 +18868,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 18867 "configure"
+#line 18871 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -18970,7 +18974,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 18973 "configure"
+#line 18977 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H

        Jakub

Reply via email to