Blame sofort/tools/srctree.sh

e2c818
#!/bin/sh
e2c818
e2c818
# srctree.sh: support for out-of-tree builds in posix make mode.
e2c818
# this file is covered by COPYING.SOFORT.
e2c818
e2c818
set -eu
e2c818
e2c818
usage()
e2c818
{
e2c818
cat << EOF >&2
e2c818
e2c818
Usage:
e2c818
  --help              show this HELP message
e2c818
  --srctree=SRCTREE   set source directory
e2c818
e2c818
EOF
e2c818
exit 1
e2c818
}
e2c818
e2c818
e2c818
# one
e2c818
workdir=$(pwd -P)
e2c818
srctree=
e2c818
argloop=
e2c818
e2c818
e2c818
for arg ; do
e2c818
	case "$arg" in
e2c818
		--help)
e2c818
			usage
e2c818
			;;
e2c818
e2c818
		--srctree=*)
e2c818
			srctree=${arg#*=}
e2c818
			;;
e2c818
e2c818
		--)
e2c818
			argloop='done'
e2c818
			;;
e2c818
e2c818
		*)
e2c818
			if [ -z "$argloop" ]; then
e2c818
				printf 'Invalid option: %s\n' "$arg" >&2
e2c818
				usage
e2c818
			fi
e2c818
			;;
e2c818
	esac
e2c818
done
e2c818
e2c818
e2c818
# two
e2c818
if [ -z "$srctree" ] ; then
e2c818
	usage
e2c818
fi
e2c818
e2c818
cd -- "$srctree"
e2c818
srctree=$(pwd -P)
e2c818
cd -- "$workdir"
e2c818
e2c818
if [ "$srctree" = "$workdir" ]; then
e2c818
	exit 0
e2c818
fi
e2c818
e2c818
e2c818
# three
e2c818
for arg ; do
e2c818
	case "$arg" in
e2c818
		--srctree=*)
e2c818
			;;
e2c818
e2c818
		--)
e2c818
			;;
e2c818
e2c818
		*)
e2c818
			stat "$arg" > /dev/null 2>&1 \
e2c818
				|| ln -s -- "$srctree/$arg" "$arg"
e2c818
			;;
e2c818
	esac
e2c818
done
e2c818
e2c818
e2c818
# all done
e2c818
exit 0