
Hi Michal,
On Fri, 14 Oct 2022 at 14:53, Michal Suchanek msuchanek@suse.de wrote:
Currently sandbox configuration defautls to 64bit and there is no automation for building 32bit sandbox on 32bit hosts.
Use _LP64 macro as heuristic for detecting 64bit targets.
Signed-off-by: Michal Suchanek msuchanek@suse.de
Changes in v2: simplify and move detection to kconfig
arch/sandbox/Kconfig | 18 +++--------------- scripts/Kconfig.include | 4 ++++ 2 files changed, 7 insertions(+), 15 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
My only question is whether we can allow building the 32-bit version on a 64-bit machine? That would need a separate option I think, to say:
I don't want you to automatically determine HOST_32/64BIT. Instead, use 32 (or 64).
This is along the lines of what Heinrich is saying, except that I strongly feel that we must do the right thing by default, as your patch does.
diff --git a/arch/sandbox/Kconfig b/arch/sandbox/Kconfig index 852a7c8bf2..35508c6b29 100644 --- a/arch/sandbox/Kconfig +++ b/arch/sandbox/Kconfig @@ -13,7 +13,7 @@ config SYS_CPU config SANDBOX64 bool "Use 64-bit addresses" select PHYS_64BIT
select HOST_64BIT
depends on HOST_64BIT
config SANDBOX_RAM_SIZE_MB int "RAM size in MiB" @@ -41,23 +41,11 @@ config SYS_CONFIG_NAME default "sandbox_spl" if SANDBOX_SPL default "sandbox" if !SANDBOX_SPL
-choice
prompt "Run sandbox on 32/64-bit host"
default HOST_64BIT
help
Sandbox can be built on 32-bit and 64-bit hosts.
The default is to build on a 64-bit host and run
on a 64-bit host. If you want to run sandbox on
a 32-bit host, change it here.
config HOST_32BIT
bool "32-bit host"
depends on !PHYS_64BIT
def_bool ! $(cc-define,_LP64)
config HOST_64BIT
bool "64-bit host"
-endchoice
def_bool $(cc-define,_LP64)
config SANDBOX_CRASH_RESET bool "Reset on crash" diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include index dad5583451..b7598ca5d9 100644 --- a/scripts/Kconfig.include +++ b/scripts/Kconfig.include @@ -22,6 +22,10 @@ success = $(if-success,$(1),y,n) # Return y if the compiler supports <flag>, n otherwise cc-option = $(success,$(CC) -Werror $(1) -E -x c /dev/null -o /dev/null)
+# $(cc-define,<macro>) +# Return y if the compiler defines <macro>, n otherwise +cc-define = $(success,$(CC) -dM -E -x c /dev/null | grep -q '^#define <$(1)>')
# $(ld-option,<flag>) # Return y if the linker supports <flag>, n otherwise ld-option = $(success,$(LD) -v $(1)) -- 2.37.3
Regards, SImon