diff mbox

[2/4] Building in accel-gcc

Message ID 52988892.7070909@codesourcery.com
State New
Headers show

Commit Message

Bernd Schmidt Nov. 29, 2013, 12:29 p.m. UTC
This adds Makefile and configure goop to enable building an accelerator
gcc in its own subdirectory along with the host compiler.


Bernd
diff mbox

Patch


	* Makefile.def (host_modules, dependencies): Add accel-gcc entries.
	(flags_to_pass): Add accel_target_alias).
	* Makefile.tpl (accel_target_alias, accel_target_vendor,
	accel_target_os, accel_target): New variables.
	(configure-[+prefix+][+module+]): Special case accel-gcc module.
	* configure.ac (host_tools): Add accel-gcc.
	(ENABLE_ACCELERATOR handling): Set skipdirs and
	accel_target_noncanonical, then use ACX_CANONICAL_ACCEL_TARGET.
	* configure: Regenerate.
	* Makefile.in: Regenerate.

	config/
	* acx.m4 (ACX_CANONICAL_ACCEL_TARGET): New macro.

Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
@@ -141,7 +141,7 @@  host_libs="intl libiberty opcodes bfd re
 # binutils, gas and ld appear in that order because it makes sense to run
 # "make check" in that particular order.
 # If --enable-gold is used, "gold" may replace "ld".
-host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gprof etc expect dejagnu m4 utils guile fastjar gnattools"
+host_tools="texinfo flex bison binutils gas ld fixincludes accel-gcc gcc cgen sid sim gdb gprof etc expect dejagnu m4 utils guile fastjar gnattools"
 
 # libgcj represents the runtime libraries only used by gcj.
 libgcj="target-libffi \
@@ -297,15 +297,26 @@  AC_ARG_ENABLE(accelerator,
 		[build accelerator @<:@ARG={no,device-triplet}@:>@])],
 ENABLE_ACCELERATOR=$enableval,
 ENABLE_ACCELERATOR=no)
+accel_target_noncanonical=NONE
 case "${ENABLE_ACCELERATOR}" in
-  yes) AC_MSG_ERROR([--enable-accelerators must name accelerator]) ;;
-  no) ;;
-  nvptx)
-   # validate target ok here?
-   ;;
-  *) AC_MSG_ERROR([unrecognized accelerator]) ;;
+  yes)
+    AC_MSG_ERROR([--enable-accelerators must name accelerator])
+    skipdirs="${skipdirs} accel-gcc"
+    ;;
+  no)
+    skipdirs="${skipdirs} accel-gcc"
+    ;;
+  nvptx*)
+    accel_target_noncanonical="${ENABLE_ACCELERATOR}"
+    ;;
+  *)
+    AC_MSG_ERROR([unrecognized accelerator])
+    skipdirs="${skipdirs} accel-gcc"
+    ;;
 esac
 
+ACX_CANONICAL_ACCEL_TARGET
+
 # Handle --enable-gold, --enable-ld.
 # --disable-gold [--enable-ld]
 #     Build only ld.  Default option.
@@ -2139,7 +2150,15 @@  done
 configdirs_all="$configdirs"
 configdirs=
 for i in ${configdirs_all} ; do
-  if test -f ${srcdir}/$i/configure ; then
+  case $i in
+    accel-gcc)
+      confsrcdir=gcc
+      ;;
+    *)
+      confsrcdir=$i
+      ;;
+  esac
+  if test -f ${srcdir}/${confsrcdir}/configure ; then
     configdirs="${configdirs} $i"
   fi
 done
@@ -3148,7 +3167,6 @@  case " $configdirs " in
     ;;
 esac
 
-
 # Host tools.
 NCN_STRICT_CHECK_TOOLS(AR, ar)
 NCN_STRICT_CHECK_TOOLS(AS, as)
Index: config/acx.m4
===================================================================
--- config/acx.m4.orig
+++ config/acx.m4
@@ -61,6 +61,36 @@  AC_DEFUN([ACX_NONCANONICAL_TARGET],
 AC_SUBST(target_noncanonical)
 ]) []dnl # ACX_NONCANONICAL_TARGET
 
