public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: "James K. Lowden" <jklowden@schemamania.org>
To: Michael Matz <matz@suse.de>
Cc: gcc@gcc.gnu.org
Subject: Re: access to include path in front end
Date: Thu, 1 Dec 2022 11:11:26 -0500	[thread overview]
Message-ID: <20221201111126.3c0789057cdd420d930836a0@schemamania.org> (raw)
In-Reply-To: <alpine.LSU.2.20.2211301537260.24878@wotan.suse.de>

On Wed, 30 Nov 2022 15:58:40 +0000 (UTC)
Michael Matz <matz@suse.de> wrote:

Hi Michael, 

First, thanks for a great answer, and to Jonathan for reminding me of
what documentation we do have for this. I'm now using -I in cobol1, but
I'm not getting it from gcobol. I guess I need to extend the spec
options, but I'm puzzled because so far I've been able to dodge that
bullet.  

> E.g. look in gcc.cc for '@c' (matching the file extension) how that
> entry uses '%(cpp_unique_options)', and how cpp_unique_options is
> defined for the specs language:
> 
>   INIT_STATIC_SPEC ("cpp_unique_options",       &cpp_unique_options),
> 
> and
> 
> static const char *cpp_unique_options =
>   "%{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %@{I*&F*} %{P} %I\  

Please tell me if this looks right and complete to you:

1.  Add an element to the static_specs array: 

	  INIT_STATIC_SPEC ("cobol_options", &cobol_options),

2.  Define the referenced structure: 

	static const char *cobol_options =  "%{v} %@{I*&F*}"
  or just
	static const char *cobol_options =  "%{v} %@{I*}"

  because I don't know what -F does, or if I need it.  

I'm using "cobol_options" instead of "cobol_unique_options" because the
options aren't unique to Cobol, and because only cpp seems to have
unique options.  

I'm including %{v} against the future, when the cobol1 compiler
supports a -v option. 

3.  Correct the entries in the default_compilers array.  Currently I
have in cobol/lang-specs.h:

    {".cob", "@cobol", 0, 0, 0},
    {".COB", "@cobol", 0, 0, 0},
    {".cbl", "@cobol", 0, 0, 0},
    {".CBL", "@cobol", 0, 0, 0},
    {"@cobol", 
	"cobol1 %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}", 
	0, 0, 0}, 

That last one is a doozy.  Is it even slightly right? IIUC, I should at
least remove 

	%{!fsyntax-only:%(invoke_as)}

because I don't need the options from the invoke_as string in gcc.cc. 

(Actually, we do have a syntax-only feature.  IIUC, the we could define
our own command-line options to invoke it, and use our own static
variable cobol_foo (instead of invoke_as) to pass those options to
cobol1 when -fsyntax-only is used.  Or, alternatively, we could just
honor -fsyntax-only literally, like any other option.) 

That would still leave me with too much, because cobol1 ignores most of
the options cc1 accepts.  What would you do?  

I don't understand the relationship between default_compliers and
static_specs.  

I have made no special provision for "compiler can deal with
multiple source files", except that cobol1 accepts multiple source
files on the command line, and iterates over them.  If that's enough,
then I'll set compiler::combinable to 1.  

I'm trying those 3 today.  I'd like to get it right, as long as I'm in
the neighborhood.  :-)  

+++

As I mentioned, for a year I've been able to avoid the Specs Language,
apparently because some things happen by default.  The options defined
in cobol/lang.opt are passed from gcobol to cobol1.  The value of the
-findicator-column option is available (but only if the option starts
with "f"; -indicator-column doesn't work).  cobol1 sees the value of
-fmax-errors. 

Is that because I'm using gcobol, and not "gcc -x cobol" ?  If not, how
do I know what's passed by default, and what needs specification?  

Thanks again for your guidance.  I doubt I'll ever really understand
what's going on at this level, but I'm glad to plug in the right magic
values.  

Regards, 

--jkl


  parent reply	other threads:[~2022-12-01 16:43 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-29 15:08 James K. Lowden
2022-11-30  7:49 ` Richard Biener
2022-11-30 17:18   ` James K. Lowden
2022-11-30 15:58 ` Michael Matz
2022-11-30 17:58   ` Jonathan Wakely
2022-12-01 16:11   ` James K. Lowden [this message]
2022-12-01 17:14     ` Michael Matz
2022-12-02 18:27       ` James K. Lowden
2022-12-05 14:01         ` Michael Matz

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=20221201111126.3c0789057cdd420d930836a0@schemamania.org \
    --to=jklowden@schemamania.org \
    --cc=gcc@gcc.gnu.org \
    --cc=matz@suse.de \
    /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).