# @ build_board.py
# This adds additional functions to the build_bios.py
#
# Copyright (c) 2018, Intel Corporation. All rights reserved.
# Copyright (c) 2021, American Megatrends International LLC.
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
"""
This module serves as an additional build steps for the Tioga Pass board
"""
import os
import sys
def pre_build_ex(config, functions):
"""Additional Pre BIOS build function
:param config: The environment variables to be used in the build process
:type config: Dictionary
:param functions: A dictionary of function pointers
:type functions: Dictionary
:returns: nothing
"""
print("Info: re-generating PlatformOffset header files")
execute_script = functions.get("execute_script")
command = ["build", "-D", "MAX_SOCKET=" + config.get("MAX_SOCKET", "1"),
"-m",
os.path.join(config["PLATFORM_BOARD_PACKAGE"],
"Acpi", "BoardAcpiDxe", "Dsdt.inf"),
"-y",
config.get("PRE_BUILD_REPORT",
os.path.join(config["WORKSPACE"],
"preBuildReport.txt")),
"--log=" + config.get("PRE_BUILD_LOG",
os.path.join(config["WORKSPACE"],
"prebuild.log"))]
_, _, _, code = execute_script(command, config)
if code != 0:
print(" ".join(command))
print("Error re-generating PlatformOffset header files")
sys.exit(1)
config["AML_FILTER"] = "\"PSYS\" .MCTL\" .FIX[0-9,A-Z]\""
print("AML_FILTER= ", config.get("AML_FILTER"))
# build the command with arguments
command = ["python",
os.path.join(config["MIN_PACKAGE_TOOLS"],
"AmlGenOffset",
"AmlGenOffset.py"),
"-d", "--aml_filter", config["AML_FILTER"],
"-o", os.path.join(config["WORKSPACE_PLATFORM"],
config["PLATFORM_BOARD_PACKAGE"],
"Acpi", "BoardAcpiDxe",
"AmlOffsetTable.c"),
os.path.join(config["BUILD_X64"],
"PurleyOpenBoardPkg",
"Acpi",
"BoardAcpiDxe",
"DSDT",
"OUTPUT",
"Dsdt", "WFPPlatform.offset.h")]
# execute the command
_, _, _, code = execute_script(command, config)
if code != 0:
print(" ".join(command))
print("Error re-generating PlatformOffset header files")
sys.exit(1)
print("GenOffset done")
return config
def build_ex(config, functions):
"""Additional BIOS build function
:param config: The environment variables to be used in
the build process
:type config: Dictionary
:param functions: A dictionary of function pointers
:type functions: Dictionary
:returns: config dictionary
:rtype: Dictionary
"""
print("build_ex")
return None
def post_build_ex(config, functions):
"""Additional Post BIOS build function
:param config: The environment variables to be used in the post
build process
:type config: Dictionary
:param functions: A dictionary of function pointers
:type functions: Dictionary
:returns: config dictionary
:rtype: Dictionary
"""
print("post_build_ex")
execute_script = functions.get("execute_script")
if not execute_script:
print("post_build_ex Error")
sys.exit(1)
common_patch_command = [os.path.join(config["PYTHON_HOME"], "python"),
os.path.join(config["MIN_PACKAGE_TOOLS"],
"PatchFv", "PatchBinFv.py"),
config["TARGET"],
os.path.join(config["WORKSPACE_SILICON_BIN"],
"PurleySiliconBinPkg", "FV"),
os.path.join(config["WORKSPACE"],
"BuildReport.log")]
fvs_to_patch = ["FvTempMemorySilicon",
"FvPreMemorySilicon",
"FvPostMemorySilicon",
"FvLateSilicon"]
for fv in fvs_to_patch:
patch_command = common_patch_command + [fv]
_, _, _, code = execute_script(patch_command, config)
if code != 0:
print(" ".join(patch_command))
print("Patch Error!")
sys.exit(1)
common_rebase_command = [os.path.join(config["PYTHON_HOME"], "python"),
os.path.join(config["MIN_PACKAGE_TOOLS"],
"PatchFv", "RebaseBinFv.py"),
config["TARGET"],
os.path.join(config["WORKSPACE_SILICON_BIN"],
"PurleySiliconBinPkg", "FV"),
os.path.join(config["WORKSPACE"],
"BuildReport.log")]
rebase_command = common_rebase_command +\
["FvPreMemorySilicon",
"gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspMBase"]
_, _, _, code = execute_script(rebase_command, config)
if code != 0:
print(" ".join(rebase_command))
print("Patch Error!")
sys.exit(1)
rebase_command = common_rebase_command +\
["FvPostMemorySilicon",
"gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspSBase"]
_, _, _, code = execute_script(rebase_command, config)
if code != 0:
print(" ".join(rebase_command))
print("Patch Error!")
sys.exit(1)
common_patchbfv_command = [os.path.join(config["PYTHON_HOME"], "python"),
os.path.join(config["MIN_PACKAGE_TOOLS"],
"PatchFv", "PatchBfv.py"),
os.path.join(config["BUILD_DIR_PATH"],
"FV", "PLATFORM.fd"),
os.path.join(config["WORKSPACE"],
"BuildReport.log")]
patchbfv_command = common_patchbfv_command +\
["gMinPlatformPkgTokenSpaceGuid.PcdFlashFvPreMemoryBase"]
_, _, _, code = execute_script(patchbfv_command, config)
if code != 0:
print(" ".join(patchbfv_command))
print("Patch Error!")
sys.exit(1)
return None
def clean_ex(config, functions):
"""Additional clean function
:param config: The environment variables to be used in the build process
:type config: Dictionary
:param functions: A dictionary of function pointers
:type functions: Dictionary
:returns: config dictionary
:rtype: Dictionary
"""
print("clean_ex")
return None