+AC_DEFUN(ACX_CANONICAL_ACCEL_TARGET,
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_MSG_CHECKING(accelerator target system type)
+
+dnl Set accel_target_alias.
+accel_target_alias=$accel_target_noncanonical
+case "$accel_target_alias" in
+NONE)
+  accel_target=NONE
+  ;;
+*)
+  accel_target=`$ac_config_sub $accel_target_alias`
+  ;;
+esac
+
+dnl Set the other accel_target vars.
+changequote(<<, >>)dnl
+accel_target_cpu=`echo $accel_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+accel_target_vendor=`echo $accel_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+accel_target_os=`echo $accel_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+changequote([, ])dnl
+AC_MSG_RESULT($accel_target)
+AC_SUBST(accel_target_noncanonical)dnl
+AC_SUBST(accel_target)dnl
+AC_SUBST(accel_target_alias)dnl
+AC_SUBST(accel_target_cpu)dnl
+AC_SUBST(accel_target_vendor)dnl
+AC_SUBST(accel_target_os)dnl
+])
+
 dnl ####
 dnl # GCC_TOPLEV_SUBDIRS
 dnl # GCC & friends build 'build', 'host', and 'target' tools.  These must
Index: Makefile.def
===================================================================
--- Makefile.def.orig
+++ Makefile.def
@@ -45,6 +45,7 @@  host_modules= { module= flex; no_check_c
 host_modules= { module= gas; bootstrap=true; };
 host_modules= { module= gcc; bootstrap=true; 
 		extra_make_flags="$(EXTRA_GCC_FLAGS)"; };
+host_modules= { module= accel-gcc; actual_module=gcc; };
 host_modules= { module= gmp; lib_path=.libs; bootstrap=true;
 		extra_configure_flags='--disable-shared';
 		no_install= true;
@@ -211,6 +212,7 @@  flags_to_pass = { flag= sysconfdir ; };
 flags_to_pass = { flag= tooldir ; };
 flags_to_pass = { flag= build_tooldir ; };
 flags_to_pass = { flag= target_alias ; };
+flags_to_pass = { flag= accel_target_alias ; };
 
 // Build tools
 flags_to_pass = { flag= AWK ; };
@@ -307,6 +309,7 @@  dependencies = { module=all-gcc; on=all-
 dependencies = { module=all-gcc; on=all-mpfr; };
 dependencies = { module=all-gcc; on=all-mpc; };
 dependencies = { module=all-gcc; on=all-cloog; };
+dependencies = { module=all-gcc; on=all-accel-gcc; };
 dependencies = { module=all-gcc; on=all-build-texinfo; };
 dependencies = { module=all-gcc; on=all-build-bison; };
 dependencies = { module=all-gcc; on=all-build-flex; };
@@ -319,6 +322,24 @@  dependencies = { module=all-gcc; on=all-
 dependencies = { module=all-gcc; on=all-libiberty; };
 dependencies = { module=all-gcc; on=all-fixincludes; };
 dependencies = { module=all-gcc; on=all-lto-plugin; };
+dependencies = { module=all-accel-gcc; on=all-libiberty; hard=true; };
+dependencies = { module=all-accel-gcc; on=all-intl; };
+dependencies = { module=all-accel-gcc; on=all-mpfr; };
+dependencies = { module=all-accel-gcc; on=all-mpc; };
+dependencies = { module=all-accel-gcc; on=all-cloog; };
+dependencies = { module=all-accel-gcc; on=all-accel-gcc; };
+dependencies = { module=all-accel-gcc; on=all-build-texinfo; };
+dependencies = { module=all-accel-gcc; on=all-build-bison; };
+dependencies = { module=all-accel-gcc; on=all-build-flex; };
+dependencies = { module=all-accel-gcc; on=all-build-libiberty; };
+dependencies = { module=all-accel-gcc; on=all-build-fixincludes; };
+dependencies = { module=all-accel-gcc; on=all-zlib; };
+dependencies = { module=all-accel-gcc; on=all-libbacktrace; hard=true; };
+dependencies = { module=all-accel-gcc; on=all-libcpp; hard=true; };
+dependencies = { module=all-accel-gcc; on=all-libdecnumber; hard=true; };
+dependencies = { module=all-accel-gcc; on=all-libiberty; };
+dependencies = { module=all-accel-gcc; on=all-fixincludes; };
+dependencies = { module=all-accel-gcc; on=all-lto-plugin; };
 dependencies = { module=info-gcc; on=all-build-libiberty; };
 dependencies = { module=dvi-gcc; on=all-build-libiberty; };
 dependencies = { module=pdf-gcc; on=all-build-libiberty; };
Index: Makefile.tpl
===================================================================
--- Makefile.tpl.orig
+++ Makefile.tpl
@@ -49,6 +49,10 @@  target_alias=@target_noncanonical@
 target_vendor=@target_vendor@
 target_os=@target_os@
 target=@target@
+accel_target_alias=@accel_target_noncanonical@
+accel_target_vendor=@accel_target_vendor@
+accel_target_os=@accel_target_os@
+accel_target=@accel_target@
 
 program_transform_name = @program_transform_name@
 
@@ -996,18 +1000,23 @@  configure-[+prefix+][+module+]: [+ IF bo
 	$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \
 	[+exports+] [+extra_exports+] \
 	echo Configuring in [+subdir+]/[+module+]; \
+	[+ IF (= (get "module") "accel-gcc") +] \
+	this_target="$(accel_target_alias)"; \
+	[+ ELSE +] \
+	this_target="[+target_alias+]"; \
+	[+ ENDIF +] \
 	cd "[+subdir+]/[+module+]" || exit 1; \
 	case $(srcdir) in \
 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
-	  *) topdir=`echo [+subdir+]/[+module+]/ | \
+	  *) topdir=`echo [+subdir+]/[+? actual_module (get "actual_module") (get "module")+]/ | \
 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
 	esac; \
-	srcdiroption="--srcdir=$${topdir}/[+module+]"; \
-	libsrcdir="$$s/[+module+]"; \
+	srcdiroption="--srcdir=$${topdir}/[+? actual_module (get "actual_module") (get "module")+]"; \
+	libsrcdir="$$s/[+? actual_module (get "actual_module") (get "module")+]"; \
 	[+ IF no-config-site +]rm -f no-such-file || : ; \
 	CONFIG_SITE=no-such-file [+ ENDIF +]$(SHELL) $${libsrcdir}/configure \
 	  [+args+] --build=${build_alias} --host=[+host_alias+] \
-	  --target=[+target_alias+] $${srcdiroption} [+extra_configure_flags+] \
+	  --target=$${this_target} $${srcdiroption} [+extra_configure_flags+] \
 	  || exit 1
 @endif [+prefix+][+module+]
 
@@ -1085,7 +1094,7 @@  all-[+prefix+][+module+]: configure-[+pr
 	[+exports+] [+extra_exports+] \
 	(cd [+subdir+]/[+module+] && \
 	  $(MAKE) $(BASE_FLAGS_TO_PASS) [+args+] [+stage1_args+] [+extra_make_flags+] \
-		$(TARGET-[+prefix+][+module+]))
+		$(TARGET-[+prefix+][+? actual_module (get "actual_module") (get "module")+]))
 @endif [+prefix+][+module+]
 
 [+ IF bootstrap +]