This adds Makefile and configure goop to enable building an accelerator gcc in its own subdirectory along with the host compiler.
Bernd
* 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 +]