summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2021-06-14 09:42:24 +0000
committermidipix <writeonce@midipix.org>2021-06-14 09:54:14 +0000
commit0ef0d8d929c6cd3fcce9160b796aca9f3a96c46d (patch)
tree0cab495f66c7c1ca6d1fb741a7d0e3492c08d797
parent7a6a859a1ba5767ed2dca9e858e66bd7a32c90f3 (diff)
downloadtpax-0ef0d8d929c6cd3fcce9160b796aca9f3a96c46d.tar.bz2
tpax-0ef0d8d929c6cd3fcce9160b796aca9f3a96c46d.tar.xz
build system: modern.m4: refactored, added additional helper macros.
-rw-r--r--sofort/core/modern.m436
1 files changed, 33 insertions, 3 deletions
diff --git a/sofort/core/modern.m4 b/sofort/core/modern.m4
index 5b531f6..ddee8bf 100644
--- a/sofort/core/modern.m4
+++ b/sofort/core/modern.m4
@@ -5,7 +5,12 @@ dnl
dnl 1) make all standard m4 builtins m4_ prefixed.
dnl 2) set the left-bracket and right-bracket symbols the begin-quote and end-quote strings.
dnl 3) make a single underscore symbol the equivalent of the standard dnl builtin.
-dnl 4) provide the m4_toupper and m4_tolower macros.
+dnl 4) provide the m4_toupper(), m4_tolower(), and m4_pathvar() macros.
+dnl 5) provide the m4_srclist() and m4_srcitem() macros.
+dnl 6) provide the m4_fillerdots(), m4_fillerdash(), and m4_fillerline() macros.
+dnl 7) provide the m4_whitespace() and m4_spacealign() macros.
+dnl 8) provide the m4_alignlen(), m4_leftalign(), and m4_rightalign() macros.
+dnl 9) provide the m4_tab(), m4_tabtab(), and m4_tabtabtab() macros.
dnl
divert(-1)
@@ -81,7 +86,32 @@ m4_undefine([undivert])
m4_define([_],m4_defn([m4_dnl]))
-m4_define([m4_toupper],[m4_translit]([$1],[abcdefghijklmnopqrstuvwxyz],[ABCDEFGHIJKLMNOPQRSTUVWXYZ]))
-m4_define([m4_tolower],[m4_translit]([$1],[ABCDEFGHIJKLMNOPQRSTUVWXYZ],[abcdefghijklmnopqrstuvwxyz]))
+m4_define([m4_toupper],[m4_translit([[$1]],[[abcdefghijklmnopqrstuvwxyz]],[[ABCDEFGHIJKLMNOPQRSTUVWXYZ]])])
+m4_define([m4_tolower],[m4_translit([[$1]],[[ABCDEFGHIJKLMNOPQRSTUVWXYZ]],[[abcdefghijklmnopqrstuvwxyz]])])
+m4_define([m4_pathvar],[m4_translit(m4_toupper([[$1]]),[/],[_])])
+
+m4_define([m4_srclist],[[$1] = \])
+m4_define([m4_srcitem],[m4_tab[$1] \])
+
+m4_define([m4_fillerdots],[................................])
+m4_define([m4_fillerdash],[--------------------------------])
+m4_define([m4_fillerline],[m4_fillerdots[]m4_fillerdots[]m4_fillerdots[]])
+
+m4_define([m4_whitespace],[m4_translit(m4_fillerdots,[[.]],[[ ]])])
+m4_define([m4_spacealign],[m4_translit(m4_fillerline,[[.]],[[ ]])])
+
+m4_define([m4_alignlen],[m4_eval([$1]-m4_len([$2]))])
+m4_define([m4_leftalign],[m4_substr(m4_spacealign,0,m4_alignlen([$1],[$2]))[$2]])
+m4_define([m4_rightalign],[[$2]m4_substr(m4_spacealign,0,m4_alignlen([$1],[$2]))])
+
+
+m4_define([m4_tab],_
+ [$1]))
+
+m4_define([m4_tabtab],_
+ [$1])
+
+m4_define([m4_tabtabtab],_
+ [$1])
m4_divert(0)_