]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/build.sh: Add features and replace build32/64.sh
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Sun, 9 Jan 2011 03:50:21 +0000 (03:50 +0000)
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Sun, 9 Jan 2011 03:50:21 +0000 (03:50 +0000)
Add a single build.sh to replace build32.sh & build64.sh.

The script watches for various parameters:
-a: allows selecting IA32 or X64 (default)
-b: allows selecting RELEASE or DEBUG (default)
-t: allows selecting the toolchain

When running qemu, the script doesn't always add -hda now.
If the user provides a disk parameter (for example, -fda, -hda
or -cdrom), then -hda will not be added to the qemu command line.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11238 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/README
OvmfPkg/build.sh [new file with mode: 0755]
OvmfPkg/build32.sh [deleted file]
OvmfPkg/build64.sh [deleted file]

index c37bfb6316f0cb82e48d7c0ac5c8f9f88533e2ba..e4a4b1f5a1917d5f9a2f7d0c7f1673e233d0c8d5 100644 (file)
@@ -28,10 +28,9 @@ Current capabilities:
 \r
 Pre-requisites:\r
 * Build environment capable of build the edk2 MdeModulePkg.\r
 \r
 Pre-requisites:\r
 * Build environment capable of build the edk2 MdeModulePkg.\r
-* A properly configured ASL compiler\r
-  * Intel ASL compiler: Available from http://www.acpica.org\r
-      or\r
-  * Microsoft ASL compiler: Available from http://www.acpi.info\r
+* A properly configured ASL compiler:\r
+  - Intel ASL compiler: Available from http://www.acpica.org\r
+  - Microsoft ASL compiler: Available from http://www.acpi.info\r
 \r
 Update Conf/target.txt ACTIVE_PLATFORM for OVMF:\r
                              PEI arch   DXE arch   UEFI interfaces\r
 \r
 Update Conf/target.txt ACTIVE_PLATFORM for OVMF:\r
                              PEI arch   DXE arch   UEFI interfaces\r
@@ -50,7 +49,7 @@ under the $WORKSPACE/Build/*/*/FV directory.  The actual path will
 depend on how your build is configured.  You can expect to find\r
 these binary outputs:\r
 * OVMF.FD\r
 depend on how your build is configured.  You can expect to find\r
 these binary outputs:\r
 * OVMF.FD\r
-  * Please note!  This filename has changed.  Older releases used OVMF.Fv.\r
+  - Please note!  This filename has changed.  Older releases used OVMF.Fv.\r
 * CirrusLogic5446.rom\r
 \r
 More information on building OVMF can be found at:\r
 * CirrusLogic5446.rom\r
 \r
 More information on building OVMF can be found at:\r
@@ -76,15 +75,18 @@ http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=How_to_build_OVM
 \r
 === Build Scripts ===\r
 \r
 \r
 === Build Scripts ===\r
 \r
-On environments with the bash shell you can use OvmfPkg/build32.sh and\r
-OvmfPkg/build64.sh to simplify building and running OVMF.\r
+On systems with the bash shell you can use OvmfPkg/build.sh to simplify\r
+building and running OVMF.\r
 \r
 So, for example, to build + run OVMF X64:\r
 \r
 So, for example, to build + run OVMF X64:\r
-$ OvmfPkg/build64.sh\r
-$ OvmfPkg/build64.sh qemu\r
+$ OvmfPkg/build.sh -a X64\r
+$ OvmfPkg/build.sh -a X64 qemu\r
 \r
 And to run a 64-bit UEFI bootable ISO image:\r
 \r
 And to run a 64-bit UEFI bootable ISO image:\r
-$ OvmfPkg/build64.sh qemu -cdrom /path/to/disk-image.iso\r
+$ OvmfPkg/build.sh -a X64 qemu -cdrom /path/to/disk-image.iso\r
+\r
+To build a 32-bit OVMF without debug serial messages using GCC 4.5:\r
+$ OvmfPkg/build.sh -a IA32 -b RELEASE -t GCC45\r
 \r
 === Network Support ===\r
 \r
 \r
 === Network Support ===\r
 \r
