Date
1 - 2 of 2
[staging/LoongArch RESEND PATCH v1 14/33] BaseTools: BaseTools changes for LoongArch platform.
Acked-by: Abner Chang <abner.chang@...>
toggle quoted message
Show quoted text
-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Chao Li
Sent: Wednesday, February 9, 2022 2:55 PM
To: devel@edk2.groups.io
Cc: Bob Feng <bob.c.feng@...>; Liming Gao
<gaoliming@...>; Yuwei Chen <yuwei.chen@...>; Baoqi
Zhang <zhangbaoqi@...>
Subject: [edk2-devel] [staging/LoongArch RESEND PATCH v1 14/33]
BaseTools: BaseTools changes for LoongArch platform.
BaseTools define template files changes for building EDK2 LoongArch
platform.
Cc: Bob Feng <bob.c.feng@...>
Cc: Liming Gao <gaoliming@...>
Cc: Yuwei Chen <yuwei.chen@...>
Signed-off-by: Chao Li <lichao@...>
Co-authored-by: Baoqi Zhang <zhangbaoqi@...>
---
BaseTools/Conf/tools_def.template | 43
++++++++++++++++++++++++++++++-
1 file changed, 42 insertions(+), 1 deletion(-)
diff --git a/BaseTools/Conf/tools_def.template
b/BaseTools/Conf/tools_def.template
index 85b8afbb2d..67b6c69dcf 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -4,6 +4,7 @@
# Portions copyright (c) 2011 - 2019, ARM Ltd. All rights reserved.<BR>
# Copyright (c) 2015, Hewlett-Packard Development Company, L.P.<BR>
# (C) Copyright 2020, Hewlett Packard Enterprise Development LP<BR>
+# Copyright (c) 2022, Loongson Technology Corporation Limited. All rights
reserved.<BR>
# Copyright (c) Microsoft Corporation
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -267,7 +268,7 @@ DEFINE DTC_BIN = ENV(DTC_PREFIX)dtc
# Intel(r) ACPI Compiler from
# https://acpica.org/downloads
# GCC5 -Linux,Windows- Requires:
-# GCC 5 with LTO support, targeting x86_64-linux-gnu,
aarch64-linux-gnu, arm-linux-gnueabi or riscv64-linux-gnu
+# GCC 5 with LTO support, targeting x86_64-linux-gnu,
aarch64-linux-gnu, arm-linux-gnueabi, riscv64-linux-gnu ro loongarch64-linux-
gnu
# Optional:
# Required to build platforms or ACPI tables:
# Intel(r) ACPI Compiler from
@@ -1871,6 +1872,7 @@ DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-
wchar -fno-builtin -fno-stri
DEFINE GCC_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -
malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-
stack-arg-probe
DEFINE GCC_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mno-red-
zone -Wno-address -mno-stack-arg-probe
DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-
endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -
fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-
abi=soft -fno-pic -fno-pie
+DEFINE GCC_LOONGARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -
march=loongarch64 -mabi=lp64d -Wa,-mla-global-with-abs -fno-plt -Wno-
address -fno-short-enums -fsigned-char -ffunction-sections -fdata-sections
DEFINE GCC_ARM_CC_XIPFLAGS = -mno-unaligned-access
DEFINE GCC_AARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-
endian -fno-short-enums -fverbose-asm -funsigned-char -ffunction-sections
-fdata-sections -Wno-address -fno-asynchronous-unwind-tables -fno-
unwind-tables -fno-pic -fno-pie -ffixed-x18
DEFINE GCC_AARCH64_CC_XIPFLAGS = -mstrict-align -mgeneral-regs-only
@@ -1878,12 +1880,15 @@ DEFINE GCC_DLINK_FLAGS_COMMON = -
nostdlib --pie
DEFINE GCC_DLINK2_FLAGS_COMMON = -Wl,--
script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds
DEFINE GCC_IA32_X64_DLINK_COMMON =
DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections
DEFINE GCC_ARM_AARCH64_DLINK_COMMON= -Wl,--emit-relocs -nostdlib
-Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,-
e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
+DEFINE GCC_LOONGARCH64_DLINK_COMMON= -Wl,--emit-relocs -
nostdlib -Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,-
e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
DEFINE GCC_ARM_DLINK_FLAGS =
DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20 -
Wl,--pic-veneer
DEFINE GCC_AARCH64_DLINK_FLAGS =
DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20
+DEFINE GCC_LOONGARCH64_DLINK_FLAGS =
DEF(GCC_LOONGARCH64_DLINK_COMMON) -z common-page-size=0x20
DEFINE GCC_ARM_AARCH64_ASLDLINK_FLAGS = -Wl,--
defsym=PECOFF_HEADER_SIZE=0 DEF(GCC_DLINK2_FLAGS_COMMON) -z
common-page-size=0x20
DEFINE GCC_IA32_X64_ASLDLINK_FLAGS =
DEF(GCC_IA32_X64_DLINK_COMMON) --entry _ReferenceAcpiTable -u
$(IMAGE_ENTRY_POINT)
DEFINE GCC_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_DLINK_FLAGS) -
Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)
DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
DEFINE GCC_AARCH64_ASLDLINK_FLAGS =
DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u
$(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
+DEFINE GCC_LOONGARCH64_ASLDLINK_FLAGS =
DEF(GCC_LOONGARCH64_DLINK_FLAGS) --entry ReferenceAcpiTable -u
$(IMAGE_ENTRY_POINT)
DEFINE GCC_IA32_X64_DLINK_FLAGS =
DEF(GCC_IA32_X64_DLINK_COMMON) --entry _$(IMAGE_ENTRY_POINT) --
file-alignment 0x20 --section-alignment 0x20 -Map
$(DEST_DIR_DEBUG)/$(BASE_NAME).map
DEFINE GCC_ASM_FLAGS = -c -x assembler -imacros AutoGen.h
DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include
AutoGen.h
@@ -1897,6 +1902,7 @@ DEFINE GCC_X64_RC_FLAGS = -I binary -O
elf64-x86-64 -B i386
DEFINE GCC_ARM_RC_FLAGS = -I binary -O elf32-littlearm -B arm --
rename-section .data=.hii
DEFINE GCC_AARCH64_RC_FLAGS = -I binary -O elf64-littleaarch64 -B
aarch64 --rename-section .data=.hii
DEFINE GCC_RISCV64_RC_FLAGS = -I binary -O elf64-littleriscv -B riscv -
-rename-section .data=.hii
+DEFINE GCC_LOONGARCH64_RC_FLAGS = -I binary -O elf64-loongarch -B
loongarch64 --alt-elf-eflags=0x3 --rename-section .data=.hii
# GCC Build Flag for included header file list generation
DEFINE GCC_DEPS_FLAGS = -MMD -MF $@.deps
@@ -1986,6 +1992,12 @@ DEFINE GCC5_RISCV64_CC_FLAGS =
DEF(GCC5_RISCV_ALL_CC_FLAGS) DEF(GC
DEFINE GCC5_RISCV64_DLINK_FLAGS =
DEF(GCC5_RISCV_ALL_DLINK_FLAGS) -Wl,-melf64lriscv,--oformat=elf64-
littleriscv,--no-relax
DEFINE GCC5_RISCV64_DLINK2_FLAGS =
DEF(GCC5_RISCV_ALL_DLINK2_FLAGS)
DEFINE GCC5_RISCV64_ASM_FLAGS =
DEF(GCC5_RISCV_ALL_ASM_FLAGS) -march=DEF(GCC5_RISCV64_ARCH) -
mcmodel=medany -mabi=lp64
+DEFINE GCC5_LOONGARCH64_CC_FLAGS =
DEF(GCC_LOONGARCH64_CC_FLAGS) -mno-memcpy -Werror -Wno-maybe-
uninitialized -Wno-stringop-overflow -Wno-pointer-to-int-cast
+DEFINE GCC5_LOONGARCH64_DLINK_FLAGS =
DEF(GCC_LOONGARCH64_DLINK_FLAGS)
+DEFINE GCC5_LOONGARCH64_DLINK2_FLAGS =
DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--
defsym=PECOFF_HEADER_SIZE=0x228
+DEFINE GCC5_LOONGARCH64_ASLDLINK_FLAGS =
DEF(GCC_LOONGARCH64_ASLDLINK_FLAGS)
+DEFINE GCC5_LOONGARCH64_ASM_FLAGS = -x assembler-with-cpp -
mabi=lp64d -march=loongarch64 -Wa,-mla-global-with-abs -fno-builtin -c -
Wall
+DEFINE GCC5_LOONGARCH64_PP_FLAGS = -mabi=lp64d -
march=loongarch64 DEF(GCC_PP_FLAGS)
DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include
AutoGen.h DEF(GCC5_RISCV_OPENSBI_TYPES)
##########################################################
##########################
@@ -2464,6 +2476,35 @@ RELEASE_GCC5_AARCH64_DLINK_XIPFLAGS = -z
common-page-size=0x20
*_GCC5_RISCV64_OBJCOPY_FLAGS =
*_GCC5_RISCV64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
+##################
+# GCC5 LOONGARCH64 definitions
+##################
+*_GCC5_LOONGARCH64_OBJCOPY_PATH =
ENV(GCC5_LOONGARCH64_PREFIX)objcopy
+*_GCC5_LOONGARCH64_CC_PATH =
ENV(GCC5_LOONGARCH64_PREFIX)gcc
+*_GCC5_LOONGARCH64_SLINK_PATH =
ENV(GCC5_LOONGARCH64_PREFIX)gcc-ar
+*_GCC5_LOONGARCH64_DLINK_PATH =
ENV(GCC5_LOONGARCH64_PREFIX)gcc
+*_GCC5_LOONGARCH64_ASLDLINK_PATH =
ENV(GCC5_LOONGARCH64_PREFIX)gcc
+*_GCC5_LOONGARCH64_ASM_PATH =
ENV(GCC5_LOONGARCH64_PREFIX)gcc
+*_GCC5_LOONGARCH64_PP_PATH =
ENV(GCC5_LOONGARCH64_PREFIX)gcc
+*_GCC5_LOONGARCH64_VFRPP_PATH =
ENV(GCC5_LOONGARCH64_PREFIX)gcc
+*_GCC5_LOONGARCH64_ASLCC_PATH =
ENV(GCC5_LOONGARCH64_PREFIX)gcc
+*_GCC5_LOONGARCH64_ASLPP_PATH =
ENV(GCC5_LOONGARCH64_PREFIX)gcc
+*_GCC5_LOONGARCH64_RC_PATH =
ENV(GCC5_LOONGARCH64_PREFIX)objcopy
+
+*_GCC5_LOONGARCH64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
+*_GCC5_LOONGARCH64_ASLDLINK_FLAGS =
DEF(GCC5_LOONGARCH64_ASLDLINK_FLAGS)
+*_GCC5_LOONGARCH64_ASM_FLAGS =
DEF(GCC5_LOONGARCH64_ASM_FLAGS)
+*_GCC5_LOONGARCH64_CC_FLAGS =
DEF(GCC5_LOONGARCH64_CC_FLAGS)
+*_GCC5_LOONGARCH64_DLINK_FLAGS =
DEF(GCC5_LOONGARCH64_DLINK_FLAGS)
+*_GCC5_LOONGARCH64_DLINK2_FLAGS =
DEF(GCC5_LOONGARCH64_DLINK2_FLAGS)
+*_GCC5_LOONGARCH64_RC_FLAGS =
DEF(GCC_LOONGARCH64_RC_FLAGS)
+*_GCC5_LOONGARCH64_OBJCOPY_FLAGS =
+*_GCC5_LOONGARCH64_NASM_FLAGS = -f elf32
+*_GCC5_LOONGARCH64_PP_FLAGS =
DEF(GCC5_LOONGARCH64_PP_FLAGS)
+
+DEBUG_GCC5_LOONGARCH64_CC_FLAGS =
DEF(GCC5_LOONGARCH64_CC_FLAGS)
+RELEASE_GCC5_LOONGARCH64_CC_FLAGS =
DEF(GCC5_LOONGARCH64_CC_FLAGS) -Wno-unused-but-set-variable -
Wno-unused-variable
+
##########################################################
##########################
#
# CLANG35 - This configuration is used to compile under Linux to produce
--
2.27.0
BaseTools define template files changes for building EDK2 LoongArch
platform.
Cc: Bob Feng <bob.c.feng@...>
Cc: Liming Gao <gaoliming@...>
Cc: Yuwei Chen <yuwei.chen@...>
Signed-off-by: Chao Li <lichao@...>
Co-authored-by: Baoqi Zhang <zhangbaoqi@...>
---
BaseTools/Conf/tools_def.template | 43 ++++++++++++++++++++++++++++++-
1 file changed, 42 insertions(+), 1 deletion(-)
diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.t=
emplate
index 85b8afbb2d..67b6c69dcf 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -4,6 +4,7 @@
# Portions copyright (c) 2011 - 2019, ARM Ltd. All rights reserved.<BR>=0D
# Copyright (c) 2015, Hewlett-Packard Development Company, L.P.<BR>=0D
# (C) Copyright 2020, Hewlett Packard Enterprise Development LP<BR>=0D
+# Copyright (c) 2022, Loongson Technology Corporation Limited. All rights=
reserved.<BR>=0D
# Copyright (c) Microsoft Corporation=0D
#=0D
# SPDX-License-Identifier: BSD-2-Clause-Patent=0D
@@ -267,7 +268,7 @@ DEFINE DTC_BIN =3D ENV(DTC_PREFIX)dtc
# Intel(r) ACPI Compiler from=0D
# https://acpica.org/downloads=0D
# GCC5 -Linux,Windows- Requires:=0D
-# GCC 5 with LTO support, targeting x86_64-lin=
ux-gnu, aarch64-linux-gnu, arm-linux-gnueabi or riscv64-linux-gnu=0D
+# GCC 5 with LTO support, targeting x86_64-lin=
ux-gnu, aarch64-linux-gnu, arm-linux-gnueabi, riscv64-linux-gnu ro loongarc=
h64-linux-gnu=0D
# Optional:=0D
# Required to build platforms or ACPI tables:=
=0D
# Intel(r) ACPI Compiler from=0D
@@ -1871,6 +1872,7 @@ DEFINE GCC_ALL_CC_FLAGS =3D -g -Os -fshort=
-wchar -fno-builtin -fno-stri
DEFINE GCC_IA32_CC_FLAGS =3D DEF(GCC_ALL_CC_FLAGS) -m32 -malign-=
double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-p=
robe=0D
DEFINE GCC_X64_CC_FLAGS =3D DEF(GCC_ALL_CC_FLAGS) -mno-red-zone=
-Wno-address -mno-stack-arg-probe=0D
DEFINE GCC_ARM_CC_FLAGS =3D DEF(GCC_ALL_CC_FLAGS) -mlittle-endi=
an -mabi=3Daapcs -fno-short-enums -funsigned-char -ffunction-sections -fdat=
a-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=3Dsoft -fn=
o-pic -fno-pie=0D
+DEFINE GCC_LOONGARCH64_CC_FLAGS =3D DEF(GCC_ALL_CC_FLAGS) -march=3Dloon=
garch64 -mabi=3Dlp64d -Wa,-mla-global-with-abs -fno-plt -Wno-address -fno-s=
hort-enums -fsigned-char -ffunction-sections -fdata-sections=0D
DEFINE GCC_ARM_CC_XIPFLAGS =3D -mno-unaligned-access=0D
DEFINE GCC_AARCH64_CC_FLAGS =3D DEF(GCC_ALL_CC_FLAGS) -mlittle-endi=
an -fno-short-enums -fverbose-asm -funsigned-char -ffunction-sections -fda=
ta-sections -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables=
-fno-pic -fno-pie -ffixed-x18=0D
DEFINE GCC_AARCH64_CC_XIPFLAGS =3D -mstrict-align -mgeneral-regs-only=
=0D
@@ -1878,12 +1880,15 @@ DEFINE GCC_DLINK_FLAGS_COMMON =3D -nostdlib --=
pie
DEFINE GCC_DLINK2_FLAGS_COMMON =3D -Wl,--script=3D$(EDK_TOOLS_PATH)/Sc=
ripts/GccBase.lds=0D
DEFINE GCC_IA32_X64_DLINK_COMMON =3D DEF(GCC_DLINK_FLAGS_COMMON) --gc-se=
ctions=0D
DEFINE GCC_ARM_AARCH64_DLINK_COMMON=3D -Wl,--emit-relocs -nostdlib -Wl,--g=
c-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_=
DIR_DEBUG)/$(BASE_NAME).map=0D
+DEFINE GCC_LOONGARCH64_DLINK_COMMON=3D -Wl,--emit-relocs -nostdlib -Wl,--g=
c-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_=
DIR_DEBUG)/$(BASE_NAME).map=0D
DEFINE GCC_ARM_DLINK_FLAGS =3D DEF(GCC_ARM_AARCH64_DLINK_COMMON) -=
z common-page-size=3D0x20 -Wl,--pic-veneer=0D
DEFINE GCC_AARCH64_DLINK_FLAGS =3D DEF(GCC_ARM_AARCH64_DLINK_COMMON) -=
z common-page-size=3D0x20=0D
+DEFINE GCC_LOONGARCH64_DLINK_FLAGS =3D DEF(GCC_LOONGARCH64_DLINK_COMMON) -=
z common-page-size=3D0x20=0D
DEFINE GCC_ARM_AARCH64_ASLDLINK_FLAGS =3D -Wl,--defsym=3DPECOFF_HEADER_SIZ=
E=3D0 DEF(GCC_DLINK2_FLAGS_COMMON) -z common-page-size=3D0x20=0D
DEFINE GCC_IA32_X64_ASLDLINK_FLAGS =3D DEF(GCC_IA32_X64_DLINK_COMMON) --en=
try _ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)=0D
DEFINE GCC_ARM_ASLDLINK_FLAGS =3D DEF(GCC_ARM_DLINK_FLAGS) -Wl,--entr=
y,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_F=
LAGS)=0D
DEFINE GCC_AARCH64_ASLDLINK_FLAGS =3D DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--=
entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLI=
NK_FLAGS)=0D
+DEFINE GCC_LOONGARCH64_ASLDLINK_FLAGS =3D DEF(GCC_LOONGARCH64_DLINK_FLAGS)=
--entry ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)=0D
DEFINE GCC_IA32_X64_DLINK_FLAGS =3D DEF(GCC_IA32_X64_DLINK_COMMON) --en=
try _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -M=
ap $(DEST_DIR_DEBUG)/$(BASE_NAME).map=0D
DEFINE GCC_ASM_FLAGS =3D -c -x assembler -imacros AutoGen.h=
=0D
DEFINE GCC_PP_FLAGS =3D -E -x assembler-with-cpp -include A=
utoGen.h=0D
@@ -1897,6 +1902,7 @@ DEFINE GCC_X64_RC_FLAGS =3D -I binary -O e=
lf64-x86-64 -B i386
DEFINE GCC_ARM_RC_FLAGS =3D -I binary -O elf32-littlearm -B=
arm --rename-section .data=3D.hii=0D
DEFINE GCC_AARCH64_RC_FLAGS =3D -I binary -O elf64-littleaarch64 -B=
aarch64 --rename-section .data=3D.hii=0D
DEFINE GCC_RISCV64_RC_FLAGS =3D -I binary -O elf64-littleriscv -B=
riscv --rename-section .data=3D.hii=0D
+DEFINE GCC_LOONGARCH64_RC_FLAGS =3D -I binary -O elf64-loongarch -B loo=
ngarch64 --alt-elf-eflags=3D0x3 --rename-section .data=3D.hii=0D
=0D
# GCC Build Flag for included header file list generation=0D
DEFINE GCC_DEPS_FLAGS =3D -MMD -MF $@.deps=0D
@@ -1986,6 +1992,12 @@ DEFINE GCC5_RISCV64_CC_FLAGS =3D DEF(G=
CC5_RISCV_ALL_CC_FLAGS) DEF(GC
DEFINE GCC5_RISCV64_DLINK_FLAGS =3D DEF(GCC5_RISCV_ALL_DLINK_FL=
AGS) -Wl,-melf64lriscv,--oformat=3Delf64-littleriscv,--no-relax=0D
DEFINE GCC5_RISCV64_DLINK2_FLAGS =3D DEF(GCC5_RISCV_ALL_DLINK2_F=
LAGS)=0D
DEFINE GCC5_RISCV64_ASM_FLAGS =3D DEF(GCC5_RISCV_ALL_ASM_FLAG=
S) -march=3DDEF(GCC5_RISCV64_ARCH) -mcmodel=3Dmedany -mabi=3Dlp64=0D
+DEFINE GCC5_LOONGARCH64_CC_FLAGS =3D DEF(GCC_LOONGARCH64_CC_FLAG=
S) -mno-memcpy -Werror -Wno-maybe-uninitialized -Wno-stringop-overflow -Wno=
-pointer-to-int-cast=0D
+DEFINE GCC5_LOONGARCH64_DLINK_FLAGS =3D DEF(GCC_LOONGARCH64_DLINK_F=
LAGS)=0D
+DEFINE GCC5_LOONGARCH64_DLINK2_FLAGS =3D DEF(GCC_DLINK2_FLAGS_COMMON=
) -Wl,--defsym=3DPECOFF_HEADER_SIZE=3D0x228=0D
+DEFINE GCC5_LOONGARCH64_ASLDLINK_FLAGS =3D DEF(GCC_LOONGARCH64_ASLDLIN=
K_FLAGS)=0D
+DEFINE GCC5_LOONGARCH64_ASM_FLAGS =3D -x assembler-with-cpp -mabi=
=3Dlp64d -march=3Dloongarch64 -Wa,-mla-global-with-abs -fno-builtin -c -Wal=
l=0D
+DEFINE GCC5_LOONGARCH64_PP_FLAGS =3D -mabi=3Dlp64d -march=3Dloon=
garch64 DEF(GCC_PP_FLAGS)=0D
DEFINE GCC_PP_FLAGS =3D -E -x assembler-with-cpp -i=
nclude AutoGen.h DEF(GCC5_RISCV_OPENSBI_TYPES)=0D
=0D
##########################################################################=
##########=0D
@@ -2464,6 +2476,35 @@ RELEASE_GCC5_AARCH64_DLINK_XIPFLAGS =3D -z common-pa=
ge-size=3D0x20
*_GCC5_RISCV64_OBJCOPY_FLAGS =3D=0D
*_GCC5_RISCV64_DTCPP_FLAGS =3D DEF(GCC_DTCPP_FLAGS)=0D
=0D
+##################=0D
+# GCC5 LOONGARCH64 definitions=0D
+##################=0D
+*_GCC5_LOONGARCH64_OBJCOPY_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)ob=
jcopy=0D
+*_GCC5_LOONGARCH64_CC_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_SLINK_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c-ar=0D
+*_GCC5_LOONGARCH64_DLINK_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_ASLDLINK_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_ASM_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_PP_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_VFRPP_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_ASLCC_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_ASLPP_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_RC_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)ob=
jcopy=0D
+=0D
+*_GCC5_LOONGARCH64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS)=0D
+*_GCC5_LOONGARCH64_ASLDLINK_FLAGS =3D DEF(GCC5_LOONGARCH64_ASLDLINK_=
FLAGS)=0D
+*_GCC5_LOONGARCH64_ASM_FLAGS =3D DEF(GCC5_LOONGARCH64_ASM_FLAGS=
)=0D
+*_GCC5_LOONGARCH64_CC_FLAGS =3D DEF(GCC5_LOONGARCH64_CC_FLAGS)=
=0D
+*_GCC5_LOONGARCH64_DLINK_FLAGS =3D DEF(GCC5_LOONGARCH64_DLINK_FLA=
GS)=0D
+*_GCC5_LOONGARCH64_DLINK2_FLAGS =3D DEF(GCC5_LOONGARCH64_DLINK2_FL=
AGS)=0D
+*_GCC5_LOONGARCH64_RC_FLAGS =3D DEF(GCC_LOONGARCH64_RC_FLAGS)=
=0D
+*_GCC5_LOONGARCH64_OBJCOPY_FLAGS =3D=0D
+*_GCC5_LOONGARCH64_NASM_FLAGS =3D -f elf32=0D
+*_GCC5_LOONGARCH64_PP_FLAGS =3D DEF(GCC5_LOONGARCH64_PP_FLAGS)=
=0D
+=0D
+DEBUG_GCC5_LOONGARCH64_CC_FLAGS =3D DEF(GCC5_LOONGARCH64_CC_FLAGS)=
=0D
+RELEASE_GCC5_LOONGARCH64_CC_FLAGS =3D DEF(GCC5_LOONGARCH64_CC_FLAGS)=
-Wno-unused-but-set-variable -Wno-unused-variable=0D
+=0D
##########################################################################=
##########=0D
#=0D
# CLANG35 - This configuration is used to compile under Linux to produce=
=0D
--=20
2.27.0
platform.
Cc: Bob Feng <bob.c.feng@...>
Cc: Liming Gao <gaoliming@...>
Cc: Yuwei Chen <yuwei.chen@...>
Signed-off-by: Chao Li <lichao@...>
Co-authored-by: Baoqi Zhang <zhangbaoqi@...>
---
BaseTools/Conf/tools_def.template | 43 ++++++++++++++++++++++++++++++-
1 file changed, 42 insertions(+), 1 deletion(-)
diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.t=
emplate
index 85b8afbb2d..67b6c69dcf 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -4,6 +4,7 @@
# Portions copyright (c) 2011 - 2019, ARM Ltd. All rights reserved.<BR>=0D
# Copyright (c) 2015, Hewlett-Packard Development Company, L.P.<BR>=0D
# (C) Copyright 2020, Hewlett Packard Enterprise Development LP<BR>=0D
+# Copyright (c) 2022, Loongson Technology Corporation Limited. All rights=
reserved.<BR>=0D
# Copyright (c) Microsoft Corporation=0D
#=0D
# SPDX-License-Identifier: BSD-2-Clause-Patent=0D
@@ -267,7 +268,7 @@ DEFINE DTC_BIN =3D ENV(DTC_PREFIX)dtc
# Intel(r) ACPI Compiler from=0D
# https://acpica.org/downloads=0D
# GCC5 -Linux,Windows- Requires:=0D
-# GCC 5 with LTO support, targeting x86_64-lin=
ux-gnu, aarch64-linux-gnu, arm-linux-gnueabi or riscv64-linux-gnu=0D
+# GCC 5 with LTO support, targeting x86_64-lin=
ux-gnu, aarch64-linux-gnu, arm-linux-gnueabi, riscv64-linux-gnu ro loongarc=
h64-linux-gnu=0D
# Optional:=0D
# Required to build platforms or ACPI tables:=
=0D
# Intel(r) ACPI Compiler from=0D
@@ -1871,6 +1872,7 @@ DEFINE GCC_ALL_CC_FLAGS =3D -g -Os -fshort=
-wchar -fno-builtin -fno-stri
DEFINE GCC_IA32_CC_FLAGS =3D DEF(GCC_ALL_CC_FLAGS) -m32 -malign-=
double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-p=
robe=0D
DEFINE GCC_X64_CC_FLAGS =3D DEF(GCC_ALL_CC_FLAGS) -mno-red-zone=
-Wno-address -mno-stack-arg-probe=0D
DEFINE GCC_ARM_CC_FLAGS =3D DEF(GCC_ALL_CC_FLAGS) -mlittle-endi=
an -mabi=3Daapcs -fno-short-enums -funsigned-char -ffunction-sections -fdat=
a-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=3Dsoft -fn=
o-pic -fno-pie=0D
+DEFINE GCC_LOONGARCH64_CC_FLAGS =3D DEF(GCC_ALL_CC_FLAGS) -march=3Dloon=
garch64 -mabi=3Dlp64d -Wa,-mla-global-with-abs -fno-plt -Wno-address -fno-s=
hort-enums -fsigned-char -ffunction-sections -fdata-sections=0D
DEFINE GCC_ARM_CC_XIPFLAGS =3D -mno-unaligned-access=0D
DEFINE GCC_AARCH64_CC_FLAGS =3D DEF(GCC_ALL_CC_FLAGS) -mlittle-endi=
an -fno-short-enums -fverbose-asm -funsigned-char -ffunction-sections -fda=
ta-sections -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables=
-fno-pic -fno-pie -ffixed-x18=0D
DEFINE GCC_AARCH64_CC_XIPFLAGS =3D -mstrict-align -mgeneral-regs-only=
=0D
@@ -1878,12 +1880,15 @@ DEFINE GCC_DLINK_FLAGS_COMMON =3D -nostdlib --=
pie
DEFINE GCC_DLINK2_FLAGS_COMMON =3D -Wl,--script=3D$(EDK_TOOLS_PATH)/Sc=
ripts/GccBase.lds=0D
DEFINE GCC_IA32_X64_DLINK_COMMON =3D DEF(GCC_DLINK_FLAGS_COMMON) --gc-se=
ctions=0D
DEFINE GCC_ARM_AARCH64_DLINK_COMMON=3D -Wl,--emit-relocs -nostdlib -Wl,--g=
c-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_=
DIR_DEBUG)/$(BASE_NAME).map=0D
+DEFINE GCC_LOONGARCH64_DLINK_COMMON=3D -Wl,--emit-relocs -nostdlib -Wl,--g=
c-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_=
DIR_DEBUG)/$(BASE_NAME).map=0D
DEFINE GCC_ARM_DLINK_FLAGS =3D DEF(GCC_ARM_AARCH64_DLINK_COMMON) -=
z common-page-size=3D0x20 -Wl,--pic-veneer=0D
DEFINE GCC_AARCH64_DLINK_FLAGS =3D DEF(GCC_ARM_AARCH64_DLINK_COMMON) -=
z common-page-size=3D0x20=0D
+DEFINE GCC_LOONGARCH64_DLINK_FLAGS =3D DEF(GCC_LOONGARCH64_DLINK_COMMON) -=
z common-page-size=3D0x20=0D
DEFINE GCC_ARM_AARCH64_ASLDLINK_FLAGS =3D -Wl,--defsym=3DPECOFF_HEADER_SIZ=
E=3D0 DEF(GCC_DLINK2_FLAGS_COMMON) -z common-page-size=3D0x20=0D
DEFINE GCC_IA32_X64_ASLDLINK_FLAGS =3D DEF(GCC_IA32_X64_DLINK_COMMON) --en=
try _ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)=0D
DEFINE GCC_ARM_ASLDLINK_FLAGS =3D DEF(GCC_ARM_DLINK_FLAGS) -Wl,--entr=
y,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_F=
LAGS)=0D
DEFINE GCC_AARCH64_ASLDLINK_FLAGS =3D DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--=
entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLI=
NK_FLAGS)=0D
+DEFINE GCC_LOONGARCH64_ASLDLINK_FLAGS =3D DEF(GCC_LOONGARCH64_DLINK_FLAGS)=
--entry ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)=0D
DEFINE GCC_IA32_X64_DLINK_FLAGS =3D DEF(GCC_IA32_X64_DLINK_COMMON) --en=
try _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -M=
ap $(DEST_DIR_DEBUG)/$(BASE_NAME).map=0D
DEFINE GCC_ASM_FLAGS =3D -c -x assembler -imacros AutoGen.h=
=0D
DEFINE GCC_PP_FLAGS =3D -E -x assembler-with-cpp -include A=
utoGen.h=0D
@@ -1897,6 +1902,7 @@ DEFINE GCC_X64_RC_FLAGS =3D -I binary -O e=
lf64-x86-64 -B i386
DEFINE GCC_ARM_RC_FLAGS =3D -I binary -O elf32-littlearm -B=
arm --rename-section .data=3D.hii=0D
DEFINE GCC_AARCH64_RC_FLAGS =3D -I binary -O elf64-littleaarch64 -B=
aarch64 --rename-section .data=3D.hii=0D
DEFINE GCC_RISCV64_RC_FLAGS =3D -I binary -O elf64-littleriscv -B=
riscv --rename-section .data=3D.hii=0D
+DEFINE GCC_LOONGARCH64_RC_FLAGS =3D -I binary -O elf64-loongarch -B loo=
ngarch64 --alt-elf-eflags=3D0x3 --rename-section .data=3D.hii=0D
=0D
# GCC Build Flag for included header file list generation=0D
DEFINE GCC_DEPS_FLAGS =3D -MMD -MF $@.deps=0D
@@ -1986,6 +1992,12 @@ DEFINE GCC5_RISCV64_CC_FLAGS =3D DEF(G=
CC5_RISCV_ALL_CC_FLAGS) DEF(GC
DEFINE GCC5_RISCV64_DLINK_FLAGS =3D DEF(GCC5_RISCV_ALL_DLINK_FL=
AGS) -Wl,-melf64lriscv,--oformat=3Delf64-littleriscv,--no-relax=0D
DEFINE GCC5_RISCV64_DLINK2_FLAGS =3D DEF(GCC5_RISCV_ALL_DLINK2_F=
LAGS)=0D
DEFINE GCC5_RISCV64_ASM_FLAGS =3D DEF(GCC5_RISCV_ALL_ASM_FLAG=
S) -march=3DDEF(GCC5_RISCV64_ARCH) -mcmodel=3Dmedany -mabi=3Dlp64=0D
+DEFINE GCC5_LOONGARCH64_CC_FLAGS =3D DEF(GCC_LOONGARCH64_CC_FLAG=
S) -mno-memcpy -Werror -Wno-maybe-uninitialized -Wno-stringop-overflow -Wno=
-pointer-to-int-cast=0D
+DEFINE GCC5_LOONGARCH64_DLINK_FLAGS =3D DEF(GCC_LOONGARCH64_DLINK_F=
LAGS)=0D
+DEFINE GCC5_LOONGARCH64_DLINK2_FLAGS =3D DEF(GCC_DLINK2_FLAGS_COMMON=
) -Wl,--defsym=3DPECOFF_HEADER_SIZE=3D0x228=0D
+DEFINE GCC5_LOONGARCH64_ASLDLINK_FLAGS =3D DEF(GCC_LOONGARCH64_ASLDLIN=
K_FLAGS)=0D
+DEFINE GCC5_LOONGARCH64_ASM_FLAGS =3D -x assembler-with-cpp -mabi=
=3Dlp64d -march=3Dloongarch64 -Wa,-mla-global-with-abs -fno-builtin -c -Wal=
l=0D
+DEFINE GCC5_LOONGARCH64_PP_FLAGS =3D -mabi=3Dlp64d -march=3Dloon=
garch64 DEF(GCC_PP_FLAGS)=0D
DEFINE GCC_PP_FLAGS =3D -E -x assembler-with-cpp -i=
nclude AutoGen.h DEF(GCC5_RISCV_OPENSBI_TYPES)=0D
=0D
##########################################################################=
##########=0D
@@ -2464,6 +2476,35 @@ RELEASE_GCC5_AARCH64_DLINK_XIPFLAGS =3D -z common-pa=
ge-size=3D0x20
*_GCC5_RISCV64_OBJCOPY_FLAGS =3D=0D
*_GCC5_RISCV64_DTCPP_FLAGS =3D DEF(GCC_DTCPP_FLAGS)=0D
=0D
+##################=0D
+# GCC5 LOONGARCH64 definitions=0D
+##################=0D
+*_GCC5_LOONGARCH64_OBJCOPY_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)ob=
jcopy=0D
+*_GCC5_LOONGARCH64_CC_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_SLINK_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c-ar=0D
+*_GCC5_LOONGARCH64_DLINK_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_ASLDLINK_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_ASM_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_PP_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_VFRPP_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_ASLCC_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_ASLPP_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)gc=
c=0D
+*_GCC5_LOONGARCH64_RC_PATH =3D ENV(GCC5_LOONGARCH64_PREFIX)ob=
jcopy=0D
+=0D
+*_GCC5_LOONGARCH64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS)=0D
+*_GCC5_LOONGARCH64_ASLDLINK_FLAGS =3D DEF(GCC5_LOONGARCH64_ASLDLINK_=
FLAGS)=0D
+*_GCC5_LOONGARCH64_ASM_FLAGS =3D DEF(GCC5_LOONGARCH64_ASM_FLAGS=
)=0D
+*_GCC5_LOONGARCH64_CC_FLAGS =3D DEF(GCC5_LOONGARCH64_CC_FLAGS)=
=0D
+*_GCC5_LOONGARCH64_DLINK_FLAGS =3D DEF(GCC5_LOONGARCH64_DLINK_FLA=
GS)=0D
+*_GCC5_LOONGARCH64_DLINK2_FLAGS =3D DEF(GCC5_LOONGARCH64_DLINK2_FL=
AGS)=0D
+*_GCC5_LOONGARCH64_RC_FLAGS =3D DEF(GCC_LOONGARCH64_RC_FLAGS)=
=0D
+*_GCC5_LOONGARCH64_OBJCOPY_FLAGS =3D=0D
+*_GCC5_LOONGARCH64_NASM_FLAGS =3D -f elf32=0D
+*_GCC5_LOONGARCH64_PP_FLAGS =3D DEF(GCC5_LOONGARCH64_PP_FLAGS)=
=0D
+=0D
+DEBUG_GCC5_LOONGARCH64_CC_FLAGS =3D DEF(GCC5_LOONGARCH64_CC_FLAGS)=
=0D
+RELEASE_GCC5_LOONGARCH64_CC_FLAGS =3D DEF(GCC5_LOONGARCH64_CC_FLAGS)=
-Wno-unused-but-set-variable -Wno-unused-variable=0D
+=0D
##########################################################################=
##########=0D
#=0D
# CLANG35 - This configuration is used to compile under Linux to produce=
=0D
--=20
2.27.0