I wish to use ‘MY_TYPE’ to switch the prerequisites for the target ‘top’.
based on MY_TYPE Can I select the pre-requisites required
For example, for
MY_TYPE=FOO , I wish to have $(BUILD) $(TARGETS) $(X_LOCALS) as pre-requisites for top
MY_TYPE=BAR , I wish to have $(BUILD) $(TARGETS) $(Y_LOCALS) as pre-requisites for top
How can I achieve it?
Below is a simple code snippet.
JavaScript
x
BUILD = build
TARGETS = targets
XLOCALS = xlocals
YLOCALS = ylocals
# can be FOO or BAR
MY_TYPE ?= FOO
$(BUILD):
printf "t Doing Buildn"
$(TARGETS):
printf "t Doing targetn"
$(XLOCALS):
printf "t my local build for X n"
$(YLOCALS):
printf "t my local build for Y n"
# based on MY_TYPE Can I select the pre-requisites required
# For example, for
# MY_TYPE=FOO , I wish to have $(BUILD) $(TARGETS) $(X_LOCALS) as pre-requisites for 'top' target
# MY_TYPE=BAR , I wish to have $(BUILD) $(TARGETS) $(Y_LOCALS) as pre-requisites for 'top' target
# How can I achieve it .
top: $(BUILD) $(TARGETS) $(XLOCALS)
printf "t doing topn"
Happy to take your thoughts.
Advertisement
Answer
Nothing easier, just use conditionals:
JavaScript
ifeq ($(MY_TYPE),FOO)
top: $(X_LOCALS)
endif
ifeq ($(MY_TYPE),BAR)
top: $(Y_LOCALS)
endif
top: $(BUILD) $(TARGETS)
@echo prereqs are $^