<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://try-as400.pocnet.net/index.php?action=history&amp;feed=atom&amp;title=Setting_up_TMKMAKE</id>
	<title>Setting up TMKMAKE - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://try-as400.pocnet.net/index.php?action=history&amp;feed=atom&amp;title=Setting_up_TMKMAKE"/>
	<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Setting_up_TMKMAKE&amp;action=history"/>
	<updated>2026-04-27T19:51:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Setting_up_TMKMAKE&amp;diff=1286&amp;oldid=prev</id>
		<title>PoC: /* Example */ Added &quot;first&quot; rule and curlib handling.</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Setting_up_TMKMAKE&amp;diff=1286&amp;oldid=prev"/>
		<updated>2023-02-12T13:20:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Example: &lt;/span&gt; Added &amp;quot;first&amp;quot; rule and curlib handling.&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:20, 12 February 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l41&quot;&gt;Line 41:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 41:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;make&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;make&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Variables used by rules&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Variables used by rules&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DSTLIB=MYLIB&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SRCFILE=SOURCES&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SRCFILE=SOURCES&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Global rules for recreating everything, if required --------------------------&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;all: curlib MYPGM&amp;lt;PGM&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# This is to make sure that even if we run in batch, we can use unqualified&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# names in rules. Because there are no dependents, the rule is executed always.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;curlib:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    CHGCURLIB CURLIB($(DSTLIB))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MYPGM&amp;lt;PGM&amp;gt;: MYPGM.$(SRCFILE)&amp;lt;FILE&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MYPGM&amp;lt;PGM&amp;gt;: MYPGM.$(SRCFILE)&amp;lt;FILE&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key tryas400:diff:1.41:old-1285:rev-1286:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Setting_up_TMKMAKE&amp;diff=1285&amp;oldid=prev</id>
		<title>PoC: /* Bugs and oddities */ Typo</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Setting_up_TMKMAKE&amp;diff=1285&amp;oldid=prev"/>
		<updated>2023-02-12T13:15:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Bugs and oddities: &lt;/span&gt; Typo&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:15, 12 February 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l63&quot;&gt;Line 63:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 63:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;fixed that.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;fixed that.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Also, the expansion variable &#039;&#039;$@&#039;&#039; in Makefiles doesn&#039;t work as expected. It seems to be expanded to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/del&gt;$@) TYPE(*&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039; &lt;/del&gt;which is an error for the target string in &amp;lt;code&amp;gt;CRTxx&amp;lt;/code&amp;gt; commands. Using &#039;&#039;§&#039;&#039; instead of &#039;&#039;@&#039;&#039; works around this issue.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Also, the expansion variable &#039;&#039;$@&#039;&#039; in Makefiles doesn&#039;t work as expected. It seems to be expanded to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;$@) TYPE(*&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;which is an error for the target string in &amp;lt;code&amp;gt;CRTxx&amp;lt;/code&amp;gt; commands. Using &#039;&#039;§&#039;&#039; instead of &#039;&#039;@&#039;&#039; works around this issue.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Weblinks ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Weblinks ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key tryas400:diff:1.41:old-1284:rev-1285:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Setting_up_TMKMAKE&amp;diff=1284&amp;oldid=prev</id>
		<title>PoC: /* Bugs and oddities */ Typo</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Setting_up_TMKMAKE&amp;diff=1284&amp;oldid=prev"/>
		<updated>2023-02-12T13:14:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Bugs and oddities: &lt;/span&gt; Typo&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:14, 12 February 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l59&quot;&gt;Line 59:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 59:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; I&amp;#039;m running a German language install of OS/400 with appropriate QCCSID system variable set to 237. Some of the mentioned oddities might stem from a lack of charset conversion within tmkmake.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; I&amp;#039;m running a German language install of OS/400 with appropriate QCCSID system variable set to 237. Some of the mentioned oddities might stem from a lack of charset conversion within tmkmake.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;@&#039;&#039; was shown as &#039;&#039;§&#039;&#039; on my terminal for qattinfo members. I checked and saw that the PF has been created with CCSID 273, the default for my German language system. Apparently the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&lt;/del&gt;&#039;&#039;content&#039;&#039; is in US encoding (037). Probably an installation routine bug. Running&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;@&#039;&#039; was shown as &#039;&#039;§&#039;&#039; on my terminal for qattinfo members. I checked and saw that the PF has been created with CCSID 273, the default for my German language system. Apparently the &#039;&#039;content&#039;&#039; is in US encoding (037). Probably an installation routine bug. Running&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  CHGSRCPF FILE(QUSRTOOL/QATTINFO) CCSID(037)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  CHGSRCPF FILE(QUSRTOOL/QATTINFO) CCSID(037)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;fixed that.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;fixed that.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key tryas400:diff:1.41:old-1283:rev-1284:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Setting_up_TMKMAKE&amp;diff=1283&amp;oldid=prev</id>
		<title>PoC: /* Bugs and oddities */ typo</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Setting_up_TMKMAKE&amp;diff=1283&amp;oldid=prev"/>
		<updated>2023-02-12T13:14:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Bugs and oddities: &lt;/span&gt; typo&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:14, 12 February 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l57&quot;&gt;Line 57:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 57:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tmkmake seems to look up timestamps only once per run, contrary to UNIX make — which does this lookup individually after each rule being processed. This leads to rules being run multiple times by tmkmake, because updated objects&amp;#039; timestamps aren&amp;#039;t considered. This is most apparent when using the automatic recursive evaluation of a chain of dependencies.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Tmkmake seems to look up timestamps only once per run, contrary to UNIX make — which does this lookup individually after each rule being processed. This leads to rules being run multiple times by tmkmake, because updated objects&amp;#039; timestamps aren&amp;#039;t considered. This is most apparent when using the automatic recursive evaluation of a chain of dependencies.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; I&#039;m running a German language install of OS/400 with appropriate QCCSID system variable set to 237. Some &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if &lt;/del&gt;the mentioned oddities might stem from a lack of charset conversion within tmkmake.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; I&#039;m running a German language install of OS/400 with appropriate QCCSID system variable set to 237. Some &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;of &lt;/ins&gt;the mentioned oddities might stem from a lack of charset conversion within tmkmake.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;@&amp;#039;&amp;#039; was shown as &amp;#039;&amp;#039;§&amp;#039;&amp;#039; on my terminal for qattinfo members. I checked and saw that the PF has been created with CCSID 273, the default for my German language system. Apparently the &amp;#039;&amp;#039;&amp;#039;content&amp;#039;&amp;#039; is in US encoding (037). Probably an installation routine bug. Running&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;@&amp;#039;&amp;#039; was shown as &amp;#039;&amp;#039;§&amp;#039;&amp;#039; on my terminal for qattinfo members. I checked and saw that the PF has been created with CCSID 273, the default for my German language system. Apparently the &amp;#039;&amp;#039;&amp;#039;content&amp;#039;&amp;#039; is in US encoding (037). Probably an installation routine bug. Running&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key tryas400:diff:1.41:old-1282:rev-1283:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
	<entry>
		<id>http://try-as400.pocnet.net/index.php?title=Setting_up_TMKMAKE&amp;diff=1282&amp;oldid=prev</id>
		<title>PoC: New</title>
		<link rel="alternate" type="text/html" href="http://try-as400.pocnet.net/index.php?title=Setting_up_TMKMAKE&amp;diff=1282&amp;oldid=prev"/>
		<updated>2023-02-12T13:13:17Z</updated>

		<summary type="html">&lt;p&gt;New&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Tmkmake&amp;#039;&amp;#039;&amp;#039; is a port of the well-known [https://en.wikipedia.org/wiki/Make_(software) UNIX make] to the peculiarities of the AS/400 CL environment. As such, it can help to automate the building process of OS/400 objects, by taking computational care of dependencies instead of the developer being required to manually remember which objects to (re)create after changes.&lt;br /&gt;
