Thanks! I'd looked at macros earlier, but ran into a different issue I 
don't understand.  Per the manual, both inputs and outputs should be able 
to be specified in a macro:

*!macro = [inputs] | [order-only inputs] |> command |> [outputs]*

So, I'm thinking, at the top level in my Tuprules.tup:

!mmac = input.suf | ../../ooinp.suf |> compilecommand --style %d %i |> 
../../tmp/%d-%B

and in my project/styles/style1/Tupfile:

include_rules
: |> !mmac |>

(because without the pipes bracketing the rule, tup complains about missing 
pipes) at which point tup tells me that "*!-macros can't have normal 
inputs, only order-only inputs.*"

I also tried putting the input in the rule, and the order-only input in the 
macro, but even with various combinations of pipe placement in both the 
macro and the rule I never got anything other than the error message about 
normal inputs.

Then I tried putting *all* of the inputs in the rule, and only the outfile 
in the Tuprules.tup, which is explicitly allowed in the manual:

*You will only want to specify the output parameter in either the !-macro 
or the :-rule that uses it*

!mmac = |> compilecommand --style %d %i |> ../../tmp/%d-%B

and in the deep Tupfile:

include_rules
: input.suf | ../../ooinp.suf |> !mmac |>

which gives me a "Missing second '|>' marker" error; adding one to the end 
of the macro, so that everything (except the start of the rule) is now 
bracketed, still generates the missing second marker error. However, if I 
put both *all* inputs and outputs in the rule, it runs -- sort of. But now 
in complains that the top-level Tupfile rule that uses the output of the 
deep Tupfile is "*Unable to use inputs from a generated directory that 
isn't written by this Tupfile.*"  Here's where I got stuck (I've trimmed it 
down to a bare minimum needed to generate the error):

./Tupfile:

: foreach tmp/* |> cmd1 %f %o |> out/%B-%t.pdf

./Tuprules.tup:

!mmac = |> cmd2 %f %o |>

./styles/style/Tupfile:

include_rules
: input.ext | ../../ooinput.ext |> !mmac |> ../../tmp/%d-%B

I get the impression that macros can *only* be used in the commands. If 
that's not correct, could you provide a minimal example of providing 
order-only inputs or outputs in a macro that demonstrates my error? And is 
there a way of getting around this directory error? Another rule in the 
top-level Tupfile to explicitly create temporary directories?

Thank you.

-- 
-- 
tup-users mailing list
email: [email protected]
unsubscribe: [email protected]
options: http://groups.google.com/group/tup-users?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"tup-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/tup-users/ba8db968-f957-40b0-bf38-c79f464e3a3fn%40googlegroups.com.

Reply via email to