]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Conf/build_rule.template
Added build command for INTEL tool chain family
[mirror_edk2.git] / BaseTools / Conf / build_rule.template
CommitLineData
589d5eaa 1# file extention : file type
2FileTypeMapping = {
3 ".c" : "C-Code",
4 ".C" : "C-Code",
5 ".cpp" : "C-Code",
6 ".Cpp" : "C-Code",
7 ".CPP" : "C-Code",
8 ".h" : "C-Header",
9 ".H" : "C-Header",
10 ".asm" : "Masm-Code",
11 ".Asm" : "Masm-Code",
12 ".ASM" : "Masm-Code",
13 ".s" : "Iasm-Code", # IPF assembly code
14 ".S" : "Gasm-Code", # GNU assembly code
15 ".uni" : "Unicode-Text",
16 ".Uni" : "Unicode-Text",
17 ".UNI" : "Unicode-Text",
18 ".vfr" : "Visual-Form-Representation",
19 ".Vfr" : "Visual-Form-Representation",
20 ".VFR" : "Visual-Form-Representation",
21 ".dxs" : "Dependency-Expression",
22 ".Dxs" : "Dependency-Expression",
23 ".DXS" : "Dependency-Expression",
24 ".fv" : "FirmwareVolume",
25 ".Fv" : "FirmwareVolume",
26 ".FV" : "FirmwareVolume",
27 ".efi" : "Efi-Image",
28 ".Efi" : "Efi-Image",
29 ".EFI" : "Efi-Image",
30 ".SEC" : "Firmware-File-System",
31 ".PEI" : "Firmware-File-System",
32 ".DXE" : "Firmware-File-System",
33 ".APP" : "Firmware-File-System",
34 ".FYI" : "Firmware-File-System",
35 ".FFS" : "Firmware-File-System",
36 ".bmp" : "Bmp-Image",
37 ".i" : "Preprocessed-Code",
38 ".asl" : "Acpi-Source-Language",
39 ".Asl" : "Acpi-Source-Language",
40 ".ASL" : "Acpi-Source-Language",
41 ".obj" : "Object",
42 ".o" : "Object",
43 ".lib" : "Static-Library",
44 ".a" : "Static-Library",
45 ".dll" : "Dynamic-Library",
46 ".so" : "Dynamic-Library",
47}
48
b1f7ad66 49DefaultToolCode = ["CC", "ASM", "SLINK", "DLINK", "PCH", "PP", "ASL"]
589d5eaa 50
51ToolCodeMapping = {
b1f7ad66 52 "C-Code" : ["CC"],
ca451dba 53# "C-Header" : ["PCH"],
b1f7ad66 54 "Masm-Code" : ["PP", "ASM"],
55 "Iasm-Code" : ["PP", "ASM"], # IPF assembly code
56 "Gasm-Code" : ["ASM"], # GNU assembly code
57 "Visual-Form-Representation" : ["PP", "CC"],
58 "Preprocessed-Code" : ["CC"],
59 "Acpi-Source-Language" : ["ASL"],
60 "Object" : ["SLINK"],
61 "Static-Library" : ["DLINK"],
62 "Dependency-Expression" : ["PP"],
589d5eaa 63}
64
65ToolChainFamilyMapping = {
66 "C-Code" : ["MSFT", "INTEL", "GCC"],
67 "C-Header" : ["MSFT", "INTEL", "GCC"],
68 "Masm-Code" : ["MSFT", "INTEL"],
69 "Iasm-Code" : ["MSFT", "INTEL"], # IPF assembly code
70 "Gasm-Code" : ["GCC"], # GNU assembly code
71 "Unicode-Text" : ["MSFT", "INTEL", "GCC"],
72 "Visual-Form-Representation" : ["MSFT", "INTEL", "GCC"],
73 "Dependency-Expression" : ["MSFT", "INTEL", "GCC"],
74 "FirmwareVolume" : ["MSFT", "INTEL", "GCC"],
75 "Efi-Image" : ["MSFT", "INTEL", "GCC"],
76 "Firmware-File-System" : ["MSFT", "INTEL", "GCC"],
77 "Bmp-Image" : ["MSFT", "INTEL", "GCC"],
78 "Preprocessed-Code" : ["MSFT", "INTEL"],
79 "Acpi-Source-Language" : ["MSFT", "INTEL"],
80}
81
82## Build rules for makefile
83# Placeholders for string substitution
a9c9a31d 84# ${fpath} File path relative to $(WORKSPACE)
85# ${fdir} File relative directory within a module
589d5eaa 86# ${fname} File full name without path
87# ${fbase} File name without extension and path
a9c9a31d 88# ${fext} File extension
89# ${fdep} File dependencies
ca451dba 90# ${_sep_} Directory separator
91# ${_of_} Output flag
92# ${_if_} Include flag
589d5eaa 93#
94Makefile = {
d8dab390 95# MSFT tool chain family
ca451dba 96"MSFT" : {
589d5eaa 97"C-Code" : '''\
ca451dba 98$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
99${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
100${END}\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
589d5eaa 101''',
102
103"Masm-Code" : '''\
ca451dba 104$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
105${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
106${END}\t"$(PP)" $(PP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
107\tTrim -CONVERT $(@D)${_sep_}${fbase}.i
108\t"$(ASM)" /Fo$@ $(ASM_FLAGS) $(INC) $(@D)${_sep_}${fbase}.iii
589d5eaa 109''',
110
111"Iasm-Code" : '''\
ca451dba 112$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
113${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
114${END}\t"$(APP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
115\t"$(ASM)" -o $@ $(ASM_FLAGS) $(@D)${_sep_}${fbase}.i
589d5eaa 116''',
117
8cc72408 118"Visual-Form-Representation" : '''\
ca451dba 119$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
120${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
121${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
122\tTrim -VFR $(@D)${_sep_}${fbase}.i
123\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
124\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
125\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
8cc72408 126''',
589d5eaa 127},
128
d8dab390 129#
130# INTEL tool chain family
131#
132"INTEL" : {
133"C-Code" : '''\
134$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
135${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
136${END}\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
137''',
138
139"Masm-Code" : '''\
140$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
141${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
142${END}\t"$(PP)" $(PP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
143\tTrim -CONVERT $(@D)${_sep_}${fbase}.i
144\t"$(ASM)" /Fo$@ $(ASM_FLAGS) $(INC) $(@D)${_sep_}${fbase}.iii
145''',
ca451dba 146
d8dab390 147"Iasm-Code" : '''\
148$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
149${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
150${END}\t"$(APP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
151\t"$(ASM)" -o $@ $(ASM_FLAGS) $(@D)${_sep_}${fbase}.i
152''',
153
154"Visual-Form-Representation" : '''\
155$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
156${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
157${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
158\tTrim -VFR $(@D)${_sep_}${fbase}.i
159\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
160\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
161\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
162''',
163},
164
165#
166# GCC tool chain family
167#
ca451dba 168"GCC" : {
169
589d5eaa 170"C-Code" :
ca451dba 171'''
172$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
173${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
174${END}\t"$(CC)" -o $@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
175''',
589d5eaa 176
ca451dba 177"Gasm-Code" :
178'''
179$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
180${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
181${END}\t"$(ASM)" -o $@ $(ASM_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
182''',
589d5eaa 183
184"Visual-Form-Representation" :
ca451dba 185'''
186$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
187${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
188${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} -o $(@D)${_sep_}${fbase}.i
189\tTrim -VFR $(@D)${_sep_}${fbase}.i
190\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
191\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
192\t"$(CC)" -o $@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
193''',
589d5eaa 194}
195}
196
197# This acts like the main() function for the script, unless it is 'import'ed into another
198# script.
199if __name__ == '__main__':
200 for ext in FileTypeMapping:
201 print ext,":",FileTypeMapping[ext]
202
203 for type in Makefile["nmake"]:
204 print "[",type,"]\n",Makefile["nmake"][type]
205 print
206
207 for type in Makefile["gmake"]:
208 print "[",type,"]\n",Makefile["gmake"][type]
209 print
210