]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Conf/build_rule.template
GenFds Tool:Support both absolutely path and relative path for input file.
[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",
804c081d 41 ".aslc" : "Acpi-Table-Source",
589d5eaa 42 ".obj" : "Object",
43 ".o" : "Object",
44 ".lib" : "Static-Library",
45 ".a" : "Static-Library",
46 ".dll" : "Dynamic-Library",
47 ".so" : "Dynamic-Library",
48}
49
804c081d 50ObjectFileMapping = {
51 "C-Code" : ".obj",
52# "C-Header" : ".gch",
53 "Masm-Code" : ".obj",
54 "Iasm-Code" : ".obj", # IPF assembly code
55 "Gasm-Code" : ".obj", # GNU assembly code
56 "Visual-Form-Representation" : ".obj",
57 "Preprocessed-Code" : ".obj",
58 "Object" : ".dll",
59 "Static-Library" : ".dll",
60 "Dynamic-Library" : ".efi",
61 "Dependency-Expression" : ".depex",
62 "Acpi-Source-Language" : ".aml",
63 "Acpi-Table-Source" : ".acpi",
64}
65
b1f7ad66 66DefaultToolCode = ["CC", "ASM", "SLINK", "DLINK", "PCH", "PP", "ASL"]
589d5eaa 67
68ToolCodeMapping = {
b1f7ad66 69 "C-Code" : ["CC"],
ca451dba 70# "C-Header" : ["PCH"],
b1f7ad66 71 "Masm-Code" : ["PP", "ASM"],
72 "Iasm-Code" : ["PP", "ASM"], # IPF assembly code
73 "Gasm-Code" : ["ASM"], # GNU assembly code
74 "Visual-Form-Representation" : ["PP", "CC"],
75 "Preprocessed-Code" : ["CC"],
76 "Acpi-Source-Language" : ["ASL"],
77 "Object" : ["SLINK"],
78 "Static-Library" : ["DLINK"],
79 "Dependency-Expression" : ["PP"],
804c081d 80 "Acpi-Source-Language" : ["PP", "ASL"],
81 "Acpi-Table-Source" : ["CC", "DLINK"],
589d5eaa 82}
83
84ToolChainFamilyMapping = {
85 "C-Code" : ["MSFT", "INTEL", "GCC"],
86 "C-Header" : ["MSFT", "INTEL", "GCC"],
87 "Masm-Code" : ["MSFT", "INTEL"],
88 "Iasm-Code" : ["MSFT", "INTEL"], # IPF assembly code
89 "Gasm-Code" : ["GCC"], # GNU assembly code
90 "Unicode-Text" : ["MSFT", "INTEL", "GCC"],
91 "Visual-Form-Representation" : ["MSFT", "INTEL", "GCC"],
92 "Dependency-Expression" : ["MSFT", "INTEL", "GCC"],
93 "FirmwareVolume" : ["MSFT", "INTEL", "GCC"],
94 "Efi-Image" : ["MSFT", "INTEL", "GCC"],
95 "Firmware-File-System" : ["MSFT", "INTEL", "GCC"],
96 "Bmp-Image" : ["MSFT", "INTEL", "GCC"],
97 "Preprocessed-Code" : ["MSFT", "INTEL"],
98 "Acpi-Source-Language" : ["MSFT", "INTEL"],
99}
100
101## Build rules for makefile
102# Placeholders for string substitution
a9c9a31d 103# ${fpath} File path relative to $(WORKSPACE)
104# ${fdir} File relative directory within a module
589d5eaa 105# ${fname} File full name without path
106# ${fbase} File name without extension and path
a9c9a31d 107# ${fext} File extension
108# ${fdep} File dependencies
ca451dba 109# ${_sep_} Directory separator
110# ${_of_} Output flag
111# ${_if_} Include flag
589d5eaa 112#
113Makefile = {
d8dab390 114# MSFT tool chain family
ca451dba 115"MSFT" : {
589d5eaa 116"C-Code" : '''\
ca451dba 117$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
118${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
119${END}\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
589d5eaa 120''',
121
122"Masm-Code" : '''\
ca451dba 123$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
124${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
125${END}\t"$(PP)" $(PP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
126\tTrim -CONVERT $(@D)${_sep_}${fbase}.i
127\t"$(ASM)" /Fo$@ $(ASM_FLAGS) $(INC) $(@D)${_sep_}${fbase}.iii
589d5eaa 128''',
129
130"Iasm-Code" : '''\
ca451dba 131$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
132${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
133${END}\t"$(APP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
134\t"$(ASM)" -o $@ $(ASM_FLAGS) $(@D)${_sep_}${fbase}.i
589d5eaa 135''',
136
8cc72408 137"Visual-Form-Representation" : '''\
ca451dba 138$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
139${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
140${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
141\tTrim -VFR $(@D)${_sep_}${fbase}.i
142\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
143\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
144\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
8cc72408 145''',
804c081d 146
147"Acpi-Source-Language" :
148'''
149$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml : $(COMMON_DEPS)
150${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml : $(WORKSPACE)${_sep_}${fdep}
151${END}\t"$(PP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
152\t"$(ASL)" /nologo /Fo$@ $(@D)${_sep_}${fbase}.i
153''',
154
155"Acpi-Table-Source" :
156'''
157$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi : $(COMMON_DEPS)
158${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi : $(WORKSPACE)${_sep_}${fdep}
159${END}\t"$(CC)" /Fo$(@D)${_sep_}${fbase}.obj $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
160\t"$(DLINK)" /out:$(@D)${_sep_}${fbase}.dll $(DLINK_FLAGS) $(DLINK_SPATH) $(LIBS)
161\tGenFw -o $@ -c $(@D)${_sep_}${fbase}.dll
162''',
589d5eaa 163},
164
d8dab390 165#
166# INTEL tool chain family
167#
168"INTEL" : {
169"C-Code" : '''\
170$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
171${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
172${END}\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
173''',
174
175"Masm-Code" : '''\
176$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
177${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
178${END}\t"$(PP)" $(PP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
179\tTrim -CONVERT $(@D)${_sep_}${fbase}.i
180\t"$(ASM)" /Fo$@ $(ASM_FLAGS) $(INC) $(@D)${_sep_}${fbase}.iii
181''',
ca451dba 182
d8dab390 183"Iasm-Code" : '''\
184$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
185${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
186${END}\t"$(APP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
187\t"$(ASM)" -o $@ $(ASM_FLAGS) $(@D)${_sep_}${fbase}.i
188''',
189
190"Visual-Form-Representation" : '''\
191$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
192${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
193${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
194\tTrim -VFR $(@D)${_sep_}${fbase}.i
195\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
196\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
197\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
198''',
199},
200
201#
202# GCC tool chain family
203#
ca451dba 204"GCC" : {
205
589d5eaa 206"C-Code" :
ca451dba 207'''
208$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
209${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
210${END}\t"$(CC)" -o $@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
211''',
589d5eaa 212
ca451dba 213"Gasm-Code" :
214'''
215$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
216${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
217${END}\t"$(ASM)" -o $@ $(ASM_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
218''',
589d5eaa 219
220"Visual-Form-Representation" :
ca451dba 221'''
222$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
223${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
224${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} -o $(@D)${_sep_}${fbase}.i
225\tTrim -VFR $(@D)${_sep_}${fbase}.i
226\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
227\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
228\t"$(CC)" -o $@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
229''',
589d5eaa 230}
231}
232
233# This acts like the main() function for the script, unless it is 'import'ed into another
234# script.
235if __name__ == '__main__':
236 for ext in FileTypeMapping:
237 print ext,":",FileTypeMapping[ext]
238
239 for type in Makefile["nmake"]:
240 print "[",type,"]\n",Makefile["nmake"][type]
241 print
242
243 for type in Makefile["gmake"]:
244 print "[",type,"]\n",Makefile["gmake"][type]
245 print
246