<feed xmlns='http://www.w3.org/2005/Atom'>
<title>busybox-w32/scripts/trylink, branch master</title>
<subtitle>A mirror of https://github.com/rmyorston/busybox-w32.git
</subtitle>
<id>https://git.lua4.win/busybox-w32/atom?h=master</id>
<link rel='self' href='https://git.lua4.win/busybox-w32/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/'/>
<updated>2024-01-21T15:27:38+00:00</updated>
<entry>
<title>build system: actually detect lack of --warn-common</title>
<updated>2024-01-21T15:27:38+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2024-01-21T15:27:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=a3f52971946049c6e74e156faf2e864daa436a06'/>
<id>urn:sha1:a3f52971946049c6e74e156faf2e864daa436a06</id>
<content type='text'>
Commit 992387539 (build system: more clang/llvm tweaks) falsely
claimed that the lack of the --warn-common linker option was being
detected.

It wasn't, but it is now.
</content>
</entry>
<entry>
<title>build system: more clang/llvm tweaks</title>
<updated>2024-01-18T08:01:49+00:00</updated>
<author>
<name>Ron Yorston</name>
<email>rmy@pobox.com</email>
</author>
<published>2024-01-18T08:01:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=992387539f26de1aeb2cdca62d85fddbde27b798'/>
<id>urn:sha1:992387539f26de1aeb2cdca62d85fddbde27b798</id>
<content type='text'>
Linkers associated with clang/llvm may not support the -r option.
This is used to create built-in.o object files.  It turns out that
all such files in busybox-w32 are either empty or only contain one
object file.  The first case is already supported and the second
can be handled by simply copying the object file to built-in.o.
The linker is therefore never invoked with the -r option.

One adjustment is required:  the workaround adopted for GitHub
issue #200 linked the dummy C file with the resource object file.
This is no longer done so only one object file is used.  Since it
was the linking that broke the resource file, copying it is an
equally effective fix for the issue.

Some old linkers don't support the --warn-common option.  The lack
of this option was being detected but it was still sometimes used.
</content>
</entry>
<entry>
<title>trylink: do not drop libs from CONFIG_EXTRA_LDLIBS</title>
<updated>2021-02-23T22:09:49+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2021-02-23T22:09:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=1f9ed02caffb269e5fc6fbdf19fc9ba05a79e628'/>
<id>urn:sha1:1f9ed02caffb269e5fc6fbdf19fc9ba05a79e628</id>
<content type='text'>
Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
</entry>
<entry>
<title>build system: remove KBUILD_STR()</title>
<updated>2020-04-29T12:52:19+00:00</updated>
<author>
<name>Jean-Philippe Brucker</name>
<email>jean-philippe@linaro.org</email>
</author>
<published>2020-03-12T16:19:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=ed8af51b600fd16d22c6663a241547c3a9d7f2b4'/>
<id>urn:sha1:ed8af51b600fd16d22c6663a241547c3a9d7f2b4</id>
<content type='text'>
When using GNU Make &gt;=4.3, the KBUILD_STR() definition interferes badly
with dependency checks during build, and forces a complete rebuild every
time Make runs.

In if_changed_rule, Kconfig checks if the command used to build a file
has changed since last execution. The previous command is stored in the
generated .&lt;file&gt;.o.cmd file. For example applets/.applets.o.cmd defines
a "cmd_applets/applets.o" variable:

	cmd_applets/applets.o := gcc ... -D"KBUILD_STR(s)=#s" ...

Here the '#' should be escaped with a backslash, otherwise GNU Make
interprets it as starting a comment, and ignore the rest of the
variable. As a result of this truncation, the previous command doesn't
equal the new command and Make rebuilds each target.

The problem started to appear when GNU Make 4.3 (released January 2020),
introduced a backward-incompatible fix to macros containing a '#'. While
the above use of '#', a simple Make variable, still needs to be escaped,
a '#' within a function invocation doesn't need to be escaped anymore.
As Martin Dorey explained on the GNU Make discussion [1], the above
declaration is generated from make-cmd, defined as:

	make-cmd = $(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1))))

