help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(no subject)


From: Michael Wood
Subject: (no subject)
Date: Fri, 11 Jun 2004 14:05:46 +0100

Hi there,

I am trying to create either some generic targets or defines (define -
endef) wrappers that can contain MAKE cmds as well as actual build cmds. To
further complicate things, I also want to use pattern matching rules, and
have said dynamically created cmd sequences use the matched part of the
pattern. For example, I would like to do something like the following:

# Here is my scheme with a single generic target
#
ALL_TESTS = test_one  test_two  test_three

test_% : SCRIPT_FILE = my_script_$*             # dynamic set of some
param(s)

$(ALL_TESTS) : test_% : run_test        # use generic target to
                                                        # run all tests
using dynamic
                                                # param(s)
run_test :
ifeq (1,$(SUBMIT_JOB_TO_Q))
    bsub $(SCRIPT_FILE)
else
    $(SCRIPT_FILE)
endif

# The problem with this scheme is that within the "run_test" target
# the variable SCRIPT_FILE cannot expand the `$*` to the
# pattern-specific variable definition from test_%. I have tried
# defining SCRIPT_FILE using `:=`, however the "run_test" target
# still has no value for the `$*` portion of the definition. So...
# onto attempt number two...


# Here is my scheme with a generic define-endef attempt
#
ALL_TESTS = test_one  test_two  test_three

test_% : SCRIPT_FILE = my_script_$*     # dynamic set of some param(s)

$(ALL_TESTS) : test_% :                         # use generic canned cmd
sequence
$(run_test)                                             # containing
conditional MAKE cmds as well

define run_test
ifeq (1,$(SUBMIT_JOB_TO_Q))
    bsub $(SCRIPT_FILE)
else
    $(SCRIPT_FILE)
endif
endef

# This solves the `$*` problem from the previous solution. However,
# the problem with this one is that I cannot end up mixing MAKE cmds
# and actual build cmds (the ones preceded w/ a tab char) into the
# `define` as I have done in this example (make returns an error).
# I further cannot put a TAB char in front of the $(run_test) action
# because I need to use some conditional execution from within MAKE
# using MAKE variables (and the TAB in front would make the whole define
# a canned-cmd sequence and thus each line would be executed in a
# separate shell = undesireable for my needs).

Holy long email batman! I hope this is a reasonably coherant enough
explanation of what I am trying to do. And I also hope that you have some
ideas.

Thanks very much,
Mike


-------------------------------------------
Michael Wood
Apps Engineering
Broadcom UK Ltd.
Cambridge, UK
+44 (1223) 725-557
 






reply via email to

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