diff --git a/meson.build b/meson.build
index bbdc86a72b94594268c725501b38785f2a4db644..b1fdc0ae9d77b79fd9f8a9fb78659b0e6fe55421 100644
--- a/meson.build
+++ b/meson.build
@@ -13,7 +13,7 @@ else
 endif
 version_inc = include_directories('.')
 version_h = custom_target('git_version.h',
-                          command: [version_sh, meson.current_build_dir()],
+                          command: [version_sh, meson.current_build_dir(), meson.current_source_dir()],
                           build_by_default: true,
                           build_always_stale: true, # has internal check whether target file will be refreshed
                           output: ['git_version.h', 'git_version.xml'])
diff --git a/tools/version.sh b/tools/version.sh
index a950bae2f4fe003d5c57211483baf6bb1c9fd85e..a2d3c7b39d084cc49fd1686b25e33f2b118f8bc9 100755
--- a/tools/version.sh
+++ b/tools/version.sh
@@ -1,7 +1,8 @@
-srcdir="$1"
+builddir="$1"
+srcdir="$2"
 
 # If no git repo try to read from the existing git_version.h, for building from tarballs
-version_h_path="${srcdir}/git_version.h"
+version_h_path="${builddir}/git_version.h"
 if ! test -d "${srcdir}/.git"; then
   if test -f "${version_h_path}"; then
     while read line; do
@@ -65,7 +66,7 @@ export BUILD_GIT_VERSION_NUMBER="${git_revision}"
 export BUILD_GIT_VERSION_STRING="${git_version_str}"
 export VERSION_SOURCE="from git"
 
-cat << EOF > "${srcdir}/git_version.xml"
+cat << EOF > "${builddir}/git_version.xml"
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>