linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V4 REPOST 1/2] kbuild: centralize .dts->.dtb rule
@ 2012-10-26 19:29 Stephen Warren
  2012-10-26 19:29 ` [PATCH V4 REPOST 2/2] kbuild: run the pre-processor on *.dts files Stephen Warren
  2012-10-28  7:24 ` [PATCH V4 REPOST 1/2] kbuild: centralize .dts->.dtb rule Sam Ravnborg
  0 siblings, 2 replies; 6+ messages in thread
From: Stephen Warren @ 2012-10-26 19:29 UTC (permalink / raw)
  To: Michal Marek
  Cc: linux-arch, linux-kernel, devicetree-discuss, David Gibson,
	Jon Loeliger, Grant Likely, Rob Herring, Scott Wood, Mark Brown,
	Jean-Christophe PLAGNIOL-VILLARD, Stephen Warren

From: Stephen Warren <swarren@nvidia.com>

All architectures that use cmd_dtc do so in the same way. Move the build
rule to a central location to avoid duplication.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
v4: No change.
v3: No change.
v2: New patch.
---
 arch/arm/boot/Makefile      |    4 ----
 arch/c6x/boot/Makefile      |    3 ---
 arch/openrisc/boot/Makefile |    3 ---
 arch/powerpc/boot/Makefile  |    4 ----
 scripts/Makefile.lib        |    3 +++
 5 files changed, 3 insertions(+), 14 deletions(-)

diff --git a/arch/arm/boot/Makefile b/arch/arm/boot/Makefile
index f2aa09e..208bb4c 100644
--- a/arch/arm/boot/Makefile
+++ b/arch/arm/boot/Makefile
@@ -61,10 +61,6 @@ endif
 
 targets += $(dtb-y)
 
-# Rule to build device tree blobs
-$(obj)/%.dtb: $(src)/dts/%.dts FORCE
-	$(call if_changed_dep,dtc)
-
 $(obj)/dtbs: $(addprefix $(obj)/, $(dtb-y))
 
 clean-files := *.dtb
diff --git a/arch/c6x/boot/Makefile b/arch/c6x/boot/Makefile
index 6891257..ad605fb 100644
--- a/arch/c6x/boot/Makefile
+++ b/arch/c6x/boot/Makefile
@@ -12,9 +12,6 @@ ifneq ($(DTB),)
 obj-y += linked_dtb.o
 endif
 
-$(obj)/%.dtb: $(src)/dts/%.dts FORCE
-	$(call if_changed_dep,dtc)
-
 quiet_cmd_cp = CP      $< $@$2
 	cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false)
 
diff --git a/arch/openrisc/boot/Makefile b/arch/openrisc/boot/Makefile
index 0995835..fd329bd 100644
--- a/arch/openrisc/boot/Makefile
+++ b/arch/openrisc/boot/Makefile
@@ -10,6 +10,3 @@ obj-y += $(BUILTIN_DTB)
 clean-files := *.dtb.S
 
 #DTC_FLAGS ?= -p 1024
-
-$(obj)/%.dtb: $(src)/dts/%.dts FORCE
-	$(call if_changed_dep,dtc)
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 6a15c96..90206f2 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -356,10 +356,6 @@ $(obj)/treeImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
 $(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
 	$(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb)
 
-# Rule to build device tree blobs
-$(obj)/%.dtb: $(src)/dts/%.dts FORCE
-	$(call if_changed_dep,dtc)
-
 # If there isn't a platform selected then just strip the vmlinux.
 ifeq (,$(image-y))
 image-y := vmlinux.strip
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 0be6f11..425578e 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -266,6 +266,9 @@ $(obj)/%.dtb.S: $(obj)/%.dtb
 quiet_cmd_dtc = DTC     $@
 cmd_dtc = $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 $(DTC_FLAGS) -d $(depfile) $<
 
+$(obj)/%.dtb: $(src)/dts/%.dts FORCE
+	$(call if_changed_dep,dtc)
+
 # Bzip2
 # ---------------------------------------------------------------------------
 
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH V4 REPOST 2/2] kbuild: run the pre-processor on *.dts files
  2012-10-26 19:29 [PATCH V4 REPOST 1/2] kbuild: centralize .dts->.dtb rule Stephen Warren
