#!/bin/sh # SPDX-License-Identifier: GPL-3.0+ # Copyright (C) 2018, Tom Hiller set -e ## import variables . ./common/variables.sh ################################################################################ ## Menu ################################################################################ ## Parse avialble models from directory names AVAILABLE_MODELS=$(find ./ -maxdepth 1 -mindepth 1 -type d | sed 's/\.\///g' | grep -Ev "common|git") ## Help menu usage() { echo "Usage: " echo echo " $0 [-t ] [-c ] [--config] [--bleeding-edge] [--clean-slate] " echo echo " --bleeding-edge Build from the latest commit" echo " --clean-slate Purge previous build directory and config" echo " -c, --commit Git commit hash" echo " -h, --help Show this help" echo " -i, --config Execute with interactive make config" echo " -p, --patchset Cherry-pick a patch set which is not merged yet" echo " -t, --tag Git tag/version" echo echo "If a tag, commit or bleeding-edge flag is not given, the latest Coreboot release will be built." echo echo echo "Available models:" for AVAILABLE_MODEL in $AVAILABLE_MODELS; do echo "$(printf '\t')$AVAILABLE_MODEL" done } ## Iterate through command line parameters while : do case "$1" in --bleeding-edge) COREBOOT_COMMIT="master" shift 1;; --clean-slate) CLEAN_SLATE=true shift 1;; -c | --commit) COREBOOT_COMMIT="$2" shift 2;; -h | --help) usage >&2 exit 0;; -i | --config) COREBOOT_CONFIG=true shift 1;; -p | --patchset) COREBOOT_PATCHSET="$2" shift 2;; -t | --tag) COREBOOT_TAG="$2" shift 2;; -*) echo "Error: Unknown option: $1" >&2 usage >&2 exit 1;; *) break;; esac done ## Validate and normalize given model number MODEL=$(echo "$@" | tr -d '[:space:]' | tr '[:upper:]' '[:lower:]'); ## Check if valid model if [ -z "$MODEL" ] || [ ! -d "$PWD/$MODEL" ]; then usage exit 1; fi; ################################################################################ ################################################################################ if [ ! -d "$PWD/$MODEL/build" ]; then mkdir "$PWD/$MODEL/build" elif [ "$CLEAN_SLATE" ]; then rm -rf "$PWD/$MODEL/build" || true mkdir "$PWD/$MODEL/build" fi ## Run Docker docker run --rm -it \ --user "$(id -u):$(id -g)" \ -v "$PWD/$MODEL/build:$DOCKER_COREBOOT_DIR" \ -v "$PWD/$MODEL:$DOCKER_SCRIPT_DIR" \ -v "$PWD/common:$DOCKER_COMMON_SCRIPT_DIR" \ -e COREBOOT_COMMIT="$COREBOOT_COMMIT" \ -e COREBOOT_PATCHSET="$COREBOOT_PATCHSET" \ -e COREBOOT_TAG="$COREBOOT_TAG" \ -e COREBOOT_CONFIG="$COREBOOT_CONFIG" \ coreboot/coreboot-sdk:"$COREBOOT_SDK_VERSION" \ /home/coreboot/scripts/compile.sh