Home | History | Annotate | Download | only in DuetPkg
      1 #!/bin/bash
      2 #
      3 # Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
      4 # Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
      5 #
      6 # This program and the accompanying materials
      7 # are licensed and made available under the terms and conditions of the BSD License
      8 # which accompanies this distribution.  The full text of the license may be found at
      9 # http://opensource.org/licenses/bsd-license.php
     10 #
     11 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 #
     14 
     15 set -e
     16 shopt -s nocasematch
     17 
     18 
     19 #
     20 # Setup workspace if it is not set
     21 #
     22 if [ -z "$WORKSPACE" ]
     23 then
     24   echo Initializing workspace
     25   if [ ! -e `pwd`/edksetup.sh ]
     26   then
     27     cd ..
     28   fi
     29 # This version is for the tools in the BaseTools project.
     30 # this assumes svn pulls have the same root dir
     31 #  export EDK_TOOLS_PATH=`pwd`/../BaseTools
     32 # This version is for the tools source in edk2
     33   export EDK_TOOLS_PATH=`pwd`/BaseTools
     34   echo $EDK_TOOLS_PATH
     35   source edksetup.sh BaseTools
     36 else
     37   echo Building from: $WORKSPACE
     38 fi
     39 
     40 PROCESSOR=X64
     41 
     42 #
     43 # Pick a default tool type for a given OS
     44 #
     45 TARGET_TOOLS=MYTOOLS
     46 case `uname` in
     47   CYGWIN*) echo Cygwin not fully supported yet. ;;
     48   Darwin*)
     49       Major=$(uname -r | cut -f 1 -d '.')
     50       if [[ $Major == 9 ]]
     51       then
     52         echo DuetPkg requires Snow Leopard or later OS
     53         exit 1
     54       else
     55         TARGET_TOOLS=XCODE32
     56       fi
     57       ;;
     58   Linux*)
     59     TARGET_TOOLS=GCC44
     60     ;;
     61 
     62 esac
     63 
     64 BUILD_ROOT_ARCH=$WORKSPACE/Build/DuetPkg$PROCESSOR/DEBUG_"$TARGET_TOOLS"/$PROCESSOR
     65 FLOPPY_IMAGE=$WORKSPACE/Build/DuetPkg$PROCESSOR/floppy.img
     66 
     67 if  [[ ! -f `which build` || ! -f `which GenFv` ]];
     68 then
     69   # build the tools if they don't yet exist. Bin scheme
     70   echo Building tools as they are not in the path
     71   make -C $WORKSPACE/BaseTools
     72 elif [[ ( -f `which build` ||  -f `which GenFv` )  && ! -d  $EDK_TOOLS_PATH/Source/C/bin ]];
     73 then
     74   # build the tools if they don't yet exist. BinWrapper scheme
     75   echo Building tools no $EDK_TOOLS_PATH/Source/C/bin directory
     76   make -C $WORKSPACE/BaseTools
     77 else
     78   echo using prebuilt tools
     79 fi
     80 
     81 
     82 for arg in "$@"
     83 do
     84   if [[ $arg == qemu ]]; then
     85     shift
     86     qemu-system-x86_64 -fda $FLOPPY_IMAGE -boot a $*
     87     exit
     88   fi
     89 
     90   if [[ $arg == cleanall ]]; then
     91     make -C $WORKSPACE/BaseTools clean
     92     build -p $WORKSPACE/DuetPkg/DuetPkg$PROCESSOR.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 clean
     93     exit $?
     94   fi
     95 
     96   if [[ $arg == clean ]]; then
     97     build -p $WORKSPACE/DuetPkg/DuetPkg$PROCESSOR.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 clean
     98     exit $?
     99   fi
    100 done
    101 
    102 
    103 #
    104 # Build the edk2 DuetPkg
    105 #
    106 echo Running edk2 build for DuetPkg$PROCESSOR
    107 build -p $WORKSPACE/DuetPkg/DuetPkg$PROCESSOR.dsc -a $PROCESSOR -t $TARGET_TOOLS -n 3 $*
    108 echo Running DuetPkg/PostBuild.sh
    109 $WORKSPACE/DuetPkg/PostBuild.sh $PROCESSOR $TARGET_TOOLS
    110 echo Running DuetPkg/CreateBootDisk.sh
    111 
    112 $WORKSPACE/DuetPkg/CreateBootDisk.sh file $FLOPPY_IMAGE /dev/null FAT12 $PROCESSOR $TARGET_TOOLS
    113 exit $?
    114 
    115