From 5a9745b9b4ed39a9fad6e3551484066ae2b48303 Mon Sep 17 00:00:00 2001 From: jljusten Date: Fri, 31 Dec 2010 07:55:11 +0000 Subject: [PATCH] OvmfPkg: Add build32.sh and build64.sh scripts These scripts are similar to those found under DuetPkg & UnixPkg. The scripts simplify building and running OVMF under systems that have the bash shell available. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11215 6f19259b-4bc3-4df7-8a09-765794883524 --- OvmfPkg/README | 13 +++++ OvmfPkg/build32.sh | 119 +++++++++++++++++++++++++++++++++++++++++++++ OvmfPkg/build64.sh | 119 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 251 insertions(+) create mode 100755 OvmfPkg/build32.sh create mode 100755 OvmfPkg/build64.sh diff --git a/OvmfPkg/README b/OvmfPkg/README index 4220d34c50..92ae76253d 100644 --- a/OvmfPkg/README +++ b/OvmfPkg/README @@ -91,3 +91,16 @@ http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=How_to_build_OVM -net nic,model=e1000 -net user,restrict=yes -net user,dhcpstart=10.0.2.10 -net dump,file=a.pcap * Enable 2 e1000 NICs with a DHCP server and restrict packet forwarding -net nic,model=e1000,addr=3 -net nic,model=e1000,addr=4 -net user,restrict=yes -net user,dhcpstart=10.0.2.10 + +=== Build Scripts === + +On environments with the bash shell you can use OvmfPkg/build32.sh and +OvmfPkg/build64.sh to simplify building and running OVMF. + +So, for example, to build + run OVMF X64: +$ OvmfPkg/build64.sh +$ OvmfPkg/build64.sh qemu + +And to run a 64-bit UEFI bootable ISO image: +$ OvmfPkg/build64.sh qemu -cdrom /path/to/disk-image.iso + diff --git a/OvmfPkg/build32.sh b/OvmfPkg/build32.sh new file mode 100755 index 0000000000..3b0516b0ef --- /dev/null +++ b/OvmfPkg/build32.sh @@ -0,0 +1,119 @@ +#!/bin/bash +# +# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
+# Copyright (c) 2010, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +set -e +shopt -s nocasematch + + +# +# Setup workspace if it is not set +# +if [ -z "$WORKSPACE" ] +then + echo Initializing workspace + if [ ! -e `pwd`/edksetup.sh ] + then + cd .. + fi +# This version is for the tools in the BaseTools project. +# this assumes svn pulls have the same root dir +# export EDK_TOOLS_PATH=`pwd`/../BaseTools +# This version is for the tools source in edk2 + export EDK_TOOLS_PATH=`pwd`/BaseTools + echo $EDK_TOOLS_PATH + source edksetup.sh BaseTools +else + echo Building from: $WORKSPACE +fi + +PROCESSOR=IA32 +Processor=Ia32 + +# +# Pick a default tool type for a given OS +# +TARGET_TOOLS=MYTOOLS +case `uname` in + CYGWIN*) echo Cygwin not fully supported yet. ;; + Darwin*) + Major=$(uname -r | cut -f 1 -d '.') + if [[ $Major == 9 ]] + then + echo OvmfPkg requires Snow Leopard or later OS + exit 1 + else + TARGET_TOOLS=XCODE32 + fi + ;; + Linux*) + TARGET_TOOLS=GCC44 + ;; + +esac + +BUILD_ROOT=$WORKSPACE/Build/Ovmf$Processor/DEBUG_"$TARGET_TOOLS" +FV_DIR=$BUILD_ROOT/FV +BUILD_ROOT_ARCH=$BUILD_ROOT/$PROCESSOR +QEMU_FIRMWARE_DIR=$BUILD_ROOT/QEMU + +if [[ ! -f `which build` || ! -f `which GenFv` ]]; +then + # build the tools if they don't yet exist. Bin scheme + echo Building tools as they are not in the path + make -C $WORKSPACE/BaseTools +elif [[ ( -f `which build` || -f `which GenFv` ) && ! -d $EDK_TOOLS_PATH/Source/C/bin ]]; +then + # build the tools if they don't yet exist. BinWrapper scheme + echo Building tools no $EDK_TOOLS_PATH/Source/C/bin directory + make -C $WORKSPACE/BaseTools +else + echo using prebuilt tools +fi + + +for arg in "$@" +do + if [[ $arg == qemu ]]; then + shift + if [[ ! -d $QEMU_FIRMWARE_DIR ]]; then + mkdir $QEMU_FIRMWARE_DIR + ln -s $FV_DIR/OVMF.fd $QEMU_FIRMWARE_DIR/bios.bin + ln -s $FV_DIR/CirrusLogic5446.rom $QEMU_FIRMWARE_DIR/vgabios-cirrus.bin + fi + QEMU_COMMAND="qemu -L $QEMU_FIRMWARE_DIR -hda fat:$BUILD_ROOT_ARCH $*" + echo Running: $QEMU_COMMAND + $QEMU_COMMAND + exit + fi + + if [[ $arg == cleanall ]]; then + make -C $WORKSPACE/BaseTools clean + build -p $WORKSPACE/OvmfPkg/OvmfPkg$Processor.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 clean + exit $? + fi + + if [[ $arg == clean ]]; then + build -p $WORKSPACE/OvmfPkg/OvmfPkg$Processor.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 clean + exit $? + fi +done + + +# +# Build the edk2 OvmfPkg +# +echo Running edk2 build for OvmfPkg$Processor +build -p $WORKSPACE/OvmfPkg/OvmfPkg$Processor.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 $* +exit $? + diff --git a/OvmfPkg/build64.sh b/OvmfPkg/build64.sh new file mode 100755 index 0000000000..8ff63c2fd9 --- /dev/null +++ b/OvmfPkg/build64.sh @@ -0,0 +1,119 @@ +#!/bin/bash +# +# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
+# Copyright (c) 2010, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +set -e +shopt -s nocasematch + + +# +# Setup workspace if it is not set +# +if [ -z "$WORKSPACE" ] +then + echo Initializing workspace + if [ ! -e `pwd`/edksetup.sh ] + then + cd .. + fi +# This version is for the tools in the BaseTools project. +# this assumes svn pulls have the same root dir +# export EDK_TOOLS_PATH=`pwd`/../BaseTools +# This version is for the tools source in edk2 + export EDK_TOOLS_PATH=`pwd`/BaseTools + echo $EDK_TOOLS_PATH + source edksetup.sh BaseTools +else + echo Building from: $WORKSPACE +fi + +PROCESSOR=X64 +Processor=X64 + +# +# Pick a default tool type for a given OS +# +TARGET_TOOLS=MYTOOLS +case `uname` in + CYGWIN*) echo Cygwin not fully supported yet. ;; + Darwin*) + Major=$(uname -r | cut -f 1 -d '.') + if [[ $Major == 9 ]] + then + echo OvmfPkg requires Snow Leopard or later OS + exit 1 + else + TARGET_TOOLS=XCODE32 + fi + ;; + Linux*) + TARGET_TOOLS=GCC44 + ;; + +esac + +BUILD_ROOT=$WORKSPACE/Build/Ovmf$Processor/DEBUG_"$TARGET_TOOLS" +FV_DIR=$BUILD_ROOT/FV +BUILD_ROOT_ARCH=$BUILD_ROOT/$PROCESSOR +QEMU_FIRMWARE_DIR=$BUILD_ROOT/QEMU + +if [[ ! -f `which build` || ! -f `which GenFv` ]]; +then + # build the tools if they don't yet exist. Bin scheme + echo Building tools as they are not in the path + make -C $WORKSPACE/BaseTools +elif [[ ( -f `which build` || -f `which GenFv` ) && ! -d $EDK_TOOLS_PATH/Source/C/bin ]]; +then + # build the tools if they don't yet exist. BinWrapper scheme + echo Building tools no $EDK_TOOLS_PATH/Source/C/bin directory + make -C $WORKSPACE/BaseTools +else + echo using prebuilt tools +fi + + +for arg in "$@" +do + if [[ $arg == qemu ]]; then + shift + if [[ ! -d $QEMU_FIRMWARE_DIR ]]; then + mkdir $QEMU_FIRMWARE_DIR + ln -s $FV_DIR/OVMF.fd $QEMU_FIRMWARE_DIR/bios.bin + ln -s $FV_DIR/CirrusLogic5446.rom $QEMU_FIRMWARE_DIR/vgabios-cirrus.bin + fi + QEMU_COMMAND="qemu-system-x86_64 -L $QEMU_FIRMWARE_DIR -hda fat:$BUILD_ROOT_ARCH $*" + echo Running: $QEMU_COMMAND + $QEMU_COMMAND + exit + fi + + if [[ $arg == cleanall ]]; then + make -C $WORKSPACE/BaseTools clean + build -p $WORKSPACE/OvmfPkg/OvmfPkg$Processor.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 clean + exit $? + fi + + if [[ $arg == clean ]]; then + build -p $WORKSPACE/OvmfPkg/OvmfPkg$Processor.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 clean + exit $? + fi +done + + +# +# Build the edk2 OvmfPkg +# +echo Running edk2 build for OvmfPkg$Processor +build -p $WORKSPACE/OvmfPkg/OvmfPkg$Processor.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 $* +exit $? +