summaryrefslogtreecommitdiff
path: root/Platform/Intel/PurleyOpenBoardPkg/BoardMtOlympus/prebuild.bat
blob: 7c444fb06dd05e6e459912ddbde7274649c75cca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
@REM @file
@REM
@REM Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
@REM This program and the accompanying materials
@REM are licensed and made available under the terms and conditions of the BSD License
@REM which accompanies this distribution.  The full text of the license may be found at
@REM http://opensource.org/licenses/bsd-license.php
@REM
@REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
@REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
@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%\PlatformPkg.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 ..WinDDK
set CHECK_PATH_WINDDK=C:\WINDDK\3790.1830
if not exist %CHECK_PATH_WINDDK%\bin\bin16\link16.exe (
  echo.
  echo !!! ERROR !!! Could not find 16-bit linker at %CHECK_PATH_WINDDK%\bin\bin16\link16.exe. !!!
  echo.
  set SCRIPT_ERROR=1
)
set CHECK_PATH_WINDDK=

echo ..iASL
set CHECK_PATH_IASL=c:\Iasl
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=BoardMtOlympus
@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%/PlatformPkg.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%
%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
echo.
echo GenOffset done

GOTO :EOF