Some checks failed
odin-ci / build-test (push) Has been cancelled
add to gitignore
63 lines
1.8 KiB
Bash
Executable File
63 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# Build osdialog static library for Linux (zenity backend)
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
OSDIALOG_DIR="$SCRIPT_DIR/vendor/osdialog"
|
|
OUTPUT_DIR="$SCRIPT_DIR/build"
|
|
mkdir -p "$OUTPUT_DIR"
|
|
|
|
ensure_osdialog_submodule() {
|
|
if [ -f "$OSDIALOG_DIR/osdialog.c" ] && [ -f "$OSDIALOG_DIR/osdialog_zenity.c" ]; then
|
|
return 0
|
|
fi
|
|
|
|
echo "osdialog sources not found at: $OSDIALOG_DIR"
|
|
echo "Attempting to initialize git submodules..."
|
|
|
|
if command -v git >/dev/null 2>&1; then
|
|
git -C "$REPO_ROOT" submodule update --init --recursive odin/vendor/osdialog || true
|
|
fi
|
|
|
|
if [ ! -f "$OSDIALOG_DIR/osdialog.c" ] || [ ! -f "$OSDIALOG_DIR/osdialog_zenity.c" ]; then
|
|
echo "error: osdialog submodule is missing. Run: git submodule update --init --recursive" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
ensure_osdialog_submodule
|
|
|
|
LIB_OUT="$OUTPUT_DIR/libosdialog.a"
|
|
|
|
# Only rebuild if sources changed
|
|
SOURCES=("$OSDIALOG_DIR/osdialog.c" "$OSDIALOG_DIR/osdialog_zenity.c")
|
|
NEED_REBUILD=false
|
|
for src in "${SOURCES[@]}"; do
|
|
if [ "$src" -nt "$LIB_OUT" ] 2>/dev/null; then
|
|
NEED_REBUILD=true
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ "$NEED_REBUILD" = false ] && [ -f "$LIB_OUT" ]; then
|
|
echo "osdialog already built. Skipping."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Building osdialog (zenity backend)..."
|
|
for src in "${SOURCES[@]}"; do
|
|
obj="${OUTPUT_DIR}/$(basename "${src%.c}.o")"
|
|
echo " CC $src"
|
|
gcc -c -O2 -std=c99 -I"$OSDIALOG_DIR" "$src" -o "$obj"
|
|
done
|
|
|
|
if [ "$(uname -s)" = "Darwin" ]; then
|
|
libtool -static -o "$LIB_OUT" "$OUTPUT_DIR"/osdialog.o "$OUTPUT_DIR"/osdialog_zenity.o
|
|
else
|
|
ar rcs "$LIB_OUT" "$OUTPUT_DIR"/osdialog.o "$OUTPUT_DIR"/osdialog_zenity.o
|
|
fi
|
|
|
|
echo " AR $LIB_OUT"
|
|
echo "osdialog build complete."
|