[gnu.utils.bug] Problem with GNU make 3.44

karl@mstar.UUCP (Karl Fox) (03/29/89)

I can't seem to get a terminal match-anything rule to work with GNU
make version 3.44.  When I create a rule containing a double-colon,
'make -p' does not indicate that it is terminal.

In rule.c, create_pattern_rule() sets r->terminal=terminal and then
calls new_pattern_rule() which unconditionally sets r->terminal=0.
New_pattern_rule() is also called by install_pattern_rule(), which
knows to wait until new_pattern_rule() returns before setting
r->terminal.

I would think that this would prevent any non-default rule from being
considered terminal, but here are my example files anyway:

    Script started on Tue Mar 28 16:43:04 1989
    Switching to new tty driver...
    archer 746% ls
    Makefile
    archer 747% cat Makefile

    %::	../foo/s.%
	    $(GET) $(GFLAGS) $<
    archer 748% ls -l ../foo
    total 1
    -r--r--r--   1 karl     src          181 Mar 28 16:39 s.bar.h 
    archer 750% make -v bar.h
    GNU Make version 3.44, by Richard Stallman and Roland McGrath.
    Copyright (C) 1988, 1989 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.
    There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
    PARTICULAR PURPOSE.

    make: *** No way to make target `bar.h'.  Stop.
    archer 751% exit

script done on Tue Mar 28 16:44:01 1989

Make -p reports my rule as:

    %:
      depends on: ../foo/s.%
      commands to execute (from `Makefile', line 3):
	    $(GET) $(GFLAGS) $<
-- 
Karl Fox, Morning Star Technologies               karl@mstar.UUCP
					          mstar!karl@cis.ohio-state.edu