blob: 3e2c7f9ebe55d0bd533e7ff12078440eae84c0a8 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001# SPDX-License-Identifier: GPL-2.0+
Simon Glass3d750d72011-09-26 14:10:39 +00002# Copyright (c) 2011 The Chromium OS Authors.
Simon Glass3d750d72011-09-26 14:10:39 +00003
Masahiro Yamada4869aee2014-07-30 14:08:23 +09004PLATFORM_CPPFLAGS += -D__SANDBOX__ -U_FORTIFY_SOURCE
Andy Shevchenko5077f432018-09-03 12:08:10 +03005PLATFORM_CPPFLAGS += -fPIC
Matthias Weisser0d3dd142011-11-29 12:16:40 +01006PLATFORM_LIBS += -lrt
Simon Glassb6f4c1c2020-02-03 07:36:12 -07007SDL_CONFIG ?= sdl2-config
Simon Glass62cf9122013-04-26 02:53:43 +00008
Simon Glassd8e22922015-02-10 18:52:35 -07009# Define this to avoid linking with SDL, which requires SDL libraries
10# This can solve 'sdl-config: Command not found' errors
11ifneq ($(NO_SDL),)
12PLATFORM_CPPFLAGS += -DSANDBOX_NO_SDL
13else
Simon Glass73585b92019-05-18 11:59:47 -060014PLATFORM_LIBS += $(shell $(SDL_CONFIG) --libs)
15PLATFORM_CPPFLAGS += $(shell $(SDL_CONFIG) --cflags)
Simon Glass0d10f292014-02-27 13:26:17 -070016endif
17
Andrew Scullf9a2c5e2022-05-30 10:00:05 +000018SANITIZERS :=
19ifdef CONFIG_ASAN
20SANITIZERS += -fsanitize=address
21endif
Andrew Scull2b40f802022-05-30 10:00:11 +000022ifdef CONFIG_FUZZ
23SANITIZERS += -fsanitize=fuzzer
24endif
Andrew Scullf9a2c5e2022-05-30 10:00:05 +000025KBUILD_CFLAGS += $(SANITIZERS)
26
Simon Glass66cf8f72018-11-23 21:29:30 -070027cmd_u-boot__ = $(CC) -o $@ -Wl,-T u-boot.lds $(u-boot-init) \
Andrew Scullf9a2c5e2022-05-30 10:00:05 +000028 $(KBUILD_LDFLAGS:%=-Wl,%) \
29 $(SANITIZERS) \
30 $(LTO_FINAL_LDFLAGS) \
Marek Behúnf8726852021-05-20 13:24:02 +020031 -Wl,--whole-archive \
32 $(u-boot-main) \
Marek Behún72434932021-05-20 13:24:07 +020033 $(u-boot-keep-syms-lto) \
Marek Behúnf8726852021-05-20 13:24:02 +020034 -Wl,--no-whole-archive \
Masahiro Yamada9f9a4e92014-02-24 11:12:18 +090035 $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map
Simon Glass66c164b2014-02-26 15:59:14 -070036
Simon Glass1a3ba622016-07-04 11:57:46 -060037cmd_u-boot-spl = (cd $(obj) && $(CC) -o $(SPL_BIN) -Wl,-T u-boot-spl.lds \
Andrew Scullf9a2c5e2022-05-30 10:00:05 +000038 $(KBUILD_LDFLAGS:%=-Wl,%) \
39 $(SANITIZERS) \
40 $(LTO_FINAL_LDFLAGS) \
Simon Glass66cf8f72018-11-23 21:29:30 -070041 $(patsubst $(obj)/%,%,$(u-boot-spl-init)) \
Marek Behúnf8726852021-05-20 13:24:02 +020042 -Wl,--whole-archive \
43 $(patsubst $(obj)/%,%,$(u-boot-spl-main)) \
44 $(patsubst $(obj)/%,%,$(u-boot-spl-platdata)) \
Marek Behún72434932021-05-20 13:24:07 +020045 $(patsubst $(obj)/%,%,$(u-boot-spl-keep-syms-lto)) \
Marek Behúnf8726852021-05-20 13:24:02 +020046 -Wl,--no-whole-archive \
Simon Glass1a3ba622016-07-04 11:57:46 -060047 $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot-spl.map -Wl,--gc-sections)
48
Simon Glass66c164b2014-02-26 15:59:14 -070049CONFIG_ARCH_DEVICE_TREE := sandbox
Heinrich Schuchardt0f675d92019-11-07 08:05:17 +010050
51ifeq ($(HOST_ARCH),$(HOST_ARCH_X86_64))
52EFI_LDS := ${SRCDIR}/../../../arch/x86/lib/elf_x86_64_efi.lds
53EFI_TARGET := --target=efi-app-x86_64
54else ifeq ($(HOST_ARCH),$(HOST_ARCH_X86))
55EFI_LDS := ${SRCDIR}/../../../arch/x86/lib/elf_ia32_efi.lds
56EFI_TARGET := --target=efi-app-ia32
57else ifeq ($(HOST_ARCH),$(HOST_ARCH_AARCH64))
58EFI_LDS := ${SRCDIR}/../../../arch/arm/lib/elf_aarch64_efi.lds
59OBJCOPYFLAGS += -j .text -j .secure_text -j .secure_data -j .rodata -j .data \
Andrew Scull5a9095c2022-05-30 10:00:04 +000060 -j __u_boot_list -j .rela.dyn -j .got -j .got.plt \
Heinrich Schuchardt0f675d92019-11-07 08:05:17 +010061 -j .binman_sym_table -j .text_rest \
62 -j .efi_runtime -j .efi_runtime_rel
63else ifeq ($(HOST_ARCH),$(HOST_ARCH_ARM))
64EFI_LDS := ${SRCDIR}/../../../arch/arm/lib/elf_arm_efi.lds
65OBJCOPYFLAGS += -j .text -j .secure_text -j .secure_data -j .rodata -j .hash \
Andrew Scull5a9095c2022-05-30 10:00:04 +000066 -j .data -j .got -j .got.plt -j __u_boot_list -j .rel.dyn \
Heinrich Schuchardt0f675d92019-11-07 08:05:17 +010067 -j .binman_sym_table -j .text_rest \
68 -j .efi_runtime -j .efi_runtime_rel
69else ifeq ($(HOST_ARCH),$(HOST_ARCH_RISCV32))
70EFI_LDS := ${SRCDIR}/../../../arch/riscv/lib/elf_riscv32_efi.lds
71else ifeq ($(HOST_ARCH),$(HOST_ARCH_RISCV64))
72EFI_LDS := ${SRCDIR}/../../../arch/riscv/lib/elf_riscv64_efi.lds
73endif
74EFI_CRT0 := crt0_sandbox_efi.o
75EFI_RELOC := reloc_sandbox_efi.o
76AFLAGS_crt0_sandbox_efi.o += -DHOST_ARCH="$(HOST_ARCH)"
77CFLAGS_reloc_sandbox_efi.o += -DHOST_ARCH="$(HOST_ARCH)"