2022-12-29 19:16:28

by Masahiro Yamada

[permalink] [raw]
Subject: [PATCH] kbuild: unify cmd_dt_S_dtb and cmd_dt_S_dtbo

cmd_dt_S_dtb and cmd_dt_S_dtbo are almost the same; the only differnce
is the prefix of the bein/end symbols. (__dtb vs __dtbo)

Signed-off-by: Masahiro Yamada <[email protected]>
---

scripts/Makefile.lib | 45 +++++++++++++++-----------------------------
1 file changed, 15 insertions(+), 30 deletions(-)

diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 4a4a5f67c1a6..100a386fcd71 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -368,40 +368,25 @@ DTC_FLAGS += $(DTC_FLAGS_$(basetarget))
DTC_FLAGS += $(if $(filter $(patsubst $(obj)/%,%,$@), $(base-dtb-y)), -@)

# Generate an assembly file to wrap the output of the device tree compiler
-quiet_cmd_dt_S_dtb= DTBS $@
-cmd_dt_S_dtb= \
-{ \
- echo '\#include <asm-generic/vmlinux.lds.h>'; \
- echo '.section .dtb.init.rodata,"a"'; \
- echo '.balign STRUCT_ALIGNMENT'; \
- echo '.global __dtb_$(subst -,_,$(*F))_begin'; \
- echo '__dtb_$(subst -,_,$(*F))_begin:'; \
- echo '.incbin "$<" '; \
- echo '__dtb_$(subst -,_,$(*F))_end:'; \
- echo '.global __dtb_$(subst -,_,$(*F))_end'; \
- echo '.balign STRUCT_ALIGNMENT'; \
-} > $@
+quiet_cmd_wrap_S_dtb = WRAP $@
+ cmd_wrap_S_dtb = { \
+ symbase=__$(patsubst .%,%,$(suffix $<))_$(subst -,_,$(notdir $*)); \
+ echo '\#include <asm-generic/vmlinux.lds.h>'; \
+ echo '.section .dtb.init.rodata,"a"'; \
+ echo '.balign STRUCT_ALIGNMENT'; \
+ echo ".global $${symbase}_begin"; \
+ echo "$${symbase}_begin:"; \
+ echo '.incbin "$<" '; \
+ echo ".global $${symbase}_end"; \
+ echo "$${symbase}_end:"; \
+ echo '.balign STRUCT_ALIGNMENT'; \
+ } > $@

$(obj)/%.dtb.S: $(obj)/%.dtb FORCE
- $(call if_changed,dt_S_dtb)
-
-# Generate an assembly file to wrap the output of the device tree compiler
-quiet_cmd_dt_S_dtbo= DTBOS $@
-cmd_dt_S_dtbo= \
-{ \
- echo '\#include <asm-generic/vmlinux.lds.h>'; \
- echo '.section .dtb.init.rodata,"a"'; \
- echo '.balign STRUCT_ALIGNMENT'; \
- echo '.global __dtbo_$(subst -,_,$(*F))_begin'; \
- echo '__dtbo_$(subst -,_,$(*F))_begin:'; \
- echo '.incbin "$<" '; \
- echo '__dtbo_$(subst -,_,$(*F))_end:'; \
- echo '.global __dtbo_$(subst -,_,$(*F))_end'; \
- echo '.balign STRUCT_ALIGNMENT'; \
-} > $@
+ $(call if_changed,wrap_S_dtb)

$(obj)/%.dtbo.S: $(obj)/%.dtbo FORCE
- $(call if_changed,dt_S_dtbo)
+ $(call if_changed,wrap_S_dtb)

quiet_cmd_dtc = DTC $@
cmd_dtc = $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
--
2.34.1


2022-12-29 20:38:28

by Nicolas Schier

[permalink] [raw]
Subject: Re: [PATCH] kbuild: unify cmd_dt_S_dtb and cmd_dt_S_dtbo

On Fri, Dec 30, 2022 at 03:46:50AM +0900 Masahiro Yamada wrote:
> cmd_dt_S_dtb and cmd_dt_S_dtbo are almost the same; the only differnce
> is the prefix of the bein/end symbols. (__dtb vs __dtbo)

Two letters got lost: differ_e_nce, be_g_in.

