* PING: [PATCH] make build tool dependencies portable
@ 2015-09-04 13:32 Pavel Fedin
2015-09-05 15:26 ` Masahiro Yamada
0 siblings, 1 reply; 5+ messages in thread
From: Pavel Fedin @ 2015-09-04 13:32 UTC (permalink / raw)
To: linux-kbuild; +Cc: 'Michal Marek'
Ping
Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia
> -----Original Message-----
> From: linux-kbuild-owner@vger.kernel.org [mailto:linux-kbuild-owner@vger.kernel.org] On
> Behalf Of Pavel Fedin
> Sent: Thursday, August 27, 2015 12:08 PM
> To: linux-kbuild@vger.kernel.org
> Cc: Michal Marek
> Subject: [PATCH] make build tool dependencies portable
>
> Autogenerated .c files depend on their generator tool, and an implicit
> rule is used to build the tool itself. However, an explicit rule
> is required on platforms where the .exe suffix is used for hostprogs.
>
> This fixes the following errors when building on Cygwin:
>
> make[3]: *** No rule to make target 'drivers/video/logo/logo_linux_clut224.c',
> needed by 'drivers/video/logo/logo_linux_clut224.o'. Stop.
> scripts/Makefile.build:403: recipe for target 'drivers/video/logo' failed
>
> make[2]: *** No rule to make target 'crypto/asymmetric_keys/x509-asn1.c',
> needed by 'crypto/asymmetric_keys/x509-asn1.o'. Stop.
> scripts/Makefile.build:403: recipe for target 'crypto/asymmetric_keys' failed
>
> Signed-off-by: Pavel Fedin <p.fedin@samsung.com>
> ---
> drivers/video/logo/Makefile | 1 +
> scripts/Makefile.build | 2 ++
> 2 files changed, 3 insertions(+)
>
> diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
> index 3b43781..cc636f1 100644
> --- a/drivers/video/logo/Makefile
> +++ b/drivers/video/logo/Makefile
> @@ -38,6 +38,7 @@ extra-y += $(call logo-cfiles,_clut224,ppm)
> extra-y += $(call logo-cfiles,_gray256,pgm)
>
> pnmtologo := scripts/pnmtologo
> +$(pnmtologo): $(objtree)/scripts/pnmtologo.c
>
> # Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
> quiet_cmd_logo = LOGO $@
> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
> index 01df30a..c9ce3b0 100644
> --- a/scripts/Makefile.build
> +++ b/scripts/Makefile.build
> @@ -316,6 +316,8 @@ quiet_cmd_asn1_compiler = ASN.1 $@
> $(obj)/%-asn1.c $(obj)/%-asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler
> $(call cmd,asn1_compiler)
>
> +$(objtree)/scripts/asn1_compiler: $(objtree)/scripts/asn1_compiler.c
> +
> # Build the compiled-in targets
> # ---------------------------------------------------------------------------
>
> --
> 2.4.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: PING: [PATCH] make build tool dependencies portable
2015-09-04 13:32 PING: [PATCH] make build tool dependencies portable Pavel Fedin
@ 2015-09-05 15:26 ` Masahiro Yamada
2015-09-07 6:56 ` Pavel Fedin
0 siblings, 1 reply; 5+ messages in thread
From: Masahiro Yamada @ 2015-09-05 15:26 UTC (permalink / raw)
To: Pavel Fedin; +Cc: Linux Kbuild mailing list, Michal Marek
2015-09-04 22:32 GMT+09:00 Pavel Fedin <p.fedin@samsung.com>:
> Ping
>
> Kind regards,
> Pavel Fedin
> Expert Engineer
> Samsung Electronics Research center Russia
>
>
>> -----Original Message-----
>> From: linux-kbuild-owner@vger.kernel.org [mailto:linux-kbuild-owner@vger.kernel.org] On
>> Behalf Of Pavel Fedin
>> Sent: Thursday, August 27, 2015 12:08 PM
>> To: linux-kbuild@vger.kernel.org
>> Cc: Michal Marek
>> Subject: [PATCH] make build tool dependencies portable
>>
>> Autogenerated .c files depend on their generator tool, and an implicit
>> rule is used to build the tool itself. However, an explicit rule
>> is required on platforms where the .exe suffix is used for hostprogs.
>>
>> This fixes the following errors when building on Cygwin:
>>
>> make[3]: *** No rule to make target 'drivers/video/logo/logo_linux_clut224.c',
>> needed by 'drivers/video/logo/logo_linux_clut224.o'. Stop.
>> scripts/Makefile.build:403: recipe for target 'drivers/video/logo' failed
>>
>> make[2]: *** No rule to make target 'crypto/asymmetric_keys/x509-asn1.c',
>> needed by 'crypto/asymmetric_keys/x509-asn1.o'. Stop.
>> scripts/Makefile.build:403: recipe for target 'crypto/asymmetric_keys' failed
>>
>> Signed-off-by: Pavel Fedin <p.fedin@samsung.com>
>> ---
>> drivers/video/logo/Makefile | 1 +
>> scripts/Makefile.build | 2 ++
>> 2 files changed, 3 insertions(+)
>>
>> diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
>> index 3b43781..cc636f1 100644
>> --- a/drivers/video/logo/Makefile
>> +++ b/drivers/video/logo/Makefile
>> @@ -38,6 +38,7 @@ extra-y += $(call logo-cfiles,_clut224,ppm)
>> extra-y += $(call logo-cfiles,_gray256,pgm)
>>
>> pnmtologo := scripts/pnmtologo
>> +$(pnmtologo): $(objtree)/scripts/pnmtologo.c
scripts/Makefile has the following:
hostprogs-$(CONFIG_LOGO) += pnmtologo
This should work if you enable CONFIG_LOGO in Kconfig.
>> # Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
>> quiet_cmd_logo = LOGO $@
>> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
>> index 01df30a..c9ce3b0 100644
>> --- a/scripts/Makefile.build
>> +++ b/scripts/Makefile.build
>> @@ -316,6 +316,8 @@ quiet_cmd_asn1_compiler = ASN.1 $@
>> $(obj)/%-asn1.c $(obj)/%-asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler
>> $(call cmd,asn1_compiler)
>>
>> +$(objtree)/scripts/asn1_compiler: $(objtree)/scripts/asn1_compiler.c
>> +
>> # Build the compiled-in targets
>> # ---------------------------------------------------------------------------
>>
Likewise, scripts/Makefile has the following file:
hostprogs-$(CONFIG_ASN1) += asn1_compiler
Please do not screw up Kbuild for Cygwin.
See the answer from Michal (and you agreed)
https://patchwork.kernel.org/patch/7014361/
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: PING: [PATCH] make build tool dependencies portable
2015-09-05 15:26 ` Masahiro Yamada
@ 2015-09-07 6:56 ` Pavel Fedin
2015-09-07 13:20 ` Masahiro Yamada
0 siblings, 1 reply; 5+ messages in thread
From: Pavel Fedin @ 2015-09-07 6:56 UTC (permalink / raw)
To: 'Masahiro Yamada'
Cc: 'Linux Kbuild mailing list', 'Michal Marek'
Hello!
> scripts/Makefile has the following:
>
> hostprogs-$(CONFIG_LOGO) += pnmtologo
>
>
> This should work if you enable CONFIG_LOGO in Kconfig.
Yes, i know this. But, pnmlogo, in its turn, depends on pnmlogo.c. This is currently implicit (i don't see explicit lines anywhere), and this appears not to work correctly everywhere.
> Please do not screw up Kbuild for Cygwin.
>
> See the answer from Michal (and you agreed)
> https://patchwork.kernel.org/patch/7014361/
Yes, i remember. And my fix doesn't contain any it's etc, it's simple and actually it's generic. Ok, how can improve it further? What about adding explicit dependencies to scripts/Makefile then? These explicit dependencies not only fix Cygwin-related problem, but also make the Makefile more readable, don't they?
Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: PING: [PATCH] make build tool dependencies portable
2015-09-07 6:56 ` Pavel Fedin
@ 2015-09-07 13:20 ` Masahiro Yamada
2015-09-09 8:34 ` Pavel Fedin
0 siblings, 1 reply; 5+ messages in thread
From: Masahiro Yamada @ 2015-09-07 13:20 UTC (permalink / raw)
To: Pavel Fedin; +Cc: Linux Kbuild mailing list, Michal Marek
2015-09-07 15:56 GMT+09:00 Pavel Fedin <p.fedin@samsung.com>:
> Hello!
>
>> scripts/Makefile has the following:
>>
>> hostprogs-$(CONFIG_LOGO) += pnmtologo
>>
>>
>> This should work if you enable CONFIG_LOGO in Kconfig.
>
> Yes, i know this. But, pnmlogo, in its turn, depends on pnmlogo.c. This is currently implicit (i don't see explicit lines anywhere), and this appears not to work correctly everywhere.
>
>> Please do not screw up Kbuild for Cygwin.
>>
>> See the answer from Michal (and you agreed)
>> https://patchwork.kernel.org/patch/7014361/
>
> Yes, i remember. And my fix doesn't contain any it's etc, it's simple and actually it's generic.
Generic?
Your patch is a really ad-hoc fix.
> diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
> index 3b43781..cc636f1 100644
> --- a/drivers/video/logo/Makefile
> +++ b/drivers/video/logo/Makefile
> @@ -38,6 +38,7 @@ extra-y += $(call logo-cfiles,_clut224,ppm)
> extra-y += $(call logo-cfiles,_gray256,pgm)
>
> pnmtologo := scripts/pnmtologo
> +$(pnmtologo): $(objtree)/scripts/pnmtologo.c
>
> # Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
> quiet_cmd_logo = LOGO $@
> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
> index 01df30a..c9ce3b0 100644
> --- a/scripts/Makefile.build
> +++ b/scripts/Makefile.build
> @@ -316,6 +316,8 @@ quiet_cmd_asn1_compiler = ASN.1 $@
> $(obj)/%-asn1.c $(obj)/%-asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler
> $(call cmd,asn1_compiler)
>
> +$(objtree)/scripts/asn1_compiler: $(objtree)/scripts/asn1_compiler.c
> +
You are adding the dependency of pnmtolog and asn1_compiler.
We have more host tools. See scripts/Makefile
hostprogs-$(CONFIG_KALLSYMS) += kallsyms
hostprogs-$(CONFIG_LOGO) += pnmtologo
hostprogs-$(CONFIG_VT) += conmakehash
hostprogs-$(BUILD_C_RECORDMCOUNT) += recordmcount
hostprogs-$(CONFIG_BUILDTIME_EXTABLE_SORT) += sortextable
hostprogs-$(CONFIG_ASN1) += asn1_compiler
Fixing only two of those host-tools is not generic at all.
Moreover, scripts/Makefile.build is not the place where we put
a rule of a particular host tool.
In the first place, if you had a problem with those two host tools,
what about scripts/basic/fixdep ?
scripts/basic/Makefile:
hostprogs-y := fixdep
The situation is the same as pnmtologo and asn1_compiler.
The dependency is what you call implicit.
> Ok, how can improve it further? What about adding explicit dependencies to scripts/Makefile then?
scripts/Makefile.host is the correct place where we fix host-tools
problems in a generic way.
But I doubt if we need to fix this.
> These explicit dependencies not only fix Cygwin-related problem, but also make the Makefile more readable, don't they?
No.
Kbuild already made Makefiles readable. You are just messing up Makefiles.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: PING: [PATCH] make build tool dependencies portable
2015-09-07 13:20 ` Masahiro Yamada
@ 2015-09-09 8:34 ` Pavel Fedin
0 siblings, 0 replies; 5+ messages in thread
From: Pavel Fedin @ 2015-09-09 8:34 UTC (permalink / raw)
To: 'Masahiro Yamada'
Cc: 'Linux Kbuild mailing list', 'Michal Marek'
Hello!
> You are adding the dependency of pnmtolog and asn1_compiler.
>
>
> We have more host tools. See scripts/Makefile
Looks like the problem only happens when we have an explicit dependency of something on this binary. This appears to be the case only for these two tools.
Ok, i see your point and i agree that this might be an ad-hoc fix. We can consider it to be GNU make's bug. Let's try that side then. :)
Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-09-09 8:34 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-04 13:32 PING: [PATCH] make build tool dependencies portable Pavel Fedin
2015-09-05 15:26 ` Masahiro Yamada
2015-09-07 6:56 ` Pavel Fedin
2015-09-07 13:20 ` Masahiro Yamada
2015-09-09 8:34 ` Pavel Fedin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox