123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- #!/usr/bin/env bash
- ##**********************************************************************
- ## Function define
- ##**********************************************************************
- function Usage() {
- echo
- echo "***************************************************************************"
- echo "Build BIOS rom for VLV platforms."
- echo
- echo "Usage: bld_vlv.sh [options] PlatformType [Build Target]"
- echo
- echo " /c CleanAll"
- echo " /l Generate build log file"
- echo " /y Generate build report file"
- echo " /m Enable multi-processor build"
- echo " /IA32 Set Arch to IA32 (default: X64)"
- echo " /X64 Set Arch to X64 (default: X64)"
- echo
- echo " Platform Types: MNW2"
- echo " Build Targets: Debug, Release (default: Debug)"
- echo
- echo "Examples:"
- echo " bld_vlv.sh MNW2 : X64 Debug build for MinnowMax"
- echo " bld_vlv.sh /IA32 MNW2 release : IA32 Release build for MinnowMax"
- echo "***************************************************************************"
- exit 0
- }
- set -e
- cd ..
- echo -e $(date)
- ##**********************************************************************
- ## Initial Setup
- ##**********************************************************************
- #build_threads=($NUMBER_OF_PROCESSORS)+1
- Build_Flags=
- exitCode=0
- build_threads=1
- Arch=X64
- GenLog=FALSE
- GenReport=FALSE
- Clean=FALSE
- export CORE_PATH=$WORKSPACE/edk2
- export PLATFORM_PATH=$WORKSPACE/edk2-platforms/Platform/Intel/
- export SILICON_PATH=$WORKSPACE/edk2-platforms/Silicon/Intel/
- export BINARY_PATH=$WORKSPACE/edk2-non-osi/Silicon/Intel/
- export PACKAGES_PATH=$PLATFORM_PATH:$SILICON_PATH:$BINARY_PATH:$CORE_PATH
- ## Setup EDK environment. Edksetup puts new copies of target.txt, tools_def.txt, build_rule.txt in WorkSpace\Conf
- ## Also run edksetup as soon as possible to avoid it from changing environment variables we're overriding
- cd $CORE_PATH
- . edksetup.sh BaseTools
- make -C BaseTools
- ## Define platform specific environment variables.
- PLATFORM_NAME=Vlv2TbltDevicePkg
- PLATFORM_PACKAGE=Vlv2TbltDevicePkg
- PLATFORM_PKG_PATH=$PLATFORM_PATH/$PLATFORM_PACKAGE
- cd $PLATFORM_PKG_PATH
- ##**********************************************************************
- ## Parse command line arguments
- ##**********************************************************************
- ## Optional arguments
- for (( i=1; i<=$#; ))
- do
- if [ "$1" == "/?" ]; then
- Usage
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then
- GenLog=TRUE
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ]; then
- GenReport=TRUE
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ]; then
- build_threads=8
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then
- Clean=TRUE
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then
- Arch=X64
- shift
- elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
- Arch=IA32
- shift
- else
- break
- fi
- done
- ## Required argument(s)
- if [ "$2" == "" ]; then
- Usage
- fi
- echo "Setting $1 platform configuration and BIOS ID..."
- if [ "$(echo $2 | tr 'a-z' 'A-Z')" == "RELEASE" ]; then
- export TARGET=RELEASE
- else
- export TARGET=DEBUG
- fi
- ##**********************************************************************
- ## Detect TOOL_CHAIN_TAG
- ##**********************************************************************
- gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
- case $gcc_version in
- [1-3].*|4.[0-7].*)
- echo MNW2 requires GCC4.8 or later
- exit 1
- ;;
- 4.8.*)
- export TOOL_CHAIN_TAG=GCC48
- ;;
- 4.9.*|6.[0-2].*)
- export TOOL_CHAIN_TAG=GCC49
- ;;
- *)
- export TOOL_CHAIN_TAG=GCC5
- ;;
- esac
- ##**********************************************************************
- ## Generate $BUILD_PATH and make sure the directory exists
- ##**********************************************************************
- if [ ! -d ${WORKSPACE}/Build ]; then
- mkdir ${WORKSPACE}/Build
- fi
- if [ $Arch == "IA32" ]; then
- if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}IA32 ]; then
- mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}IA32
- fi
- BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}IA32/${TARGET}_${TOOL_CHAIN_TAG}
- else
- if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME} ]; then
- mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}
- fi
- BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}/${TARGET}_${TOOL_CHAIN_TAG}
- fi
- if [ ! -d $BUILD_PATH ]; then
- mkdir $BUILD_PATH
- fi
- ##**********************************************************************
- ## Check for clean operation
- ##**********************************************************************
- if [ $Clean == "TRUE" ]; then
- echo Removing previous build files ...
- if [ -d ${BUILD_PATH} ]; then
- rm -r ${BUILD_PATH}
- fi
- if [ -d ${WORKSPACE}/Conf/.cache ]; then
- rm -r ${WORKSPACE}/Conf/.cache
- fi
- exit 0
- fi
- ##**********************************************************************
- ## Generate Build_Flags
- ##**********************************************************************
- Build_Flags="$Build_Flags -b $TARGET"
- if [ $Arch == "IA32" ]; then
- Build_Flags="$Build_Flags -a IA32"
- else
- Build_Flags="$Build_Flags -a IA32 -a X64"
- fi
- Build_Flags="$Build_Flags -t $TOOL_CHAIN_TAG"
- Build_Flags="$Build_Flags -p ${PLATFORM_PKG_PATH}/PlatformPkgGcc${Arch}.dsc"
- Build_Flags="$Build_Flags -n $build_threads"
- if [ $GenLog == "TRUE" ]; then
- Build_Flags="$Build_Flags -j ${BUILD_PATH}/${PLATFORM_NAME}.log"
- fi
- if [ $GenReport == "TRUE" ]; then
- Build_Flags="$Build_Flags -y ${BUILD_PATH}/${PLATFORM_NAME}.report"
- fi
- ##**********************************************************************
- ## Generate BIOS ID
- ##**********************************************************************
- echo BOARD_ID = MNW2MAX > $BUILD_PATH/BiosId.env
- echo BOARD_REV = 1 >> $BUILD_PATH/BiosId.env
- if [ $Arch == "IA32" ]; then
- echo BOARD_EXT = I32 >> $BUILD_PATH/BiosId.env
- fi
- if [ $Arch == "X64" ]; then
- echo BOARD_EXT = X64 >> $BUILD_PATH/BiosId.env
- fi
- echo VERSION_MAJOR = 0090 >> $BUILD_PATH/BiosId.env
- if [ $TARGET == "DEBUG" ]; then
- echo BUILD_TYPE = D >> $BUILD_PATH/BiosId.env
- fi
- if [ $TARGET == "RELEASE" ]; then
- echo BUILD_TYPE = R >> $BUILD_PATH/BiosId.env
- fi
- echo VERSION_MINOR = 01 >> $BUILD_PATH/BiosId.env
- python $WORKSPACE/edk2-platforms/Platform/Intel/Tools/GenBiosId/GenBiosId.py -i $BUILD_PATH/BiosId.env -o $BUILD_PATH/BiosId.bin -ot $BUILD_PATH/BiosId.txt
- ##**********************************************************************
- ## Build BIOS
- ##**********************************************************************
- echo "Invoking EDK2 build..."
- echo build $Build_Flags
- build $Build_Flags
- ##**********************************************************************
- ## Post Build processing and cleanup
- ##**********************************************************************
- echo Skip "Running fce..."
- cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM
- ##**********************************************************************
- ## Build Capsules
- ##**********************************************************************
- build -p $PLATFORM_PKG_PATH/PlatformCapsuleGcc.dsc
- echo
- echo -------------------- The EDKII BIOS build has successfully completed. --------------------
- echo
|