&lt;br /&gt;
Tmkmake is available in &amp;#039;&amp;#039;qusrtool&amp;#039;&amp;#039; library releases as early as V2R3, and at least as late as 7.2.&lt;br /&gt;
&lt;br /&gt;
== Preparations ==&lt;br /&gt;
You need to have the &amp;#039;&amp;#039;Example Tools Library&amp;#039;&amp;#039; component of the operating system installed. This install results in a library &amp;#039;&amp;#039;qusrtool&amp;#039;&amp;#039;. Content is explained in the source PF &amp;#039;&amp;#039;qattinfo&amp;#039;&amp;#039; members. General instructions can be found in the &amp;#039;&amp;#039;aaamap&amp;#039;&amp;#039; member. Tmkmake-specific instructions can be found in the &amp;#039;&amp;#039;tmkinfo&amp;#039;&amp;#039; member.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; Depending on the OS version &amp;#039;&amp;#039;qusrtool&amp;#039;&amp;#039; stems from, the source PFs have been saved in compressed save files to save space. If you see many save files in &amp;#039;&amp;#039;wrklib qusrtool&amp;#039;&amp;#039;, you need to unpack those:&lt;br /&gt;
 SBMJOB CMD(CALL PGM(QUSRTOOL/UNPACKAGE) PARM(&amp;#039;*ALL      &amp;#039; 1)) JOB(UNPACKQUT)&lt;br /&gt;
&lt;br /&gt;
== Building Tmkmake ==&lt;br /&gt;
The building process is rather straightforward. In the spirit of older machinery, I personally prefer to run non-interactive work as batch. By leaving out the &amp;#039;&amp;#039;sbmjob&amp;#039;&amp;#039; you can also run the build process in foreground.&lt;br /&gt;
&lt;br /&gt;
* First, the building application needs to be compiled:&lt;br /&gt;
 SBMJOB CMD(CRTCLPGM PGM(QGPL/TMKINST) SRCFILE(QUSRTOOL/QATTCL)) JOB(MAKEMAKE)&lt;br /&gt;
&lt;br /&gt;
* Next, the building application needs to be run to build tmkmake and install additional components:&lt;br /&gt;
 SBMJOB CMD(CALL PGM(QGPL/TMKINST) PARM(QGPL)) JOB(BUILDMAKE)&lt;br /&gt;
&lt;br /&gt;
* Finally, the building application can be deleted:&lt;br /&gt;
 SBMJOB CMD(DLTPGM PGM(QGPL/TMKINST)) JOB(DLTMAKE)&lt;br /&gt;
&lt;br /&gt;
You can submit all three jobs in a row. By default, batch job concurrency is one: Each job is run in order of submission.&lt;br /&gt;
&lt;br /&gt;
As usual, finished batch jobs are indicated by a &amp;#039;&amp;#039;message waiting&amp;#039;&amp;#039; indicator on your terminal. Run &amp;#039;&amp;#039;dspmsg&amp;#039;&amp;#039; to see if the jobs ran without errors.&lt;br /&gt;
&lt;br /&gt;
== Further preparation ==&lt;br /&gt;
My recommendations in here assume&lt;br /&gt;
* each &amp;quot;project&amp;quot; is contained in its own library,&lt;br /&gt;
* there is one source PF called &amp;#039;&amp;#039;sources&amp;#039;&amp;#039; containing all source members for objects to be generated.&amp;lt;ref&amp;gt;Contrary to the IBM way of using many source PFs for each type. See the unpacked &amp;#039;&amp;#039;qusrtool&amp;#039;&amp;#039; library content for an example.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is a typo resulting in a &amp;#039;&amp;#039;syntax error&amp;#039;&amp;#039; hidden somewhere in the default rule source member. Because I&amp;#039;m not interested in using implicit rules (see below), I renamed the default rules member, and created a new, empty one:&lt;br /&gt;
 RNMM FILE(QGPL/QMAKSRC) MBR(BUILTIN) NEWMBR(BUILTIN$$$)&lt;br /&gt;
 ADDPFM FILE(QGPL/QMAKSRC) MBR(BUILTIN) SRCTYPE(C)&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;m always stuffing source members in a source PF called &amp;#039;&amp;#039;sources&amp;#039;&amp;#039;. UNIX make by default tries to read from a &amp;#039;&amp;#039;Makefile&amp;#039;&amp;#039; in the current directory. My changed command defaults combine that:&lt;br /&gt;
 CHGCMDDFT CMD(TMKMAKE) NEWDFT(&amp;#039;SRCFILE(*CURLIB/SOURCES) SRCMBR(MAKEFILE)&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
This is a very minimal example how to create an ILE RPG program from a source member:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
# Variables used by rules&lt;br /&gt;
SRCFILE=SOURCES&lt;br /&gt;
&lt;br /&gt;
MYPGM&amp;lt;PGM&amp;gt;: MYPGM.$(SRCFILE)&amp;lt;FILE&amp;gt;&lt;br /&gt;
    CRTBNDRPG PGM($(@F)) SRCFILE($(SRCFILE))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The term &amp;#039;&amp;#039;@F&amp;#039;&amp;#039; is expanded to the target file name. More examples of possible expansions can be found in the &amp;#039;&amp;#039;qusrtool/qattinfo.tmkinfo&amp;#039;&amp;#039; member.&lt;br /&gt;
&lt;br /&gt;
=== Implicit rules ===&lt;br /&gt;
&amp;#039;&amp;#039;Tmkmake&amp;#039;&amp;#039; supports implicit rules, like the UNIX make also does. Instead of writing one rule for every target object and its associated source member, rules can be generalized to a target type and an automatic expansion of arguments for the command to be run.&lt;br /&gt;
&lt;br /&gt;
UNIX make uses file name extensions for determining target files, and dependencies. Tmkmake uses explicit stating of object types, and source PF names according to IBM style. Since this is not compatible with my &amp;quot;one source file&amp;quot; approach, I didn&amp;#039;t care about that feature.&amp;lt;ref&amp;gt;One possible solution would be to make tmkmake aware of source PF members&amp;#039; &amp;#039;&amp;#039;type&amp;#039;&amp;#039;. I have not yet checked if this can be done without source code changes.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bugs and oddities ==&lt;br /&gt;
Tmkmake seems to look up timestamps only once per run, contrary to UNIX make — which does this lookup individually after each rule being processed. This leads to rules being run multiple times by tmkmake, because updated objects&amp;#039; timestamps aren&amp;#039;t considered. This is most apparent when using the automatic recursive evaluation of a chain of dependencies.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; I&amp;#039;m running a German language install of OS/400 with appropriate QCCSID system variable set to 237. Some if the mentioned oddities might stem from a lack of charset conversion within tmkmake.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;@&amp;#039;&amp;#039; was shown as &amp;#039;&amp;#039;§&amp;#039;&amp;#039; on my terminal for qattinfo members. I checked and saw that the PF has been created with CCSID 273, the default for my German language system. Apparently the &amp;#039;&amp;#039;&amp;#039;content&amp;#039;&amp;#039; is in US encoding (037). Probably an installation routine bug. Running&lt;br /&gt;
 CHGSRCPF FILE(QUSRTOOL/QATTINFO) CCSID(037)&lt;br /&gt;
fixed that.&lt;br /&gt;
&lt;br /&gt;
Also, the expansion variable &amp;#039;&amp;#039;$@&amp;#039;&amp;#039; in Makefiles doesn&amp;#039;t work as expected. It seems to be expanded to &amp;#039;$@) TYPE(*&amp;#039; which is an error for the target string in &amp;lt;code&amp;gt;CRTxx&amp;lt;/code&amp;gt; commands. Using &amp;#039;&amp;#039;§&amp;#039;&amp;#039; instead of &amp;#039;&amp;#039;@&amp;#039;&amp;#039; works around this issue.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://www.mcpressonline.com/programming-other/general/programming-with-make-on-the-as400-part-i Programming with Make on the AS/400, Part I], MC Press Online&lt;br /&gt;
* [https://www.mcpressonline.com/programming-other/general/programming-with-make-on-the-as400-part-2 Programming with Make on the AS/400, Part 2], MC Press Online&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Programming]]&lt;br /&gt;
[[Category: Software Configuration Guide]]&lt;br /&gt;
[[Category: System Administration]]&lt;/div&gt;</summary>
		<author><name>PoC</name></author>
	</entry>
</feed>