Files
simple-object-server/build.sh
Your Name 6a1f4d2553
Some checks failed
Build-Test-Publish / Build (push) Failing after 24s
:-'Generic Commit'
2025-05-30 19:34:00 +12:00

94 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# Exit on error
set -euo pipefail
# DIRECTORIES
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
EXE_DIR="${SCRIPT_DIR}/output"
PROJECTNAME="simple_object_storage"
JOBS=${JOBS:-$(nproc)}
# 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_amd64() {
# Build for amd64 (musl)
echo "Building for amd64 (musl)..."
MUSLPATH="$HOME/.musl-cross/x86_64-linux-musl-cross"
cmake -B build_amd64 -DCMAKE_BUILD_TYPE=Release \
"-DCMAKE_C_COMPILER=$MUSLPATH/bin/x86_64-linux-musl-gcc" \
"-DCMAKE_CXX_COMPILER=$MUSLPATH/bin/x86_64-linux-musl-g++" \
-DCMAKE_EXE_LINKER_FLAGS="-static" \
-DCMAKE_CXX_FLAGS="-march=x86-64" .
cmake --build build_amd64 --target simple_object_storage --config Release -j"$JOBS"
mkdir -p "${EXE_DIR}"
cp "build_amd64/${PROJECTNAME}" "${EXE_DIR}/${PROJECTNAME}.amd64"
}
function build_arm64() {
# Build for arm64 (musl)
echo "Building for arm64 (musl)..."
MUSLPATH="$HOME/.musl-cross/aarch64-linux-musl-cross"
cmake -B build_arm64 -DCMAKE_BUILD_TYPE=Release \
"-DCMAKE_C_COMPILER=$MUSLPATH/bin/aarch64-linux-musl-gcc" \
"-DCMAKE_CXX_COMPILER=$MUSLPATH/bin/aarch64-linux-musl-g++" \
-DCMAKE_EXE_LINKER_FLAGS="-static" \
-DCMAKE_CXX_FLAGS="-march=armv8-a" \
-DCMAKE_SYSTEM_PROCESSOR=aarch64 .
cmake --build build_arm64 --target simple_object_storage --config Release -j"$JOBS"
mkdir -p "${EXE_DIR}"
cp "build_arm64/${PROJECTNAME}" "${EXE_DIR}/${PROJECTNAME}.arm64"
}
#--------------------------------
# MAIN
#--------------------------------
OLD_DIR=$(pwd)
cd "$SCRIPT_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_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_amd64 || die "Failed to build linux-x86_64 executable"
echo "amd64 executable: ./simple_object_storage-linux-amd64"
fi
echo "Build completed successfully!"
cd "$OLD_DIR"