summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAnup Patel <anup.patel@wdc.com>2019-02-20 11:48:12 +0300
committerAnup Patel <anup@brainfault.org>2019-02-22 08:58:41 +0300
commitd022c5d3ae7890a0c11341c80dcef3e3ae674247 (patch)
treed7bbfef6157e1e258c32fe5ccb7555bd9828ead3 /scripts
parent889e746fd7be97ca0dbaaf7a6a734429b7ca607f (diff)
downloadopensbi-d022c5d3ae7890a0c11341c80dcef3e3ae674247.tar.xz
scripts: Add script for creating binary archive
This patch adds scripts/create-binary-archive.sh which helps us create a common tarball containing headers, static library and firmware ELFs for all platforms. This script can be used for release purpose OR for compile testing all platforms. Example usage commands are as follows: 1) Binary release archive for 32bit systems ./scripts/create-binary-archive.sh -s "bin" -x 32 -d 2) Binary release archive for 64bit systems ./scripts/create-binary-archive.sh -s "bin" -d 3) Compile test for 32bit systems ./scripts/create-binary-archive.sh -x 32 -t 4) Compile test for 64bit systems ./scripts/create-binary-archive.sh -t Signed-off-by: Anup Patel <anup.patel@wdc.com>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/create-binary-archive.sh135
1 files changed, 135 insertions, 0 deletions
diff --git a/scripts/create-binary-archive.sh b/scripts/create-binary-archive.sh
new file mode 100755
index 0000000..be8cfe1
--- /dev/null
+++ b/scripts/create-binary-archive.sh
@@ -0,0 +1,135 @@
+#!/bin/bash
+
+function usage()
+{
+ echo "Usage:"
+ echo " $0 [options]"
+ echo "Options:"
+ echo " -h Display help or usage"
+ echo " -p <opensbi_source_path> OpenSBI source path"
+ echo " -o <build_output_path> Build output path"
+ echo " -d Build and install documentation"
+ echo " -t Build only with no archive created"
+ echo " -j <num_threads> Number of threads for Make (Default: 1)"
+ echo " -s <archive_suffix> Archive name suffix (Default: unknown)"
+ echo " -x <riscv_xlen> RISC-V XLEN (Default: 64)"
+ exit 1;
+}
+
+# Command line options
+BUILD_NUM_THREADS=1
+BUILD_OUTPUT_PATH="$(pwd)/build"
+BUILD_OPENSBI_SOURCE_PATH="$(pwd)"
+BUILD_DOCS="no"
+BUILD_ONLY="no"
+BUILD_ARCHIVE_SUFFIX="unknown"
+BUILD_RISCV_XLEN=64
+
+while getopts "hdtj:o:p:s:x:" o; do
+ case "${o}" in
+ h)
+ usage
+ ;;
+ d)
+ BUILD_DOCS="yes"
+ ;;
+ t)
+ BUILD_ONLY="yes"
+ ;;
+ j)
+ BUILD_NUM_THREADS=${OPTARG}
+ ;;
+ o)
+ BUILD_OUTPUT_PATH=${OPTARG}
+ ;;
+ p)
+ BUILD_OPENSBI_SOURCE_PATH=${OPTARG}
+ ;;
+ s)
+ BUILD_ARCHIVE_SUFFIX=${OPTARG}
+ ;;
+ x)
+ BUILD_RISCV_XLEN=${OPTARG}
+ ;;
+ *)
+ usage
+ ;;
+ esac
+done
+shift $((OPTIND-1))
+
+if [ -z "${BUILD_OPENSBI_SOURCE_PATH}" ]; then
+ echo "Must specify OpenSBI source path"
+ usage
+fi
+
+if [ ! -d "${BUILD_OPENSBI_SOURCE_PATH}" ]; then
+ echo "OpenSBI source path does not exist"
+ usage
+fi
+
+if [ -z "${BUILD_ARCHIVE_SUFFIX}" ]; then
+ echo "Archive suffice cannot be empty"
+ usage
+fi
+
+# Get version of OpenSBI
+BUILD_VERSION_MAJOR=$(grep MAJOR "${BUILD_OPENSBI_SOURCE_PATH}/include/sbi/sbi_version.h" | sed 's/.*MAJOR.*\([0-9][0-9]*\)/\1/')
+BUILD_VERSION_MINOR=$(grep MINOR "${BUILD_OPENSBI_SOURCE_PATH}/include/sbi/sbi_version.h" | sed 's/.*MINOR.*\([0-9][0-9]*\)/\1/')
+
+# Setup archive name
+BUILD_ARCHIVE_NAME="opensbi-${BUILD_VERSION_MAJOR}.${BUILD_VERSION_MINOR}-rv${BUILD_RISCV_XLEN}-${BUILD_ARCHIVE_SUFFIX}"
+
+# Setup platform list
+case "${BUILD_RISCV_XLEN}" in
+32)
+ # Setup 32bit platform list
+ BUILD_PLATFORM_SUBDIR=("qemu/virt")
+ BUILD_PLATFORM_SUBDIR+=("qemu/sifive_u")
+ ;;
+64)
+ # Setup 64bit platform list
+ BUILD_PLATFORM_SUBDIR=("qemu/virt")
+ BUILD_PLATFORM_SUBDIR+=("qemu/sifive_u")
+ BUILD_PLATFORM_SUBDIR+=("sifive/fu540")
+ BUILD_PLATFORM_SUBDIR+=("kendryte/k210")
+ ;;
+*)
+ echo "Invalid RISC-V XLEN"
+ usage
+ ;;
+esac
+
+# Ensure output directory is present
+mkdir -p "${BUILD_OUTPUT_PATH}"
+
+# Build and install generic library
+echo "Build and install generic library XLEN=${BUILD_RISCV_XLEN}"
+echo ""
+make -C "${BUILD_OPENSBI_SOURCE_PATH}" O="${BUILD_OUTPUT_PATH}" I="${BUILD_OUTPUT_PATH}/${BUILD_ARCHIVE_NAME}" PLATFORM_RISCV_XLEN="${BUILD_RISCV_XLEN}" install_libsbi -j "${BUILD_NUM_THREADS}"
+echo ""
+
+# Build and install relevant platforms
+for INDEX in $(seq 0 1 "$(expr ${#BUILD_PLATFORM_SUBDIR[*]} - 1)")
+do
+ echo "Build and install PLATFORM=${BUILD_PLATFORM_SUBDIR[${INDEX}]} XLEN=${BUILD_RISCV_XLEN}"
+ echo ""
+ make -C "${BUILD_OPENSBI_SOURCE_PATH}" O="${BUILD_OUTPUT_PATH}" I="${BUILD_OUTPUT_PATH}/${BUILD_ARCHIVE_NAME}" PLATFORM="${BUILD_PLATFORM_SUBDIR[${INDEX}]}" PLATFORM_RISCV_XLEN="${BUILD_RISCV_XLEN}" install_libplatsbi install_firmwares -j "${BUILD_NUM_THREADS}"
+ echo ""
+done
+
+# Build and install docs
+if [ "${BUILD_DOCS}" == "yes" ]; then
+ echo "Build and install docs"
+ echo ""
+ make -C "${BUILD_OPENSBI_SOURCE_PATH}" O="${BUILD_OUTPUT_PATH}" I="${BUILD_OUTPUT_PATH}/${BUILD_ARCHIVE_NAME}" install_docs
+ echo ""
+fi
+
+# Create archive file
+if [ "${BUILD_ONLY}" == "no" ]; then
+ echo "Create archive ${BUILD_ARCHIVE_NAME}.tar.xz"
+ echo ""
+ tar -C "${BUILD_OUTPUT_PATH}" -cJvf "${BUILD_OUTPUT_PATH}/${BUILD_ARCHIVE_NAME}.tar.xz" "${BUILD_ARCHIVE_NAME}"
+ echo ""
+fi