1 From 289ebaebf3c8c60c5cf09b53108c3ef671b64afe Mon Sep 17 00:00:00 2001
2 From: Olivier Martin <olivier.martin@arm.com>
3 Date: Thu, 22 Sep 2011 20:46:41 +0100
4 Subject: [PATCH 3/3] BaseTools/Conf: Add support for ARM GCC Linux EABI
8 BaseTools/Conf/build_rule.template | 12 ++++----
9 BaseTools/Conf/tools_def.template | 58 ++++++++++++++++++++++++++++++++++++
10 2 files changed, 64 insertions(+), 6 deletions(-)
11 mode change 100644 => 100755 BaseTools/Conf/build_rule.template
13 diff --git a/BaseTools/Conf/build_rule.template b/BaseTools/Conf/build_rule.template
16 index ff5af1c..c54b091
17 --- a/BaseTools/Conf/build_rule.template
18 +++ b/BaseTools/Conf/build_rule.template
20 "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
21 "$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst}
24 + <Command.ARMGCC, Command.ARMLINUXGCC>
25 "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
30 "$(SLINK)" $(SLINK_FLAGS) ${dst} --via $(OBJECT_FILES_LIST)
32 - <Command.RVCTCYGWIN, Command.ARMGCC>
33 + <Command.RVCTCYGWIN, Command.ARMGCC, Command.ARMLINUXGCC>
34 # $(OBJECT_FILES_LIST) has wrong paths for cygwin
35 "$(SLINK)" $(SLINK_FLAGS) ${dst} $(OBJECT_FILES)
38 "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -\( $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) -\) $(DLINK2_FLAGS)
39 "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}
42 + <Command.ARMGCC, Command.ARMLINUXGCC>
43 "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -\( $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) -\) $(DLINK2_FLAGS)
48 "$(DLINK)" $(DLINK_FLAGS) -\( $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) -\) $(DLINK2_FLAGS)
51 + <Command.ARMGCC, Command.ARMLINUXGCC>
52 "$(DLINK)" $(DLINK_FLAGS) -\( $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) -\) $(DLINK2_FLAGS)
57 $(DEBUG_DIR)(+)$(MODULE_NAME).efi
59 - <Command.MSFT, Command.INTEL, Command.RVCT, Command.ARMGCC>
60 + <Command.MSFT, Command.INTEL, Command.RVCT, Command.ARMGCC, Command.ARMLINUXGCC>
61 "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS)
62 $(CP) ${dst} $(OUTPUT_DIR)
63 $(CP) ${dst} $(BIN_DIR)
65 "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)
66 "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst}
68 - <Command.XCODE, Command.RVCT, Command.ARMGCC>
69 + <Command.XCODE, Command.RVCT, Command.ARMGCC, Command.ARMLINUXGCC>
70 GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES)
73 diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
74 index 049f29b..20c0033 100755
75 --- a/BaseTools/Conf/tools_def.template
76 +++ b/BaseTools/Conf/tools_def.template
77 @@ -4178,6 +4178,64 @@ RELEASE_ARMGCC_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) -mlittle-end
78 DEBUG_ARMGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARMGCC_CC_FLAGS) -combine -O0
79 RELEASE_ARMGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARMGCC_CC_FLAGS) -combine -Wno-unused
81 +####################################################################################
85 +####################################################################################
86 +# ARMLINUXGCC - ARM version of the GCC cross compiler
88 +*_ARMLINUXGCC_*_*_FAMILY = GCC
89 +*_ARMLINUXGCC_*_*_BUILDRULEFAMILY = ARMLINUXGCC
91 +*_ARMLINUXGCC_*_MAKE_PATH = make
92 +*_ARMLINUXGCC_*_MAKE_FLAGS = --no-print-directory
97 +*_ARMLINUXGCC_*_ASL_PATH = DEF(UNIX_IASL_BIN)
98 +*_ARMLINUXGCC_*_ASL_FLAGS = DEF(IASL_FLAGS)
99 +*_ARMLINUXGCC_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
100 +*_ARMLINUXGCC_*_ASLPP_FLAGS = -x c -E -P
101 +*_ARMLINUXGCC_*_ASLCC_FLAGS = -x c
102 +*_ARMLINUXGCC_*_ASLDLINK_FLAGS = DEF(GCC_DLINK_FLAGS_COMMON) --entry _ReferenceAcpiTable
108 +*_ARMLINUXGCC_ARM_ASLCC_PATH = ENV(ARMLINUXGCC_TOOLS_PATH)arm-linux-gnueabi-gcc
109 +*_ARMLINUXGCC_ARM_ASLDLINK_PATH = ENV(ARMLINUXGCC_TOOLS_PATH)arm-linux-gnueabi-ld
110 +*_ARMLINUXGCC_ARM_ASLPP_PATH = ENV(ARMLINUXGCC_TOOLS_PATH)arm-linux-gnueabi-gcc
112 +*_ARMLINUXGCC_ARM_CC_PATH = ENV(ARMLINUXGCC_TOOLS_PATH)arm-linux-gnueabi-gcc
113 +*_ARMLINUXGCC_ARM_SLINK_PATH = ENV(ARMLINUXGCC_TOOLS_PATH)arm-linux-gnueabi-ar
114 +*_ARMLINUXGCC_ARM_DLINK_PATH = ENV(ARMLINUXGCC_TOOLS_PATH)arm-linux-gnueabi-ld
115 +*_ARMLINUXGCC_ARM_ASM_PATH = ENV(ARMLINUXGCC_TOOLS_PATH)arm-linux-gnueabi-as
116 +*_ARMLINUXGCC_ARM_PP_PATH = ENV(ARMLINUXGCC_TOOLS_PATH)arm-linux-gnueabi-gcc
117 +*_ARMLINUXGCC_ARM_VFRPP_PATH = ENV(ARMLINUXGCC_TOOLS_PATH)arm-linux-gnueabi-gcc
120 +# Use default values, or override in DSC file
122 +*_ARMLINUXGCC_ARM_ARCHCC_FLAGS = -mthumb
123 +*_ARMLINUXGCC_ARM_ARCHASM_FLAGS =
124 +*_ARMLINUXGCC_ARM_ARCHDLINK_FLAGS =
125 +*_ARMLINUXGCC_ARM_PLATFORM_FLAGS = -march=armv7-a
127 + DEBUG_ARMLINUXGCC_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) -mlittle-endian -g
128 +RELEASE_ARMLINUXGCC_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) -mlittle-endian
130 +*_ARMLINUXGCC_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h
131 +*_ARMLINUXGCC_ARM_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h
133 +*_ARMLINUXGCC_ARM_SLINK_FLAGS = -rc
134 +*_ARMLINUXGCC_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) --oformat=elf32-littlearm --emit-relocs -nostdlib -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
136 + DEBUG_ARMLINUXGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARMGCC_CC_FLAGS) -Wno-address -O0
137 +RELEASE_ARMLINUXGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARMGCC_CC_FLAGS) -Wno-address -Wno-unused-but-set-variable
140 # ASM 16 linker defintions