build: Add separate DTS target

This patch adds an actual dts target for builds.  This required moving the
rules from Kbuild to Makefile and adding the correct dependencies to targets
requiring the dts files.

JIRA: ZEP-1979

Change-Id: I6ad568e2a821630911623cb227aa303fbf388515
Signed-off-by: Andy Gross <andy.gross@linaro.org>
diff --git a/Kbuild b/Kbuild
index c21dc4b..ceaa937 100644
--- a/Kbuild
+++ b/Kbuild
@@ -32,12 +32,10 @@
 	$(call filechk,configs.c)
 
 targets := misc/generated/configs.c
-targets += include/generated/generated_dts_board.h
 targets += include/generated/offsets.h
 
 
 always := misc/generated/configs.c
-always += include/generated/generated_dts_board.h
 always += include/generated/offsets.h
 
 define rule_cc_o_c_1
@@ -69,28 +67,4 @@
 			     include/config/auto.conf FORCE
 	$(call offsetchk,arch/$(ARCH)/core/offsets/offsets.o)
 
-ifeq ($(CONFIG_HAS_DTS),y)
-define filechk_generated_dts_board.h
-	(echo "/* WARNING. THIS FILE IS AUTO-GENERATED. DO NOT MODIFY! */"; \
-		$(ZEPHYR_BASE)/scripts/extract_dts_includes.py dts/$(ARCH)/$(BOARD_NAME).dts_compiled $(ZEPHYR_BASE)/dts/$(ARCH)/yaml; \
-		if test -e $(ZEPHYR_BASE)/dts/$(ARCH)/$(BOARD_NAME).fixup; then \
-			echo; echo; \
-			echo "/* Following definitions fixup the generated include */"; \
-			echo; \
-			cat $(ZEPHYR_BASE)/dts/$(ARCH)/$(BOARD_NAME).fixup; \
-		fi; \
-		)
-endef
-else
-define filechk_generated_dts_board.h
-	(echo "/* WARNING. THIS FILE IS AUTO-GENERATED. DO NOT MODIFY! */";)
-endef
-endif
-
-
-include/generated/generated_dts_board.h: include/config/auto.conf FORCE
-ifeq ($(CONFIG_HAS_DTS),y)
-	$(Q)$(MAKE) $(build)=dts/$(ARCH)
-endif
-	$(call filechk,generated_dts_board.h)
 
diff --git a/Makefile b/Makefile
index d396ae6..f2f2fdf 100644
--- a/Makefile
+++ b/Makefile
@@ -919,6 +919,33 @@
 
 zephyr: $(zephyr-deps) $(KERNEL_BIN_NAME)
 
+ifeq ($(CONFIG_HAS_DTS),y)
+define filechk_generated_dts_board.h
+	(echo "/* WARNING. THIS FILE IS AUTO-GENERATED. DO NOT MODIFY! */"; \
+		$(ZEPHYR_BASE)/scripts/extract_dts_includes.py dts/$(ARCH)/$(BOARD_NAME).dts_compiled $(ZEPHYR_BASE)/dts/$(ARCH)/yaml; \
+		if test -e $(ZEPHYR_BASE)/dts/$(ARCH)/$(BOARD_NAME).fixup; then \
+			echo; echo; \
+			echo "/* Following definitions fixup the generated include */"; \
+			echo; \
+			cat $(ZEPHYR_BASE)/dts/$(ARCH)/$(BOARD_NAME).fixup; \
+		fi; \
+		)
+endef
+else
+define filechk_generated_dts_board.h
+	(echo "/* WARNING. THIS FILE IS AUTO-GENERATED. DO NOT MODIFY! */";)
+endef
+endif
+
+
+include/generated/generated_dts_board.h: include/config/auto.conf FORCE
+ifeq ($(CONFIG_HAS_DTS),y)
+	$(Q)$(MAKE) $(build)=dts/$(ARCH)
+endif
+	$(call filechk,generated_dts_board.h)
+
+dts: include/generated/generated_dts_board.h
+
 # The actual objects are generated when descending,
 # make sure no implicit rule kicks in
 $(sort $(zephyr-deps)): $(zephyr-dirs) zephyr-app-dir ;
@@ -976,7 +1003,7 @@
 		)
 
 # All the preparing..
-prepare: $(archprepare)  FORCE
+prepare: $(archprepare) dts FORCE
 	$(Q)$(MAKE) $(build)=.
 
 # Generate some files
diff --git a/Makefile.inc b/Makefile.inc
index 1d03f28..e0f7cc9 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -122,6 +122,9 @@
 outputexports: initconfig
 	$(Q)$(call zephyrmake,$(O),$@)
 
+dts: initconfig
+	$(Q)$(call zephyrmake,$(O),$@)
+
 menuconfig: initconfig
 	$(Q)$(call zephyrmake,$(O),$@)