aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/scripts
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-02-26 21:50:22 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2016-02-26 21:50:22 +0200
commitaf53c2bc3b13ba8eb7f9e8f5c3990b966c792e5d (patch)
treed271712eba08c20e060d67c2118575277cbd151e /mesonbuild/scripts
parentea60a22cd5a2613652942e48e143d7a3da68bbc0 (diff)
parent40a7287a59304abe64984c697e764640e06a4599 (diff)
downloadmeson-af53c2bc3b13ba8eb7f9e8f5c3990b966c792e5d.zip
meson-af53c2bc3b13ba8eb7f9e8f5c3990b966c792e5d.tar.gz
meson-af53c2bc3b13ba8eb7f9e8f5c3990b966c792e5d.tar.bz2
Merge pull request #419 from nioncode/fixVs2010Regen
Fix vs2010 regen
Diffstat (limited to 'mesonbuild/scripts')
-rw-r--r--mesonbuild/scripts/regen_checker.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/mesonbuild/scripts/regen_checker.py b/mesonbuild/scripts/regen_checker.py
index a5e5fab..2e974d8 100644
--- a/mesonbuild/scripts/regen_checker.py
+++ b/mesonbuild/scripts/regen_checker.py
@@ -19,13 +19,18 @@ import pickle, subprocess
# This could also be used for XCode.
-def need_regen(regeninfo):
- sln_time = os.stat(os.path.join(regeninfo.build_dir, regeninfo.solutionfile)).st_mtime
+def need_regen(regeninfo, regen_timestamp):
for i in regeninfo.depfiles:
curfile = os.path.join(regeninfo.build_dir, i)
curtime = os.stat(curfile).st_mtime
- if curtime > sln_time:
+ if curtime > regen_timestamp:
return True
+ # The timestamp file gets automatically deleted by MSBuild during a 'Clean' build.
+ # We must make sure to recreate it, even if we do not regenerate the solution.
+ # Otherwise, Visual Studio will always consider the REGEN project out of date.
+ print("Everything is up-to-date, regeneration of build files is not needed.")
+ from mesonbuild.backend.vs2010backend import Vs2010Backend
+ Vs2010Backend.touch_regen_timestamp(regeninfo.build_dir)
return False
def regen(regeninfo):
@@ -41,8 +46,11 @@ def regen(regeninfo):
subprocess.check_call(cmd)
def run(args):
- regeninfo = pickle.load(open(os.path.join(args[0], 'regeninfo.dump'), 'rb'))
- if need_regen(regeninfo):
+ private_dir = args[0]
+ dumpfile = os.path.join(private_dir, 'regeninfo.dump')
+ regeninfo = pickle.load(open(dumpfile, 'rb'))
+ regen_timestamp = os.stat(dumpfile).st_mtime
+ if need_regen(regeninfo, regen_timestamp):
regen(regeninfo)
sys.exit(0)