[committed] Simplify omp-device-properties.h creation (PR bootstrap/92314)
diff mbox series

Message ID 20191101233802.GX4650@tucnak
State New
Headers show
Series
  • [committed] Simplify omp-device-properties.h creation (PR bootstrap/92314)
Related show

Commit Message

Jakub Jelinek Nov. 1, 2019, 11:38 p.m. UTC
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  <jakub@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.


	Jakub

Patch
diff mbox series

--- 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