]>
Commit | Line | Data |
---|---|---|
2262cfee WD |
1 | # |
2 | # (C) Copyright 2000-2002 | |
3 | # Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | # | |
1a459660 | 5 | # SPDX-License-Identifier: GPL-2.0+ |
2262cfee WD |
6 | # |
7 | ||
8ae86b76 | 8 | CONFIG_STANDALONE_LOAD_ADDR ?= 0x40000 |
262ae0a6 | 9 | |
5c161653 | 10 | PLATFORM_CPPFLAGS += -fno-strict-aliasing |
5c161653 | 11 | PLATFORM_CPPFLAGS += -fomit-frame-pointer |
f694183b | 12 | PF_CPPFLAGS_X86 := $(call cc-option, -fno-toplevel-reorder, \ |
9a95f51f | 13 | $(call cc-option, -fno-unit-at-a-time)) |
3f1c046c | 14 | |
cca4e4ae | 15 | PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_X86) |
a85f53cd | 16 | PLATFORM_CPPFLAGS += -fno-dwarf2-cfi-asm |
3a03703a SG |
17 | |
18 | ifdef CONFIG_SPL_BUILD | |
19 | IS_32BIT := y | |
20 | else | |
21 | ifndef CONFIG_X86_64 | |
22 | IS_32BIT := y | |
23 | endif | |
24 | endif | |
25 | ||
26 | ifeq ($(IS_32BIT),y) | |
dbb7234b | 27 | PLATFORM_CPPFLAGS += -march=i386 -m32 |
3a03703a | 28 | else |
e719b6b0 | 29 | PLATFORM_CPPFLAGS += $(if $(CONFIG_SPL_BUILD),,-fpic) -fno-common -m64 |
3a03703a | 30 | endif |
a85f53cd GR |
31 | |
32 | PLATFORM_RELFLAGS += -ffunction-sections -fvisibility=hidden | |
33 | ||
3a03703a SG |
34 | PLATFORM_LDFLAGS += -Bsymbolic -Bsymbolic-functions |
35 | PLATFORM_LDFLAGS += -m $(if $(IS_32BIT),elf_i386,elf_x86_64) | |
a85f53cd | 36 | |
476476e7 SG |
37 | # This is used in the top-level Makefile which does not include |
38 | # PLATFORM_LDFLAGS | |
39 | LDFLAGS_EFI_PAYLOAD := -Bsymbolic -Bsymbolic-functions -shared --no-undefined | |
40 | ||
3f1c046c BS |
41 | OBJCOPYFLAGS_EFI := -j .text -j .sdata -j .data -j .dynamic -j .dynsym \ |
42 | -j .rel -j .rela -j .reloc | |
43 | ||
3a03703a | 44 | ifeq ($(IS_32BIT),y) |
3f1c046c | 45 | CFLAGS_NON_EFI := -mregparm=3 |
3a03703a | 46 | endif |
3f1c046c BS |
47 | CFLAGS_EFI := -fpic -fshort-wchar |
48 | ||
96a8d409 SG |
49 | ifeq ($(CONFIG_EFI_STUB_64BIT),) |
50 | CFLAGS_EFI += $(call cc-option, -mno-red-zone) | |
3f1c046c | 51 | EFIARCH = ia32 |
476476e7 | 52 | EFIPAYLOAD_BFDTARGET = elf32-i386 |
96a8d409 SG |
53 | else |
54 | EFIARCH = x86_64 | |
55 | EFIPAYLOAD_BFDTARGET = elf64-x86-64 | |
56 | endif | |
476476e7 SG |
57 | |
58 | EFIPAYLOAD_BFDARCH = i386 | |
3f1c046c | 59 | |
d36badfd | 60 | LDSCRIPT_EFI := $(srctree)/arch/x86/lib/elf_$(EFIARCH)_efi.lds |
2dcd4e9e | 61 | EFISTUB := crt0_$(EFIARCH)_efi.o reloc_$(EFIARCH)_efi.o |
3f1c046c BS |
62 | OBJCOPYFLAGS_EFI += --target=efi-app-$(EFIARCH) |
63 | ||
96a8d409 SG |
64 | CPPFLAGS_REMOVE_crt0-efi-$(EFIARCH).o += $(CFLAGS_NON_EFI) |
65 | CPPFLAGS_crt0-efi-$(EFIARCH).o += $(CFLAGS_EFI) | |
66 | ||
3f1c046c BS |
67 | ifeq ($(CONFIG_EFI_APP),y) |
68 | ||
69 | PLATFORM_CPPFLAGS += $(CFLAGS_EFI) | |
70 | LDFLAGS_FINAL += -znocombreloc -shared | |
71 | LDSCRIPT := $(LDSCRIPT_EFI) | |
72 | ||
73 | else | |
74 | ||
75 | PLATFORM_CPPFLAGS += $(CFLAGS_NON_EFI) | |
76 | PLATFORM_LDFLAGS += --emit-relocs | |
3a03703a SG |
77 | LDFLAGS_FINAL += --gc-sections $(if $(CONFIG_SPL_BUILD),,-pie) |
78 | ||
79 | endif | |
3f1c046c | 80 | |
3a03703a SG |
81 | ifdef CONFIG_X86_64 |
82 | ifndef CONFIG_SPL_BUILD | |
83 | PLATFORM_CPPFLAGS += -D__x86_64__ | |
84 | else | |
85 | PLATFORM_CPPFLAGS += -D__I386__ | |
86 | endif | |
87 | else | |
88 | PLATFORM_CPPFLAGS += -D__I386__ | |
3f1c046c | 89 | endif |
5bd828b5 | 90 | |
95b62b2e | 91 | ifneq ($(CONFIG_EFI_STUB)$(CONFIG_CMD_BOOTEFI_HELLO_COMPILE),) |
5bd828b5 SG |
92 | |
93 | ifneq ($(CONFIG_EFI_STUB_64BIT),) | |
94 | EFI_LDS := elf_x86_64_efi.lds | |
95 | EFI_CRT0 := crt0_x86_64_efi.o | |
96 | EFI_RELOC := reloc_x86_64_efi.o | |
97 | EFI_TARGET := --target=efi-app-ia32 | |
98 | else | |
99 | EFI_LDS := elf_ia32_efi.lds | |
100 | EFI_CRT0 := crt0_ia32_efi.o | |
101 | EFI_RELOC := reloc_ia32_efi.o | |
102 | EFI_TARGET := --target=efi-app-x86_64 | |
103 | endif | |
104 | ||
105 | endif |