<feed xmlns='http://www.w3.org/2005/Atom'>
<title>forks/busybox/scripts/Kbuild.include, branch master</title>
<subtitle>Busybox tree with Carbs Linux patches
</subtitle>
<id>https://git.carbslinux.org/forks/busybox/atom?h=master</id>
<link rel='self' href='https://git.carbslinux.org/forks/busybox/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.carbslinux.org/forks/busybox/'/>
<updated>2020-04-29T12:52:19+00:00</updated>
<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.carbslinux.org/forks/busybox/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>- need to pass the PATH down to the gcc-version check to be able to find the correct cc.</title>
<updated>2007-06-25T10:41:01+00:00</updated>
<author>
<name>Bernhard Reutner-Fischer</name>
<email>rep.dot.nop@gmail.com</email>
</author>
<published>2007-06-25T10:41:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.carbslinux.org/forks/busybox/commit/?id=1399282b47bb218132a554cbe5b2b0ce4dcc055f'/>
<id>urn:sha1:1399282b47bb218132a554cbe5b2b0ce4dcc055f</id>
<content type='text'>
  Fixes make PATH="$CROSS_BIN:$PATH" CROSS_COMPILE=foo- like invocations that previously failed to resolve since the information about the path set by the user was lost.
</content>
</entry>
<entry>
<title>- add hostcc-option checker</title>
<updated>2007-01-23T11:44:14+00:00</updated>
<author>
<name>Bernhard Reutner-Fischer</name>
<email>rep.dot.nop@gmail.com</email>
</author>
<published>2007-01-23T11:44:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.carbslinux.org/forks/busybox/commit/?id=1c747b32c752e927cd37d8b39246992d4eec3904'/>
<id>urn:sha1:1c747b32c752e927cd37d8b39246992d4eec3904</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Trailing whitespace removal over entire tree</title>
<updated>2007-01-11T17:20:00+00:00</updated>
<author>
<name>Denis Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2007-01-11T17:20:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.carbslinux.org/forks/busybox/commit/?id=f7996f3b700a22797565e9aa57e251e6e3ac1e4d'/>
<id>urn:sha1:f7996f3b700a22797565e9aa57e251e6e3ac1e4d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>build system overhaul</title>
<updated>2006-10-05T10:17:08+00:00</updated>
<author>
<name>Denis Vlasenko</name>
<email>vda.linux@googlemail.com</email>
</author>
<published>2006-10-05T10:17:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.carbslinux.org/forks/busybox/commit/?id=7d219aab70e6951ab82c27c202cac05016696723'/>
<id>urn:sha1:7d219aab70e6951ab82c27c202cac05016696723</id>
<content type='text'>
</content>
</entry>
</feed>
