]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Conf/build_rule.template
Update MicroCode build rules
[mirror_edk2.git] / BaseTools / Conf / build_rule.template
index 1faf846e385c3849fc5ed7d2a75a44c86d10dd6c..2cd5debe8ee1b9e9feda06b6b6e859ada6b0f2dc 100644 (file)
@@ -7,9 +7,13 @@ FileTypeMapping = {
     ".CPP"  :   "C-Code",
     ".h"    :   "C-Header",
     ".H"    :   "C-Header",
+    ".inc"  :   "Masm-Header",
     ".asm"  :   "Masm-Code",
     ".Asm"  :   "Masm-Code",
     ".ASM"  :   "Masm-Code",
+    ".asm16"  :   "Masm16-Code",  #RealAsm16 Link Code
+    ".Asm16"  :   "Masm16-Code",
+    ".ASM16"  :   "Masm16-Code",
     ".s"    :   "Iasm-Code",    # IPF assembly code
     ".S"    :   "Gasm-Code",    # GNU assembly code
     ".uni"  :   "Unicode-Text",
@@ -21,6 +25,8 @@ FileTypeMapping = {
     ".dxs"  :   "Dependency-Expression",
     ".Dxs"  :   "Dependency-Expression",
     ".DXS"  :   "Dependency-Expression",
+    ".TXT"  :   "MicorCode-Text",
+    ".txt"  :   "MicorCode-Text",
     ".fv"   :   "FirmwareVolume",
     ".Fv"   :   "FirmwareVolume",
     ".FV"   :   "FirmwareVolume",
@@ -38,6 +44,7 @@ FileTypeMapping = {
     ".asl"  :   "Acpi-Source-Language",
     ".Asl"  :   "Acpi-Source-Language",
     ".ASL"  :   "Acpi-Source-Language",
+    ".aslc" :   "Acpi-Table-Source",
     ".obj"  :   "Object",
     ".o"    :   "Object",
     ".lib"  :   "Static-Library",
@@ -46,21 +53,42 @@ FileTypeMapping = {
     ".so"   :   "Dynamic-Library",
 }
 
-DefaultToolCode = ["CC", "ASM", "SLINK", "DLINK", "PCH", "PP", "ASL", "VFRC", "AUTOGEN"]
+ObjectFileMapping = {
+    "C-Code"                        :   ".obj",
+#    "C-Header"                      :   ".gch",
+    "Masm-Code"                     :   ".obj",
+    "Iasm-Code"                     :   ".obj",      # IPF assembly code
+    "Gasm-Code"                     :   ".obj",      # GNU assembly code
+    "Visual-Form-Representation"    :   ".obj",
+    "Preprocessed-Code"             :   ".obj",
+    "Object"                        :   ".dll",
+    "Static-Library"                :   ".dll",
+    "Dynamic-Library"               :   ".efi",
+    "Dependency-Expression"         :   ".depex",
+    "Acpi-Source-Language"          :   ".aml",
+    "Acpi-Table-Source"             :   ".acpi",
+    "Masm16-Code"                   :   ".com",
+    "MicorCode-Text"                :   ".bin",
+}
+
+DefaultToolCode = ["CC", "ASM", "SLINK", "DLINK", "PCH", "PP", "ASL", "ASMLINK"]
 
 ToolCodeMapping = {
-    "C-Code"                        :   "CC",
-    "C-Header"                      :   "PCH",
-    "Masm-Code"                     :   "ASM",
-    "Iasm-Code"                     :   "ASM",          # IPF assembly code
-    "Gasm-Code"                     :   "ASM",          # GNU assembly code
-    "Unicode-Text"                  :   "AUTOGEN",
-    "Visual-Form-Representation"    :   "VFRC",
-    "Preprocessed-Code"             :   "CC",
-    "Acpi-Source-Language"          :   "ASL",
-    "Object"                        :   "SLINK",
-    "Static-Library"                :   "DLINK",
-    "Dependency-Expression"         :   "PP",
+    "C-Code"                        :   ["CC"],
+#    "C-Header"                      :   ["PCH"],
+    "Masm-Code"                     :   ["PP", "ASM"],
+    "Iasm-Code"                     :   ["PP", "ASM"],      # IPF assembly code
+    "Gasm-Code"                     :   ["ASM"],            # GNU assembly code
+    "Visual-Form-Representation"    :   ["PP", "CC"],
+    "Preprocessed-Code"             :   ["CC"],
+    "Acpi-Source-Language"          :   ["ASL"],
+    "Object"                        :   ["SLINK"],
+    "Static-Library"                :   ["DLINK"],
+    "Dependency-Expression"         :   ["PP"],
+    "Acpi-Source-Language"          :   ["PP", "ASL"],
+    "Acpi-Table-Source"             :   ["CC", "DLINK"],
+    "Masm16-Code"                   :   ["ASM", "ASMLINK"],
+    "MicorCode-Text"                :   ["CC"],
 }
 
 ToolChainFamilyMapping = {
@@ -78,76 +106,176 @@ ToolChainFamilyMapping = {
     "Bmp-Image"                     :   ["MSFT", "INTEL", "GCC"],
     "Preprocessed-Code"             :   ["MSFT", "INTEL"],
     "Acpi-Source-Language"          :   ["MSFT", "INTEL"],
+    "Acpi-Table-Source"             :   ["MSFT", "INTEL"],
+    "Masm16-Code"                   :   ["MSFT"],
+    "MicorCode-Text"                :   ["MSFT", "INTEL"], 
 }
 
 ## Build rules for makefile
 # Placeholders for string substitution
 #   ${fpath}  File path relative to $(WORKSPACE)
-#   ${fdir}    File relative directory within a module
-#   ${fname}   File full name without path
-#   ${fbase}   File name without extension and path
+#   ${fdir}    File relative directory within a module
+#   ${fname}  File full name without path
+#   ${fbase}  File name without extension and path
 #   ${fext}   File extension
 #   ${fdep}   File dependencies
-#   ${sep}    Directory separator
+#   ${_sep_}    Directory separator
+#   ${_of_}     Output flag
+#   ${_if_}     Include flag
 #
 Makefile = {
-"nmake"        : {
+# MSFT tool chain family
+"MSFT"  : {
 "C-Code"    : '''\
-$(OUTPUT_DIR)${sep}${fdir}${sep}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${sep}${fdir}${sep}${fbase}.obj : $(WORKSPACE)${sep}${fdep}
-${END} "$(CC)" $(CC_FLAGS) $(INC) /Fo$@ $(WORKSPACE)${sep}${fpath}
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
 ''',
 
 "Masm-Code" : '''\
-$(OUTPUT_DIR)${sep}${fdir}${sep}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${sep}${fdir}${sep}${fbase}.obj : $(WORKSPACE)${sep}${fdep}
-${END} "$(PP)" $(PP_FLAGS) $(INC) $(WORKSPACE)${sep}${fpath} > $(@D)${sep}${fbase}.i
-       Trim -CONVERT $(@D)${sep}${fbase}.i
-       "$(ASM)" $(ASM_FLAGS) /Fo$@ $(@D)${sep}${fbase}.iii
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(PP)" $(PP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
+\tTrim -s -c $(@D)${_sep_}${fbase}.i
+\t"$(ASM)" /Fo$@ $(ASM_FLAGS) $(INC) $(@D)${_sep_}${fbase}.iii
 ''',
 
 "Iasm-Code" : '''\
-$(OUTPUT_DIR)${sep}${fdir}${sep}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${sep}${fdir}${sep}${fbase}.obj : $(WORKSPACE)${sep}${fdep}
-${END} "$(APP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${sep}${fpath} > $(@D)${sep}${fbase}.i
-       "$(ASM)" $(ASM_FLAGS) -o$@ $(@D)${sep}${fbase}.i
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(APP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
+\t"$(ASM)" -o $@ $(ASM_FLAGS) $(@D)${_sep_}${fbase}.i
 ''',
 
 "Visual-Form-Representation" : '''\
-$(OUTPUT_DIR)${sep}${fdir}${sep}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${sep}${fdir}${sep}${fbase}.obj : $(WORKSPACE)${sep}${fdep}
-${END}\t"$(VFRPP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${sep}${fpath} > $(@D)${sep}${fbase}.i
-\tTrim -VFR $(@D)${sep}${fbase}.i
-\t"$(VFRC)" $(VFRC_FLAGS) -od $(DEBUG_DIR)${sep}${fdir} $(@D)${sep}${fbase}.iii
-\t"$(CC)" $(CC_FLAGS) $(INC) /Fo$@ $(DEBUG_DIR)${sep}${fdir}${sep}${fbase}.c
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
+\tTrim -v $(@D)${_sep_}${fbase}.i
+\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
+\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
+\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
+''',
+
+"Acpi-Source-Language" :
+'''
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(PP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
+\t"$(ASL)" -p $@ $(@D)${_sep_}${fbase}.i
+\t-copy $(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml $(OUTPUT_DIR)${_sep_}${fbase}.aml /Y
+''',
+
+"Acpi-Table-Source" :
+'''
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(CC)" /Fo$(@D)${_sep_}${fbase}.obj $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
+\t"$(DLINK)" $(@D)${_sep_}${fbase}.obj /out:$(@D)${_sep_}${fbase}.dll $(DLINK_FLAGS) $(DLINK_SPATH) $(LIBS)
+\tGenFw -o $@ -c $(@D)${_sep_}${fbase}.dll
+\t-copy $(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi $(OUTPUT_DIR)${_sep_}${fbase}.acpi /Y
+''',
+
+"Masm16-Code" : '''\
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.com : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.com : $(WORKSPACE)${_sep_}${fdep}
+${END}\tpushd .
+\tcd $(OUTPUT_DIR)${_sep_}${fdir}
+\t"$(ASM)" /nologo /omf $(WORKSPACE)${_sep_}${fpath} /Bl"$(ASMLINK)" $(ASMLINK_FLAGS)
+\t-copy ${fbase}.com $(OUTPUT_DIR)${_sep_}${fbase}.com /Y & popd
+''',
+
+"MicorCode-Text" : '''\
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.bin : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.bin : $(WORKSPACE)${_sep_}${fdep}
+${END}\tGenFw -o $@ -m $(WORKSPACE)${_sep_}${fpath}
 ''',
 },
 
-"gmake" : {
+#
+# INTEL tool chain family
+#
+"INTEL"  : {
+"C-Code"    : '''\
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
+''',
+
+"Masm-Code" : '''\
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(PP)" $(PP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
+\tTrim -s -c $(@D)${_sep_}${fbase}.i
+\t"$(ASM)" /Fo$@ $(ASM_FLAGS) $(INC) $(@D)${_sep_}${fbase}.iii
+''',
+
+"Iasm-Code" : '''\
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(APP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
+\t"$(ASM)" -o $@ $(ASM_FLAGS) $(@D)${_sep_}${fbase}.i
+''',
+
+"Visual-Form-Representation" : '''\
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
+\tTrim -v $(@D)${_sep_}${fbase}.i
+\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
+\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
+\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
+''',
+
+"Acpi-Source-Language" :
+'''
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(PP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
+\t"$(ASL)" -p $@ $(@D)${_sep_}${fbase}.i
+\t-copy $(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml $(OUTPUT_DIR)${_sep_}${fbase}.aml /Y
+''',
+
+"Acpi-Table-Source" :
+'''
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(CC)" /Fo$(@D)${_sep_}${fbase}.obj $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
+\t"$(DLINK)" $(@D)${_sep_}${fbase}.obj /out:$(@D)${_sep_}${fbase}.dll $(DLINK_FLAGS) $(DLINK_SPATH) $(LIBS)
+\tGenFw -o $@ -c $(@D)${_sep_}${fbase}.dll
+\t-copy $(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi $(OUTPUT_DIR)${_sep_}${fbase}.acpi /Y
+''',
+},
+
+#
+# GCC tool chain family
+#
+"GCC" : {
+
 "C-Code"    : 
-'''$(OUTPUT_DIR)/%(fdir)s/%(fbase)s.obj : $(MODULE_DIR)/%(fdir)s/%(fname)s $(DEP_FILES)
-\t"$(CC)" $(CC_FLAGS) $(INC) $(CC_OUTPUT)$@ $<''',
-
-"Masm-Code" : 
-'''$(OUTPUT_DIR)/%(fdir)s/%(fbase)s.obj : $(MODULE_DIR)/%(fdir)s/%(fname)s $(DEP_FILES)
-\t"$(PP)" $(PP_FLAGS) $(INC) $? $(PP_OUTPUT)$(@D)/%(fbase)s.i
-\tTrim -CONVERT $(@D)/%(fbase)s.i
-\t"$(ASM)" $(ASM_FLAGS) $(ASM_OUTPUT)$@ $(@D)/%(fbase)s.iii''',
-    
-"Gasm-Code" : 
-'''$(OUTPUT_DIR)/%(fdir)s/%(fbase)s.obj : $(MODULE_DIR)/%(fdir)s/%(fname)s $(DEP_FILES)
-\t"$(ASM)" $(ASM_FLAGS) $(INC) $(ASM_OUTPUT)$@ $<''',
+'''
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(CC)" -o $@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
+''',
 
-"Iasm-Code" : 
-'''$(OUTPUT_DIR)/%(fdir)s/%(fbase)s.obj : $(MODULE_DIR)/%(fdir)s/%(fname)s $(DEP_FILES)
-\t"$(APP)" $(APP_FLAGS) $(INC) $< $(PP_OUTPUT)$(@D)/%(fbase)s.i
-\t"$(ASM)" $(ASM_FLAGS) $(ASM_OUTPUT)$@ $(@D)/%(fbase)s.i''',
+"Gasm-Code" : 
+'''
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(ASM)" -o $@ $(ASM_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
+''',
 
 "Visual-Form-Representation" : 
-'''$(OUTPUT_DIR)/%(fdir)s/%(fbase)s.obj : $(MODULE_DIR)/%(fdir)s/%(fname)s $(DEP_FILES)
-\t"$(PP)" $(PP_FLAGS) $(INC) $< $(PP_OUTPUT)$(@D)/%(fbase)s.i
-\t"$(VFRC)" $(VFRC_FLAGS) $(INC) $(VFRC_OUTPUT)$(DEBUG_DIR)/%(fdir)s/%(fbase)s.c $(@D)/%(fbase)s.i
-\t"$(CC)" $(CC_FLAGS) $(INC) $(CC_OUTPUT)$@ $(DEBUG_DIR)/%(fdir)s/%(fbase)s.c''',
+'''
+$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
+${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
+${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} -o $(@D)${_sep_}${fbase}.i
+\tTrim -v $(@D)${_sep_}${fbase}.i
+\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
+\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
+\t"$(CC)" -o $@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
+''',
 }
 }