mirror of
https://github.com/acidanthera/audk.git
synced 2025-09-22 09:17:39 +02:00
BaseTools: Added support for !ifdef constructions inside tools_def.txt.
This commit is contained in:
parent
daca49e23f
commit
1d0697c7ab
@ -20,6 +20,14 @@
|
||||
|
||||
IDENTIFIER = Default TOOL_CHAIN_CONF
|
||||
|
||||
# DEFINE MERGE_RODATA_INTO_TEXT =
|
||||
|
||||
!ifdef DEF(MERGE_RODATA_INTO_TEXT)
|
||||
DEFINE DLINK_SCRIPT = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Merge.lds
|
||||
!else
|
||||
DEFINE DLINK_SCRIPT = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
|
||||
!endif
|
||||
|
||||
# common path macros
|
||||
DEFINE VS2008_BIN = ENV(VS2008_PREFIX)Vc\bin
|
||||
DEFINE VS2008_DLL = ENV(VS2008_PREFIX)Common7\IDE;DEF(VS2008_BIN)
|
||||
@ -1858,7 +1866,7 @@ 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
|
||||
DEFINE GCC_DLINK_FLAGS_COMMON = -nostdlib --pie
|
||||
DEFINE GCC_DLINK2_FLAGS_COMMON = -Wl,--defsym=ALIGNED_PE_HEADER_SIZE=0x400,--default-script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
|
||||
DEFINE GCC_DLINK2_FLAGS_COMMON = -Wl,--defsym=ALIGNED_PE_HEADER_SIZE=0x400 DEF(DLINK_SCRIPT)
|
||||
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
|
||||
@ -1961,7 +1969,7 @@ DEFINE GCC5_ASLCC_FLAGS = DEF(GCC49_ASLCC_FLAGS) -fno-lto
|
||||
DEFINE GCC5_RISCV_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -msmall-data-limit=0
|
||||
DEFINE GCC5_RISCV_ALL_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z max-page-size=0x1000
|
||||
DEFINE GCC5_RISCV_ALL_DLINK_FLAGS = DEF(GCC5_RISCV_ALL_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
|
||||
DEFINE GCC5_RISCV_ALL_DLINK2_FLAGS = -Wl,--defsym=ALIGNED_PE_HEADER_SIZE=0x400,--default-script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
|
||||
DEFINE GCC5_RISCV_ALL_DLINK2_FLAGS = -Wl,--defsym=ALIGNED_PE_HEADER_SIZE=0x400 DEF(DLINK_SCRIPT)
|
||||
DEFINE GCC5_RISCV_ALL_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h
|
||||
DEFINE GCC5_RISCV_ALL_CC_FLAGS_WARNING_DISABLE = -Wno-tautological-compare -Wno-pointer-compare
|
||||
|
||||
@ -2875,7 +2883,7 @@ DEFINE CLANGDWARF_IA32_PREFIX = ENV(CLANG_BIN)
|
||||
DEFINE CLANGDWARF_X64_PREFIX = ENV(CLANG_BIN)
|
||||
|
||||
# LLVM/CLANG doesn't support -n link option. So, it can't share the same IA32_X64_DLINK_COMMON flag.
|
||||
DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-q,--gc-sections -z max-page-size=0x1000 -Wl,-z,notext,--defsym=ALIGNED_PE_HEADER_SIZE=0x400
|
||||
DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-q,--gc-sections -z max-page-size=0x1000 -Wl,-z,notext,--defsym=ALIGNED_PE_HEADER_SIZE=0x400 DEF(DLINK_SCRIPT)
|
||||
DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
|
||||
DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
|
||||
DEFINE CLANGDWARF_IA32_DLINK2_FLAGS = -no-pie
|
||||
|
@ -103,11 +103,32 @@ class ToolDefClassObject(object):
|
||||
else:
|
||||
EdkLogger.error("tools_def.txt parser", FILE_NOT_FOUND, ExtraData=FileName)
|
||||
|
||||
BranchPath = 0
|
||||
for Index in range(len(FileContent)):
|
||||
Line = FileContent[Index].strip()
|
||||
if Line == "" or Line[0] == '#':
|
||||
continue
|
||||
|
||||
if Line.startswith("!ifdef"):
|
||||
Branch = Line[6:].strip()
|
||||
Done, Branch = self.ExpandMacros(Branch)
|
||||
if Done:
|
||||
BranchPath = 1
|
||||
else:
|
||||
BranchPath = -1
|
||||
continue
|
||||
|
||||
if Line.startswith("!else"):
|
||||
BranchPath *= -1
|
||||
continue
|
||||
|
||||
if Line.startswith("!endif"):
|
||||
BranchPath = 0
|
||||
continue
|
||||
|
||||
if BranchPath == -1:
|
||||
continue
|
||||
|
||||
if Line.startswith("!include"):
|
||||
IncFile = Line[8:].strip()
|
||||
Done, IncFile = self.ExpandMacros(IncFile)
|
||||
|
@ -32,13 +32,5 @@
|
||||
[BuildOptions]
|
||||
MSFT:*_*_*_DLINK_FLAGS = /MERGE:.rdata=.text
|
||||
CLANGPDB:*_*_*_DLINK_FLAGS = /MERGE:.rdata=.text
|
||||
GCC:*_*_*_DLINK2_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Merge.lds
|
||||
GCC:*_*_*_ASLDLINK_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Merge.lds
|
||||
CLANGGCC:*_*_*_DLINK2_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Merge.lds
|
||||
CLANGGCC:*_*_*_ASLDLINK_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Merge.lds
|
||||
XCODE:*_*_*_DLINK_FLAGS = -rename_section __DATA_CONST __text_const __TEXT __const -rename_section __DATA_CONST __cstring __TEXT __cstring -rename_section __DATA_CONST __ustring __TEXT __ustring -rename_section __DATA_CONST __const __TEXT __data_const
|
||||
!else
|
||||
[BuildOptions]
|
||||
CLANGGCC:*_*_*_DLINK2_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
|
||||
CLANGGCC:*_*_*_ASLDLINK_FLAGS = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/Base.lds
|
||||
!endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user