diff options
Diffstat (limited to 'uefi-tools/uefi-build.sh')
-rwxr-xr-x | uefi-tools/uefi-build.sh | 398 |
1 files changed, 0 insertions, 398 deletions
diff --git a/uefi-tools/uefi-build.sh b/uefi-tools/uefi-build.sh deleted file mode 100755 index 7fec3d08..00000000 --- a/uefi-tools/uefi-build.sh +++ /dev/null @@ -1,398 +0,0 @@ -#!/bin/bash - -# -# Board Configuration Section -# =========================== -# -# Board configuration moved to parse-platforms.py and platforms.config. -# -# No need to edit below unless you are changing script functionality. -# - -unset WORKSPACE EDK_TOOLS_DIR MAKEFLAGS - -TOOLS_DIR="`dirname $0`" -export TOOLS_DIR -. "$TOOLS_DIR"/common-functions -PLATFORM_CONFIG="" -VERBOSE=0 -ATF_DIR= -TOS_DIR= -TOOLCHAIN= -OPENSSL_CONFIGURED=FALSE - -# Number of threads to use for build -export NUM_THREADS=$((`getconf _NPROCESSORS_ONLN` + 1)) - -function do_build -{ - PLATFORM_NAME="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o longname`" - PLATFORM_PREBUILD_CMDS="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o prebuild_cmds`" - PLATFORM_BUILDFLAGS="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o buildflags`" - PLATFORM_BUILDFLAGS="$PLATFORM_BUILDFLAGS ${EXTRA_OPTIONS[@]}" - PLATFORM_BUILDCMD="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o buildcmd`" - PLATFORM_DSC="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o dsc`" - PLATFORM_PACKAGES_PATH="$PWD" - COMPONENT_INF="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o inf`" - - PLATFORM_ARCH="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o arch`" - if [ -n "$PLATFORM_ARCH" ]; then - if [ -n "$DEFAULT_PLATFORM_ARCH" -a "$DEFAULT_PLATFORM_ARCH" != "$PLATFORM_ARCH" ]; then - echo "Command line specified architecture '$DEFAULT_PLATFORM_ARCH'" >&2 - echo "differs from config file specified '$PLATFORM_ARCH'" >&2 - return 1 - fi - else - if [ ! -n "$DEFAULT_PLATFORM_ARCH" ]; then - echo "Unknown target architecture - aborting!" >&2 - return 1 - fi - PLATFORM_ARCH="$DEFAULT_PLATFORM_ARCH" - fi - TEMP_PACKAGES_PATH="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o packages_path`" - if [ -n "$TEMP_PACKAGES_PATH" ]; then - IFS=: - for path in "$TEMP_PACKAGES_PATH"; do - case "$path" in - /*) - PLATFORM_PACKAGES_PATH="$PLATFORM_PACKAGES_PATH:$path" - ;; - *) - PLATFORM_PACKAGES_PATH="$PLATFORM_PACKAGES_PATH:$PWD/$path" - ;; - esac - done - unset IFS - fi - if [ $VERBOSE -eq 1 ]; then - echo "Setting build parallellism to $NUM_THREADS processes\n" - echo "PLATFORM_NAME=$PLATFORM_NAME" - echo "PLATFORM_PREBUILD_CMDS=$PLATFORM_PREBUILD_CMDS" - echo "PLATFORM_BUILDFLAGS=$PLATFORM_BUILDFLAGS" - echo "PLATFORM_BUILDCMD=$PLATFORM_BUILDCMD" - echo "PLATFORM_DSC=$PLATFORM_DSC" - echo "PLATFORM_ARCH=$PLATFORM_ARCH" - echo "PLATFORM_PACKAGES_PATH=$PLATFORM_PACKAGES_PATH" - fi - - if [[ "${PLATFORM_BUILDFLAGS}" =~ "SECURE_BOOT_ENABLE=TRUE" ]]; then - import_openssl - fi - - if [ -n "$CROSS_COMPILE_64" -a "$PLATFORM_ARCH" == "AARCH64" ]; then - TEMP_CROSS_COMPILE="$CROSS_COMPILE_64" - elif [ -n "$CROSS_COMPILE_32" -a "$PLATFORM_ARCH" == "ARM" ]; then - TEMP_CROSS_COMPILE="$CROSS_COMPILE_32" - else - set_cross_compile - fi - - CROSS_COMPILE="$TEMP_CROSS_COMPILE" - - echo "Building $PLATFORM_NAME - $PLATFORM_ARCH" - echo "CROSS_COMPILE=\"$TEMP_CROSS_COMPILE\"" - echo "$board"_BUILDFLAGS="'$PLATFORM_BUILDFLAGS'" - - if [ "$TARGETS" == "" ]; then - TARGETS=( RELEASE ) - fi - - case $TOOLCHAIN in - "gcc") - TOOLCHAIN=`get_gcc_version "$CROSS_COMPILE"gcc` - if [ $? -ne 0 ]; then - echo "${CROSS_COMPILE}gcc not found!" >&2 - return 1 - fi - ;; - "clang") - TOOLCHAIN=`get_clang_version clang` - if [ $? -ne 0 ]; then - return 1 - fi - ;; - esac - export TOOLCHAIN - echo "TOOLCHAIN is ${TOOLCHAIN}" - - export ${TOOLCHAIN}_${PLATFORM_ARCH}_PREFIX=$CROSS_COMPILE - echo "Toolchain prefix: ${TOOLCHAIN}_${PLATFORM_ARCH}_PREFIX=$CROSS_COMPILE" - - export PACKAGES_PATH="$PLATFORM_PACKAGES_PATH" - for target in "${TARGETS[@]}" ; do - if [ X"$PLATFORM_PREBUILD_CMDS" != X"" ]; then - echo "Run pre build commands" - eval ${PLATFORM_PREBUILD_CMDS} - fi - - if [ -n "$COMPONENT_INF" ]; then - # Build a standalone component - build -n $NUM_THREADS -a "$PLATFORM_ARCH" -t ${TOOLCHAIN} -p "$PLATFORM_DSC" \ - -m "$COMPONENT_INF" -b "$target" ${PLATFORM_BUILDFLAGS} - else - # Build a platform - build -n $NUM_THREADS -a "$PLATFORM_ARCH" -t ${TOOLCHAIN} -p "$PLATFORM_DSC" \ - -b "$target" ${PLATFORM_BUILDFLAGS} - fi - - RESULT=$? - if [ $RESULT -eq 0 ]; then - if [ X"$TOS_DIR" != X"" ]; then - pushd $TOS_DIR >/dev/null - if [ $VERBOSE -eq 1 ]; then - echo "$TOOLS_DIR/tos-build.sh -e "$EDK2_DIR" -t "$target"_${TOOLCHAIN} $board" - fi - $TOOLS_DIR/tos-build.sh -e "$EDK2_DIR" -t "$target"_${TOOLCHAIN} $board - RESULT=$? - popd >/dev/null - fi - fi - if [ $RESULT -eq 0 ]; then - if [ X"$ATF_DIR" != X"" ]; then - pushd $ATF_DIR >/dev/null - if [ $VERBOSE -eq 1 ]; then - echo "$TOOLS_DIR/atf-build.sh -e "$EDK2_DIR" -t "$target"_${TOOLCHAIN} $board" - fi - $TOOLS_DIR/atf-build.sh -e "$EDK2_DIR" -t "$target"_${TOOLCHAIN} $board - RESULT=$? - popd >/dev/null - fi - fi - result_log $RESULT "$PLATFORM_NAME $target" - done - unset PACKAGES_PATH -} - - -function clearcache -{ - CONF_FILES="build_rule target tools_def" - if [ -z "$EDK_TOOLS_PATH" ] - then - TEMPLATE_PATH=./BaseTools/Conf/ - else - TEMPLATE_PATH="$EDK_TOOLS_PATH/Conf/" - fi - - for File in $CONF_FILES - do - TEMPLATE_FILE="$TEMPLATE_PATH/$File.template" - CACHE_FILE="Conf/$File.txt" - if [ -e "$CACHE_FILE" -a "$TEMPLATE_FILE" -nt "$CACHE_FILE" ] - then - echo "Removing outdated '$CACHE_FILE'." - rm "$CACHE_FILE" - fi - done - - unset TEMPLATE_PATH TEMPLATE_FILE CACHE_FILE -} - - -function uefishell -{ - BUILD_ARCH=`uname -m` - case $BUILD_ARCH in - arm*) - ARCH=ARM - ;; - aarch64) - ARCH=AARCH64 - ;; - *) - unset ARCH - ;; - esac - export ARCH - export EDK_TOOLS_PATH=`pwd`/BaseTools - clearcache - . edksetup.sh BaseTools - if [ $VERBOSE -eq 1 ]; then - echo "Building BaseTools" - fi - make -C $EDK_TOOLS_PATH - if [ $? -ne 0 ]; then - echo " !!! UEFI BaseTools failed to build !!! " >&2 - exit 1 - fi -} - - -function usage -{ - echo "usage:" - echo -n "uefi-build.sh [-b DEBUG | RELEASE] [ all " - for board in "${boards[@]}" ; do - echo -n "| $board " - done - echo "]" - printf "%8s\tbuild %s\n" "all" "all supported platforms" - for board in "${boards[@]}" ; do - PLATFORM_NAME="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o longname`" - printf "%8s\tbuild %s\n" "$board" "${PLATFORM_NAME}" - done -} - -# -# Since we do a command line validation on whether specified platforms exist or -# not, do a first pass of command line to see if there is an explicit config -# file there to read valid platforms from. -# -commandline=( "$@" ) -i=0 -for arg; -do - if [ $arg == "-c" ]; then - FILE_ARG=${commandline[i + 1]} - if [ ! -f "$FILE_ARG" ]; then - echo "ERROR: configuration file '$FILE_ARG' not found" >&2 - exit 1 - fi - case "$FILE_ARG" in - /*) - PLATFORM_CONFIG="-c $FILE_ARG" - ;; - *) - PLATFORM_CONFIG="-c `readlink -f \"$FILE_ARG\"`" - ;; - esac - echo "Platform config file: '$FILE_ARG'" - export PLATFORM_CONFIG - fi - i=$(($i + 1)) -done - -builds=() -boards=() -boardlist="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG shortlist`" -for board in $boardlist; do - boards=(${boards[@]} $board) -done - -NUM_TARGETS=0 - -while [ "$1" != "" ]; do - case $1 in - all ) - builds=(${boards[@]}) - NUM_TARGETS=$(($NUM_TARGETS + 1)) - ;; - "/h" | "/?" | "-?" | "-h" | "--help" ) - usage - exit - ;; - "-v" ) - VERBOSE=1 - ;; - "-a" ) - shift - ATF_DIR="$1" - ;; - "-A" ) - shift - DEFAULT_PLATFORM_ARCH="$1" - ;; - "-c" ) - # Already parsed above - skip this + option - shift - ;; - "-s" ) - shift - export TOS_DIR="$1" - ;; - "-b" | "--build" ) - shift - echo "Adding Build profile: $1" - TARGETS=( ${TARGETS[@]} $1 ) - ;; - "-D" ) - shift - echo "Adding option: -D $1" - EXTRA_OPTIONS=( ${EXTRA_OPTIONS[@]} "-D" $1 ) - ;; - "-T" ) - shift - echo "Setting toolchain to '$1'" - TOOLCHAIN="$1" - ;; - "-1" ) - NUM_THREADS=1 - ;; - * ) - MATCH=0 - for board in "${boards[@]}" ; do - if [ "$1" == $board ]; then - MATCH=1 - builds=(${builds[@]} "$board") - break - fi - done - - if [ $MATCH -eq 0 ]; then - echo "unknown arg $1" - usage - exit 1 - fi - NUM_TARGETS=$(($NUM_TARGETS + 1)) - ;; - esac - shift -done - -# If there were no args, use a menu to select a single board / all boards to build -if [ $NUM_TARGETS -eq 0 ] -then - read -p "$( - f=0 - for board in "${boards[@]}" ; do - echo "$((++f)): $board" - done - echo $((++f)): all - - echo -ne '> ' - )" selection - - if [ "$selection" -eq $((${#boards[@]} + 1)) ]; then - builds=(${boards[@]}) - else - builds="${boards[$((selection-1))]}" - fi -fi - -# Check to see if we are in a UEFI repository -# refuse to continue if we aren't -if [ ! -e BaseTools ] -then - echo "ERROR: we aren't in the UEFI directory." - echo " I can tell because I can't see the BaseTools directory" - exit 1 -fi - -EDK2_DIR="$PWD" -export VERBOSE - -if [[ "${EXTRA_OPTIONS[@]}" != *"FIRMWARE_VER"* ]]; then - if test -d .git && head=`git rev-parse --verify --short HEAD 2>/dev/null`; then - FIRMWARE_VER=`git rev-parse --short HEAD` - if ! git diff-index --quiet HEAD --; then - FIRMWARE_VER="${FIRMWARE_VER}-dirty" - fi - EXTRA_OPTIONS=( ${EXTRA_OPTIONS[@]} "-D" FIRMWARE_VER=$FIRMWARE_VER ) - if [ $VERBOSE -eq 1 ]; then - echo "FIRMWARE_VER=$FIRMWARE_VER" - echo "EXTRA_OPTIONS=$EXTRA_OPTIONS" - fi - fi -fi - -uefishell - -if [ X"$TOOLCHAIN" = X"" ]; then - TOOLCHAIN=gcc -fi - -for board in "${builds[@]}" ; do - do_build -done - -result_print |