diff --git a/OvmfPkg/build.sh b/OvmfPkg/build.sh
new file mode 100755 (executable)
index 0000000..0ddef04
--- /dev/null
@@ -0,0 +1,194 @@
+#!/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
+
+#
+# Configure defaults for various options
+#
+
+PROCESSOR=X64
+BUILDTARGET=DEBUG
+BUILD_OPTIONS=
+LAST_ARG=
+RUN_QEMU=no
+
+#
+# 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
+
+#
+# Scan command line to override defaults
+#
+
+for arg in "$@"
+do
+  if [ -z "$LAST_ARG" ]; then
+    case $arg in
+      -a|-b|-t)
+        LAST_ARG=$arg
+        ;;
+      qemu)
+        RUN_QEMU=yes
+        shift
+        break
+        ;;
+      *)
+        BUILD_OPTIONS="$BUILD_OPTIONS $arg"
+        ;;
+    esac
+  else
+    case $LAST_ARG in
+      -a)
+        PROCESSOR=$arg
+        ;;
+      -b)
+        BUILDTARGET=$arg
+        ;;
+      -t)
+        TARGET_TOOLS=$arg
+        ;;
+      *)
+        BUILD_OPTIONS="$BUILD_OPTIONS $arg"
+        ;;
+    esac
+    LAST_ARG=
+  fi
+  shift
+done
+
+case $PROCESSOR in
+  IA32)
+    Processor=Ia32
+    QEMU_COMMAND=qemu
+    ;;
+  X64)
+    Processor=X64
+    QEMU_COMMAND=qemu-system-x86_64
+    ;;
+  *)
+    echo Unsupported processor architecture: $PROCESSOR
+    echo Only IA32 or X64 is supported
+    exit 1
+    ;;
+esac
+
+ADD_QEMU_HDA=yes
+for arg in "$@"
+do
+  case $arg in
+    -hd[a-d]|-fd[ab]|-cdrom)
+      ADD_QEMU_HDA=no
+      break
+      ;;
+  esac
+done
+
+#
+# Uncomment this block for parameter parsing debug
+#
+#echo RUN_QEMU=$RUN_QEMU
+#echo BUILD_OPTIONS=$BUILD_OPTIONS
+#echo BUILDTARGET=$BUILDTARGET
+#echo TARGET_TOOLS=$TARGET_TOOLS
+#echo PROCESSOR=$PROCESSOR
+#echo Remaining for qemu: $*
+#exit 1
+
+BUILD_ROOT=$WORKSPACE/Build/Ovmf$Processor/"$BUILDTARGET"_"$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
+
+
+if [[ "$RUN_QEMU" == "yes" ]]; then
+  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
+  if [[ "$ADD_QEMU_HDA" == "yes" ]]; then
+    AUTO_QEMU_HDA="-hda fat:$BUILD_ROOT_ARCH"
+  else
+    AUTO_QEMU_HDA=
+  fi
+  QEMU_COMMAND="$QEMU_COMMAND -L $QEMU_FIRMWARE_DIR $AUTO_QEMU_HDA $*"
+  echo Running: $QEMU_COMMAND
+  $QEMU_COMMAND
+  exit $?
+fi
+
+#
+# Build the edk2 OvmfPkg
+#
+echo Running edk2 build for OvmfPkg$Processor
+build -p $WORKSPACE/OvmfPkg/OvmfPkg$Processor.dsc $BUILD_OPTIONS -a $PROCESSOR -b $BUILDTARGET -t $TARGET_TOOLS
+exit $?
+
diff --git a/OvmfPkg/build32.sh b/OvmfPkg/build32.sh
deleted file mode 100755 (executable)
index 3b0516b..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/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
deleted file mode 100755 (executable)
index 8ff63c2..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/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 $?
-