X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?p=subdirmk.git;a=blobdiff_plain;f=README;h=d85a68804c4e4bf8adff2480fc37fcf9bcef0ed7;hp=14cc5420f4783f5f4568c73e58eab1c48f5759f9;hb=2c8db0f89fdcb949f0e8f82a223bca194a7a28c8;hpb=9178f4c13177c6436d08182e1649d8476b4c3b8a diff --git a/README b/README index 14cc542..d85a688 100644 --- a/README +++ b/README @@ -174,10 +174,11 @@ So pathname syntax is a subset of: by the final warning state after processing all the toplevel input files (including Final.sd.mk). -&:local+global [&]VARIABLE ... - Suppresses the warning about seeing both VARIABLE and - &VARIABLE. Any & specified in the RHS is redundant: this - always affects both versions identically. +&:local+global [!][&]VARIABLE ... + Suppresses any warnings relating to forthcoming mentions + to VARIABLE or &VARIABLE, as applicable. Scope ends at + the end of the current directory's Suffix.sd.mk. + Prefixing with ! removes [&]VARIABLE from the suppresion list. &:changequote NEWQUOTE changes the escape sequence from & to literally NEWQUOTE @@ -218,9 +219,10 @@ STUFF $ THINGS .. STUFF $$ THINGS &:endm .. endef NAME is processed for & -&${..$..} => ${eval ${call ..$$..}} +&{..$..} => ${eval ${call ..$$..}} (matches { } pairs to find the end) content is $-doubled (unless it contains &$- to turn that off) + cf &(...), see "Convenience syntax for eval", below. Together &:macro and &${...} provide a more reasonable macro facility than raw make. They solve the problem that make expansions cannot @@ -244,6 +246,18 @@ A few contexts do not support $-doubling, such as directive arguments or places where this might imply $-quadrupling. (There is no way to get $-quadrupling.) +Convenience syntax for eval +- - - - - - - - - - - - - - + +&(thing => $(call thing +&( thing => $(call thing + and specially: +&(&lc => $(call sub_dir_lc or $(call TOP_lc +&( &lc => $(call sub_dir_lc or $(call TOP_lc + even though lc would normally be thought a filename + +Unlike &{...}, this does not involve any dollar-doubling. + Invocation, "recursive" per-directory targets --------------------------------------------- @@ -411,7 +425,7 @@ far enough to regenerate a working set of makefiles. If this happens just rerun ./config.status by hand. If you go back and forth between different versions of your code you -can sometimes find that `make' complains that one of your Subdir.sd.mk +can sometimes find that `make' complains that one of your Dir.sd.mk files is missing: typically, if iot was used and therefore a dependency in some other version of your code. If you run `make clean' (or `make realclean') these dependencies are suppressed, which