31 lines
669 B
Bash
Executable File
31 lines
669 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
if [[ ! -d system/src ]]; then
|
|
echo "compile.bash: no system/src directory" >&2
|
|
exit 1
|
|
fi
|
|
|
|
function verbosely {
|
|
echo >&2 "$@"
|
|
"$@"
|
|
}
|
|
|
|
mkdir -p system/out
|
|
rm -f system/out/*
|
|
|
|
pushd system/res >/dev/null
|
|
verbosely xxd -i sentinel.bash > ../src/sentinel.h
|
|
popd >/dev/null
|
|
|
|
for src in system/src/*.c; do
|
|
out="${src/src/out}"
|
|
out="${out/.c}"
|
|
verbosely clang -Isystem/res -Wall -Wextra -Werror -std=c11 "${src}" -o "${out}"
|
|
if [[ "${out}" == *-privileged && -z "${UNPRIVILEGED:-}" ]]; then
|
|
verbosely sudo chown root:riju "${out}"
|
|
verbosely sudo chmod a=,g=rx,u=rwxs "${out}"
|
|
fi
|
|
done
|