bld_vlv.sh 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. #!/usr/bin/env bash
  2. ##**********************************************************************
  3. ## Function define
  4. ##**********************************************************************
  5. function Usage() {
  6. echo
  7. echo "***************************************************************************"
  8. echo "Build BIOS rom for VLV platforms."
  9. echo
  10. echo "Usage: bld_vlv.sh [options] PlatformType [Build Target]"
  11. echo
  12. echo " /c CleanAll"
  13. echo " /l Generate build log file"
  14. echo " /y Generate build report file"
  15. echo " /m Enable multi-processor build"
  16. echo " /IA32 Set Arch to IA32 (default: X64)"
  17. echo " /X64 Set Arch to X64 (default: X64)"
  18. echo
  19. echo " Platform Types: MNW2"
  20. echo " Build Targets: Debug, Release (default: Debug)"
  21. echo
  22. echo "Examples:"
  23. echo " bld_vlv.sh MNW2 : X64 Debug build for MinnowMax"
  24. echo " bld_vlv.sh /IA32 MNW2 release : IA32 Release build for MinnowMax"
  25. echo "***************************************************************************"
  26. exit 0
  27. }
  28. set -e
  29. cd ..
  30. echo -e $(date)
  31. ##**********************************************************************
  32. ## Initial Setup
  33. ##**********************************************************************
  34. #build_threads=($NUMBER_OF_PROCESSORS)+1
  35. Build_Flags=
  36. exitCode=0
  37. build_threads=1
  38. Arch=X64
  39. GenLog=FALSE
  40. GenReport=FALSE
  41. Clean=FALSE
  42. export CORE_PATH=$WORKSPACE/edk2
  43. export PLATFORM_PATH=$WORKSPACE/edk2-platforms/Platform/Intel/
  44. export SILICON_PATH=$WORKSPACE/edk2-platforms/Silicon/Intel/
  45. export BINARY_PATH=$WORKSPACE/edk2-non-osi/Silicon/Intel/
  46. export PACKAGES_PATH=$PLATFORM_PATH:$SILICON_PATH:$BINARY_PATH:$CORE_PATH
  47. ## Setup EDK environment. Edksetup puts new copies of target.txt, tools_def.txt, build_rule.txt in WorkSpace\Conf
  48. ## Also run edksetup as soon as possible to avoid it from changing environment variables we're overriding
  49. cd $CORE_PATH
  50. . edksetup.sh BaseTools
  51. make -C BaseTools
  52. ## Define platform specific environment variables.
  53. PLATFORM_NAME=Vlv2TbltDevicePkg
  54. PLATFORM_PACKAGE=Vlv2TbltDevicePkg
  55. PLATFORM_PKG_PATH=$PLATFORM_PATH/$PLATFORM_PACKAGE
  56. cd $PLATFORM_PKG_PATH
  57. ##**********************************************************************
  58. ## Parse command line arguments
  59. ##**********************************************************************
  60. ## Optional arguments
  61. for (( i=1; i<=$#; ))
  62. do
  63. if [ "$1" == "/?" ]; then
  64. Usage
  65. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then
  66. GenLog=TRUE
  67. shift
  68. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ]; then
  69. GenReport=TRUE
  70. shift
  71. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ]; then
  72. build_threads=8
  73. shift
  74. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then
  75. Clean=TRUE
  76. shift
  77. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then
  78. Arch=X64
  79. shift
  80. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
  81. Arch=IA32
  82. shift
  83. else
  84. break
  85. fi
  86. done
  87. ## Required argument(s)
  88. if [ "$2" == "" ]; then
  89. Usage
  90. fi
  91. echo "Setting $1 platform configuration and BIOS ID..."
  92. if [ "$(echo $2 | tr 'a-z' 'A-Z')" == "RELEASE" ]; then
  93. export TARGET=RELEASE
  94. else
  95. export TARGET=DEBUG
  96. fi
  97. ##**********************************************************************
  98. ## Detect TOOL_CHAIN_TAG
  99. ##**********************************************************************
  100. gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
  101. case $gcc_version in
  102. [1-3].*|4.[0-7].*)
  103. echo MNW2 requires GCC4.8 or later
  104. exit 1
  105. ;;
  106. 4.8.*)
  107. export TOOL_CHAIN_TAG=GCC48
  108. ;;
  109. 4.9.*|6.[0-2].*)
  110. export TOOL_CHAIN_TAG=GCC49
  111. ;;
  112. *)
  113. export TOOL_CHAIN_TAG=GCC5
  114. ;;
  115. esac
  116. ##**********************************************************************
  117. ## Generate $BUILD_PATH and make sure the directory exists
  118. ##**********************************************************************
  119. if [ ! -d ${WORKSPACE}/Build ]; then
  120. mkdir ${WORKSPACE}/Build
  121. fi
  122. if [ $Arch == "IA32" ]; then
  123. if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}IA32 ]; then
  124. mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}IA32
  125. fi
  126. BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}IA32/${TARGET}_${TOOL_CHAIN_TAG}
  127. else
  128. if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME} ]; then
  129. mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}
  130. fi
  131. BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}/${TARGET}_${TOOL_CHAIN_TAG}
  132. fi
  133. if [ ! -d $BUILD_PATH ]; then
  134. mkdir $BUILD_PATH
  135. fi
  136. ##**********************************************************************
  137. ## Check for clean operation
  138. ##**********************************************************************
  139. if [ $Clean == "TRUE" ]; then
  140. echo Removing previous build files ...
  141. if [ -d ${BUILD_PATH} ]; then
  142. rm -r ${BUILD_PATH}
  143. fi
  144. if [ -d ${WORKSPACE}/Conf/.cache ]; then
  145. rm -r ${WORKSPACE}/Conf/.cache
  146. fi
  147. exit 0
  148. fi
  149. ##**********************************************************************
  150. ## Generate Build_Flags
  151. ##**********************************************************************
  152. Build_Flags="$Build_Flags -b $TARGET"
  153. if [ $Arch == "IA32" ]; then
  154. Build_Flags="$Build_Flags -a IA32"
  155. else
  156. Build_Flags="$Build_Flags -a IA32 -a X64"
  157. fi
  158. Build_Flags="$Build_Flags -t $TOOL_CHAIN_TAG"
  159. Build_Flags="$Build_Flags -p ${PLATFORM_PKG_PATH}/PlatformPkgGcc${Arch}.dsc"
  160. Build_Flags="$Build_Flags -n $build_threads"
  161. if [ $GenLog == "TRUE" ]; then
  162. Build_Flags="$Build_Flags -j ${BUILD_PATH}/${PLATFORM_NAME}.log"
  163. fi
  164. if [ $GenReport == "TRUE" ]; then
  165. Build_Flags="$Build_Flags -y ${BUILD_PATH}/${PLATFORM_NAME}.report"
  166. fi
  167. ##**********************************************************************
  168. ## Generate BIOS ID
  169. ##**********************************************************************
  170. echo BOARD_ID = MNW2MAX > $BUILD_PATH/BiosId.env
  171. echo BOARD_REV = 1 >> $BUILD_PATH/BiosId.env
  172. if [ $Arch == "IA32" ]; then
  173. echo BOARD_EXT = I32 >> $BUILD_PATH/BiosId.env
  174. fi
  175. if [ $Arch == "X64" ]; then
  176. echo BOARD_EXT = X64 >> $BUILD_PATH/BiosId.env
  177. fi
  178. echo VERSION_MAJOR = 0090 >> $BUILD_PATH/BiosId.env
  179. if [ $TARGET == "DEBUG" ]; then
  180. echo BUILD_TYPE = D >> $BUILD_PATH/BiosId.env
  181. fi
  182. if [ $TARGET == "RELEASE" ]; then
  183. echo BUILD_TYPE = R >> $BUILD_PATH/BiosId.env
  184. fi
  185. echo VERSION_MINOR = 01 >> $BUILD_PATH/BiosId.env
  186. 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
  187. ##**********************************************************************
  188. ## Build BIOS
  189. ##**********************************************************************
  190. echo "Invoking EDK2 build..."
  191. echo build $Build_Flags
  192. build $Build_Flags
  193. ##**********************************************************************
  194. ## Post Build processing and cleanup
  195. ##**********************************************************************
  196. echo Skip "Running fce..."
  197. cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM
  198. ##**********************************************************************
  199. ## Build Capsules
  200. ##**********************************************************************
  201. build -p $PLATFORM_PKG_PATH/PlatformCapsuleGcc.dsc
  202. echo
  203. echo -------------------- The EDKII BIOS build has successfully completed. --------------------
  204. echo