aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xGIT-VERSION-GEN16
-rw-r--r--Makefile2
-rw-r--r--meson.build1
-rw-r--r--meson_options.txt2
4 files changed, 16 insertions, 5 deletions
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index c2767b4136..2f729de4bb 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -5,19 +5,27 @@ DEF_VER=0.21.GITGUI
LF='
'
-if test "$#" -ne 2
+if test "$#" -lt 2
then
- echo >&2 "usage: $0 <SOURCE_DIR> <OUTPUT>"
+ echo >&2 "usage: $0 <SOURCE_DIR> <OUTPUT> [<PARENT_PROJECT_DIR>]"
exit 1
fi
SOURCE_DIR="$1"
OUTPUT="$2"
+PARENT_PROJECT_DIR="$3"
# Protect us from reading Git version information outside of the Git directory
# in case it is not a repository itself, but embedded in an unrelated
-# repository.
-GIT_CEILING_DIRECTORIES="$SOURCE_DIR/.."
+# repository. The PARENT_PROJECT_DIR variable can be used to override this, for
+# example when git-gui is included as a subproject.
+if test -n "$PARENT_PROJECT_DIR"
+then
+ GIT_CEILING_DIRECTORIES="$PARENT_PROJECT_DIR/.."
+else
+ GIT_CEILING_DIRECTORIES="$SOURCE_DIR/.."
+fi
+
export GIT_CEILING_DIRECTORIES
tree_search ()
diff --git a/Makefile b/Makefile
index 69b0b84435..5679af62bd 100644
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,7 @@ all::
#
GIT-VERSION-FILE: FORCE
- @$(SHELL_PATH) ./GIT-VERSION-GEN . $@
+ @$(SHELL_PATH) ./GIT-VERSION-GEN . $@ "$(PARENT_PROJECT_DIR)"
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
diff --git a/meson.build b/meson.build
index 320ba09ecf..4a60465753 100644
--- a/meson.build
+++ b/meson.build
@@ -34,6 +34,7 @@ version_file = custom_target(
'@INPUT@',
meson.current_source_dir(),
'@OUTPUT@',
+ get_option('parent_project_dir'),
],
build_always_stale: true,
)
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000000..7591a34218
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,2 @@
+option('parent_project_dir', type: 'string', value: '',
+ description: 'The directory of the parent project. This is used so that the version can be determined even in case git-gui is included as a subtree.')