* [PATCH v2 1/1] sandbox: allow cross-compiling sandbox
@ 2021-02-10 17:54 Heinrich Schuchardt
2021-02-10 18:20 ` Sean Anderson
2021-02-10 21:34 ` Simon Glass
0 siblings, 2 replies; 6+ messages in thread
From: Heinrich Schuchardt @ 2021-02-10 17:54 UTC (permalink / raw)
To: u-boot
UEFI test files like helloworld.efi require an architecture specific
PE-COFF header.
Currently this does not work for cross compiling. If $CROSS_COMPILE is set,
use the first part of the architecture triplet from the variable to
choose the PE-COFF header.
Now we can cross-compile the sandbox, e.g.
make sandbox_defconfig NO_SDL=1
CROSS_COMPILE=/opt/bin/aarch64-linux-gnu- NO_SDL=1 MK_ARCH=aarch64 make
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
v2:
use $CROSS_COMPILE instead of an extra environment variable
---
Makefile | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index ebbedb1fb1..6c256a23b6 100644
--- a/Makefile
+++ b/Makefile
@@ -17,9 +17,13 @@ NAME =
# o Look for make include files relative to root of kernel src
MAKEFLAGS += -rR --include-dir=$(CURDIR)
-# Determine host architecture
+# Determine target architecture for the sandbox
include include/host_arch.h
-MK_ARCH="${shell uname -m}"
+ifeq ("", "$(CROSS_COMPILE)")
+ MK_ARCH="${shell uname -m}"
+else
+ MK_ARCH="${shell echo $(CROSS_COMPILE) | sed -n 's/^\s*\([^\/]*\/\)*\([^-]*\)-\S*/\2/p'}"
+endif
unexport HOST_ARCH
ifeq ("x86_64", $(MK_ARCH))
export HOST_ARCH=$(HOST_ARCH_X86_64)
@@ -27,7 +31,7 @@ else ifneq (,$(findstring $(MK_ARCH), "i386" "i486" "i586" "i686"))
export HOST_ARCH=$(HOST_ARCH_X86)
else ifneq (,$(findstring $(MK_ARCH), "aarch64" "armv8l"))
export HOST_ARCH=$(HOST_ARCH_AARCH64)
-else ifeq ("armv7l", $(MK_ARCH))
+else ifneq (,$(findstring $(MK_ARCH), "arm" "armv7" "armv7l"))
export HOST_ARCH=$(HOST_ARCH_ARM)
else ifeq ("riscv32", $(MK_ARCH))
export HOST_ARCH=$(HOST_ARCH_RISCV32)
--
2.30.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 1/1] sandbox: allow cross-compiling sandbox
2021-02-10 17:54 [PATCH v2 1/1] sandbox: allow cross-compiling sandbox Heinrich Schuchardt
@ 2021-02-10 18:20 ` Sean Anderson
2021-02-10 18:30 ` Sean Anderson
2021-02-10 21:34 ` Simon Glass
1 sibling, 1 reply; 6+ messages in thread
From: Sean Anderson @ 2021-02-10 18:20 UTC (permalink / raw)
To: u-boot
On 2/10/21 12:54 PM, Heinrich Schuchardt wrote:
> UEFI test files like helloworld.efi require an architecture specific
> PE-COFF header.
>
> Currently this does not work for cross compiling. If $CROSS_COMPILE
is set,
> use the first part of the architecture triplet from the variable to
> choose the PE-COFF header.
>
> Now we can cross-compile the sandbox, e.g.
>
> make sandbox_defconfig NO_SDL=1
> CROSS_COMPILE=/opt/bin/aarch64-linux-gnu- NO_SDL=1
MK_ARCH=aarch64 make
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
> v2:
> use $CROSS_COMPILE instead of an extra environment variable
> ---
> Makefile | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index ebbedb1fb1..6c256a23b6 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -17,9 +17,13 @@ NAME =
> # o Look for make include files relative to root of kernel src
> MAKEFLAGS += -rR --include-dir=$(CURDIR)
>
> -# Determine host architecture
> +# Determine target architecture for the sandbox
> include include/host_arch.h
> -MK_ARCH="${shell uname -m}"
> +ifeq ("", "$(CROSS_COMPILE)")
> + MK_ARCH="${shell uname -m}"
> +else
> + MK_ARCH="${shell echo $(CROSS_COMPILE) | sed -n
's/^\s*\([^\/]*\/\)*\([^-]*\)-\S*/\2/p'}"
> +endif
Won't this break cross-compiling? E.g. if on my x86_64 machine I run
"CROSS_COMPILE=arm-linux-gnueabihf- make" my HOST_ARCH will be
HOST_ARCH_ARM, even though it should be HOST_ARCH_X86_64.
I think you need a separate variable for a "canadian cross." gcc uses
"build," "host," and "target," but as-is U-Boot's HOST_ARCH is gcc's
"build" arch.
--Sean
> unexport HOST_ARCH
> ifeq ("x86_64", $(MK_ARCH))
> export HOST_ARCH=$(HOST_ARCH_X86_64)
> @@ -27,7 +31,7 @@ else ifneq (,$(findstring $(MK_ARCH), "i386" "i486"
"i586" "i686"))
> export HOST_ARCH=$(HOST_ARCH_X86)
> else ifneq (,$(findstring $(MK_ARCH), "aarch64" "armv8l"))
> export HOST_ARCH=$(HOST_ARCH_AARCH64)
> -else ifeq ("armv7l", $(MK_ARCH))
> +else ifneq (,$(findstring $(MK_ARCH), "arm" "armv7" "armv7l"))
> export HOST_ARCH=$(HOST_ARCH_ARM)
> else ifeq ("riscv32", $(MK_ARCH))
> export HOST_ARCH=$(HOST_ARCH_RISCV32)
> --
> 2.30.0
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/1] sandbox: allow cross-compiling sandbox
2021-02-10 18:20 ` Sean Anderson
@ 2021-02-10 18:30 ` Sean Anderson
0 siblings, 0 replies; 6+ messages in thread
From: Sean Anderson @ 2021-02-10 18:30 UTC (permalink / raw)
To: u-boot
On 2/10/21 1:20 PM, Sean Anderson wrote:
>
>
> On 2/10/21 12:54 PM, Heinrich Schuchardt wrote:
> > UEFI test files like helloworld.efi require an architecture specific
> > PE-COFF header.
> >
> > Currently this does not work for cross compiling. If $CROSS_COMPILE
> is set,
> > use the first part of the architecture triplet from the variable to
> > choose the PE-COFF header.
> >
> > Now we can cross-compile the sandbox, e.g.
> >
> >????? make sandbox_defconfig NO_SDL=1
> >????? CROSS_COMPILE=/opt/bin/aarch64-linux-gnu- NO_SDL=1
> MK_ARCH=aarch64 make
> >
> > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > ---
> > v2:
> >???? use $CROSS_COMPILE instead of an extra environment variable
> > ---
> >?? Makefile | 10 +++++++---
> >?? 1 file changed, 7 insertions(+), 3 deletions(-)
> >
> > diff --git a/Makefile b/Makefile
> > index ebbedb1fb1..6c256a23b6 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -17,9 +17,13 @@ NAME =
> >?? # o Look for make include files relative to root of kernel src
> >?? MAKEFLAGS += -rR --include-dir=$(CURDIR)
> >
> > -# Determine host architecture
> > +# Determine target architecture for the sandbox
> >?? include include/host_arch.h
> > -MK_ARCH="${shell uname -m}"
> > +ifeq ("", "$(CROSS_COMPILE)")
> > +? MK_ARCH="${shell uname -m}"
> > +else
> > +? MK_ARCH="${shell echo $(CROSS_COMPILE) | sed -n
> 's/^\s*\([^\/]*\/\)*\([^-]*\)-\S*/\2/p'}"
> > +endif
>
> Won't this break cross-compiling? E.g. if on my x86_64 machine I run
> "CROSS_COMPILE=arm-linux-gnueabihf- make" my HOST_ARCH will be
> HOST_ARCH_ARM, even though it should be HOST_ARCH_X86_64.
And it seems I've confused HOSTARCH with HOST_ARCH...
(probably a good candidate for a rename)
--Sean
>
> I think you need a separate variable for a "canadian cross." gcc uses
> "build," "host," and "target," but as-is U-Boot's HOST_ARCH is gcc's
> "build" arch.
>
> --Sean
>
> >?? unexport HOST_ARCH
> >?? ifeq ("x86_64", $(MK_ARCH))
> >???? export HOST_ARCH=$(HOST_ARCH_X86_64)
> > @@ -27,7 +31,7 @@ else ifneq (,$(findstring $(MK_ARCH), "i386" "i486"
> "i586" "i686"))
> >???? export HOST_ARCH=$(HOST_ARCH_X86)
> >?? else ifneq (,$(findstring $(MK_ARCH), "aarch64" "armv8l"))
> >???? export HOST_ARCH=$(HOST_ARCH_AARCH64)
> > -else ifeq ("armv7l", $(MK_ARCH))
> > +else ifneq (,$(findstring $(MK_ARCH), "arm" "armv7" "armv7l"))
> >???? export HOST_ARCH=$(HOST_ARCH_ARM)
> >?? else ifeq ("riscv32", $(MK_ARCH))
> >???? export HOST_ARCH=$(HOST_ARCH_RISCV32)
> > --
> > 2.30.0
> >
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/1] sandbox: allow cross-compiling sandbox
2021-02-10 17:54 [PATCH v2 1/1] sandbox: allow cross-compiling sandbox Heinrich Schuchardt
2021-02-10 18:20 ` Sean Anderson
@ 2021-02-10 21:34 ` Simon Glass
2021-03-15 7:25 ` Simon Glass
2021-03-16 5:58 ` Simon Glass
1 sibling, 2 replies; 6+ messages in thread
From: Simon Glass @ 2021-02-10 21:34 UTC (permalink / raw)
To: u-boot
On Wed, 10 Feb 2021 at 10:59, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> UEFI test files like helloworld.efi require an architecture specific
> PE-COFF header.
>
> Currently this does not work for cross compiling. If $CROSS_COMPILE is set,
> use the first part of the architecture triplet from the variable to
> choose the PE-COFF header.
>
> Now we can cross-compile the sandbox, e.g.
>
> make sandbox_defconfig NO_SDL=1
> CROSS_COMPILE=/opt/bin/aarch64-linux-gnu- NO_SDL=1 MK_ARCH=aarch64 make
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
> v2:
> use $CROSS_COMPILE instead of an extra environment variable
> ---
> Makefile | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
Reviewed-by: Simon Glass <sjg@chromium.org>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/1] sandbox: allow cross-compiling sandbox
2021-02-10 21:34 ` Simon Glass
@ 2021-03-15 7:25 ` Simon Glass
2021-03-16 5:58 ` Simon Glass
1 sibling, 0 replies; 6+ messages in thread
From: Simon Glass @ 2021-03-15 7:25 UTC (permalink / raw)
To: u-boot
HI Heinrich,
On Thu, 11 Feb 2021 at 10:34, Simon Glass <sjg@chromium.org> wrote:
>
> On Wed, 10 Feb 2021 at 10:59, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> >
> > UEFI test files like helloworld.efi require an architecture specific
> > PE-COFF header.
> >
> > Currently this does not work for cross compiling. If $CROSS_COMPILE is set,
> > use the first part of the architecture triplet from the variable to
> > choose the PE-COFF header.
> >
> > Now we can cross-compile the sandbox, e.g.
> >
> > make sandbox_defconfig NO_SDL=1
> > CROSS_COMPILE=/opt/bin/aarch64-linux-gnu- NO_SDL=1 MK_ARCH=aarch64 make
> >
> > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > ---
> > v2:
> > use $CROSS_COMPILE instead of an extra environment variable
> > ---
> > Makefile | 10 +++++++---
> > 1 file changed, 7 insertions(+), 3 deletions(-)
>
With this patch if I try to build sandbox with CROSS_COMPILE=/bin/ it fails.
In fact 'buildman -A sandbox' will return '/bin/' so I'd like your
thoughts on what to do about this. Should we modify your patch or
perhaps make buildman return something else with -A sandbox?
Regards,
Simon
> Reviewed-by: Simon Glass <sjg@chromium.org>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/1] sandbox: allow cross-compiling sandbox
2021-02-10 21:34 ` Simon Glass
2021-03-15 7:25 ` Simon Glass
@ 2021-03-16 5:58 ` Simon Glass
1 sibling, 0 replies; 6+ messages in thread
From: Simon Glass @ 2021-03-16 5:58 UTC (permalink / raw)
To: u-boot
HI Heinrich,
On Thu, 11 Feb 2021 at 10:34, Simon Glass <sjg@chromium.org> wrote:
>
> On Wed, 10 Feb 2021 at 10:59, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> >
> > UEFI test files like helloworld.efi require an architecture specific
> > PE-COFF header.
> >
> > Currently this does not work for cross compiling. If $CROSS_COMPILE is set,
> > use the first part of the architecture triplet from the variable to
> > choose the PE-COFF header.
> >
> > Now we can cross-compile the sandbox, e.g.
> >
> > make sandbox_defconfig NO_SDL=1
> > CROSS_COMPILE=/opt/bin/aarch64-linux-gnu- NO_SDL=1 MK_ARCH=aarch64 make
> >
> > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > ---
> > v2:
> > use $CROSS_COMPILE instead of an extra environment variable
> > ---
> > Makefile | 10 +++++++---
> > 1 file changed, 7 insertions(+), 3 deletions(-)
>
With this patch if I try to build sandbox with CROSS_COMPILE=/bin/ it fails.
In fact 'buildman -A sandbox' will return '/bin/' so I'd like your
thoughts on what to do about this. Should we modify your patch or
perhaps make buildman return something else with -A sandbox?
Regards,
Simon
> Reviewed-by: Simon Glass <sjg@chromium.org>
Applied to u-boot-dm/next, thanks!
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-03-16 5:58 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-10 17:54 [PATCH v2 1/1] sandbox: allow cross-compiling sandbox Heinrich Schuchardt
2021-02-10 18:20 ` Sean Anderson
2021-02-10 18:30 ` Sean Anderson
2021-02-10 21:34 ` Simon Glass
2021-03-15 7:25 ` Simon Glass
2021-03-16 5:58 ` Simon Glass
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.