diff options
-rw-r--r-- | OvmfPkg/README | 13 | ||||
-rwxr-xr-x | OvmfPkg/build32.sh | 119 | ||||
-rwxr-xr-x | OvmfPkg/build64.sh | 119 |
3 files changed, 251 insertions, 0 deletions
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.<BR> +# Copyright (c) 2010, Intel Corporation. All rights reserved.<BR> +# +# 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.<BR> +# Copyright (c) 2010, Intel Corporation. All rights reserved.<BR> +# +# 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 $? + |