I try to implement a non-recursive make build system in my current project. What I struggle with is variables scopes. Target specific variables don't fit my needs as often variables define targets and not prerequisites. What I need is:
Makefile1:
SOMEVAR := original_value
include Makefile2
$(warning $(SOMEVAR))
Makefile2:
#some magic here to do what I want and make me happy
SOMEVAR := included_value
#and maybe here
And the output I want is 'original_value'.
Are there any strategies to make it real?
EDIT: The only solution I came for the moment is to force and organize myself to place all inlcudes in the end of each particular Makefile and use immediate variable assignment :=
SOMEVAR
, what is it used for? – Beta$(SOMEVAR)
, then it'll break horribly --- variables inside recipes are evaluated when the recipes are executed, which means that they'll all see$(SOMEVAR)
last value, not the value it had when the recipe was defined. – David Given