#!/bin/bash # Exit on error set -e # DIRECTORIES SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) CACHE_DIR="${SCRIPT_DIR}/cache" EXE_DIR="${SCRIPT_DIR}/exe" rm -f ${EXE_DIR}/* # FUNCTIONS function title() { echo "----------------------------------------" # Center the text local text="$1" local line_length=40 local text_length=${#text} local padding=$(( (line_length - text_length) / 2 )) printf "%*s%s%*s\n" $padding "" "$text" $padding "" echo "----------------------------------------" } function die() { echo " " title "$1" echo " " exit 1 } function build() { ARCH=$1 BUILD_NAME="build-${ARCH}" BUILD_DIR="${SCRIPT_DIR}/${BUILD_NAME}" mkdir -p ${BUILD_DIR} DOCKCROSS_SCRIPT="${CACHE_DIR}/dockcross-${ARCH}" if [ ! -f "${DOCKCROSS_SCRIPT}" ]; then echo "Downloading dockcross-${ARCH}" docker run --rm "dockcross/${ARCH}-full" > "${DOCKCROSS_SCRIPT}" chmod +x "${DOCKCROSS_SCRIPT}" fi echo "Building $ARCH executable" cd "${SCRIPT_DIR}" "${DOCKCROSS_SCRIPT}" bash -c "cd ${BUILD_NAME} && cmake .. && make -j$(nproc)" if [ ! -f ${BUILD_DIR}/simple_object_storage ]; then die "Failed to build $ARCH executable" fi echo "Copying $ARCH executable to $EXE_DIR/simple_object_storage-$ARCH" cp ${BUILD_DIR}/simple_object_storage $EXE_DIR/simple_object_storage-$ARCH } #-------------------------------- # MAIN #-------------------------------- cd $SCRIPT_DIR mkdir -p ${CACHE_DIR} mkdir -p ${EXE_DIR} BUILDSTR="amd64" if [ ! -z "$1" ]; then BUILDSTR="$1" fi if [ "$BUILDSTR" = "all" ] || [ "$BUILDSTR" = "arm64" ]; then title "Building linux-arm64 executable" build linux-arm64 || die "Failed to build linux-arm64 executable" echo "arm64 executable: ./simple_object_storage-linux-arm64" fi if [ "$BUILDSTR" = "all" ] || [ "$BUILDSTR" = "amd64" ]; then title "Building linux-x86_64 executable" build linux-x86_64 || die "Failed to build linux-x86_64 executable" mv ${EXE_DIR}/simple_object_storage-linux-x86_64 ${EXE_DIR}/simple_object_storage-linux-amd64 echo "amd64 executable: ./simple_object_storage-linux-amd64" fi echo "Build completed successfully!"