diff --git a/uppsrc/ide/Builders/Blitz.cpp b/uppsrc/ide/Builders/Blitz.cpp index 1dbc36486..8c1c89e95 100644 --- a/uppsrc/ide/Builders/Blitz.cpp +++ b/uppsrc/ide/Builders/Blitz.cpp @@ -12,9 +12,26 @@ void ResetBlitz() SaveFile(BlitzBaseFile(), ""); } -Time BlitzBaseTime() +Time blitz_base_time; + +void InitBlitz() { - return max(GetSysTime() - 3600, Time(GetFileTime(BlitzBaseFile()))); + Time ltm = Time::High(); + + const Workspace& wspc = GetIdeWorkspace(); + for(int i = 0; i < wspc.GetCount(); i++) { // find lowest file time + const Package& pk = wspc.GetPackage(i); + String n = wspc[i]; + for(int i = 0; i < pk.GetCount(); i++) { + String path = SourcePath(n, pk.file[i]); + if(FileExists(path)) + ltm = min(ltm, FileGetTime(path)); + } + } + + blitz_base_time = max(GetSysTime() - 3600, Time(GetFileTime(BlitzBaseFile()))); + if(ltm != Time::High()) + blitz_base_time = max(blitz_base_time, ltm + 3 * 60); // should solve first build after install/checkout } Blitz BlitzBuilderComponent::MakeBlitzStep(Vector& sfile, Vector& soptions, @@ -44,7 +61,7 @@ Blitz BlitzBuilderComponent::MakeBlitzStep(Vector& sfile, Vector Time fntime = GetFileTime(fn); if((ext == ".cpp" || ext == ".cc" || ext == ".cxx" || ext == ".icpp") && HdependBlitzApproved(fn) && IsNull(soptions[i]) && !optimize[i] - && fntime < BlitzBaseTime() + && fntime < blitz_base_time && noblitz.Find(fn) < 0) { if(HdependFileTime(fn) > blitztime) b.build = true; diff --git a/uppsrc/ide/Builders/Build.cpp b/uppsrc/ide/Builders/Build.cpp index 511ee4df6..104deaa35 100644 --- a/uppsrc/ide/Builders/Build.cpp +++ b/uppsrc/ide/Builders/Build.cpp @@ -127,6 +127,7 @@ One MakeBuild::CreateHost(bool sync_files) One MakeBuild::CreateBuilder(Host *host) { SetupDefaultMethod(); + InitBlitz(); VectorMap bm = GetMethodVars(method); String builder = bm.Get("BUILDER", "GCC"); int q = BuilderMap().Find(builder); diff --git a/uppsrc/ide/Builders/BuilderComponents.h b/uppsrc/ide/Builders/BuilderComponents.h index defab8f2c..7a5d79581 100644 --- a/uppsrc/ide/Builders/BuilderComponents.h +++ b/uppsrc/ide/Builders/BuilderComponents.h @@ -28,6 +28,7 @@ struct Blitz { String BlitzBaseFile(); void ResetBlitz(); +void InitBlitz(); class BlitzBuilderComponent : public BuilderComponent { public: