chiark / gitweb /
Syntax: Expand &$( and &$NN to use ${ } rather than $( )
[subdirmk.git] / README
diff --git a/README b/README
index a44fb492b47301ea3bbbef8c102c645c5e4c9f8c..14cc5420f4783f5f4568c73e58eab1c48f5759f9 100644 (file)
--- a/README
+++ b/README
@@ -88,13 +88,13 @@ empty string).
 
 &=             =>      sub_dir                         or TOP
 
 
 &=             =>      sub_dir                         or TOP
 
-&^lc           =>      $(top_srcdir)/sub/dir/lc
-&^/            =>      $(top_srcdir)/sub/dir/
-&^.            =>      $(top_srcdir)/sub/dir
+&^lc           =>      ${top_srcdir}/sub/dir/lc
+&^/            =>      ${top_srcdir}/sub/dir/
+&^.            =>      ${top_srcdir}/sub/dir
 
 
-&~lc           =>      $(top_srcdir)/lc
-&~/            =>      $(top_srcdir)/
-&~.            =>      $(top_srcdir)
+&~lc           =>      ${top_srcdir}/lc
+&~/            =>      ${top_srcdir}/
+&~.            =>      ${top_srcdir}
 
 In general:
     ^   pathname of this subdirectory in source tree
 
 In general:
     ^   pathname of this subdirectory in source tree
@@ -114,7 +114,7 @@ So pathname syntax is a subset of:
 &\$            =>      $               provided for $-doubling regimes
 &\NEWLINE                              eats the newline and vanishes
 
 &\$            =>      $               provided for $-doubling regimes
 &\NEWLINE                              eats the newline and vanishes
 
-&$VARIABLE     =>      $(sub_dir_VARIABLE)     or $(TOP_VARIABLE)
+&$VARIABLE     =>      ${sub_dir_VARIABLE}     or ${TOP_VARIABLE}
        VARIABLE is ASCII starting with a letter and matching \w+
 
 & thing thing... &
        VARIABLE is ASCII starting with a letter and matching \w+
 
 & thing thing... &
@@ -205,6 +205,10 @@ Dollar doubling and macro assistance
 &$-            Stops dollar-doubling
        Both are idempotent and local to the file or context.
 
 &$-            Stops dollar-doubling
        Both are idempotent and local to the file or context.
 
+This is useful both for make macrology involving $(eval ...), and
+possibly for helping write complicated recipes involving shell
+variables, inline Perl code, etc.
+
 Sometimes we will show $'s being doubled inside another construct.
 This means the content of the construct is $-doubled: $-doubling is
 locally enabled, and restored afterwards.
 Sometimes we will show $'s being doubled inside another construct.
 This means the content of the construct is $-doubled: $-doubling is
 locally enabled, and restored afterwards.
@@ -233,8 +237,8 @@ $   =>      $$      including $'s produced by other
                         &-expansions not mentioned here
 
 &\$    =>      $
                         &-expansions not mentioned here
 
 &\$    =>      $
-&$NN   =>      $(NN)   where N are digits
-&$(    =>      $(
+&$(    =>      ${      (expands to { } so it is useable for shell too)
+&$NN   =>      ${NN}   where N are digits
 
 A few contexts do not support $-doubling, such as directive arguments
 or places where this might imply $-quadrupling.  (There is no way to
 
 A few contexts do not support $-doubling, such as directive arguments
 or places where this might imply $-quadrupling.  (There is no way to
@@ -334,7 +338,12 @@ suppressed with the &:warn directive.  The warning tags are:
        interpret this as $(F)BAR.  It's normally better to write
        it this way, at least if the variable expansion is followed
        by more letters.  Note that &$FOO works differently to
        interpret this as $(F)BAR.  It's normally better to write
        it this way, at least if the variable expansion is followed
        by more letters.  Note that &$FOO works differently to
-       raw make: it expands to $(sub_dir_FOO).
+       raw make: it expands to ${sub_dir_FOO}.
+
+    broken-var-ref
+        An attempt at variable expansion looking like $&...
+       You probably expected this to mean $(TOP_F)BAR but it
+       expands to $TOP_FBAR which make thinks means $(T)OP_FBAR.
 
     unknown-warning
        &:warn was used to try to enable a warning that this version
 
     unknown-warning
        &:warn was used to try to enable a warning that this version