@REM @file
@REM
@REM Copyright (c) 2018, Intel Corporation. All rights reserved.
@REM Copyright (c) 2021, American Megatrends International LLC.
@REM SPDX-License-Identifier: BSD-2-Clause-Patent
@REM
@set SCRIPT_ERROR=0
set /a prebuildstep=0
call :check_BuildTools
if %SCRIPT_ERROR% NEQ 0 GOTO :done
call :setBuildEnv
if %SCRIPT_ERROR% NEQ 0 GOTO :done
call :createTargetTxt
if %SCRIPT_ERROR% NEQ 0 GOTO :done
call :genPlatformOffsetHeaderFile
if %SCRIPT_ERROR% NEQ 0 GOTO :done
:prebuildFinish
echo.
echo ACTIVE_PLATFORM = %WORKSPACE%\edk2-platforms\Platform\Intel\%BOARD_PKG%\%BOARD_NAME%\OpenBoardPkg.dsc
echo EDK_TOOLS_PATH = %EDK_TOOLS_PATH%
echo TARGET = %TARGET%
echo TARGET_ARCH = IA32 X64
echo TOOL_CHAIN_TAG = %TOOL_CHAIN_TAG%
echo WORKSPACE = %WORKSPACE%
echo PACKAGES_PATH = %PACKAGES_PATH%
echo MAX_CONCURRENT_THREAD_NUMBER = %BUILD_MAX_CON_THREAD_NUM%
echo.
echo Build Path = %OUTPUT_DIR%
echo.
REM Remove environment variable because it's no longer needed.
set BUILD_MAX_CON_THREAD_NUM=
:done
REM Use done label to exit batch file and run any final steps; GOTO :EOF immediately exits.
EXIT /B %SCRIPT_ERROR%
::--------------------------------------------------------
::-- Function section starts below here
::--------------------------------------------------------
:cleanup_check_VSTools
set COMPILER_VERSION_STRING=
del cloutput.txt > nul
REM cleanup_check_VSTools is called below. When a label is called, 'GOTO :EOF' is used to return to caller.
GOTO :EOF
:check_BuildTools
echo PreBuild.%prebuildstep% check_BuildTools
echo ..VSTools
set /a prebuildstep=%prebuildstep%+1
set TOOL_CHAIN_TAG=
@if not defined TOOL_CHAIN_TAG (
echo.
echo Prebuild: TOOL_CHAIN_TAG is not set before
echo.
@if defined VS140COMNTOOLS (
echo.
echo Set the VS2015 environment.
echo.
set CL_SEL=VS2015
if /I "%VS140COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 14.0\Common7\Tools\" (
set TOOL_CHAIN_TAG=VS2015
) else (
set TOOL_CHAIN_TAG=VS2015x86
)
if /I "%PROCESSOR_ARCHITECTURE%" == "AMD64" (
set CL_CMDLINE="%VS140COMNTOOLS:~0,-14%VC\bin\amd64\cl.exe"
) else (
set CL_CMDLINE="%VS140COMNTOOLS:~0,-14%VC\bin\cl.exe"
)
) else if defined VS120COMNTOOLS (
echo.
echo Set the VS2013 environment.
echo.
set CL_SEL=VS2013
if /I "%VS120COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\" (
set TOOL_CHAIN_TAG=VS2013
) else (
set TOOL_CHAIN_TAG=VS2013x86
)
if /I "%PROCESSOR_ARCHITECTURE%" == "AMD64" (
set CL_CMDLINE="%VS120COMNTOOLS:~0,-14%VC\bin\amd64\cl.exe"
) else (
set CL_CMDLINE="%VS120COMNTOOLS:~0,-14%VC\bin\cl.exe"
)
) else (
echo.
echo !!! ERROR !!! VS2015 or VS2013 not installed correctly. !!!
echo.
goto :ErrorExit
)
)
echo ..iASL
set CHECK_PATH_IASL=%IASL_PREFIX%
if not exist %CHECK_PATH_IASL%\iasl.exe (
echo.
echo !!! ERROR !!! Could not find iASL compiler at %CHECK_PATH_IASL%\iasl.exe. !!!
echo.
set SCRIPT_ERROR=1
)
set CHECK_PATH_IASL=
echo ..NASM
set CHECK_PATH_NASM=c:\NASM
if not exist %CHECK_PATH_NASM%\nasm.exe (
echo.
echo !!! ERROR !!! Could not find NASM compiler at %CHECK_PATH_NASM%\nasm.exe. !!!
echo.
set SCRIPT_ERROR=1
)
set CHECK_PATH_NASM=
echo ..Python
set CHECK_PATH_PYTHON=c:\Python27
if not exist %CHECK_PATH_PYTHON%\python.exe (
echo.
echo !!! ERROR !!! Could not find Python at %CHECK_PATH_PYTHON%\python.exe. !!!
echo.
set SCRIPT_ERROR=1
)
set CHECK_PATH_PYTHON=
set PYTHON_HOME=C:\Python27
GOTO :EOF
:setBuildEnv
echo PreBuild.%prebuildstep% SetBuildEnv
set /a prebuildstep=%prebuildstep%+1
@set BOARD_PKG=PurleyOpenBoardPkg
@set BOARD_NAME=BoardTiogaPass
@set MAX_SOCKET=2
echo.
echo BOARD_NAME=%BOARD_NAME%
echo BOARD_PKG=%BOARD_PKG%
echo MAX_SOCKET=%MAX_SOCKET%
echo TARGET=%TARGET%
@set OUTPUT_DIR=%WORKSPACE%\Build\%BOARD_PKG%\%BOARD_NAME%\%TARGET%_%TOOL_CHAIN_TAG%
if not exist %OUTPUT_DIR% mkdir %OUTPUT_DIR%
GOTO :EOF
:createTargetTxt
echo PreBuild.%prebuildstep% CreateTargetTxt
set /a prebuildstep=%prebuildstep%+1
set /a BUILD_MAX_CON_THREAD_NUM = %NUMBER_OF_PROCESSORS%-1
@REM set /a BUILD_MAX_CON_THREAD_NUM = 1
findstr /V "ACTIVE_PLATFORM TARGET TARGET_ARCH TOOL_CHAIN_TAG BUILD_RULE_CONF MAX_CONCURRENT_THREAD_NUMBER" %WORKSPACE%\Conf\target.txt > %OUTPUT_DIR%\target.txt 2>NUL
echo ACTIVE_PLATFORM = %WORKSPACE%/edk2-platforms/Platform/Intel/%BOARD_PKG%/%BOARD_NAME%/OpenBoardPkg.dsc >> %OUTPUT_DIR%\target.txt
echo TARGET = %TARGET% >> %OUTPUT_DIR%\target.txt
echo TARGET_ARCH = IA32 X64 >> %OUTPUT_DIR%\target.txt
echo TOOL_CHAIN_TAG = %TOOL_CHAIN_TAG% >> %OUTPUT_DIR%\target.txt
echo BUILD_RULE_CONF = Conf/build_rule.txt >> %OUTPUT_DIR%\target.txt
echo MAX_CONCURRENT_THREAD_NUMBER = %BUILD_MAX_CON_THREAD_NUM% >> %OUTPUT_DIR%\target.txt
if exist %WORKSPACE%\Conf\target.txt (
del /f %WORKSPACE%\Conf\target.txt
)
move /Y %OUTPUT_DIR%\target.txt %WORKSPACE%\Conf\ > nul
if not exist %OUTPUT_DIR%\X64 mkdir %OUTPUT_DIR%\X64
GOTO :EOF
:genPlatformOffsetHeaderFile
echo.
echo PreBuild.%prebuildstep% GenPlatformOffsetHeaderFile
set /a prebuildstep=%prebuildstep%+1
echo Info: re-generating PlatformOffset header files
set PRE_BUILD_CMD_LINE=%BUILD_CMD_LINE% -D MAX_SOCKET=%MAX_SOCKET%
set PRE_BUILD_LOG=%WORKSPACE%\Build\prebuild.log
set PRE_BUILD_REPORT=%WORKSPACE%\Build\preBuildReport.txt
echo build %PRE_BUILD_CMD_LINE% -m %BOARD_PKG%\Acpi\BoardAcpiDxe\Dsdt.inf -y %PRE_BUILD_REPORT% --log=%PRE_BUILD_LOG%
call build %PRE_BUILD_CMD_LINE% -m %BOARD_PKG%\Acpi\BoardAcpiDxe\Dsdt.inf -y %PRE_BUILD_REPORT% --log=%PRE_BUILD_LOG%
if %ERRORLEVEL% NEQ 0 EXIT /b %ERRORLEVEL%
@REM PSYS == FIX0
@REM MCTL == FIX8
set AML_FILTER="\"PSYS\" .MCTL\" .FIX[0-9,A-Z]\""
echo AML_FILTER=%AML_FILTER%
call %PYTHON_HOME%\python.exe %WORKSPACE%\edk2-platforms\Platform\Intel\MinPlatformPkg\Tools\AmlGenOffset\AmlGenOffset.py -d --aml_filter %AML_FILTER% -o %WORKSPACE%\edk2-platforms\Platform\Intel\%BOARD_PKG%\Acpi\BoardAcpiDxe\AmlOffsetTable.c %OUTPUT_DIR%\X64\PurleyOpenBoardPkg\Acpi\BoardAcpiDxe\DSDT\OUTPUT\Dsdt\WFPPlatform.offset.h
@REM Create copyright header for AML offset file
(
echo /** @file
echo Copyright ^(c^) 2018 - 2019, Intel Corporation. All rights reserved.^
echo Copyright ^(c^) 2021, American Megatrends International LLC.^
echo SPDX-License-Identifier: BSD-2-Clause-Patent
echo.
echo **/
echo.
)> %OUTPUT_DIR%\TempCopyright.txt
@REM Concatenate copyright and AmlOffsetTable, then delete temporary files
copy /Y "%OUTPUT_DIR%\TempCopyright.txt" + "%WORKSPACE%\edk2-platforms\Platform\Intel\%BOARD_PKG%\Acpi\BoardAcpiDxe\AmlOffsetTable.c" "%OUTPUT_DIR%\AmlOffsetTable.c" > nul
copy /Y "%OUTPUT_DIR%\AmlOffsetTable.c" "%WORKSPACE%\edk2-platforms\Platform\Intel\%BOARD_PKG%\Acpi\BoardAcpiDxe\AmlOffsetTable.c" > nul
del /f %OUTPUT_DIR%\TempCopyright.txt > nul
del /f %OUTPUT_DIR%\AmlOffsetTable.c > nul
echo.
echo GenOffset done
GOTO :EOF