diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2014-11-13 13:28:56 +0000 |
---|---|---|
committer | Kirill Yukhin <kyukhin@gcc.gnu.org> | 2014-11-13 13:28:56 +0000 |
commit | 85c64bbee96e9a877a0138a509c42ad6feb4d189 (patch) | |
tree | 9e4005cf276444e5ba35ec3bd2b90e585f503eab /gcc | |
parent | e8864c8522f08528685762e6e3611da1354c31c2 (diff) | |
download | gcc-85c64bbee96e9a877a0138a509c42ad6feb4d189.zip gcc-85c64bbee96e9a877a0138a509c42ad6feb4d189.tar.gz gcc-85c64bbee96e9a877a0138a509c42ad6feb4d189.tar.bz2 |
[PATCH 1/7] OpenMP 4.0 offloading infrastructure: configure and make
* configure: Regenerate.
* configure.ac (--enable-as-accelerator-for)
(--enable-offload-targets): New configure options.
gcc/
* Makefile.in (real_target_noncanonical, accel_dir_suffix)
(enable_as_accelerator): New variables substituted by configure.
(libsubdir, libexecsubdir, unlibsubdir): Tweak for the possibility of
being configured as an offload compiler.
(DRIVER_DEFINES): Pass new defines DEFAULT_REAL_TARGET_MACHINE and
ACCEL_DIR_SUFFIX.
(install-cpp, install-common, install_driver, install-gcc-ar): Do not
install for the offload compiler.
* config.in: Regenerate.
* configure: Regenerate.
* configure.ac (real_target_noncanonical, accel_dir_suffix)
(enable_as_accelerator): Compute new variables.
(ACCEL_COMPILER): Define if the compiler is built as the accel compiler.
(OFFLOAD_TARGETS): List of target names suitable for offloading.
(ENABLE_OFFLOADING): Define if list of offload targets is not empty.
gcc/cp/
* Make-lang.in (c++.install-common): Do not install for the offload
compiler.
gcc/doc/
* install.texi (Options specification): Document
--enable-as-accelerator-for and --enable-offload-targets.
gcc/fortran/
* Make-lang.in (fortran.install-common): Do not install for the offload
compiler.
libgcc/
* Makefile.in (crtoffloadbegin$(objext)): New rule.
(crtoffloadend$(objext)): Likewise.
* configure: Regenerate.
* configure.ac (accel_dir_suffix): Compute new variable.
(extra_parts): Add crtoffloadbegin.o and crtoffloadend.o
if enable_offload_targets is not empty.
* offloadstuff.c: New file.
libgomp/
* config.h.in: Regenerate.
* configure: Regenerate.
* configure.ac: Check for libdl, required for plugin support.
(PLUGIN_SUPPORT): Define if plugins are supported.
(enable_offload_targets): Support Intel MIC targets.
(OFFLOAD_TARGETS): List of target names suitable for offloading.
lto-plugin/
* Makefile.am (libexecsubdir): Tweak for the possibility of being
configured for offload compiler.
(accel_dir_suffix, real_target_noncanonical): New variables substituted
by configure.
* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac (accel_dir_suffix, real_target_noncanonical): Compute new
variables.
Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
From-SVN: r217485
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 23 | ||||
-rw-r--r-- | gcc/Makefile.in | 95 | ||||
-rw-r--r-- | gcc/config.in | 18 | ||||
-rwxr-xr-x | gcc/configure | 50 | ||||
-rw-r--r-- | gcc/configure.ac | 38 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/cp/Make-lang.in | 32 | ||||
-rw-r--r-- | gcc/doc/install.texi | 14 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/Make-lang.in | 18 |
10 files changed, 243 insertions, 61 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d909f67..80df188 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,26 @@ +2014-11-13 Bernd Schmidt <bernds@codesourcery.com> + Thomas Schwinge <thomas@codesourcery.com> + Ilya Verbin <ilya.verbin@intel.com> + Andrey Turetskiy <andrey.turetskiy@intel.com> + + * Makefile.in (real_target_noncanonical, accel_dir_suffix) + (enable_as_accelerator): New variables substituted by configure. + (libsubdir, libexecsubdir, unlibsubdir): Tweak for the possibility of + being configured as an offload compiler. + (DRIVER_DEFINES): Pass new defines DEFAULT_REAL_TARGET_MACHINE and + ACCEL_DIR_SUFFIX. + (install-cpp, install-common, install_driver, install-gcc-ar): Do not + install for the offload compiler. + * config.in: Regenerate. + * configure: Regenerate. + * configure.ac (real_target_noncanonical, accel_dir_suffix) + (enable_as_accelerator): Compute new variables. + (ACCEL_COMPILER): Define if the compiler is built as the accel compiler. + (OFFLOAD_TARGETS): List of target names suitable for offloading. + (ENABLE_OFFLOADING): Define if list of offload targets is not empty. + * doc/install.texi (Options specification): Document + --enable-as-accelerator-for and --enable-offload-targets. + 2014-11-13 H.J. Lu <hongjiu.lu@intel.com> PR tree-optimization/63828 diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 88c3f89..7c54683 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -59,6 +59,11 @@ host=@host@ target=@target@ target_noncanonical:=@target_noncanonical@ +# Normally identical to target_noncanonical, except for compilers built +# as accelerator targets. +real_target_noncanonical:=@real_target_noncanonical@ +accel_dir_suffix = @accel_dir_suffix@ + # Sed command to transform gcc to installed name. program_transform_name := @program_transform_name@ @@ -363,6 +368,8 @@ enable_plugin = @enable_plugin@ enable_host_shared = @enable_host_shared@ +enable_as_accelerator = @enable_as_accelerator@ + CPPLIB = ../libcpp/libcpp.a CPPINC = -I$(srcdir)/../libcpp/include @@ -574,9 +581,9 @@ libexecdir = @libexecdir@ # -------- # Directory in which the compiler finds libraries etc. -libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(version) +libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) # Directory in which the compiler finds executables -libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(version) +libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) # Directory in which all plugin resources are installed plugin_resourcesdir = $(libsubdir)/plugin # Directory in which plugin headers are installed @@ -584,7 +591,11 @@ plugin_includedir = $(plugin_resourcesdir)/include # Directory in which plugin specific executables are installed plugin_bindir = $(libexecsubdir)/plugin # Used to produce a relative $(gcc_tooldir) in gcc.o +ifeq ($(enable_as_accelerator),yes) +unlibsubdir = ../../../../.. +else unlibsubdir = ../../.. +endif # $(prefix), expressed as a path relative to $(libsubdir). # # An explanation of the sed strings: @@ -1957,9 +1968,11 @@ DRIVER_DEFINES = \ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \ -DDEFAULT_TARGET_VERSION=\"$(version)\" \ + -DDEFAULT_REAL_TARGET_MACHINE=\"$(real_target_noncanonical)\" \ -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \ -DSTANDARD_BINDIR_PREFIX=\"$(bindir)/\" \ -DTOOLDIR_BASE_PREFIX=\"$(libsubdir_to_prefix)$(prefix_to_exec_prefix)\" \ + -DACCEL_DIR_SUFFIX=\"$(accel_dir_suffix)\" \ @TARGET_SYSTEM_ROOT_DEFINE@ \ $(VALGRIND_DRIVER_DEFINES) \ $(if $(SHLIB),$(if $(filter yes,@enable_shared@),-DENABLE_SHARED_LIBGCC)) \ @@ -3164,12 +3177,14 @@ install-strip: install # Handle cpp installation. install-cpp: installdirs cpp$(exeext) - -rm -f $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext) - -$(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext) - -if [ x$(cpp_install_dir) != x ]; then \ - rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ - $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ - else true; fi + -if test "$(enable_as_accelerator)" != "yes" ; then \ + rm -f $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext); \ + $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext); \ + if [ x$(cpp_install_dir) != x ]; then \ + rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ + $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ + else true; fi; \ + fi # Create the installation directories. # $(libdir)/gcc/include isn't currently searched by cpp. @@ -3277,17 +3292,21 @@ install-common: native lang.install-common installdirs # otherwise override the specs built into the driver. rm -f $(DESTDIR)$(libsubdir)/specs # Install gcov if it was compiled. - -if [ -f gcov$(exeext) ]; \ - then \ + -if test "$(enable_as_accelerator)" != "yes" ; then \ + if [ -f gcov$(exeext) ]; \ + then \ rm -f $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext); \ $(INSTALL_PROGRAM) gcov$(exeext) $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext); \ + fi; \ fi # Install gcov-tool if it was compiled. - -if [ -f gcov-tool$(exeext) ]; \ - then \ + -if test "$(enable_as_accelerator)" != "yes" ; then \ + if [ -f gcov-tool$(exeext) ]; \ + then \ rm -f $(DESTDIR)$(bindir)/$(GCOV_TOOL_INSTALL_NAME)$(exeext); \ $(INSTALL_PROGRAM) \ gcov-tool$(exeext) $(DESTDIR)$(bindir)/$(GCOV_TOOL_INSTALL_NAME)$(exeext); \ + fi; \ fi # Install the driver program as $(target_noncanonical)-gcc, @@ -3295,17 +3314,19 @@ install-common: native lang.install-common installdirs install-driver: installdirs xgcc$(exeext) -rm -f $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext) -$(INSTALL_PROGRAM) xgcc$(exeext) $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext) - -if [ "$(GCC_INSTALL_NAME)" != "$(target_noncanonical)-gcc-$(version)" ]; then \ - rm -f $(DESTDIR)$(bindir)/$(FULL_DRIVER_NAME); \ - ( cd $(DESTDIR)$(bindir) && \ - $(LN) $(GCC_INSTALL_NAME)$(exeext) $(FULL_DRIVER_NAME) ); \ - fi - -if [ ! -f gcc-cross$(exeext) ] \ - && [ "$(GCC_INSTALL_NAME)" != "$(GCC_TARGET_INSTALL_NAME)" ]; then \ - rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-tmp$(exeext); \ - ( cd $(DESTDIR)$(bindir) && \ - $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-tmp$(exeext) && \ - mv -f $(target_noncanonical)-gcc-tmp$(exeext) $(GCC_TARGET_INSTALL_NAME)$(exeext) ); \ + -if test "$(enable_as_accelerator)" != "yes" ; then \ + if [ "$(GCC_INSTALL_NAME)" != "$(target_noncanonical)-gcc-$(version)" ]; then \ + rm -f $(DESTDIR)$(bindir)/$(FULL_DRIVER_NAME); \ + ( cd $(DESTDIR)$(bindir) && \ + $(LN) $(GCC_INSTALL_NAME)$(exeext) $(FULL_DRIVER_NAME) ); \ + fi; \ + if [ ! -f gcc-cross$(exeext) ] \ + && [ "$(GCC_INSTALL_NAME)" != "$(GCC_TARGET_INSTALL_NAME)" ]; then \ + rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-tmp$(exeext); \ + ( cd $(DESTDIR)$(bindir) && \ + $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-tmp$(exeext) && \ + mv -f $(target_noncanonical)-gcc-tmp$(exeext) $(GCC_TARGET_INSTALL_NAME)$(exeext) ); \ + fi; \ fi # Install the info files. @@ -3502,19 +3523,21 @@ install-lto-wrapper: lto-wrapper$(exeext) $(INSTALL_PROGRAM) lto-wrapper$(exeext) $(DESTDIR)$(libexecsubdir)/lto-wrapper$(exeext) install-gcc-ar: installdirs gcc-ar$(exeext) gcc-nm$(exeext) gcc-ranlib$(exeext) - for i in gcc-ar gcc-nm gcc-ranlib; do \ - install_name=`echo $$i|sed '$(program_transform_name)'` ;\ - target_install_name=$(target_noncanonical)-`echo $$i|sed '$(program_transform_name)'` ; \ - rm -f $(DESTDIR)$(bindir)/$$install_name$(exeext) ; \ - $(INSTALL_PROGRAM) $$i$(exeext) $(DESTDIR)$(bindir)/$$install_name$(exeext) ;\ - if test -f gcc-cross$(exeext); then \ - :; \ - else \ - rm -f $(DESTDIR)$(bindir)/$$target_install_name$(exeext); \ - ( cd $(DESTDIR)$(bindir) && \ - $(LN) $$install_name$(exeext) $$target_install_name$(exeext) ) ; \ - fi ; \ - done + if test "$(enable_as_accelerator)" != "yes" ; then \ + for i in gcc-ar gcc-nm gcc-ranlib; do \ + install_name=`echo $$i|sed '$(program_transform_name)'` ;\ + target_install_name=$(target_noncanonical)-`echo $$i|sed '$(program_transform_name)'` ; \ + rm -f $(DESTDIR)$(bindir)/$$install_name$(exeext) ; \ + $(INSTALL_PROGRAM) $$i$(exeext) $(DESTDIR)$(bindir)/$$install_name$(exeext) ;\ + if test -f gcc-cross$(exeext); then \ + :; \ + else \ + rm -f $(DESTDIR)$(bindir)/$$target_install_name$(exeext); \ + ( cd $(DESTDIR)$(bindir) && \ + $(LN) $$install_name$(exeext) $$target_install_name$(exeext) ) ; \ + fi ; \ + done; \ + fi # Cancel installation by deleting the installed files. uninstall: lang.uninstall diff --git a/gcc/config.in b/gcc/config.in index 520b5f7..9d1ad86 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -1,5 +1,11 @@ /* config.in. Generated from configure.ac by autoheader. */ +/* Define if this compiler should be built as the offload target compiler. */ +#ifndef USED_FOR_TARGET +#undef ACCEL_COMPILER +#endif + + /* Define if building universal (internal helper macro) */ #ifndef USED_FOR_TARGET #undef AC_APPLE_UNIVERSAL_BUILD @@ -144,6 +150,12 @@ #endif +/* Define this to enable support for offloading. */ +#ifndef USED_FOR_TARGET +#undef ENABLE_OFFLOADING +#endif + + /* Define to enable plugin support. */ #ifndef USED_FOR_TARGET #undef ENABLE_PLUGIN @@ -1786,6 +1798,12 @@ #endif +/* Define to hold the list of target names suitable for offloading. */ +#ifndef USED_FOR_TARGET +#undef OFFLOAD_TARGETS +#endif + + /* Define to the address where bug reports for this package should be sent. */ #ifndef USED_FOR_TARGET #undef PACKAGE_BUGREPORT diff --git a/gcc/configure b/gcc/configure index 064b438..ebc3149 100755 --- a/gcc/configure +++ b/gcc/configure @@ -760,6 +760,9 @@ LN LN_S AWK SET_MAKE +accel_dir_suffix +real_target_noncanonical +enable_as_accelerator REPORT_BUGS_TEXI REPORT_BUGS_TO PKGVERSION @@ -3198,6 +3201,10 @@ esac +# Used for constructing correct paths for offload compilers. +real_target_noncanonical=${target_noncanonical} +accel_dir_suffix= + # Determine the target- and build-specific subdirectories # post-stage1 host modules use a different CC_FOR_BUILD so, in order to @@ -7395,6 +7402,45 @@ else fi +if test x"$enable_as_accelerator_for" != x; then + +$as_echo "#define ACCEL_COMPILER 1" >>confdefs.h + + enable_as_accelerator=yes + case "${target}" in + *-intelmicemul-*) + # In this case we expect offload compiler to be built as native, so we + # need to rename the driver to avoid clashes with host's drivers. + program_transform_name="s&^&${target}-&" ;; + esac + sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#" + program_transform_name=`echo $program_transform_name | sed $sedscript` + accel_dir_suffix=/accel/${target_noncanonical} + real_target_noncanonical=${enable_as_accelerator_for} +fi + + + + +for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do + tgt=`echo $tgt | sed 's/=.*//'` + if test x"$offload_targets" = x; then + offload_targets=$tgt + else + offload_targets="$offload_targets:$tgt" + fi +done + +cat >>confdefs.h <<_ACEOF +#define OFFLOAD_TARGETS "$offload_targets" +_ACEOF + +if test x"$offload_targets" != x; then + +$as_echo "#define ENABLE_OFFLOADING 1" >>confdefs.h + +fi + # Check whether --with-multilib-list was given. if test "${with_multilib_list+set}" = set; then : @@ -18094,7 +18140,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18097 "configure" +#line 18143 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18200,7 +18246,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18203 "configure" +#line 18249 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/gcc/configure.ac b/gcc/configure.ac index 8be5479..0f7ab89 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -38,6 +38,10 @@ AC_CANONICAL_TARGET # Determine the noncanonical target name, for directory use. ACX_NONCANONICAL_TARGET +# Used for constructing correct paths for offload compilers. +real_target_noncanonical=${target_noncanonical} +accel_dir_suffix= + # Determine the target- and build-specific subdirectories GCC_TOPLEV_SUBDIRS @@ -883,6 +887,40 @@ AC_ARG_ENABLE(languages, esac], [enable_languages=c]) +if test x"$enable_as_accelerator_for" != x; then + AC_DEFINE(ACCEL_COMPILER, 1, + [Define if this compiler should be built as the offload target compiler.]) + enable_as_accelerator=yes + case "${target}" in + *-intelmicemul-*) + # In this case we expect offload compiler to be built as native, so we + # need to rename the driver to avoid clashes with host's drivers. + program_transform_name="s&^&${target}-&" ;; + esac + sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#" + program_transform_name=`echo $program_transform_name | sed $sedscript` + accel_dir_suffix=/accel/${target_noncanonical} + real_target_noncanonical=${enable_as_accelerator_for} +fi +AC_SUBST(enable_as_accelerator) +AC_SUBST(real_target_noncanonical) +AC_SUBST(accel_dir_suffix) + +for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do + tgt=`echo $tgt | sed 's/=.*//'` + if test x"$offload_targets" = x; then + offload_targets=$tgt + else + offload_targets="$offload_targets:$tgt" + fi +done +AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets", + [Define to hold the list of target names suitable for offloading.]) +if test x"$offload_targets" != x; then + AC_DEFINE(ENABLE_OFFLOADING, 1, + [Define this to enable support for offloading.]) +fi + AC_ARG_WITH(multilib-list, [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])], :, diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d4351e7..26aa986 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,11 @@ +2014-11-13 Bernd Schmidt <bernds@codesourcery.com> + Thomas Schwinge <thomas@codesourcery.com> + Ilya Verbin <ilya.verbin@intel.com> + Andrey Turetskiy <andrey.turetskiy@intel.com> + + * Make-lang.in (c++.install-common): Do not install for the offload + compiler. + 2014-11-13 Kai Tietz <ktietz@redhat.com> * cp-tree.h (cp_build_function_call): Remove prototype. diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index 1c8fa66..a58819a 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -164,21 +164,23 @@ check_g++_parallelize = 10000 # Install the driver program as $(target)-g++ and $(target)-c++, and # also as g++ and c++ if native. c++.install-common: installdirs - -rm -f $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext) - -$(INSTALL_PROGRAM) xg++$(exeext) $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext) - -chmod a+x $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext) - -rm -f $(DESTDIR)$(bindir)/$(CXX_INSTALL_NAME)$(exeext) - -( cd $(DESTDIR)$(bindir) && \ - $(LN) $(GXX_INSTALL_NAME)$(exeext) $(CXX_INSTALL_NAME)$(exeext) ) - -if [ -f cc1plus$(exeext) ] ; then \ - if [ ! -f g++-cross$(exeext) ] ; then \ - rm -f $(DESTDIR)$(bindir)/$(GXX_TARGET_INSTALL_NAME)$(exeext); \ - ( cd $(DESTDIR)$(bindir) && \ - $(LN) $(GXX_INSTALL_NAME)$(exeext) $(GXX_TARGET_INSTALL_NAME)$(exeext) ); \ - rm -f $(DESTDIR)$(bindir)/$(CXX_TARGET_INSTALL_NAME)$(exeext); \ - ( cd $(DESTDIR)$(bindir) && \ - $(LN) $(CXX_INSTALL_NAME)$(exeext) $(CXX_TARGET_INSTALL_NAME)$(exeext) ); \ - fi ; \ + -if test "$(enable_as_accelerator)" != "yes" ; then \ + rm -f $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext); \ + $(INSTALL_PROGRAM) xg++$(exeext) $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext); \ + chmod a+x $(DESTDIR)$(bindir)/$(GXX_INSTALL_NAME)$(exeext); \ + rm -f $(DESTDIR)$(bindir)/$(CXX_INSTALL_NAME)$(exeext); \ + ( cd $(DESTDIR)$(bindir) && \ + $(LN) $(GXX_INSTALL_NAME)$(exeext) $(CXX_INSTALL_NAME)$(exeext) ); \ + if [ -f cc1plus$(exeext) ] ; then \ + if [ ! -f g++-cross$(exeext) ] ; then \ + rm -f $(DESTDIR)$(bindir)/$(GXX_TARGET_INSTALL_NAME)$(exeext); \ + ( cd $(DESTDIR)$(bindir) && \ + $(LN) $(GXX_INSTALL_NAME)$(exeext) $(GXX_TARGET_INSTALL_NAME)$(exeext) ); \ + rm -f $(DESTDIR)$(bindir)/$(CXX_TARGET_INSTALL_NAME)$(exeext); \ + ( cd $(DESTDIR)$(bindir) && \ + $(LN) $(CXX_INSTALL_NAME)$(exeext) $(CXX_TARGET_INSTALL_NAME)$(exeext) ); \ + fi ; \ + fi; \ fi # We can't use links because not everyone supports them. So just copy the diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index f314cf2..64c66f9 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -1845,6 +1845,20 @@ If GCC is configured with some multilibs that use glibc and some that do not, this option applies only to the multilibs that use glibc. However, such configurations may not work well as not all the relevant configuration in GCC is on a per-multilib basis. + +@item --enable-as-accelerator-for=@var{target} +Build as offload target compiler. Specify offload host triple by @var{target}. + +@item --enable-offload-targets=@var{target1}[=@var{path1}],@dots{},@var{targetN}[=@var{pathN}] +Enable offloading to targets @var{target1}, @dots{}, @var{targetN}. +Offload compilers are expected to be already installed. Default search +path for them is @file{@var{exec-prefix}}, but it can be changed by +specifying paths @var{path1}, @dots{}, @var{pathN}. + +@smallexample +% @var{srcdir}/configure \ + --enable-offload-target=i686-unknown-linux-gnu=/path/to/i686/compiler,x86_64-pc-linux-gnu +@end smallexample @end table @subheading Cross-Compiler-Specific Options diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7fd573c..ec1b7b5 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2014-11-13 Bernd Schmidt <bernds@codesourcery.com> + Thomas Schwinge <thomas@codesourcery.com> + Ilya Verbin <ilya.verbin@intel.com> + Andrey Turetskiy <andrey.turetskiy@intel.com> + + * Make-lang.in (fortran.install-common): Do not install for the offload + compiler. + 2014-11-11 Manuel López-Ibáñez <manu@gcc.gnu.org> PR fortran/44054 diff --git a/gcc/fortran/Make-lang.in b/gcc/fortran/Make-lang.in index ca0a4e6..3621b4f 100644 --- a/gcc/fortran/Make-lang.in +++ b/gcc/fortran/Make-lang.in @@ -235,14 +235,16 @@ install-finclude-dir: installdirs # Install the driver program as $(target)-gfortran, and also as gfortran # if native. fortran.install-common: install-finclude-dir installdirs - -if [ -f f951$(exeext) ] ; then \ - rm -f $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ - $(INSTALL_PROGRAM) gfortran$(exeext) $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ - chmod a+x $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ - if [ ! -f gfortran-cross$(exeext) ] ; then \ - rm -f $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ - $(LN) $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext) $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ - fi ; \ + -if test "$(enable_as_accelerator)" != "yes" ; then \ + if [ -f f951$(exeext) ] ; then \ + rm -f $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ + $(INSTALL_PROGRAM) gfortran$(exeext) $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ + chmod a+x $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ + if [ ! -f gfortran-cross$(exeext) ] ; then \ + rm -f $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ + $(LN) $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext) $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ + fi ; \ + fi; \ fi fortran.install-plugin: |