chiark / gitweb /
docs: Swap rows in syntax table
[subdirmk.git] / README
diff --git a/README b/README
index 5897e308644050ec8006fe42e830816ed03f0fb2..de97486ea09174f267830bc171a4751a8c740a58 100644 (file)
--- a/README
+++ b/README
@@ -138,18 +138,32 @@ If you `include subdirmk/regen.mk', dependency management and
 automatic regeneration for all of this template substitution, and for
 config.status etc. is done for you.
 
 automatic regeneration for all of this template substitution, and for
 config.status etc. is done for you.
 
-Summary of directory reference syntaxes
----------------------------------------
+Summary of recommended directory reference syntaxes
+---------------------------------------------------
 
 
-                  In source tree             In build tree
-                  Relative     Absolute      Relative  Absolute
+Path construction &-expansions, meanings summary:
 
 
-                                             &file     $(abs)/&file
- This directory   &^/file      &~/file       &/file    $(abs)/&/file
-                  & ^ f g h    & ~ f g h     & f g h
+                      In build tree            In source tree
+  This directory      just &                   &,
+  Top level           &.  implies absolute     &;
 
 
- Top level        $(ts)/file   $(ats)/file   file      $(abs)/file
-                                             f g h
+Adding `@' means "absolute path".  This is not needed with &. because
+there is never any need to use &. since it would expand to nothing.
+`/' terminates the escape (needed if the next thing is not a lowercase
+character, or space).  `=' means "just the value, no /".  Space starts
+multi-word processing.
+
+      Recommended     In build tree             In source tree
+             when     Relative  Absolute        Relative     Absolute
+                                          
+  This       lc       &file     &@file          &,file       &@,file
+  directory  any      &/file    &@/file         &,/file      &@,/file
+             several  & f g h   &@ f g h        &, f g h     &@, f g h
+
+  Top        lc                 &.file          &;file       &@;file
+  level      any      file      &./file         &;/file      &@;/file
+             several  f g h     &. f g h        &; f g h     &@; f g h
+             .mk.in   file      $(abs)/file     $(src)/file  $(abs_src)/file
 
 Substitution syntax
 -------------------
 
 Substitution syntax
 -------------------
@@ -176,12 +190,18 @@ empty string).
        variables usually uppercase.  Otherwise, use another syntax:
 
 &_             =>      sub_dir_                        or TOP_
        variables usually uppercase.  Otherwise, use another syntax:
 
 &_             =>      sub_dir_                        or TOP_
-&/             =>      sub/dir/                        or nothing
 &=_            =>      sub_dir                         or TOP
 &=_            =>      sub_dir                         or TOP
+
+&/             =>      sub/dir/                        or nothing
 &=/            =>      sub/dir                         or .
 &^             =>      $(top_srcdir)/sub/dir           or $(top_srcdir)
 &~             =>      $(abs_top_srcdir)/sub/dir       or $(abs_top_srcdir)
 
 &=/            =>      sub/dir                         or .
 &^             =>      $(top_srcdir)/sub/dir           or $(top_srcdir)
 &~             =>      $(abs_top_srcdir)/sub/dir       or $(abs_top_srcdir)
 
+In general:
+        ^       filenames in source tree rather than build tree
+        ~       filenames are absolute rather than relative
+        @       filenames do not contain subdir (useful with the above)
+
 &&             =>      &&              for convenience in shell runes
 \&             =>      &               general escaping mechanism
 
 &&             =>      &&              for convenience in shell runes
 \&             =>      &               general escaping mechanism