<p><b>@smlng</b> requested changes on this pull request.</p>

<p>First, to me <code>memoized</code> sounds odd, but that's subjective and non-blocking - I would use <code>stored</code> or <code>memorized</code> instead.</p>
<p>Second, I get the following errors when building in docker:</p>
<pre><code>Building application "tests_build_system_utils" for "native" with MCU "native".

"make" -C /data/riotbuild/riotbase/boards/native
"make" -C /data/riotbuild/riotbase/boards/native/drivers
"make" -C /data/riotbuild/riotbase/core
"make" -C /data/riotbuild/riotbase/cpu/native
"make" -C /data/riotbuild/riotbase/cpu/native/periph
"make" -C /data/riotbuild/riotbase/cpu/native/vfs
"make" -C /data/riotbuild/riotbase/drivers
"make" -C /data/riotbuild/riotbase/drivers/periph_common
"make" -C /data/riotbuild/riotbase/sys
"make" -C /data/riotbuild/riotbase/sys/auto_init
   text    data     bss     dec     hex filename
  22770     568   47652   70990   1154e /data/riotbuild/riotbase/tests/build_system_utils/bin/native/tests_build_system_utils.elf
bash: line 0: test: 1560237203N: integer expression expected
ERROR: 1560237203N >= 1560237203N
make[1]: *** [test-exported-variables] Error 1
Command '/Library/Developer/CommandLineTools/usr/bin/make -C /Volumes/devel/github/smlng/RIOT/makefiles/utils -f test-variables.mk test-exported-variables' failed
bash: line 0: test: 1560237203N: integer expression expected
ERROR: 1560237203N >= 1560237203N
make[1]: *** [test-exported-variables] Error 1
make: *** [test-exported-variables] Error 1
</code></pre>
<p>Third: see comments.</p><hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/11664#discussion_r292303274">makefiles/utils/variables.mk</a>:</p>
<pre style='color:#555'>> @@ -0,0 +1,33 @@
+# Utilities to set variables and environment for targets
+# These functions should help replacing immediate evaluation and global 'export'
+
+
+# Evaluate a deferred variable only on once on its first usage
</pre>
<p>typo: double <code>on</code>, remove before <code>once</code></p>

<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/11664#discussion_r292303616">makefiles/utils/variables.mk</a>:</p>
<pre style='color:#555'>> @@ -0,0 +1,33 @@
+# Utilities to set variables and environment for targets
+# These functions should help replacing immediate evaluation and global 'export'
+
+
+# Evaluate a deferred variable only on once on its first usage
+# Uses after will be as if it was an immediate evaluation
+# This can replace using `:=` by default
+#
+# The goal is to use it for `shell` commands
+#
+# variable = $(call memoized,<variable>,<value>)
+#
+# Parameters
+#  variable: name on the variable you set
</pre>
<p>typo: /on/of/</p>

<hr>

<p>In <a href="https://github.com/RIOT-OS/RIOT/pull/11664#discussion_r292305425">makefiles/utils/variables.mk</a>:</p>
<pre style='color:#555'>> @@ -0,0 +1,33 @@
+# Utilities to set variables and environment for targets
+# These functions should help replacing immediate evaluation and global 'export'
+
+
+# Evaluate a deferred variable only on once on its first usage
+# Uses after will be as if it was an immediate evaluation
</pre>
<p>wording: better to read: <code># Uses after [that] will be as ...</code></p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/RIOT-OS/RIOT/pull/11664?email_source=notifications&email_token=ABE7WYGND5Y5TZZIHOKKEMLPZ5GL3A5CNFSM4HVY3BH2YY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOB3D6Z7A#pullrequestreview-247983356">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABE7WYB4IPHWB4AOXSLKJ4LPZ5GL3ANCNFSM4HVY3BHQ">mute the thread</a>.<img src="https://github.com/notifications/beacon/ABE7WYASSSUBLEBGYHVL2WDPZ5GL3A5CNFSM4HVY3BH2YY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOB3D6Z7A.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/RIOT-OS/RIOT/pull/11664?email_source=notifications\u0026email_token=ABE7WYGND5Y5TZZIHOKKEMLPZ5GL3A5CNFSM4HVY3BH2YY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOB3D6Z7A#pullrequestreview-247983356",
"url": "https://github.com/RIOT-OS/RIOT/pull/11664?email_source=notifications\u0026email_token=ABE7WYGND5Y5TZZIHOKKEMLPZ5GL3A5CNFSM4HVY3BH2YY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOB3D6Z7A#pullrequestreview-247983356",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>