On Sun, 14 Apr 2019 at 18:40, Johannes Pfau <[email protected]> wrote:
>
> Even if we disable libphobos (as unsupported in libphobos/configure.tgt
> or using --disable-libphobos), config-lang.in still adds target-libbacktrace
> to the target_libs. This means target-zlib and target-libbacktrace still end
> up
> being configured. On some embedded toolchains, libbacktrace however fails to
> configure
> properly. This breaks the GCC build if d is added to --enabled-languages,
> even if
> phobos is properly marked as unsupported.
>
> As we ideally want --enable-languages=d to work everywhere where
> --enable-languages=c works, this patch makes sure not to modify the
> target_libs
> in any way if phobos is disabled. Due to the way this is implemented in
> configure.ac (default: configure all target libs, disable those only needed by
> disabled targets) we can not simply conditionally set target_libs. If we do
> not
> set target_libs, we have to adjust disabled_target_libs instead for this to
> work properly.
>
> noconfigdirs without this patch if phobos is disabled:
> --enable-languages=c: gotools target-libgo target-libphobos target-zlib
> target-libbacktrace
> --enable-languages=d: gotools target-libgo target-libphobos
> --enable-languages=d,go:
>
> noconfigdirs with this patch if phobos is disabled:
> --enable-languages=c: gotools target-libgo target-libphobos target-zlib
> target-libbacktrace
> --enable-languages=d: gotools target-libgo target-libphobos target-zlib
> target-libbacktrace
> --enable-languages=d,go: target-libphobos target-zlib
>
> Originally reviewed and tested here:
> https://github.com/D-Programming-GDC/gcc/pull/11
>
OK, but for want of a better way to do this. However I think its
right to have better support for targets without libphobos.
I've attached a couple knit changes.
--
Iain
---
diff --git a/gcc/d/config-lang.in b/gcc/d/config-lang.in
index 3fe1ac42f92..a3f78c7e6f9 100644
--- a/gcc/d/config-lang.in
+++ b/gcc/d/config-lang.in
@@ -25,7 +25,25 @@ language="d"
compilers="d21\$(exeext)"
-target_libs="target-libphobos target-zlib target-libbacktrace"
+phobos_target_deps="target-zlib target-libbacktrace"
+phobos_target_libs="target-libphobos $phobos_target_deps"
+
+case "${noconfigdirs}" in
+ # Check if phobos was disabled as unsupported
+ *target-libphobos*)
+ disabled_target_libs="$disabled_target_libs $phobos_target_deps"
+ ;;
+ *)
+ # The --disable-<component> handler in configure.ac is called after
+ # config-lang.in. So when using --disable-libphobos, it has not been
+ # added to noconfigdirs here yet
+ if test x${enable_libphobos} != xno; then
+ target_libs="$phobos_target_libs"
+ else
+ disabled_target_libs="$disabled_target_libs $phobos_target_libs"
+ fi
+ ;;
+esac
gtfiles="\$(srcdir)/d/d-tree.h \$(srcdir)/d/d-builtins.cc \$(srcdir)/d/d-lang.cc \$(srcdir)/d/modules.cc \$(srcdir)/d/typeinfo.cc"