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