From 11deae4782811c1d8a2860f5d3dca57c3c06ccfb Mon Sep 17 00:00:00 2001
From: midipix <writeonce@midipix.org>
Date: Wed, 21 Sep 2016 22:37:06 -0400
Subject: build system: support setting an external folder as the source
 directory.

---
 configure | 42 +++++++++++++++++++++++++++++++++++-------
 1 file changed, 35 insertions(+), 7 deletions(-)

(limited to 'configure')

diff --git a/configure b/configure
index 6894bc6..6875689 100755
--- a/configure
+++ b/configure
@@ -33,13 +33,9 @@ init_vars()
 		. "$mb_config" || exit 2
 	fi
 
-	# git
-	if [ -d "$mb_project_dir/.git" ]; then
-		mb_git_reference_index="\$(PROJECT_DIR)/.git/index"
-	fi
-
 	# project
 	mb_nickname=$NICKNAME
+	mb_source_dir=$SOURCE_DIR
 
 	# dirs
 	mb_prefix=$PREFIX
@@ -124,10 +120,33 @@ verify_build_directory()
 }
 
 
+verify_source_directory()
+{
+	if [ -z "$mb_source_dir" ]; then
+		if [ "$mb_require_source_dir" = yes ]; then
+			error_msg "$mb_package: specifying an external source directory is required."
+			error_msg "you can set the source directory either via --source-dir=<path>,"
+			error_msg "or by setting the SOURCE_DIR variable."
+			exit 2
+		fi
+	fi
+}
+
+
 common_defaults()
 {
+	# git
+	if [ -n "$mb_source_dir" ]; then
+		if [ -d "$mb_source_dir/.git" ]; then
+			mb_git_reference_dir="\$(SOURCE_DIR)/.git"
+		fi
+	elif [ -d "$mb_project_dir/.git" ]; then
+		mb_git_reference_dir="\$(PROJECT_DIR)/.git"
+	fi
+
 	# project
 	[ -z "$mb_nickname" ] 		&& mb_nickname=$mb_package
+	[ -z "$mb_source_dir" ] 	&& mb_source_dir=$mb_project_dir
 	[ -z "$mb_avoid_version" ] 	&& mb_avoid_version='no'
 
 	# dirs
@@ -370,6 +389,7 @@ config_copy()
 	sed 		-e 's^@package@^'"$mb_package"'^g' 				\
 			-e 's^@nickname@^'"$mb_nickname"'^g'				\
 			-e 's^@project_dir@^'"$mb_project_dir"'^g'			\
+			-e 's^@source_dir@^'"$mb_source_dir"'^g'			\
 			-e 's^@git_reference_index@^'"$mb_git_reference_index"'^g'	\
 			-e 's^@custom_install_headers@^'"$mb_custom_install_headers"'^g' \
 			-e 's^@avoid_version@^'"$mb_avoid_version"'^g'			\
@@ -604,6 +624,9 @@ for arg ; do
 		--avoid-version)
 			mb_avoid_version='yes'
 			;;
+		--source-dir=*)
+			mb_source_dir=${arg#*=}
+			;;
 
 		*)
 			error_msg ${arg#}: "unsupported config argument."
@@ -614,14 +637,19 @@ done
 
 
 
-# three: defaults
+# three: validation
+verify_source_directory
+
+
+
+# four: defaults
 common_defaults
 native_defaults
 cross_defaults
 
 
 
-# four: config
+# five: config
 config_flags
 config_copy
 config_support
-- 
cgit v1.2.3