• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env bash
2##**********************************************************************
3## Function define
4##**********************************************************************
5function Usage() {
6  echo
7  echo "***************************************************************************"
8  echo "Build BIOS rom for VLV platforms."
9  echo
10  echo "Usage: bld_vlv.bat  PlatformType [Build Target]"
11  echo
12  echo
13  echo "       Platform Types:  MNW2"
14  echo "       Build Targets:   Debug, Release  (default: Debug)"
15  echo
16  echo "***************************************************************************"
17  echo "Press any key......"
18  read
19  exit 0
20}
21
22
23echo -e $(date)
24##**********************************************************************
25## Initial Setup
26##**********************************************************************
27#WORKSPACE=$(pwd)
28#build_threads=($NUMBER_OF_PROCESSORS)+1
29Build_Flags=
30exitCode=0
31Arch=X64
32SpiLock=0
33
34## Clean up previous build files.
35if [ -e $(pwd)/EDK2.log ]; then
36  rm $(pwd)/EDK2.log
37fi
38
39if [ -e $(pwd)/Unitool.log ]; then
40  rm $(pwd)/Unitool.log
41fi
42
43if [ -e $(pwd)/Conf/target.txt ]; then
44  rm $(pwd)/Conf/target.txt
45fi
46
47if [ -e $(pwd)/Conf/BiosId.env ]; then
48  rm $(pwd)/Conf/BiosId.env
49fi
50
51if [ -e $(pwd)/Conf/tools_def.txt ]; then
52  rm $(pwd)/Conf/tools_def.txt
53fi
54
55if [ -e $(pwd)/Conf/build_rule.txt ]; then
56  rm $(pwd)/Conf/build_rule.txt
57fi
58
59
60## Setup EDK environment. Edksetup puts new copies of target.txt, tools_def.txt, build_rule.txt in WorkSpace\Conf
61## Also run edksetup as soon as possible to avoid it from changing environment variables we're overriding
62. edksetup.sh BaseTools
63make -C BaseTools
64
65## Define platform specific environment variables.
66PLATFORM_PACKAGE=Vlv2TbltDevicePkg
67config_file=$WORKSPACE/$PLATFORM_PACKAGE/PlatformPkgConfig.dsc
68auto_config_inc=$WORKSPACE/$PLATFORM_PACKAGE/AutoPlatformCFG.txt
69
70## default ECP (override with /ECP flag)
71EDK_SOURCE=$WORKSPACE/EdkCompatibilityPkg
72
73## create new AutoPlatformCFG.txt file
74if [ -f "$auto_config_inc" ]; then
75  rm $auto_config_inc
76fi
77touch $auto_config_inc
78
79##**********************************************************************
80## Parse command line arguments
81##**********************************************************************
82
83## Optional arguments
84for (( i=1; i<=$#; ))
85  do
86    if [ "$1" == "/?" ]; then
87      Usage
88    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Q" ]; then
89      Build_Flags="$Build_Flags --quiet"
90      shift
91    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then
92      Build_Flags="$Build_Flags -j EKD2.log"
93      shift
94    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then
95      echo Removing previous build files ...
96      if [ -d "Build" ]; then
97        rm -r Build
98      fi
99      shift
100    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/ECP" ]; then
101      ECP_SOURCE=$WORKSPACE/EdkCompatibilityPkgEcp
102      EDK_SOURCE=$WORKSPACE/EdkCompatibilityPkgEcp
103      echo DEFINE ECP_BUILD_ENABLE = TRUE >> $auto_config_inc
104      shift
105    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then
106      Arch=X64
107      shift
108    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/YL" ]; then
109      SpiLock=1
110      shift
111    else
112      break
113    fi
114  done
115
116
117
118
119
120## Required argument(s)
121if [ "$2" == "" ]; then
122  Usage
123fi
124
125## Remove the values for Platform_Type and Build_Target from BiosIdX.env and stage in Conf
126if [ $Arch == "IA32" ]; then
127  cp $PLATFORM_PACKAGE/BiosIdR.env    Conf/BiosId.env
128  echo DEFINE X64_CONFIG = FALSE      >> $auto_config_inc
129else
130  cp $PLATFORM_PACKAGE/BiosIdx64R.env  Conf/BiosId.env
131  echo DEFINE X64_CONFIG = TRUE       >> $auto_config_inc
132fi
133sed -i '/^BOARD_ID/d' Conf/BiosId.env
134sed -i '/^BUILD_TYPE/d' Conf/BiosId.env
135
136
137
138## -- Build flags settings for each Platform --
139##    AlpineValley (ALPV):  SVP_PF_BUILD = TRUE,   ENBDT_PF_BUILD = FALSE,  TABLET_PF_BUILD = FALSE,  BYTI_PF_BUILD = FALSE, IVI_PF_BUILD = FALSE
140##       BayleyBay (BBAY):  SVP_PF_BUILD = FALSE,  ENBDT_PF_BUILD = TRUE,   TABLET_PF_BUILD = FALSE,  BYTI_PF_BUILD = FALSE, IVI_PF_BUILD = FALSE
141##         BayLake (BLAK):  SVP_PF_BUILD = FALSE,  ENBDT_PF_BUILD = FALSE,  TABLET_PF_BUILD = TRUE,   BYTI_PF_BUILD = FALSE, IVI_PF_BUILD = FALSE
142##      Bakersport (BYTI):  SVP_PF_BUILD = FALSE,  ENBDT_PF_BUILD = FALSE,  TABLET_PF_BUILD = FALSE,  BYTI_PF_BUILD = TRUE, IVI_PF_BUILD = FALSE
143## Crestview Hills (CVHS):  SVP_PF_BUILD = FALSE,  ENBDT_PF_BUILD = FALSE,  TABLET_PF_BUILD = FALSE,  BYTI_PF_BUILD = TRUE, IVI_PF_BUILD = TRUE
144##            FFD8 (BLAK):  SVP_PF_BUILD = FALSE,  ENBDT_PF_BUILD = FALSE,  TABLET_PF_BUILD = TRUE,   BYTI_PF_BUILD = FALSE, IVI_PF_BUILD = FALSE
145echo "Setting  $1  platform configuration and BIOS ID..."
146if [ "$(echo $1 | tr 'a-z' 'A-Z')" == "MNW2" ]; then
147  echo BOARD_ID = MNW2MAX             >> Conf/BiosId.env
148  echo DEFINE ENBDT_PF_BUILD = TRUE  >> $auto_config_inc
149else
150  echo "Error - Unsupported PlatformType: $1"
151  Usage
152fi
153
154Platform_Type=$1
155
156if [ "$(echo $2 | tr 'a-z' 'A-Z')" == "RELEASE" ]; then
157  TARGET=RELEASE
158  BUILD_TYPE=R
159  echo BUILD_TYPE = R >> Conf/BiosId.env
160else
161  TARGET=DEBUG
162  BUILD_TYPE=D
163  echo BUILD_TYPE = D >> Conf/BiosId.env
164fi
165
166
167##**********************************************************************
168## Additional EDK Build Setup/Configuration
169##**********************************************************************
170echo "Ensuring correct build directory is present for GenBiosId..."
171
172echo Modifing Conf files for this build...
173## Remove lines with these tags from target.txt
174sed -i '/^ACTIVE_PLATFORM/d' Conf/target.txt
175sed -i '/^TARGET /d' Conf/target.txt
176sed -i '/^TARGET_ARCH/d' Conf/target.txt
177sed -i '/^TOOL_CHAIN_TAG/d' Conf/target.txt
178sed -i '/^MAX_CONCURRENT_THREAD_NUMBER/d' Conf/target.txt
179
180ACTIVE_PLATFORM=$PLATFORM_PACKAGE/PlatformPkgGcc"$Arch".dsc
181TOOL_CHAIN_TAG=GCC46
182MAX_CONCURRENT_THREAD_NUMBER=1
183echo ACTIVE_PLATFORM = $ACTIVE_PLATFORM                           >> Conf/target.txt
184echo TARGET          = $TARGET                                    >> Conf/target.txt
185echo TOOL_CHAIN_TAG  = $TOOL_CHAIN_TAG                            >> Conf/target.txt
186echo MAX_CONCURRENT_THREAD_NUMBER = $MAX_CONCURRENT_THREAD_NUMBER >> Conf/target.txt
187if [ $Arch == "IA32" ]; then
188  echo TARGET_ARCH   = IA32                                       >> Conf/target.txt
189else
190  echo TARGET_ARCH   = IA32 X64                                   >> Conf/target.txt
191fi
192
193##**********************************************************************
194## Build BIOS
195##**********************************************************************
196echo Skip "Running UniTool..."
197echo "Make GenBiosId Tool..."
198BUILD_PATH=Build/$PLATFORM_PACKAGE/"$TARGET"_"$TOOL_CHAIN_TAG"
199if [ ! -d "$BUILD_PATH/$Arch" ]; then
200  mkdir -p $BUILD_PATH/$Arch
201fi
202if [ -e "$BUILD_PATH/$Arch/BiosId.bin" ]; then
203  rm -f $BUILD_PATH/$Arch/BiosId.bin
204fi
205
206
207./$PLATFORM_PACKAGE/GenBiosId -i Conf/BiosId.env -o $BUILD_PATH/$Arch/BiosId.bin
208
209
210echo "Invoking EDK2 build..."
211build
212
213if [ $SpiLock == "1" ]; then
214  IFWI_HEADER_FILE=./$PLATFORM_PACKAGE/Stitch/IFWIHeader/IFWI_HEADER_SPILOCK.bin
215else
216  IFWI_HEADER_FILE=./$PLATFORM_PACKAGE/Stitch/IFWIHeader/IFWI_HEADER.bin
217fi
218
219echo $IFWI_HEADER_FILE
220
221##**********************************************************************
222## Post Build processing and cleanup
223##**********************************************************************
224
225echo Skip "Running fce..."
226
227echo Skip "Running KeyEnroll..."
228
229## Set the Board_Id, Build_Type, Version_Major, and Version_Minor environment variables
230VERSION_MAJOR=$(grep '^VERSION_MAJOR' Conf/BiosId.env | cut -d ' ' -f 3 | cut -c 1-4)
231VERSION_MINOR=$(grep '^VERSION_MINOR' Conf/BiosId.env | cut -d ' ' -f 3 | cut -c 1-2)
232BOARD_ID=$(grep '^BOARD_ID' Conf/BiosId.env | cut -d ' ' -f 3 | cut -c 1-7)
233BIOS_Name="$BOARD_ID"_"$Arch"_"$BUILD_TYPE"_"$VERSION_MAJOR"_"$VERSION_MINOR".ROM
234BIOS_ID="$BOARD_ID"_"$Arch"_"$BUILD_TYPE"_"$VERSION_MAJOR"_"$VERSION_MINOR"_GCC.bin
235cp -f $BUILD_PATH/FV/VLV.fd  $WORKSPACE/$BIOS_Name
236SEC_VERSION=1.0.2.1060v5
237cat $IFWI_HEADER_FILE ./Vlv2MiscBinariesPkg/SEC/$SEC_VERSION/VLV_SEC_REGION.bin ./Vlv2MiscBinariesPkg/SEC/$SEC_VERSION/Vacant.bin $BIOS_Name > ./$PLATFORM_PACKAGE/Stitch/$BIOS_ID
238
239
240echo Skip "Running BIOS_Signing ..."
241
242echo
243echo Build location:     $BUILD_PATH
244echo BIOS ROM Created:   $BIOS_Name
245echo
246echo -------------------- The EDKII BIOS build has successfully completed. --------------------
247echo
248