bug-make
[Top][All Lists]
Advanced

[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

Attachment: signature.asc
Description: Digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]