1fea25720SGraeme Russ# 2fea25720SGraeme Russ# (C) Copyright 2000-2002 3fea25720SGraeme Russ# Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4fea25720SGraeme Russ# 51a459660SWolfgang Denk# SPDX-License-Identifier: GPL-2.0+ 6fea25720SGraeme Russ# 7fea25720SGraeme Russ 8fea25720SGraeme RussCONFIG_STANDALONE_LOAD_ADDR ?= 0x40000 9fea25720SGraeme Russ 10fea25720SGraeme RussPLATFORM_CPPFLAGS += -fno-strict-aliasing 11fea25720SGraeme RussPLATFORM_CPPFLAGS += -fomit-frame-pointer 12f694183bSMasahiro YamadaPF_CPPFLAGS_X86 := $(call cc-option, -fno-toplevel-reorder, \ 139a95f51fSBin Meng $(call cc-option, -fno-unit-at-a-time)) 143f1c046cSBen Stoltz 15cca4e4aeSWolfgang DenkPLATFORM_CPPFLAGS += $(PF_CPPFLAGS_X86) 16fea25720SGraeme RussPLATFORM_CPPFLAGS += -fno-dwarf2-cfi-asm 173a03703aSSimon Glass 183a03703aSSimon Glassifdef CONFIG_SPL_BUILD 193a03703aSSimon GlassIS_32BIT := y 203a03703aSSimon Glasselse 213a03703aSSimon Glassifndef CONFIG_X86_64 223a03703aSSimon GlassIS_32BIT := y 233a03703aSSimon Glassendif 243a03703aSSimon Glassendif 253a03703aSSimon Glass 263a03703aSSimon Glassifeq ($(IS_32BIT),y) 27dbb7234bSVasili GalkaPLATFORM_CPPFLAGS += -march=i386 -m32 283a03703aSSimon Glasselse 29*e719b6b0SBin MengPLATFORM_CPPFLAGS += $(if $(CONFIG_SPL_BUILD),,-fpic) -fno-common -m64 303a03703aSSimon Glassendif 31fea25720SGraeme Russ 32fea25720SGraeme RussPLATFORM_RELFLAGS += -ffunction-sections -fvisibility=hidden 33fea25720SGraeme Russ 343a03703aSSimon GlassPLATFORM_LDFLAGS += -Bsymbolic -Bsymbolic-functions 353a03703aSSimon GlassPLATFORM_LDFLAGS += -m $(if $(IS_32BIT),elf_i386,elf_x86_64) 36fea25720SGraeme Russ 3736b2409aSGabe BlackLDFLAGS_FINAL += --wrap=__divdi3 --wrap=__udivdi3 3836b2409aSGabe BlackLDFLAGS_FINAL += --wrap=__moddi3 --wrap=__umoddi3 393f1c046cSBen Stoltz 40476476e7SSimon Glass# This is used in the top-level Makefile which does not include 41476476e7SSimon Glass# PLATFORM_LDFLAGS 42476476e7SSimon GlassLDFLAGS_EFI_PAYLOAD := -Bsymbolic -Bsymbolic-functions -shared --no-undefined 43476476e7SSimon Glass 443f1c046cSBen StoltzOBJCOPYFLAGS_EFI := -j .text -j .sdata -j .data -j .dynamic -j .dynsym \ 453f1c046cSBen Stoltz -j .rel -j .rela -j .reloc 463f1c046cSBen Stoltz 473a03703aSSimon Glassifeq ($(IS_32BIT),y) 483f1c046cSBen StoltzCFLAGS_NON_EFI := -mregparm=3 493a03703aSSimon Glassendif 503f1c046cSBen StoltzCFLAGS_EFI := -fpic -fshort-wchar 513f1c046cSBen Stoltz 5296a8d409SSimon Glassifeq ($(CONFIG_EFI_STUB_64BIT),) 5396a8d409SSimon GlassCFLAGS_EFI += $(call cc-option, -mno-red-zone) 543f1c046cSBen StoltzEFIARCH = ia32 55476476e7SSimon GlassEFIPAYLOAD_BFDTARGET = elf32-i386 5696a8d409SSimon Glasselse 5796a8d409SSimon GlassEFIARCH = x86_64 5896a8d409SSimon GlassEFIPAYLOAD_BFDTARGET = elf64-x86-64 5996a8d409SSimon Glassendif 60476476e7SSimon Glass 61476476e7SSimon GlassEFIPAYLOAD_BFDARCH = i386 623f1c046cSBen Stoltz 63d36badfdSSimon GlassLDSCRIPT_EFI := $(srctree)/arch/x86/lib/elf_$(EFIARCH)_efi.lds 642dcd4e9eSSimon GlassEFISTUB := crt0_$(EFIARCH)_efi.o reloc_$(EFIARCH)_efi.o 653f1c046cSBen StoltzOBJCOPYFLAGS_EFI += --target=efi-app-$(EFIARCH) 663f1c046cSBen Stoltz 6796a8d409SSimon GlassCPPFLAGS_REMOVE_crt0-efi-$(EFIARCH).o += $(CFLAGS_NON_EFI) 6896a8d409SSimon GlassCPPFLAGS_crt0-efi-$(EFIARCH).o += $(CFLAGS_EFI) 6996a8d409SSimon Glass 703f1c046cSBen Stoltzifeq ($(CONFIG_EFI_APP),y) 713f1c046cSBen Stoltz 723f1c046cSBen StoltzPLATFORM_CPPFLAGS += $(CFLAGS_EFI) 733f1c046cSBen StoltzLDFLAGS_FINAL += -znocombreloc -shared 743f1c046cSBen StoltzLDSCRIPT := $(LDSCRIPT_EFI) 753f1c046cSBen Stoltz 763f1c046cSBen Stoltzelse 773f1c046cSBen Stoltz 783f1c046cSBen StoltzPLATFORM_CPPFLAGS += $(CFLAGS_NON_EFI) 793f1c046cSBen StoltzPLATFORM_LDFLAGS += --emit-relocs 803a03703aSSimon GlassLDFLAGS_FINAL += --gc-sections $(if $(CONFIG_SPL_BUILD),,-pie) 813f1c046cSBen Stoltz 823f1c046cSBen Stoltzendif 835bd828b5SSimon Glass 843a03703aSSimon Glassifdef CONFIG_X86_64 853a03703aSSimon Glassifndef CONFIG_SPL_BUILD 863a03703aSSimon GlassPLATFORM_CPPFLAGS += -D__x86_64__ 873a03703aSSimon Glasselse 883a03703aSSimon GlassPLATFORM_CPPFLAGS += -D__I386__ 893a03703aSSimon Glassendif 903a03703aSSimon Glasselse 913a03703aSSimon GlassPLATFORM_CPPFLAGS += -D__I386__ 923a03703aSSimon Glassendif 933a03703aSSimon Glass 9495b62b2eSAlexander Grafifneq ($(CONFIG_EFI_STUB)$(CONFIG_CMD_BOOTEFI_HELLO_COMPILE),) 955bd828b5SSimon Glass 965bd828b5SSimon Glassifneq ($(CONFIG_EFI_STUB_64BIT),) 975bd828b5SSimon GlassEFI_LDS := elf_x86_64_efi.lds 985bd828b5SSimon GlassEFI_CRT0 := crt0_x86_64_efi.o 995bd828b5SSimon GlassEFI_RELOC := reloc_x86_64_efi.o 1005bd828b5SSimon GlassEFI_TARGET := --target=efi-app-ia32 1015bd828b5SSimon Glasselse 1025bd828b5SSimon GlassEFI_LDS := elf_ia32_efi.lds 1035bd828b5SSimon GlassEFI_CRT0 := crt0_ia32_efi.o 1045bd828b5SSimon GlassEFI_RELOC := reloc_ia32_efi.o 1055bd828b5SSimon GlassEFI_TARGET := --target=efi-app-x86_64 1065bd828b5SSimon Glassendif 1075bd828b5SSimon Glass 1085bd828b5SSimon Glassendif 109