Since GNU Make 4.3, the first argument of subst should not have a
backslash. make-cmd now looks for literally \# and doesn't find it, and
as a result doesn't add the backslash when generating .o.cmd files.

[1] http://savannah.gnu.org/bugs/?20513

We could fix it by changing make-cmd to "$(subst #,\#,...)", but to
avoid compatibility headaches, simply get rid of the KBUILD_STR
definition, as done in Linux by b42841b7bb62 ("kbuild: Get rid of
KBUILD_STR"). Quote the string arguments directly rather than asking the
preprocessor to quote them.

Signed-off-by: Jean-Philippe Brucker &lt;jean-philippe@linaro.org&gt;
Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
</entry>
<entry>
<title>scripts/trylink: be more clever when deciding that "lib elimination" has finished:</title>
<updated>2018-11-19T19:36:16+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2018-11-19T19:36:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=32511da87ddaea0824801eafebd27e11409bf444'/>
<id>urn:sha1:32511da87ddaea0824801eafebd27e11409bf444</id>
<content type='text'>
Before:
Trying libraries: crypt m resolv
 Library crypt is not needed, excluding it
 Library m is needed, can't exclude it (yet)
 Library resolv is needed, can't exclude it (yet)
 Library m is needed, can't exclude it (yet)
 Library resolv is needed, can't exclude it (yet)
Final link with: m resolv

After:
Trying libraries: crypt m resolv
 Library crypt is not needed, excluding it
 Library m is needed, can't exclude it (yet)
 Library resolv is needed, can't exclude it (yet)
Final link with: m resolv

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
</entry>
<entry>
<title>build system: FEATURE_LIBBUSYBOX_STATIC - try to pull libc/libm into libbusybox</title>
<updated>2017-07-15T12:52:26+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2017-07-15T12:52:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=367a55c7d7e31a8162e795edc343277f8eb35f38'/>
<id>urn:sha1:367a55c7d7e31a8162e795edc343277f8eb35f38</id>
<content type='text'>
It variously fails with different toolchains I tried...

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
</entry>
<entry>
<title>remove "local" bashism from a few scripts</title>
<updated>2017-01-24T19:52:42+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2017-01-24T19:52:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=bca4ea8b68403e6f751341b82c65937f14590679'/>
<id>urn:sha1:bca4ea8b68403e6f751341b82c65937f14590679</id>
<content type='text'>
Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
</entry>
<entry>
<title>trylink: use "mktemp tmp.XXXXXXXXXX" to placate OS X</title>
<updated>2016-07-12T11:54:35+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2016-07-12T11:54:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=2ae86ad1c64b4de9bb63464d9a783229ed8e5dd0'/>
<id>urn:sha1:2ae86ad1c64b4de9bb63464d9a783229ed8e5dd0</id>
<content type='text'>
Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
</entry>
<entry>
<title>scripts/trylink: libbusybox fix</title>
<updated>2016-06-20T10:23:35+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2016-06-20T10:23:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=ea9ebc011b3ee9b86b00646b91e73bb860d340b4'/>
<id>urn:sha1:ea9ebc011b3ee9b86b00646b91e73bb860d340b4</id>
<content type='text'>
gcc 6.1.1 can emit empty line with spaces

Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
</entry>
<entry>
<title>scripts/trylink: document DATA_SEGMENT_ALIGN() hack</title>
<updated>2016-04-22T00:00:04+00:00</updated>
<author>
<name>Denys Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2016-04-22T00:00:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.lua4.win/busybox-w32/commit/?id=663d1da1e68b15397c00d6a094f78c2cf08358ea'/>
<id>urn:sha1:663d1da1e68b15397c00d6a094f78c2cf08358ea</id>
<content type='text'>
Signed-off-by: Denys Vlasenko &lt;vda.linux@googlemail.com&gt;
</content>
</entry>
</feed>