>
> Signed-off-by: Masahiro Yamada <[email protected]>
> ---
>
> scripts/Makefile.lib | 45 +++++++++++++++-----------------------------
> 1 file changed, 15 insertions(+), 30 deletions(-)
>
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 4a4a5f67c1a6..100a386fcd71 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -368,40 +368,25 @@ DTC_FLAGS += $(DTC_FLAGS_$(basetarget))
> DTC_FLAGS += $(if $(filter $(patsubst $(obj)/%,%,$@), $(base-dtb-y)), -@)
>
> # Generate an assembly file to wrap the output of the device tree compiler
> -quiet_cmd_dt_S_dtb= DTBS $@
> -cmd_dt_S_dtb= \
> -{ \
> - echo '\#include <asm-generic/vmlinux.lds.h>'; \
> - echo '.section .dtb.init.rodata,"a"'; \
> - echo '.balign STRUCT_ALIGNMENT'; \
> - echo '.global __dtb_$(subst -,_,$(*F))_begin'; \
> - echo '__dtb_$(subst -,_,$(*F))_begin:'; \
> - echo '.incbin "$<" '; \
> - echo '__dtb_$(subst -,_,$(*F))_end:'; \
> - echo '.global __dtb_$(subst -,_,$(*F))_end'; \
> - echo '.balign STRUCT_ALIGNMENT'; \
> -} > $@
> +quiet_cmd_wrap_S_dtb = WRAP $@
> + cmd_wrap_S_dtb = { \
> + symbase=__$(patsubst .%,%,$(suffix $<))_$(subst -,_,$(notdir $*)); \

As long as I know, '$(notdir $*)' should be equivalent to '$(*F)'. Is it just
personal preference or is there some other reason for choosing one or the
other?

Nevertheless, with the typos fixed, it looks good to me:
Reviewed-by: Nicolas Schier <[email protected]>


Attachments:
(No filename) (1.73 kB)
signature.asc (849.00 B)
Download all attachments

2022-12-30 03:43:15

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] kbuild: unify cmd_dt_S_dtb and cmd_dt_S_dtbo

On Fri, Dec 30, 2022 at 4:47 AM Nicolas Schier <[email protected]> wrote:
>
> On Fri, Dec 30, 2022 at 03:46:50AM +0900 Masahiro Yamada wrote:
> > cmd_dt_S_dtb and cmd_dt_S_dtbo are almost the same; the only differnce
> > is the prefix of the bein/end symbols. (__dtb vs __dtbo)
>
> Two letters got lost: differ_e_nce, be_g_in.

Ah, thanks. I will fix it.


>
> >
> > Signed-off-by: Masahiro Yamada <[email protected]>
> > ---
> >
> > scripts/Makefile.lib | 45 +++++++++++++++-----------------------------
> > 1 file changed, 15 insertions(+), 30 deletions(-)
> >
> > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> > index 4a4a5f67c1a6..100a386fcd71 100644
> > --- a/scripts/Makefile.lib
> > +++ b/scripts/Makefile.lib
> > @@ -368,40 +368,25 @@ DTC_FLAGS += $(DTC_FLAGS_$(basetarget))
> > DTC_FLAGS += $(if $(filter $(patsubst $(obj)/%,%,$@), $(base-dtb-y)), -@)
> >
> > # Generate an assembly file to wrap the output of the device tree compiler
> > -quiet_cmd_dt_S_dtb= DTBS $@
> > -cmd_dt_S_dtb= \
> > -{ \
> > - echo '\#include <asm-generic/vmlinux.lds.h>'; \
> > - echo '.section .dtb.init.rodata,"a"'; \
> > - echo '.balign STRUCT_ALIGNMENT'; \
> > - echo '.global __dtb_$(subst -,_,$(*F))_begin'; \
> > - echo '__dtb_$(subst -,_,$(*F))_begin:'; \
> > - echo '.incbin "$<" '; \
> > - echo '__dtb_$(subst -,_,$(*F))_end:'; \
> > - echo '.global __dtb_$(subst -,_,$(*F))_end'; \
> > - echo '.balign STRUCT_ALIGNMENT'; \
> > -} > $@
> > +quiet_cmd_wrap_S_dtb = WRAP $@
> > + cmd_wrap_S_dtb = { \
> > + symbase=__$(patsubst .%,%,$(suffix $<))_$(subst -,_,$(notdir $*)); \
>
> As long as I know, '$(notdir $*)' should be equivalent to '$(*F)'. Is it just
> personal preference or is there some other reason for choosing one or the
> other?

Your understanding is correct.
Automatic variables can have 'D' / 'F', as explained in the manual.
https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html


Yes, it is just my personal preference.
Perhaps, I did not need to change it, though.






> Nevertheless, with the typos fixed, it looks good to me:
> Reviewed-by: Nicolas Schier <[email protected]>
>


--
Best Regards
Masahiro Yamada