* [U-Boot] [PATCH] kbuild/makefile: allow building host tools separately
@ 2014-03-20 17:23 Alexey Brodkin
2014-03-28 6:36 ` Masahiro Yamada
0 siblings, 1 reply; 6+ messages in thread
From: Alexey Brodkin @ 2014-03-20 17:23 UTC (permalink / raw)
To: u-boot
Sometimes it is required to build only host U-Boot tools without building
U-Boot itself for either board.
For example:
* In "buildroot" "uboot-tools" could be built for host just to have an ability
to create uImage.
* Linux distributions ship "mkimage" utility as a separate substance.
This patch allows building host U-Boot tools separately from U-Boot itself and
what is more important user only needs to have host compiler (gcc).
To build host tools just execute:
=====
make tools HOST_TOOLS_ONLY=yes
=====
Without this patch to generate tools user needs:
1. Configure any existing board with "make XXX_config"
2. Execute tools building but still cross-compiler will be invoked and if
there's no proper cross-compiler in PATH compilation will fail.
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Tom Rini <trini@ti.com>
Cc: Simon Glass <sjg@chromium.org>
---
Kbuild | 5 +++++
Makefile | 7 +++++++
2 files changed, 12 insertions(+)
diff --git a/Kbuild b/Kbuild
index 1d89761..b5e348d 100644
--- a/Kbuild
+++ b/Kbuild
@@ -4,6 +4,9 @@
# 1) Generate generic-asm-offsets.h
# 2) Generate asm-offsets.h
+# Don't execute target below if building host tools only
+ifneq ($(HOST_TOOLS_ONLY),yes)
+
#####
# 1) Generate generic-asm-offsets.h
@@ -85,3 +88,5 @@ $(CPUDIR)/$(SOC)/asm-offsets.s: $(CPUDIR)/$(SOC)/asm-offsets.c FORCE
$(obj)/$(offsets-file): $(CPUDIR)/$(SOC)/asm-offsets.s
$(call cmd,offsets)
+
+endif
diff --git a/Makefile b/Makefile
index b795338..2fb8ea1 100644
--- a/Makefile
+++ b/Makefile
@@ -481,9 +481,12 @@ ifeq ($(dot-config),1)
# load other configuration
include $(srctree)/config.mk
+# Don't check for config.mk presence if building host tools only
+ifneq ($(HOST_TOOLS_ONLY),yes)
ifeq ($(wildcard include/config.mk),)
$(error "System not configured - see README")
endif
+endif
# If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
# that (or fail if absent). Otherwise, search for a linker script in a
@@ -994,10 +997,14 @@ ifeq ($(CONFIG_SYS_GENERIC_BOARD),y)
@/bin/false
endif
endif
+
+# Don't check for ldscript presence if building host tools only
+ifneq ($(HOST_TOOLS_ONLY),yes)
ifeq ($(wildcard $(LDSCRIPT)),)
@echo >&2 " Could not find linker script."
@/bin/false
endif
+endif
archprepare: prepare1 scripts_basic
--
1.8.5.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] kbuild/makefile: allow building host tools separately
2014-03-20 17:23 [U-Boot] [PATCH] kbuild/makefile: allow building host tools separately Alexey Brodkin
@ 2014-03-28 6:36 ` Masahiro Yamada
2014-03-28 21:58 ` Alexey Brodkin
0 siblings, 1 reply; 6+ messages in thread
From: Masahiro Yamada @ 2014-03-28 6:36 UTC (permalink / raw)
To: u-boot
Hi Alexey,
> Sometimes it is required to build only host U-Boot tools without building
> U-Boot itself for either board.
>
> For example:
> * In "buildroot" "uboot-tools" could be built for host just to have an ability
> to create uImage.
> * Linux distributions ship "mkimage" utility as a separate substance.
>
> This patch allows building host U-Boot tools separately from U-Boot itself and
> what is more important user only needs to have host compiler (gcc).
>
> To build host tools just execute:
> =====
> make tools HOST_TOOLS_ONLY=yes
> =====
This may be the similar discussion to
http://u-boot.10912.n7.nabble.com/U-Boot-could-not-cross-compile-u-boot-tools-td174911.html
Providing a separate make target seems preferable.
Maybe like this?
To build host tools just execute:
=====
make tools-only
=====
And I am not happy about adding ifdef to everywhere.
So, how about a patch like this?
diff --git a/Makefile b/Makefile
index c744718..12e1075 100644
--- a/Makefile
+++ b/Makefile
@@ -409,7 +409,7 @@ timestamp_h := include/generated/timestamp_autogenerated.h
no-dot-config-targets := clean clobber mrproper distclean \
help %docs check% coccicheck \
- ubootversion backup
+ ubootversion backup tools-only
config-targets := 0
mixed-targets := 0
@@ -1128,6 +1128,9 @@ checkarmreloc: u-boot
env: scripts_basic
$(Q)$(MAKE) $(build)=tools/$@
+tools-only: scripts_basic
+ $(Q)$(MAKE) $(build)=tools
+
tools-all: export HOST_TOOLS_ALL=y
tools-all: env tools ;
Best Regards
Masahiro Yamada
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] kbuild/makefile: allow building host tools separately
2014-03-28 6:36 ` Masahiro Yamada
@ 2014-03-28 21:58 ` Alexey Brodkin
2014-03-31 1:43 ` Masahiro Yamada
0 siblings, 1 reply; 6+ messages in thread
From: Alexey Brodkin @ 2014-03-28 21:58 UTC (permalink / raw)
To: u-boot
Hi Masahiro-san,
On Fri, 2014-03-28 at 15:36 +0900, Masahiro Yamada wrote:
> Hi Alexey,
>
> This may be the similar discussion to
> http://u-boot.10912.n7.nabble.com/U-Boot-could-not-cross-compile-u-boot-tools-td174911.html
It looks not that relevant to me.
For example even before switching U-Boot to Kbuild it was not possible
to build host tools simply without patching sources/headers or
configuring real target. Or I might be missing something here.
> Providing a separate make target seems preferable.
>
> Maybe like this?
>
> To build host tools just execute:
> =====
> make tools-only
> =====
Fully agree. I thought about it right after I sent you initial patch.
> And I am not happy about adding ifdef to everywhere.
So do I. But I don't see other way around unfortunately.
>
> So, how about a patch like this?
>
>
>
>
> diff --git a/Makefile b/Makefile
> index c744718..12e1075 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -409,7 +409,7 @@ timestamp_h := include/generated/timestamp_autogenerated.h
>
> no-dot-config-targets := clean clobber mrproper distclean \
> help %docs check% coccicheck \
> - ubootversion backup
> + ubootversion backup tools-only
>
> config-targets := 0
> mixed-targets := 0
> @@ -1128,6 +1128,9 @@ checkarmreloc: u-boot
> env: scripts_basic
> $(Q)$(MAKE) $(build)=tools/$@
>
> +tools-only: scripts_basic
> + $(Q)$(MAKE) $(build)=tools
> +
> tools-all: export HOST_TOOLS_ALL=y
> tools-all: env tools ;
>
Doesn't work for me:
========
$ make tools-only
HOSTCC scripts/basic/fixdep
HOSTCC tools/aisimage.o
HOSTCC tools/crc32.o
HOSTCC tools/default_image.o
HOSTCC tools/dumpimage.o
In file included from include/version.h:11:0,
from tools/dumpimage.c:11:
include/timestamp.h:11:47: fatal error:
generated/timestamp_autogenerated.h: No such file or directory
#include "generated/timestamp_autogenerated.h"
^
compilation terminated.
make[1]: *** [tools/dumpimage.o] Error 1
make: *** [tools-only] Error 2
========
-Alexey
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] kbuild/makefile: allow building host tools separately
2014-03-28 21:58 ` Alexey Brodkin
@ 2014-03-31 1:43 ` Masahiro Yamada
2014-03-31 5:52 ` Alexey Brodkin
0 siblings, 1 reply; 6+ messages in thread
From: Masahiro Yamada @ 2014-03-31 1:43 UTC (permalink / raw)
To: u-boot
Hi Alexey,
> >
> > This may be the similar discussion to
> > http://u-boot.10912.n7.nabble.com/U-Boot-could-not-cross-compile-u-boot-tools-td174911.html
>
> It looks not that relevant to me.
> For example even before switching U-Boot to Kbuild it was not possible
> to build host tools simply without patching sources/headers or
> configuring real target. Or I might be missing something here.
Sorry, I should have explained it more exactly.
What I wanted you to refer is Wolfgang's comment in that thread.
This part:
Wolfgang wrote:
> I'm not really hapy with the additional CROSS_BUILD_TOOLS paramert -
> but this may be a matter of taste, so the following is just a thought
> and a question:
>
> Would it make more sense to provide a sparate make target instead?
>
> Say, something like this:
>
> Build tools for host
> make CROSS_COMPILE=<your_gcc_prefix tools
> Build tools for target
> make CROSS_COMPILE=<your_gcc_prefix cross_tools
>
> ?
And then we chose a new make target "cross_tools"
rather than a new option "CROSS_BUILD_TOOLS=1".
That is similar to what is happening here.
I wanted to show retionale why a make target "tools-only" is better
than "HOST_TOOLS_ONLY=yes".
>
> Doesn't work for me:
> ========
> $ make tools-only
> HOSTCC scripts/basic/fixdep
> HOSTCC tools/aisimage.o
> HOSTCC tools/crc32.o
> HOSTCC tools/default_image.o
> HOSTCC tools/dumpimage.o
> In file included from include/version.h:11:0,
> from tools/dumpimage.c:11:
> include/timestamp.h:11:47: fatal error:
> generated/timestamp_autogenerated.h: No such file or directory
> #include "generated/timestamp_autogenerated.h"
> ^
> compilation terminated.
> make[1]: *** [tools/dumpimage.o] Error 1
> make: *** [tools-only] Error 2
> ========
Oops - My bad.
I was disabling timestamp.
Could you fix like this?
tools-only: scripts_basic $(version_h) $(timestamp_h)
$(Q)$(MAKE) $(build)=tools
It worked for me.
$ make tools-only
HOSTCC scripts/basic/fixdep
CHK include/config/uboot.release
UPD include/config/uboot.release
CHK include/generated/version_autogenerated.h
UPD include/generated/version_autogenerated.h
CHK include/generated/timestamp_autogenerated.h
UPD include/generated/timestamp_autogenerated.h
HOSTCC tools/aisimage.o
HOSTCC tools/crc32.o
HOSTCC tools/default_image.o
HOSTCC tools/dumpimage.o
HOSTCC tools/fdt.o
HOSTCC tools/fdt_ro.o
HOSTCC tools/fdt_rw.o
HOSTCC tools/fdt_strerror.o
HOSTCC tools/fdt_wip.o
HOSTCC tools/fit_image.o
HOSTCC tools/image-fit.o
HOSTCC tools/image-host.o
HOSTCC tools/image.o
HOSTCC tools/imagetool.o
HOSTCC tools/imximage.o
HOSTCC tools/kwbimage.o
HOSTCC tools/md5.o
HOSTCC tools/mkenvimage.o
HOSTCC tools/mkimage.o
HOSTCC tools/mxsimage.o
HOSTCC tools/omapimage.o
HOSTCC tools/os_support.o
HOSTCC tools/pblimage.o
HOSTCC tools/sha1.o
HOSTCC tools/ublimage.o
HOSTLD tools/mkenvimage
HOSTLD tools/dumpimage
HOSTLD tools/mkimage
HOSTCC tools/proftool
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] kbuild/makefile: allow building host tools separately
2014-03-31 1:43 ` Masahiro Yamada
@ 2014-03-31 5:52 ` Alexey Brodkin
2014-03-31 6:43 ` Masahiro Yamada
0 siblings, 1 reply; 6+ messages in thread
From: Alexey Brodkin @ 2014-03-31 5:52 UTC (permalink / raw)
To: u-boot
Hi Masahiro-san,
On Mon, 2014-03-31 at 10:43 +0900, Masahiro Yamada wrote:
> I wanted to show retionale why a make target "tools-only" is better
> than "HOST_TOOLS_ONLY=yes".
Completely agree. I should have think a bit more before sending initial
patch because right after the email was sent I thought why didn't I use
a new target? :)
New target looks much better than some random variable.
It's shorter and easier to use.
> >
> > Doesn't work for me:
> > ========
> > $ make tools-only
> > HOSTCC scripts/basic/fixdep
> > HOSTCC tools/aisimage.o
> > HOSTCC tools/crc32.o
> > HOSTCC tools/default_image.o
> > HOSTCC tools/dumpimage.o
> > In file included from include/version.h:11:0,
> > from tools/dumpimage.c:11:
> > include/timestamp.h:11:47: fatal error:
> > generated/timestamp_autogenerated.h: No such file or directory
> > #include "generated/timestamp_autogenerated.h"
> > ^
> > compilation terminated.
> > make[1]: *** [tools/dumpimage.o] Error 1
> > make: *** [tools-only] Error 2
> > ========
>
>
>
> Oops - My bad.
> I was disabling timestamp.
>
>
> Could you fix like this?
>
> tools-only: scripts_basic $(version_h) $(timestamp_h)
> $(Q)$(MAKE) $(build)=tools
>
Works as a charm for me as well.
Do you mind to submit your changes (because it was you who implemented
it properly and I don't want to "steal" your credits)?
Or I do it still on your behalf putting you in as an author?
-Alexey
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] kbuild/makefile: allow building host tools separately
2014-03-31 5:52 ` Alexey Brodkin
@ 2014-03-31 6:43 ` Masahiro Yamada
0 siblings, 0 replies; 6+ messages in thread
From: Masahiro Yamada @ 2014-03-31 6:43 UTC (permalink / raw)
To: u-boot
Hi Alexey,
> >
>
> Works as a charm for me as well.
> Do you mind to submit your changes (because it was you who implemented
> it properly and I don't want to "steal" your credits)?
>
> Or I do it still on your behalf putting you in as an author?
>
> -Alexey
OK. I will post it with your Suggested-by credit.
Thanks for your kindness!
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-03-31 6:43 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-20 17:23 [U-Boot] [PATCH] kbuild/makefile: allow building host tools separately Alexey Brodkin
2014-03-28 6:36 ` Masahiro Yamada
2014-03-28 21:58 ` Alexey Brodkin
2014-03-31 1:43 ` Masahiro Yamada
2014-03-31 5:52 ` Alexey Brodkin
2014-03-31 6:43 ` Masahiro Yamada
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.