<feed xmlns='http://www.w3.org/2005/Atom'>
<title>busybox-w32/testsuite/make.tests, branch cron_changes</title>
<subtitle>A mirror of https://github.com/rmyorston/busybox-w32.git
</subtitle>
<id>https://git.lua4.win/busybox-w32/atom?h=cron_changes</id>
<link rel='self' href='https://git.lua4.win/busybox-w32/atom?h=cron_changes'/>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/'/>
<updated>2025-11-28T07:52:25+00:00</updated>
<entry>
<title>make: fix expansion of immediate-mode macros</title>
<updated>2025-11-28T07:52:25+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2025-11-28T07:52:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=0e1f65e10a3b21bb253479b842614c9669fbc1f9'/>
<id>urn:sha1:0e1f65e10a3b21bb253479b842614c9669fbc1f9</id>
<content type='text'>
Immediate-mode macros shouldn't be recursively expanded, but are
subject to suffix and pattern substitution.

Adds 16 bytes to the 32-bit build.

(pdpmake GitHub issue 77)
</content>
</entry>
<entry>
<title>make: fix single-suffix inference rule regression</title>
<updated>2025-01-21T09:25:46+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2025-01-21T09:25:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=89b641cbb52bdc29e7e078c7f1ebcfbe7364ba18'/>
<id>urn:sha1:89b641cbb52bdc29e7e078c7f1ebcfbe7364ba18</id>
<content type='text'>
Commit 85bbce87d (make: support GNU/BSD suffixes and inference
rules) added code to handle inference rules with arbitrary
suffixes.  Unfortunately it failed to check for a single-suffix
rule in the case where no known suffix was found.  Add the
necessary code and a test which would have caught the problem.

Adds 48 bytes.

(pdpmake GitHub issue 72)
</content>
</entry>
<entry>
<title>make: support GNU/BSD suffixes and inference rules</title>
<updated>2025-01-14T12:22:55+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2025-01-14T09:52:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=85bbce87d6428fbc6a8bf7126988c4458a033727'/>
<id>urn:sha1:85bbce87d6428fbc6a8bf7126988c4458a033727</id>
<content type='text'>
The specification of inference rules in POSIX implies that only
suffixes starting with a period and containing no other periods
are to be considered.

In contrast, both GNU and BSD make allow suffixes to contain an
arbitrary number of periods, or none at all.  Allow this as an
extension.

Adds 640-816 bytes.

(pdpmake GitHub issue 70)
</content>
</entry>
<entry>
<title>make: changes to .DEFAULT/inference rules</title>
<updated>2024-10-20T11:52:42+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2024-10-20T11:52:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=ef4756eb0994bc25de66cbb04e1752dda217ff5d'/>
<id>urn:sha1:ef4756eb0994bc25de66cbb04e1752dda217ff5d</id>
<content type='text'>
The POSIX standard allows inference rules to be redefined but not
the .DEFAULT rule.  There is no explicit exception for .DEFAULT to:

   Only one target rule for any given target can contain commands.

Treat redefinition of a .DEFAULT rule as an error in POSIX mode
but allow it as an extension.

Also, the code didn't allow an inference rule with dependencies to
redefine an existing inference rule.  This is no longer the case.

Adds 64-96 bytes.
</content>
</entry>
<entry>
<title>make: reinstate conditional skipping of command lines</title>
<updated>2024-09-10T06:54:16+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2024-09-10T06:54:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=b4d811aa232df8c7416a14f38a2396b028c35ac9'/>
<id>urn:sha1:b4d811aa232df8c7416a14f38a2396b028c35ac9</id>
<content type='text'>
Commit e90345c10 (make: allow empty commands) rearranged readline()
in a way that broke the use of conditionals within the definition
of a rule.

Add a test case to detect this.  Adjust readline() so that
conditionals are processed before returning command lines or
checking for empty lines and comments.

Remove the test for a leading tab in skip_lines().  This allows
conditionals in the definition of a rule to be indented with a
leading tab.
</content>
</entry>
<entry>
<title>make: disallow inference rules for phony targets</title>
<updated>2024-08-10T09:57:21+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2024-08-10T09:17:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=770bad1fe3c369da32b53d790a26f82c012666e7'/>
<id>urn:sha1:770bad1fe3c369da32b53d790a26f82c012666e7</id>
<content type='text'>
GNU make doesn't allow inference rules or the .DEFAULT target to
be used for phony targets.

POSIX is unclear on the matter but there doesn't seem to be an
explicit prohibition of inference rules or .DEFAULT.

Follow the GNU make behaviour as a non-POSIX extension.

Adds 48-80 bytes.

(pdpmake GitHub issue 56)
</content>
</entry>
<entry>
<title>make: allow empty commands</title>
<updated>2024-08-08T11:24:28+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2024-08-08T11:17:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=e90345c1048f2c53074a1bd88e7870ee6a452b01'/>
<id>urn:sha1:e90345c1048f2c53074a1bd88e7870ee6a452b01</id>
<content type='text'>
pdpmake didn't allow rules to have empty commands. There are
circumstances where this may be useful.

Make the following changes:

- Add a flag to readline() to indicate the next line is expected
  to be a command.  If this flag is true and the input line starts
  with a tab return it immediately, thus skipping the check for
  an empty line or comment line.

- In docmds() skip tabs and spaces after a command prefix.  If the
  resulting command is empty don't print it or try to execute it.

- In newcmd() allow empty commands.

Adds 48-96 bytes.

(pdpmake GitHub issue 56)
</content>
</entry>
<entry>
<title>make: update for POSIX 2024</title>
<updated>2024-06-14T11:49:53+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2024-06-14T11:49:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=edf069ffc299d88c2291c20736bd1463ff030e12'/>
<id>urn:sha1:edf069ffc299d88c2291c20736bd1463ff030e12</id>
<content type='text'>
Now that POSIX.1-2024 has been released we can replace all
references to the 202X draft standard with 2024.

Make this change throughout the code and testsuite.

The pragma 'posix_2024' has been added.  'posix_202x' remains as
an alias for the same.

The 2024 standard is enforced by default in POSIX mode.
</content>
</entry>
<entry>
<title>make: move test for complex chain of macro assignments</title>
<updated>2024-06-01T10:07:44+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2024-06-01T10:07:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=433d9fddde9b66727a5066ffe0e5a776da20a4f1'/>
<id>urn:sha1:433d9fddde9b66727a5066ffe0e5a776da20a4f1</id>
<content type='text'>
The test 'Complex chain of macro assignments' relies on recursive
macro expansion.  This is a POSIX 202X feature, so the test should
be moved to the appropriate section of the test script.
</content>
</entry>
<entry>
<title>make: fix detection of target rules (take 2)</title>
<updated>2024-05-31T09:27:18+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2024-05-31T09:27:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=f9d10b2b6314ea2a80515112498aaa919ad81c97'/>
<id>urn:sha1:f9d10b2b6314ea2a80515112498aaa919ad81c97</id>
<content type='text'>
Commit d6b764116 (make: fix detection of target rules) checked
for target rules before macro assignments.  This failed for some
Makefiles generated by autotools because partially defined macros
were expanded while testing for a target rule.

Revert to checking for macro assignments first, but try to detect
if the proposed left hand side of the assignment might form part
of a target rule with an inline command.

Also handle the case where the ';' separator of the inline command
has been obfuscated by putting it in a macro.

Saves 128-160 bytes.

(GitHub pdpmake issues 31, 44)
</content>
</entry>
</feed>
