aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcc.c
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2021-11-19 09:09:54 +0100
committerIain Buclaw <ibuclaw@gdcproject.org>2021-12-01 19:49:44 +0100
commit185b307b03db20bfc7105a519ef19e2cafea7196 (patch)
tree9476f0aac681d7d0bcf432a74d8e0258ad211f34 /gcc/gcc.c
parent53caa4723d8de73fe21e63ba264082f3071b2887 (diff)
downloadgcc-185b307b03db20bfc7105a519ef19e2cafea7196.zip
gcc-185b307b03db20bfc7105a519ef19e2cafea7196.tar.gz
gcc-185b307b03db20bfc7105a519ef19e2cafea7196.tar.bz2
darwin, d: Support outfile substitution for libphobos
In the gdc driver, this takes the previous fix for the Darwin D bootstrap, and extends it to the -static-libphobos option as well. Rather than pushing the -static-libphobos option back onto the command line, the setting of SKIPOPT is instead conditionally removed. The same change has been repeated for -static-libstdc++ so there is now no need to call generate_option to re-add it. In the gcc driver, -static-libphobos has been added as a common option, validated, and a new outfile substition added to config/darwin.h to correctly replace -lgphobos with libgphobos.a. gcc/ChangeLog: * common.opt (static-libphobos): Add option. * config/darwin.h (LINK_SPEC): Substitute -lgphobos with libgphobos.a when linking statically. * gcc.c (driver_handle_option): Set -static-libphobos as always valid. gcc/d/ChangeLog: * d-spec.cc (lang_specific_driver): Set SKIPOPT on -static-libstdc++ and -static-libphobos only when target supports LD_STATIC_DYNAMIC. Remove generate_option to re-add -static-libstdc++. libphobos/ChangeLog: * testsuite/testsuite_flags.in: Add libphobos library directory as search path to --gdcldflags.
Diffstat (limited to 'gcc/gcc.c')
-rw-r--r--gcc/gcc.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 6ff2278..694c257 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -4576,10 +4576,12 @@ driver_handle_option (struct gcc_options *opts,
case OPT_static_libgcc:
case OPT_shared_libgcc:
case OPT_static_libgfortran:
+ case OPT_static_libphobos:
case OPT_static_libstdc__:
/* These are always valid, since gcc.c itself understands the
- first two, gfortranspec.c understands -static-libgfortran and
- g++spec.c understands -static-libstdc++ */
+ first two, gfortranspec.c understands -static-libgfortran,
+ d-spec.cc understands -static-libphobos, and g++spec.c
+ understands -static-libstdc++ */
validated = true;
break;