@ 2012-10-26 19:29 ` Stephen Warren
  2012-10-26 19:57   ` Rob Herring
  2012-10-28  7:24 ` [PATCH V4 REPOST 1/2] kbuild: centralize .dts->.dtb rule Sam Ravnborg
  1 sibling, 1 reply; 6+ messages in thread
From: Stephen Warren @ 2012-10-26 19:29 UTC (permalink / raw)
  To: Michal Marek
  Cc: linux-arch, linux-kernel, devicetree-discuss, David Gibson,
	Jon Loeliger, Grant Likely, Rob Herring, Scott Wood, Mark Brown,
	Jean-Christophe PLAGNIOL-VILLARD, Stephen Warren

From: Stephen Warren <swarren@nvidia.com>

Modify cmd_dtc to run the C pre-processor on the input .dts file before
passing it to dtc for final compilation. This allows the use of #define
and #include within the .dts file.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
v4:
* Use -x assembler-with-cpp so pre-defined macros are set up so that
  #included header files know to only use cpp syntax, not C syntax.
* Define __DTS__ for similar reasons.
* use $(CPP) not $(CC) -E, and use $(cpp_flags).
* Save the pre-processed results so they can be easily inspected when
  debugging build issues.
* The use of -x assembler-with-cpp causes cpp to recognize directives in
  column 1 only. Hence, there's no need to escape property names that
  begin with #. Hence, there's no need for separate skeleton.dtsi and
  skeleton.dtsip. Maintain a separate file extension and build rule so that
  CPP-usage is opt-in. In particular, when using CPP, #include must be used
  rather than /include/ so that dependencies work.
v3: Pass "-x c" not "-xc" to cpp.
v2: Place make %.dtb: %.dtsp rule into Makefile.lib.
---
 scripts/Makefile.lib |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 425578e..33432f4 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -269,6 +269,15 @@ cmd_dtc = $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 $(DTC_FLAGS) -d $(depfile
 $(obj)/%.dtb: $(src)/dts/%.dts FORCE
 	$(call if_changed_dep,dtc)
 
+dtc-tmp = $(subst $(comma),_,$(dot-target).dts)
+
+quiet_cmd_dtc_cpp = DTC+CPP $@
+cmd_dtc_cpp = $(CPP) $(cpp_flags) -D__DTS__ -x assembler-with-cpp -o $(dtc-tmp) $< ; \
+	$(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 $(DTC_FLAGS) $(dtc-tmp)
+
+$(obj)/%.dtb: $(src)/dts/%.dtsp FORCE
+	$(call if_changed_dep,dtc_cpp)
+
 # Bzip2
 # ---------------------------------------------------------------------------
 
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH V4 REPOST 2/2] kbuild: run the pre-processor on *.dts files
  2012-10-26 19:29 ` [PATCH V4 REPOST 2/2] kbuild: run the pre-processor on *.dts files Stephen Warren
@ 2012-10-26 19:57   ` Rob Herring
  2012-10-27 22:06     ` Mark Brown
  0 siblings, 1 reply; 6+ messages in thread
From: Rob Herring @ 2012-10-26 19:57 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Michal Marek, linux-arch, linux-kernel, devicetree-discuss,
	David Gibson, Jon Loeliger, Grant Likely, Scott Wood, Mark Brown,
	Jean-Christophe PLAGNIOL-VILLARD, Stephen Warren

On 10/26/2012 02:29 PM, Stephen Warren wrote:
> From: Stephen Warren <swarren@nvidia.com>
> 
> Modify cmd_dtc to run the C pre-processor on the input .dts file before
> passing it to dtc for final compilation. This allows the use of #define
> and #include within the .dts file.

While this change is small the implications are not. I don't think no
comments reflects agreement on this.

Like I said previously, I think we first need guidelines on what is and
isn't acceptable use of C preprocessor in dts files.

Rob

> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
> v4:
> * Use -x assembler-with-cpp so pre-defined macros are set up so that
>   #included header files know to only use cpp syntax, not C syntax.
> * Define __DTS__ for similar reasons.
> * use $(CPP) not $(CC) -E, and use $(cpp_flags).
> * Save the pre-processed results so they can be easily inspected when
>   debugging build issues.
> * The use of -x assembler-with-cpp causes cpp to recognize directives in
>   column 1 only. Hence, there's no need to escape property names that
>   begin with #. Hence, there's no need for separate skeleton.dtsi and
>   skeleton.dtsip. Maintain a separate file extension and build rule so that
>   CPP-usage is opt-in. In particular, when using CPP, #include must be used
>   rather than /include/ so that dependencies work.
> v3: Pass "-x c" not "-xc" to cpp.
> v2: Place make %.dtb: %.dtsp rule into Makefile.lib.
> ---
>  scripts/Makefile.lib |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
> 
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 425578e..33432f4 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -269,6 +269,15 @@ cmd_dtc = $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 $(DTC_FLAGS) -d $(depfile
>  $(obj)/%.dtb: $(src)/dts/%.dts FORCE
>  	$(call if_changed_dep,dtc)
>  
> +dtc-tmp = $(subst $(comma),_,$(dot-target).dts)
> +
> +quiet_cmd_dtc_cpp = DTC+CPP $@
> +cmd_dtc_cpp = $(CPP) $(cpp_flags) -D__DTS__ -x assembler-with-cpp -o $(dtc-tmp) $< ; \
> +	$(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 $(DTC_FLAGS) $(dtc-tmp)
> +
> +$(obj)/%.dtb: $(src)/dts/%.dtsp FORCE
> +	$(call if_changed_dep,dtc_cpp)
> +
>  # Bzip2
>  # ---------------------------------------------------------------------------
>  
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V4 REPOST 2/2] kbuild: run the pre-processor on *.dts files
  2012-10-26 19:57   ` Rob Herring
@ 2012-10-27 22:06     ` Mark Brown
       [not found]       ` <fb065651-fd9d-4435-9a61-884dcb1da8d0@email.android.com>
  0 siblings, 1 reply; 6+ messages in thread
From: Mark Brown @ 2012-10-27 22:06 UTC (permalink / raw)
  To: Rob Herring
  Cc: Stephen Warren, Michal Marek, linux-arch, linux-kernel,
	devicetree-discuss, David Gibson, Jon Loeliger, Grant Likely,
	Scott Wood, Jean-Christophe PLAGNIOL-VILLARD, Stephen Warren

[-- Attachment #1: Type: text/plain, Size: 459 bytes --]

On Fri, Oct 26, 2012 at 02:57:50PM -0500, Rob Herring wrote:

> Like I said previously, I think we first need guidelines on what is and
> isn't acceptable use of C preprocessor in dts files.

Didn't we already say that it was just the same rules as for things tht
get included in .S files?  Besides for plain .dts files (as opposed to
.dtsi files) it seems like if people break things they get to keep all
the pieces without disrupting other people too much.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V4 REPOST 2/2] kbuild: run the pre-processor on *.dts files
       [not found]       ` <fb065651-fd9d-4435-9a61-884dcb1da8d0@email.android.com>
@ 2012-10-28  2:10         ` Stephen Warren
  0 siblings, 0 replies; 6+ messages in thread
From: Stephen Warren @ 2012-10-28  2:10 UTC (permalink / raw)
  To: Rob Herring
  Cc: Mark Brown, Michal Marek, linux-arch, linux-kernel,
	devicetree-discuss, David Gibson, Jon Loeliger, Grant Likely,
	Scott Wood, Jean-Christophe PLAGNIOL-VILLARD, Stephen Warren

On 10/27/2012 07:06 PM, Rob Herring wrote:
> Mark Brown <broonie@opensource.wolfsonmicro.com> wrote:
> 
>     On Fri, Oct 26, 2012 at 02:57:50PM -0500, Rob Herring wrote:
> 
>         Like I said previously, I think we first need guidelines on what
>         is and
>         isn't acceptable use of C preprocessor in dts files.
> 
> 
>     Didn't we already say that it was just the same rules as for things tht
>     get included in .S files?  Besides for plain .dts files (as opposed to
>     .dtsi files) it seems like if people break things they get to keep all
>     the pieces without disrupting other people too much.
> 
> 
> Yes, but can we document that. Also, I'd like others with more DT
> historical knowledge to weigh in.

OK. What's the appropriate file to document that in? I assume you're not
just looking for an explanation in the commit description?


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V4 REPOST 1/2] kbuild: centralize .dts->.dtb rule
  2012-10-26 19:29 [PATCH V4 REPOST 1/2] kbuild: centralize .dts->.dtb rule Stephen Warren
  2012-10-26 19:29 ` [PATCH V4 REPOST 2/2] kbuild: run the pre-processor on *.dts files Stephen Warren
@ 2012-10-28  7:24 ` Sam Ravnborg
  1 sibling, 0 replies; 6+ messages in thread
From: Sam Ravnborg @ 2012-10-28  7:24 UTC (permalink / raw)
  To: Stephen Warren
  Cc: Michal Marek, linux-arch, linux-kernel, devicetree-discuss,
	David Gibson, Jon Loeliger, Grant Likely, Rob Herring,
	Scott Wood, Mark Brown, Jean-Christophe PLAGNIOL-VILLARD,
	Stephen Warren

On Fri, Oct 26, 2012 at 01:29:56PM -0600, Stephen Warren wrote:
> From: Stephen Warren <swarren@nvidia.com>
> 
> All architectures that use cmd_dtc do so in the same way. Move the build
> rule to a central location to avoid duplication.
> 
> Signed-off-by: Stephen Warren <swarren@nvidia.com>

This is missing documentation of the new rule in Documentation/kbuild/makefiles.txt

	Sam

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-10-28  7:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-26 19:29 [PATCH V4 REPOST 1/2] kbuild: centralize .dts->.dtb rule Stephen Warren
2012-10-26 19:29 ` [PATCH V4 REPOST 2/2] kbuild: run the pre-processor on *.dts files Stephen Warren
2012-10-26 19:57   ` Rob Herring
2012-10-27 22:06     ` Mark Brown
     [not found]       ` <fb065651-fd9d-4435-9a61-884dcb1da8d0@email.android.com>
2012-10-28  2:10         ` Stephen Warren
2012-10-28  7:24 ` [PATCH V4 REPOST 1/2] kbuild: centralize .dts->.dtb rule Sam Ravnborg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).