diff options
author | midipix <writeonce@midipix.org> | 2024-04-28 17:47:08 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2024-04-28 17:47:08 +0000 |
commit | 1b64c0ca9f6438c5bb35f34a46344030b61b789a (patch) | |
tree | c1c41b3abf8af0c8fb2484681a7ef0e9707913ef /sofort/tools/srctree.sh | |
parent | 646efeb80e90cdc80e35a337273943b6ba87bb6f (diff) | |
download | treebnf-1b64c0ca9f6438c5bb35f34a46344030b61b789a.tar.bz2 treebnf-1b64c0ca9f6438c5bb35f34a46344030b61b789a.tar.xz |
build system: imported sofort, a project-agnostic build system.
Diffstat (limited to 'sofort/tools/srctree.sh')
-rwxr-xr-x | sofort/tools/srctree.sh | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/sofort/tools/srctree.sh b/sofort/tools/srctree.sh new file mode 100755 index 0000000..90a1d89 --- /dev/null +++ b/sofort/tools/srctree.sh @@ -0,0 +1,83 @@ +#!/bin/sh + +# srctree.sh: support for out-of-tree builds in posix make mode. +# this file is covered by COPYING.SOFORT. + +set -eu + +usage() +{ +cat << EOF >&2 + +Usage: + --help show this HELP message + --srctree=SRCTREE set source directory + +EOF +exit 1 +} + + +# one +workdir=$(pwd -P) +srctree= +argloop= + + +for arg ; do + case "$arg" in + --help) + usage + ;; + + --srctree=*) + srctree=${arg#*=} + ;; + + --) + argloop='done' + ;; + + *) + if [ -z "$argloop" ]; then + printf 'Invalid option: %s\n' "$arg" >&2 + usage + fi + ;; + esac +done + + +# two +if [ -z "$srctree" ] ; then + usage +fi + +cd -- "$srctree" +srctree=$(pwd -P) +cd -- "$workdir" + +if [ "$srctree" = "$workdir" ]; then + exit 0 +fi + + +# three +for arg ; do + case "$arg" in + --srctree=*) + ;; + + --) + ;; + + *) + stat "$arg" > /dev/null 2>&1 \ + || ln -s -- "$srctree/$arg" "$arg" + ;; + esac +done + + +# all done +exit 0 |