Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/VibeDevelopers/Comet.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109#!/bin/sh# setup — configure, build, test, and install Comet without requiring root.## Usage:# ./setup [key=value ...]# ./setup help## Options are passed to meson setup as -Dkey=value.# If prefix= is not supplied, defaults to ~/ircd.# The build directory is always 'build'.
set -e
die() { echo "ERROR: $*" >&2; exit 1; }
command -v meson >/dev/null 2>&1 || die "meson not found in PATH"
BUILDDIR="build"
if [ $# -eq 1 ] && [ "$1" = "help" ]; then echo "Usage: ./setup [key=value ...]" echo "" echo "Available options (from meson_options.txt):" echo "" OPTFILE="$(dirname "$0")/meson_options.txt" [ -f "$OPTFILE" ] || die "meson_options.txt not found" awk ' { gsub(/\r/, ""); line = $0 } /option\(/ { block = line next } block != "" { block = block " " line } block != "" && /\)/ { # name s = block; sub(/.*option\('"'"'/, "", s); sub(/'"'"'.*/, "", s) name = s
# description s = block; sub(/.*description:[[:space:]]*'"'"'/, "", s); sub(/'"'"'.*/, "", s) desc = s
# default value (string/boolean/feature) defval = "" s = block if (match(s, /value:[[:space:]]*'"'"'[^'"'"']*'"'"'/)) { v = substr(s, RSTART, RLENGTH) sub(/value:[[:space:]]*'"'"'/, "", v); sub(/'"'"'.*/, "", v) defval = v } else if (match(s, /value:[[:space:]]*[0-9]+/)) { v = substr(s, RSTART, RLENGTH) sub(/value:[[:space:]]*/, "", v) defval = v } else if (match(s, /value:[[:space:]]*(true|false)/)) { v = substr(s, RSTART, RLENGTH) sub(/value:[[:space:]]*/, "", v) defval = v }
printf " %-20s %s", name, desc if (defval != "") printf " (default: %s)", defval printf "\n" block = "" name = "" } ' "$OPTFILE" echo "" echo "Example: ./setup topiclen=390 nicklen=30 prefix=/opt/ircd" exit 0fi
has_prefix=0MESON_OPTS=""
for arg in "$@"; do case "$arg" in prefix=*) has_prefix=1; MESON_OPTS="$MESON_OPTS -D$arg" ;; *=*) MESON_OPTS="$MESON_OPTS -D$arg" ;; *) die "Unrecognised argument '$arg' (expected key=value)" ;; esacdone
if [ "$has_prefix" -eq 0 ]; then DEFAULT_PREFIX="$HOME/ircd" echo "No prefix= given; defaulting to $DEFAULT_PREFIX" MESON_OPTS="$MESON_OPTS -Dprefix=$DEFAULT_PREFIX" mkdir -p "$DEFAULT_PREFIX"else for arg in "$@"; do case "$arg" in prefix=*) mkdir -p "${arg#prefix=}" ;; esac donefi
echo "==> meson setup $BUILDDIR $MESON_OPTS"meson setup "$BUILDDIR" --optimization 2 $MESON_OPTS
echo "==> meson compile -C $BUILDDIR"meson compile -C "$BUILDDIR"
echo "==> meson test -C $BUILDDIR"meson test -C "$BUILDDIR"
echo "==> meson install -C $BUILDDIR"exec meson install -C "$BUILDDIR"