public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* Re: make capabilities
  2001-03-21 15:59 make capabilities J.T. Conklin
@ 2001-03-21 15:59 ` Eli Zaretskii
  2001-03-21 15:59   ` J.T. Conklin
  0 siblings, 1 reply; 4+ messages in thread
From: Eli Zaretskii @ 2001-03-21 15:59 UTC (permalink / raw)
  To: J.T. Conklin; +Cc: gdb

On 1 Mar 2001, J.T. Conklin wrote:

> Is it safe to assume that all versions of make used to build GDB will
> understand the ${FOO:.c=.o} construct?  It does not appear to be used
> elsewhere in the GDB or binutils trees, so it is possible (maybe even
> likely) that they do not.  But I do not know how to solve a problem
> without it.
> 
> The problem is the "lint" target:
> 
>         lint:   $(LINTFILES)
>                 $(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $(LINTFILES) \
>                    `echo $(DEPFILES) | sed 's/\.o /\.c /g'`
> 
> If srcdir != objdir, lint is not able to find the source files.  This
> can be fixed if the rule is re-written as such:
> 
>         lint:   $(LINTFILES) $(DEPFILES:.c=.o)
>                 $(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $^
> 
> Thoughts?

I can suggest two thoughts:

  1. The current Emacs distribution uses $(FOO:.x=.y) in its Makefile's.  
     While this version is not yet released, its pretest was tested on 
     many different systems, and none failed to build it.

  2. However, it _is_ known that not all versions of Make support that 
     construct.  If you want to be 100% portable, you can edit .c into .o 
     with `sed` invocation in the rule's commands.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: make capabilities
  2001-03-21 15:59   ` J.T. Conklin
@ 2001-03-21 15:59     ` Eli Zaretskii
  0 siblings, 0 replies; 4+ messages in thread
From: Eli Zaretskii @ 2001-03-21 15:59 UTC (permalink / raw)
  To: J.T. Conklin; +Cc: gdb

On 5 Mar 2001, J.T. Conklin wrote:

> Eli>   1. The current Emacs distribution uses $(FOO:.x=.y) in its Makefile's.  
> Eli>      While this version is not yet released, its pretest was tested on 
> Eli>      many different systems, and none failed to build it.
> 
> Good to hear.  I'd feel more comfortable if it had been released and there
> weren't any recorded complaints.

That makes two of us (I was the one who asked the Emacs head
maintainer to use this construct instead of invoking Sed).

Anyway, the Emacs 21 pretest is taking such a long time and draining
so much of my resources that I really wish it was over ;-)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* make capabilities
@ 2001-03-21 15:59 J.T. Conklin
  2001-03-21 15:59 ` Eli Zaretskii
  0 siblings, 1 reply; 4+ messages in thread
From: J.T. Conklin @ 2001-03-21 15:59 UTC (permalink / raw)
  To: gdb

Is it safe to assume that all versions of make used to build GDB will
understand the ${FOO:.c=.o} construct?  It does not appear to be used
elsewhere in the GDB or binutils trees, so it is possible (maybe even
likely) that they do not.  But I do not know how to solve a problem
without it.

The problem is the "lint" target:

        lint:   $(LINTFILES)
                $(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $(LINTFILES) \
                   `echo $(DEPFILES) | sed 's/\.o /\.c /g'`

If srcdir != objdir, lint is not able to find the source files.  This
can be fixed if the rule is re-written as such:

        lint:   $(LINTFILES) $(DEPFILES:.c=.o)
                $(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $^

Thoughts?

        --jtc

-- 
J.T. Conklin
RedBack Networks

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: make capabilities
  2001-03-21 15:59 ` Eli Zaretskii
@ 2001-03-21 15:59   ` J.T. Conklin
  2001-03-21 15:59     ` Eli Zaretskii
  0 siblings, 1 reply; 4+ messages in thread
From: J.T. Conklin @ 2001-03-21 15:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: gdb

>>>>> "Eli" == Eli Zaretskii <eliz@is.elta.co.il> writes:
>> Is it safe to assume that all versions of make used to build GDB will
>> understand the ${FOO:.c=.o} construct?  It does not appear to be used
>> elsewhere in the GDB or binutils trees, so it is possible (maybe even
>> likely) that they do not.  But I do not know how to solve a problem
>> without it.
>> 
>> The problem is the "lint" target:
>> 
>> lint:   $(LINTFILES)
>> $(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $(LINTFILES) \
>> `echo $(DEPFILES) | sed 's/\.o /\.c /g'`
>> 
>> If srcdir != objdir, lint is not able to find the source files.  This
>> can be fixed if the rule is re-written as such:
>> 
>> lint:   $(LINTFILES) $(DEPFILES:.c=.o)
>> $(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $^
>> 
>> Thoughts?

Eli>   1. The current Emacs distribution uses $(FOO:.x=.y) in its Makefile's.  
Eli>      While this version is not yet released, its pretest was tested on 
Eli>      many different systems, and none failed to build it.

Good to hear.  I'd feel more comfortable if it had been released and there
weren't any recorded complaints.

Eli>   2. However, it _is_ known that not all versions of Make support that 
Eli>      construct.  If you want to be 100% portable, you can edit .c into .o 
Eli>      with `sed` invocation in the rule's commands.

It gets a little tricky if the transformation occurs in the rule's
commands instead of in the dependencies.  If it's not done in the
dependencies, $^ expands to something like:

    ... $(srcdir)/values.c i386-tdep.o i387-tdep.o ...

The sed rule would have to prepend $(srcdir)/ to each file it changes
.o to .c.  Not complicated, but it might be a bit confusing.


Given the above two points, I think I'll take emacs' lead and use
$(FOO:.x=.y), but will be prepared to change it to use sed if the
need arises.  Not many people will be using the lint target anyway.

I also found that $^ is not supported in all makes, so $? will have to
be used instead.  It should work fine, as long as there is no file
named lint.  We can add a .PHONY directive to ensure that gmake will
get it right regardless.

        --jtc

-- 
J.T. Conklin
RedBack Networks

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2001-03-21 15:59 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-03-21 15:59 make capabilities J.T. Conklin
2001-03-21 15:59 ` Eli Zaretskii
2001-03-21 15:59   ` J.T. Conklin
2001-03-21 15:59     ` Eli Zaretskii

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).