bld_vlv.sh 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  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 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. set -e
  22. cd ..
  23. echo -e $(date)
  24. ##**********************************************************************
  25. ## Initial Setup
  26. ##**********************************************************************
  27. #build_threads=($NUMBER_OF_PROCESSORS)+1
  28. Build_Flags=
  29. exitCode=0
  30. Arch=X64
  31. SpiLock=0
  32. export CORE_PATH=$WORKSPACE/edk2
  33. export PLATFORM_PATH=$WORKSPACE/edk2-platforms/Platform/Intel/
  34. export SILICON_PATH=$WORKSPACE/edk2-platforms/Silicon/Intel/
  35. export BINARY_PATH=$WORKSPACE/edk2-non-osi/Silicon/Intel/
  36. export PACKAGES_PATH=$PLATFORM_PATH:$SILICON_PATH:$BINARY_PATH:$CORE_PATH
  37. ## Clean up previous build files.
  38. if [ -e $WORKSPACE/EDK2.log ]; then
  39. rm $WORKSPACE/EDK2.log
  40. fi
  41. if [ -e $WORKSPACE/Unitool.log ]; then
  42. rm $WORKSPACE/Unitool.log
  43. fi
  44. if [ -e $WORKSPACE/Conf/target.txt ]; then
  45. rm $WORKSPACE/Conf/target.txt
  46. fi
  47. if [ -e $WORKSPACE/Conf/tools_def.txt ]; then
  48. rm $WORKSPACE/Conf/tools_def.txt
  49. fi
  50. if [ -e $WORKSPACE/Conf/build_rule.txt ]; then
  51. rm $WORKSPACE/Conf/build_rule.txt
  52. fi
  53. ## Setup EDK environment. Edksetup puts new copies of target.txt, tools_def.txt, build_rule.txt in WorkSpace\Conf
  54. ## Also run edksetup as soon as possible to avoid it from changing environment variables we're overriding
  55. cd $CORE_PATH
  56. . edksetup.sh BaseTools
  57. make -C BaseTools
  58. ## Define platform specific environment variables.
  59. PLATFORM_NAME=Vlv2TbltDevicePkg
  60. PLATFORM_PACKAGE=Vlv2TbltDevicePkg
  61. PLATFORM_PKG_PATH=$PLATFORM_PATH/$PLATFORM_PACKAGE
  62. config_file=$PLATFORM_PKG_PATH/PlatformPkgConfig.dsc
  63. auto_config_inc=$PLATFORM_PKG_PATH/AutoPlatformCFG.txt
  64. cd $PLATFORM_PKG_PATH
  65. ## create new AutoPlatformCFG.txt file
  66. if [ -f "$auto_config_inc" ]; then
  67. rm $auto_config_inc
  68. fi
  69. touch $auto_config_inc
  70. ##**********************************************************************
  71. ## Parse command line arguments
  72. ##**********************************************************************
  73. ## Optional arguments
  74. for (( i=1; i<=$#; ))
  75. do
  76. if [ "$1" == "/?" ]; then
  77. Usage
  78. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Q" ]; then
  79. Build_Flags="$Build_Flags --quiet"
  80. shift
  81. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then
  82. Build_Flags="$Build_Flags -j EDK2.log"
  83. shift
  84. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then
  85. echo Removing previous build files ...
  86. if [ -d "Build" ]; then
  87. rm -r Build
  88. fi
  89. shift
  90. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then
  91. Arch=X64
  92. shift
  93. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
  94. Arch=IA32
  95. shift
  96. elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/YL" ]; then
  97. SpiLock=1
  98. shift
  99. else
  100. break
  101. fi
  102. done
  103. ## Required argument(s)
  104. if [ "$2" == "" ]; then
  105. Usage
  106. fi
  107. if [ $Arch == "IA32" ]; then
  108. echo DEFINE X64_CONFIG = FALSE >> $auto_config_inc
  109. else
  110. echo DEFINE X64_CONFIG = TRUE >> $auto_config_inc
  111. fi
  112. ## -- Build flags settings for each Platform --
  113. ## AlpineValley (ALPV): SVP_PF_BUILD = TRUE, ENBDT_PF_BUILD = FALSE, TABLET_PF_BUILD = FALSE, BYTI_PF_BUILD = FALSE, IVI_PF_BUILD = FALSE
  114. ## BayleyBay (BBAY): SVP_PF_BUILD = FALSE, ENBDT_PF_BUILD = TRUE, TABLET_PF_BUILD = FALSE, BYTI_PF_BUILD = FALSE, IVI_PF_BUILD = FALSE
  115. ## BayLake (BLAK): SVP_PF_BUILD = FALSE, ENBDT_PF_BUILD = FALSE, TABLET_PF_BUILD = TRUE, BYTI_PF_BUILD = FALSE, IVI_PF_BUILD = FALSE
  116. ## Bakersport (BYTI): SVP_PF_BUILD = FALSE, ENBDT_PF_BUILD = FALSE, TABLET_PF_BUILD = FALSE, BYTI_PF_BUILD = TRUE, IVI_PF_BUILD = FALSE
  117. ## Crestview Hills (CVHS): SVP_PF_BUILD = FALSE, ENBDT_PF_BUILD = FALSE, TABLET_PF_BUILD = FALSE, BYTI_PF_BUILD = TRUE, IVI_PF_BUILD = TRUE
  118. ## FFD8 (BLAK): SVP_PF_BUILD = FALSE, ENBDT_PF_BUILD = FALSE, TABLET_PF_BUILD = TRUE, BYTI_PF_BUILD = FALSE, IVI_PF_BUILD = FALSE
  119. echo "Setting $1 platform configuration and BIOS ID..."
  120. if [ "$(echo $1 | tr 'a-z' 'A-Z')" == "MNW2" ]; then
  121. echo DEFINE ENBDT_PF_BUILD = TRUE >> $auto_config_inc
  122. else
  123. echo "Error - Unsupported PlatformType: $1"
  124. Usage
  125. fi
  126. if [ "$(echo $2 | tr 'a-z' 'A-Z')" == "RELEASE" ]; then
  127. export TARGET=RELEASE
  128. else
  129. export TARGET=DEBUG
  130. fi
  131. ##**********************************************************************
  132. ## Additional EDK Build Setup/Configuration
  133. ##**********************************************************************
  134. echo "Ensuring correct build directory is present for GenBiosId..."
  135. echo Modifying Conf files for this build...
  136. ## Remove lines with these tags from target.txt
  137. sed -i '/^ACTIVE_PLATFORM/d' $WORKSPACE/Conf/target.txt
  138. sed -i '/^TARGET /d' $WORKSPACE/Conf/target.txt
  139. sed -i '/^TARGET_ARCH/d' $WORKSPACE/Conf/target.txt
  140. sed -i '/^TOOL_CHAIN_TAG/d' $WORKSPACE/Conf/target.txt
  141. sed -i '/^MAX_CONCURRENT_THREAD_NUMBER/d' $WORKSPACE/Conf/target.txt
  142. gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
  143. case $gcc_version in
  144. [1-3].*|4.[0-7].*)
  145. echo MNW2 requires GCC4.8 or later
  146. exit 1
  147. ;;
  148. 4.8.*)
  149. TARGET_TOOLS=GCC48
  150. ;;
  151. 4.9.*|6.[0-2].*)
  152. TARGET_TOOLS=GCC49
  153. ;;
  154. *)
  155. TARGET_TOOLS=GCC5
  156. ;;
  157. esac
  158. ACTIVE_PLATFORM=$PLATFORM_PKG_PATH/PlatformPkgGcc"$Arch".dsc
  159. export TOOL_CHAIN_TAG=$TARGET_TOOLS
  160. MAX_CONCURRENT_THREAD_NUMBER=8
  161. echo ACTIVE_PLATFORM = $ACTIVE_PLATFORM >> $WORKSPACE/Conf/target.txt
  162. echo TARGET = $TARGET >> $WORKSPACE/Conf/target.txt
  163. echo TOOL_CHAIN_TAG = $TOOL_CHAIN_TAG >> $WORKSPACE/Conf/target.txt
  164. echo MAX_CONCURRENT_THREAD_NUMBER = $MAX_CONCURRENT_THREAD_NUMBER >> $WORKSPACE/Conf/target.txt
  165. if [ $Arch == "IA32" ]; then
  166. echo TARGET_ARCH = IA32 >> $WORKSPACE/Conf/target.txt
  167. else
  168. echo TARGET_ARCH = IA32 X64 >> $WORKSPACE/Conf/target.txt
  169. fi
  170. ## Set and Create $BUILD_PATH if necessary
  171. if [ ! -d ${WORKSPACE}/Build ]; then
  172. mkdir ${WORKSPACE}/Build
  173. fi
  174. if [ $Arch == "IA32" ]; then
  175. if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}IA32 ]; then
  176. mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}IA32
  177. fi
  178. BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}IA32/${TARGET}_${TOOL_CHAIN_TAG}
  179. else
  180. if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME} ]; then
  181. mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}
  182. fi
  183. BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}/${TARGET}_${TOOL_CHAIN_TAG}
  184. fi
  185. if [ ! -d $BUILD_PATH ]; then
  186. mkdir $BUILD_PATH
  187. fi
  188. ##**********************************************************************
  189. ## Generate BIOS ID
  190. ##**********************************************************************
  191. echo BOARD_ID = MNW2MAX > $BUILD_PATH/BiosId.env
  192. echo BOARD_REV = 1 >> $BUILD_PATH/BiosId.env
  193. if [ $Arch == "IA32" ]; then
  194. echo BOARD_EXT = I32 >> $BUILD_PATH/BiosId.env
  195. fi
  196. if [ $Arch == "X64" ]; then
  197. echo BOARD_EXT = X64 >> $BUILD_PATH/BiosId.env
  198. fi
  199. echo VERSION_MAJOR = 0090 >> $BUILD_PATH/BiosId.env
  200. if [ $TARGET == "DEBUG" ]; then
  201. echo BUILD_TYPE = D >> $BUILD_PATH/BiosId.env
  202. fi
  203. if [ $TARGET == "RELEASE" ]; then
  204. echo BUILD_TYPE = R >> $BUILD_PATH/BiosId.env
  205. fi
  206. echo VERSION_MINOR = 01 >> $BUILD_PATH/BiosId.env
  207. 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
  208. ##**********************************************************************
  209. ## Build BIOS
  210. ##**********************************************************************
  211. echo "Invoking EDK2 build..."
  212. build
  213. ##**********************************************************************
  214. ## Post Build processing and cleanup
  215. ##**********************************************************************
  216. echo Skip "Running fce..."
  217. cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM
  218. ##**********************************************************************
  219. ## Build Capsules
  220. ##**********************************************************************
  221. build -p $PLATFORM_PKG_PATH/PlatformCapsuleGcc.dsc
  222. echo
  223. echo -------------------- The EDKII BIOS build has successfully completed. --------------------
  224. echo