diff mbox

[U-Boot] tools/env: change stripping strategy to allow no-stripping

Message ID 1409142540-22651-1-git-send-email-thomas.petazzoni@free-electrons.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Thomas Petazzoni Aug. 27, 2014, 12:29 p.m. UTC
When building the U-Boot tools for non-ELF platforms (such as Blackfin
FLAT), since commit 79fc0c5f498c3982aa4740c273ab1a9255063d9c
("tools/env: cross-compile fw_printenv without setting HOSTCC"), the
build fails because it tries to strip a FLAT binary, which does not
make sense.

This commit solves this by changing the stripping logic in
tools/env/Makefile to be similar to the one in tools/Makefile. This
logic continues to apply strip to the final binary, but does not abort
the build if it fails, and does the stripping in place on the final
binary. This allows the logic to work fine if stripping doesn't work,
as it leaves the final binary untouched.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Sonic Zhang <sonic.zhang@analog.com>
---
An improved solution would be to be able to override STRIP completely
by setting it to /bin/true, but the main Makefile enforces STRIP =
$(CROSS_COMPILE)strip.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 tools/env/Makefile | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

Comments

Masahiro Yamada Aug. 28, 2014, 1:43 a.m. UTC | #1
On Wed, 27 Aug 2014 14:29:00 +0200
Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote:

> When building the U-Boot tools for non-ELF platforms (such as Blackfin
> FLAT), since commit 79fc0c5f498c3982aa4740c273ab1a9255063d9c
> ("tools/env: cross-compile fw_printenv without setting HOSTCC"), the
> build fails because it tries to strip a FLAT binary, which does not
> make sense.
> 
> This commit solves this by changing the stripping logic in
> tools/env/Makefile to be similar to the one in tools/Makefile. This
> logic continues to apply strip to the final binary, but does not abort
> the build if it fails, and does the stripping in place on the final
> binary. This allows the logic to work fine if stripping doesn't work,
> as it leaves the final binary untouched.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
> Cc: Sonic Zhang <sonic.zhang@analog.com>


Reviewed-by: Masahiro Yamada <yamada.m@jp.panasonic.com>


Thanks!
Sonic Zhang Aug. 28, 2014, 10:25 a.m. UTC | #2
On Wed, Aug 27, 2014 at 8:29 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> When building the U-Boot tools for non-ELF platforms (such as Blackfin
> FLAT), since commit 79fc0c5f498c3982aa4740c273ab1a9255063d9c
> ("tools/env: cross-compile fw_printenv without setting HOSTCC"), the
> build fails because it tries to strip a FLAT binary, which does not
> make sense.
>
> This commit solves this by changing the stripping logic in
> tools/env/Makefile to be similar to the one in tools/Makefile. This
> logic continues to apply strip to the final binary, but does not abort
> the build if it fails, and does the stripping in place on the final
> binary. This allows the logic to work fine if stripping doesn't work,
> as it leaves the final binary untouched.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
> Cc: Sonic Zhang <sonic.zhang@analog.com>
> ---
> An improved solution would be to be able to override STRIP completely
> by setting it to /bin/true, but the main Makefile enforces STRIP =
> $(CROSS_COMPILE)strip.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
>  tools/env/Makefile | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/tools/env/Makefile b/tools/env/Makefile
> index 4927489..40164f7 100644
> --- a/tools/env/Makefile
> +++ b/tools/env/Makefile
> @@ -21,14 +21,16 @@ HOST_EXTRACFLAGS += -DMTD_OLD
>  endif
>
>  always := fw_printenv
> -hostprogs-y := fw_printenv_unstripped
> +hostprogs-y := fw_printenv
>
> -fw_printenv_unstripped-objs := fw_env.o fw_env_main.o \
> +fw_printenv-objs := fw_env.o fw_env_main.o \
>         crc32.o ctype.o linux_string.o \
>         env_attr.o env_flags.o aes.o
>
> -quiet_cmd_strip = STRIP   $@
> -      cmd_strip = $(STRIP) -o $@ $<
> +quiet_cmd_crosstools_strip = STRIP   $^
> +      cmd_crosstools_strip = $(STRIP) $^; touch $@
>
> -$(obj)/fw_printenv: $(obj)/fw_printenv_unstripped FORCE
> -       $(call if_changed,strip)
> +$(obj)/.strip: $(obj)/fw_printenv
> +       $(call cmd,crosstools_strip)
> +
> +always += .strip
> --
> 2.0.0
>
Reviewed-by: Sonic Zhang <sonic.zhang@analog.com>

Regards,

Sonic
Tom Rini Sept. 25, 2014, 2:44 p.m. UTC | #3
On Wed, Aug 27, 2014 at 02:29:00PM +0200, Thomas Petazzoni wrote:

> When building the U-Boot tools for non-ELF platforms (such as Blackfin
> FLAT), since commit 79fc0c5f498c3982aa4740c273ab1a9255063d9c
> ("tools/env: cross-compile fw_printenv without setting HOSTCC"), the
> build fails because it tries to strip a FLAT binary, which does not
> make sense.
> 
> This commit solves this by changing the stripping logic in
> tools/env/Makefile to be similar to the one in tools/Makefile. This
> logic continues to apply strip to the final binary, but does not abort
> the build if it fails, and does the stripping in place on the final
> binary. This allows the logic to work fine if stripping doesn't work,
> as it leaves the final binary untouched.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
> Cc: Sonic Zhang <sonic.zhang@analog.com>
> Reviewed-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
> Reviewed-by: Sonic Zhang <sonic.zhang@analog.com>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/tools/env/Makefile b/tools/env/Makefile
index 4927489..40164f7 100644
--- a/tools/env/Makefile
+++ b/tools/env/Makefile
@@ -21,14 +21,16 @@  HOST_EXTRACFLAGS += -DMTD_OLD
 endif
 
 always := fw_printenv
-hostprogs-y := fw_printenv_unstripped
+hostprogs-y := fw_printenv
 
-fw_printenv_unstripped-objs := fw_env.o fw_env_main.o \
+fw_printenv-objs := fw_env.o fw_env_main.o \
 	crc32.o ctype.o linux_string.o \
 	env_attr.o env_flags.o aes.o
 
-quiet_cmd_strip = STRIP   $@
-      cmd_strip = $(STRIP) -o $@ $<
+quiet_cmd_crosstools_strip = STRIP   $^
+      cmd_crosstools_strip = $(STRIP) $^; touch $@
 
-$(obj)/fw_printenv: $(obj)/fw_printenv_unstripped FORCE
-	$(call if_changed,strip)
+$(obj)/.strip: $(obj)/fw_printenv
+	$(call cmd,crosstools_strip)
+
+always += .strip