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