From: Iain Sandoe <iains.gcc@gmail.com>
To: gcc-patches@gcc.gnu.org
Cc: gaiusmod2@gmail.com
Subject: [PATCH] modula-2, driver: Implement handling for -static-libgm2.
Date: Mon, 2 Jan 2023 10:38:05 +0000 [thread overview]
Message-ID: <20230102103805.4328-1-iain@sandoe.co.uk> (raw)
tested on x86_64-linux-gnu, x86_64,aarch64-darwin21,
OK for trunk?
thanks,
Iain
--- 8< ---
This was unimplemented so far.
gcc/ChangeLog:
* common.opt: Add -static-libgm2.
* config/darwin.h (LINK_SPEC): Handle static-libgm2.
gcc/m2/ChangeLog:
* gm2spec.cc (lang_specific_driver): Handle static-libgm2.
---
gcc/common.opt | 4 ++++
gcc/config/darwin.h | 7 ++++++-
gcc/m2/gm2spec.cc | 24 +++++++++++++++++++++++-
3 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/gcc/common.opt b/gcc/common.opt
index b01f7a7a4a2..0f3910cf5f6 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -3630,6 +3630,10 @@ static-libgfortran
Driver
; Documented for Fortran, but always accepted by driver.
+static-libgm2
+Driver
+; Documented for Modula-2, but always accepted by driver.
+
static-libphobos
Driver
; Documented for D, but always accepted by driver.
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 0ec882ffb54..a3edd7c922b 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -476,7 +476,12 @@ extern GTY(()) int darwin_ms_struct;
%{static|static-libgcc|static-libphobos:%:replace-outfile(-lgphobos libgphobos.a%s)}\
%{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\
%{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\
- %{force_cpusubtype_ALL:-arch %(darwin_arch)} \
+ %{static|static-libgm2:%:replace-outfile(-lm2pim libm2pim.a%s)}\
+ %{static|static-libgm2:%:replace-outfile(-lm2iso libm2iso.a%s)}\
+ %{static|static-libgm2:%:replace-outfile(-lm2min libm2min.a%s)}\
+ %{static|static-libgm2:%:replace-outfile(-lm2log libm2log.a%s)}\
+ %{static|static-libgm2:%:replace-outfile(-lm2cor libm2cor.a%s)}\
+ %{force_cpusubtype_ALL:-arch %(darwin_arch)} \
%{!force_cpusubtype_ALL:-arch %(darwin_subarch)} "\
LINK_SYSROOT_SPEC \
"%{mmacosx-version-min=*:-macosx_version_min %*} \
diff --git a/gcc/m2/gm2spec.cc b/gcc/m2/gm2spec.cc
index 4996fa49789..6a17114c9f3 100644
--- a/gcc/m2/gm2spec.cc
+++ b/gcc/m2/gm2spec.cc
@@ -585,6 +585,9 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
/* Should the driver perform a link? */
bool linking = true;
+ /* Should the driver link the shared gm2 libs? */
+ bool shared_libgm2 = true;
+
/* "-lm" or "-lmath" if it appears on the command line. */
const struct cl_decoded_option *saw_math = NULL;
@@ -594,7 +597,8 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
/* By default, we throw on the math library if we have one. */
int need_math = (MATH_LIBRARY[0] != '\0');
- /* 1 if we should add -lpthread to the command-line. */
+ /* 1 if we should add -lpthread to the command-line.
+ FIXME: the default should be a configuration choice. */
int need_pthread = 1;
/* True if we saw -static. */
@@ -774,6 +778,16 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
#endif
break;
+ case OPT_static_libgm2:
+ shared_libgm2 = false;
+#ifdef HAVE_LD_STATIC_DYNAMIC
+ /* Remove -static-libgm2 from the command only if target supports
+ LD_STATIC_DYNAMIC. When not supported, it is left in so that a
+ back-end target can use outfile substitution. */
+ args[i] |= SKIPOPT;
+#endif
+ break;
+
case OPT_stdlib_:
which_library = (stdcxxlib_kind) decoded_options[i].value;
break;
@@ -877,8 +891,16 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
if (linking)
{
+#ifdef HAVE_LD_STATIC_DYNAMIC
+ if (allow_libraries && !shared_libgm2)
+ append_option (OPT_Wl_, LD_STATIC_OPTION, 1);
+#endif
if (allow_libraries)
add_default_archives (libpath, libraries);
+#ifdef HAVE_LD_STATIC_DYNAMIC
+ if (allow_libraries && !shared_libgm2)
+ append_option (OPT_Wl_, LD_DYNAMIC_OPTION, 1);
+#endif
/* Add `-lstdc++' if we haven't already done so. */
#ifdef HAVE_LD_STATIC_DYNAMIC
if (library > 1 && !static_link)
--
2.37.1 (Apple Git-137.1)
next reply other threads:[~2023-01-02 10:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-02 10:38 Iain Sandoe [this message]
2023-01-04 12:11 ` Gaius Mulley
2023-01-04 19:41 ` Iain Sandoe
2023-01-05 3:07 ` Gaius Mulley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230102103805.4328-1-iain@sandoe.co.uk \
--to=iains.gcc@gmail.com \
--cc=gaiusmod2@gmail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=iain@sandoe.co.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).