Tom Rini | 83d290c | 2018-05-06 17:58:06 -0400 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0+ |
Simon Glass | 4b0730d | 2011-09-26 14:10:39 +0000 | [diff] [blame] | 2 | # Copyright (c) 2011 The Chromium OS Authors. |
Simon Glass | 4b0730d | 2011-09-26 14:10:39 +0000 | [diff] [blame] | 3 | |
Masahiro Yamada | 90f984e | 2014-07-30 14:08:23 +0900 | [diff] [blame] | 4 | PLATFORM_CPPFLAGS += -D__SANDBOX__ -U_FORTIFY_SOURCE |
Andy Shevchenko | e599c4e7 | 2018-09-03 12:08:10 +0300 | [diff] [blame] | 5 | PLATFORM_CPPFLAGS += -fPIC |
Matthias Weisser | d99a687 | 2011-11-29 12:16:40 +0100 | [diff] [blame] | 6 | PLATFORM_LIBS += -lrt |
Simon Glass | 96d0cd4 | 2020-02-03 07:36:12 -0700 | [diff] [blame] | 7 | SDL_CONFIG ?= sdl2-config |
Simon Glass | a733b06 | 2013-04-26 02:53:43 +0000 | [diff] [blame] | 8 | |
Simon Glass | e50ab22 | 2015-02-10 18:52:35 -0700 | [diff] [blame] | 9 | # Define this to avoid linking with SDL, which requires SDL libraries |
| 10 | # This can solve 'sdl-config: Command not found' errors |
Tom Rini | d948c89 | 2022-11-19 18:45:43 -0500 | [diff] [blame] | 11 | ifeq ($(CONFIG_SANDBOX_SDL),y) |
Simon Glass | e8a7b30 | 2019-05-18 11:59:47 -0600 | [diff] [blame] | 12 | PLATFORM_LIBS += $(shell $(SDL_CONFIG) --libs) |
| 13 | PLATFORM_CPPFLAGS += $(shell $(SDL_CONFIG) --cflags) |
Simon Glass | bbc09bf | 2014-02-27 13:26:17 -0700 | [diff] [blame] | 14 | endif |
| 15 | |
Andrew Scull | 1e578ed | 2022-05-30 10:00:05 +0000 | [diff] [blame] | 16 | SANITIZERS := |
| 17 | ifdef CONFIG_ASAN |
| 18 | SANITIZERS += -fsanitize=address |
| 19 | endif |
Andrew Scull | d9962b1 | 2022-05-30 10:00:11 +0000 | [diff] [blame] | 20 | ifdef CONFIG_FUZZ |
| 21 | SANITIZERS += -fsanitize=fuzzer |
| 22 | endif |
Andrew Scull | 1e578ed | 2022-05-30 10:00:05 +0000 | [diff] [blame] | 23 | KBUILD_CFLAGS += $(SANITIZERS) |
| 24 | |
Simon Glass | 40e9ede | 2018-11-23 21:29:30 -0700 | [diff] [blame] | 25 | cmd_u-boot__ = $(CC) -o $@ -Wl,-T u-boot.lds $(u-boot-init) \ |
Andrew Scull | 1e578ed | 2022-05-30 10:00:05 +0000 | [diff] [blame] | 26 | $(KBUILD_LDFLAGS:%=-Wl,%) \ |
| 27 | $(SANITIZERS) \ |
| 28 | $(LTO_FINAL_LDFLAGS) \ |
Marek Behún | 958f2e5 | 2021-05-20 13:24:02 +0200 | [diff] [blame] | 29 | -Wl,--whole-archive \ |
| 30 | $(u-boot-main) \ |
Marek Behún | 94bb891 | 2021-05-20 13:24:07 +0200 | [diff] [blame] | 31 | $(u-boot-keep-syms-lto) \ |
Marek Behún | 958f2e5 | 2021-05-20 13:24:02 +0200 | [diff] [blame] | 32 | -Wl,--no-whole-archive \ |
Masahiro Yamada | ad0fed4 | 2014-02-24 11:12:18 +0900 | [diff] [blame] | 33 | $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map |
Simon Glass | 714a562 | 2014-02-26 15:59:14 -0700 | [diff] [blame] | 34 | |
Simon Glass | 4cfc416 | 2016-07-04 11:57:46 -0600 | [diff] [blame] | 35 | cmd_u-boot-spl = (cd $(obj) && $(CC) -o $(SPL_BIN) -Wl,-T u-boot-spl.lds \ |
Andrew Scull | 1e578ed | 2022-05-30 10:00:05 +0000 | [diff] [blame] | 36 | $(KBUILD_LDFLAGS:%=-Wl,%) \ |
| 37 | $(SANITIZERS) \ |
| 38 | $(LTO_FINAL_LDFLAGS) \ |
Simon Glass | 40e9ede | 2018-11-23 21:29:30 -0700 | [diff] [blame] | 39 | $(patsubst $(obj)/%,%,$(u-boot-spl-init)) \ |
Marek Behún | 958f2e5 | 2021-05-20 13:24:02 +0200 | [diff] [blame] | 40 | -Wl,--whole-archive \ |
| 41 | $(patsubst $(obj)/%,%,$(u-boot-spl-main)) \ |
| 42 | $(patsubst $(obj)/%,%,$(u-boot-spl-platdata)) \ |
Marek Behún | 94bb891 | 2021-05-20 13:24:07 +0200 | [diff] [blame] | 43 | $(patsubst $(obj)/%,%,$(u-boot-spl-keep-syms-lto)) \ |
Marek Behún | 958f2e5 | 2021-05-20 13:24:02 +0200 | [diff] [blame] | 44 | -Wl,--no-whole-archive \ |
Simon Glass | 4cfc416 | 2016-07-04 11:57:46 -0600 | [diff] [blame] | 45 | $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot-spl.map -Wl,--gc-sections) |
| 46 | |
Simon Glass | 714a562 | 2014-02-26 15:59:14 -0700 | [diff] [blame] | 47 | CONFIG_ARCH_DEVICE_TREE := sandbox |
Heinrich Schuchardt | 3b4847c | 2019-11-07 08:05:17 +0100 | [diff] [blame] | 48 | |
| 49 | ifeq ($(HOST_ARCH),$(HOST_ARCH_X86_64)) |
| 50 | EFI_LDS := ${SRCDIR}/../../../arch/x86/lib/elf_x86_64_efi.lds |
| 51 | EFI_TARGET := --target=efi-app-x86_64 |
| 52 | else ifeq ($(HOST_ARCH),$(HOST_ARCH_X86)) |
| 53 | EFI_LDS := ${SRCDIR}/../../../arch/x86/lib/elf_ia32_efi.lds |
| 54 | EFI_TARGET := --target=efi-app-ia32 |
| 55 | else ifeq ($(HOST_ARCH),$(HOST_ARCH_AARCH64)) |
| 56 | EFI_LDS := ${SRCDIR}/../../../arch/arm/lib/elf_aarch64_efi.lds |
| 57 | OBJCOPYFLAGS += -j .text -j .secure_text -j .secure_data -j .rodata -j .data \ |
Andrew Scull | 99e2fbc | 2022-05-30 10:00:04 +0000 | [diff] [blame] | 58 | -j __u_boot_list -j .rela.dyn -j .got -j .got.plt \ |
Heinrich Schuchardt | 3b4847c | 2019-11-07 08:05:17 +0100 | [diff] [blame] | 59 | -j .binman_sym_table -j .text_rest \ |
| 60 | -j .efi_runtime -j .efi_runtime_rel |
| 61 | else ifeq ($(HOST_ARCH),$(HOST_ARCH_ARM)) |
| 62 | EFI_LDS := ${SRCDIR}/../../../arch/arm/lib/elf_arm_efi.lds |
| 63 | OBJCOPYFLAGS += -j .text -j .secure_text -j .secure_data -j .rodata -j .hash \ |
Andrew Scull | 99e2fbc | 2022-05-30 10:00:04 +0000 | [diff] [blame] | 64 | -j .data -j .got -j .got.plt -j __u_boot_list -j .rel.dyn \ |
Heinrich Schuchardt | 3b4847c | 2019-11-07 08:05:17 +0100 | [diff] [blame] | 65 | -j .binman_sym_table -j .text_rest \ |
| 66 | -j .efi_runtime -j .efi_runtime_rel |
| 67 | else ifeq ($(HOST_ARCH),$(HOST_ARCH_RISCV32)) |
| 68 | EFI_LDS := ${SRCDIR}/../../../arch/riscv/lib/elf_riscv32_efi.lds |
| 69 | else ifeq ($(HOST_ARCH),$(HOST_ARCH_RISCV64)) |
| 70 | EFI_LDS := ${SRCDIR}/../../../arch/riscv/lib/elf_riscv64_efi.lds |
| 71 | endif |
| 72 | EFI_CRT0 := crt0_sandbox_efi.o |
| 73 | EFI_RELOC := reloc_sandbox_efi.o |
| 74 | AFLAGS_crt0_sandbox_efi.o += -DHOST_ARCH="$(HOST_ARCH)" |
| 75 | CFLAGS_reloc_sandbox_efi.o += -DHOST_ARCH="$(HOST_ARCH)" |