[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC] .NOT_DEFAULT: target
From: |
Boris Kolpackov |
Subject: |
[RFC] .NOT_DEFAULT: target |
Date: |
Mon, 17 May 2004 13:23:21 -0500 |
User-agent: |
Mutt/1.5.6i |
Good day,
I came to the point where I cannot work around "default target
hijacking" problem. So I am planning to do something about it
in my -bk patch-set. I also hope this feature will end up in the
main stream thus this RFC.
When makefile inclusion is used there is a recurring problem of
default target hijacking by auxiliary targets. For example I
have the following pattern:
1. User `makefile' includes `bootstrap.make' to bootstrap build
system.
2. `bootstrap.make' includes configuration makefiles that are
generated automatically. Rules for those configuration files
hijack default target.
# file: bootstrap.make
out_root := initialize-output-root
$(out_root)/configuration:
configure $@
include $(out_root)/configuration
# file: makefile
include bootstrap.make
$(out_root)/driver: driver.c
A workaround for this problem would be to split `bootstrap.make':
# file: makefile
include bootstrap-part1.make
# secure default target
$(out_root)/driver:
include bootstrap-part2.make
$(out_root)/driver: driver.c
However, this is not always possible and even when possible results
in bloated user makefiles.
This problem can be solved by specifying that particular target cannot
be default:
# file: bootstrap.make
out_root := initialize-output-root
.NOT_DEFAULT: $(out_root)/configuration
$(out_root)/configuration:
configure $@
include $(out_root)/configuration
comments?
-boris
signature.asc
Description: Digital signature
- [RFC] .NOT_DEFAULT: target,
Boris Kolpackov <=