public virtual int CompileOrCache( ICompiler comp, IEnumerable<string> args)
{
if (IsSupported(comp, args))
{
args = comp.CompileArgs;
var hc = DeriveHashKey(comp, args);
if (hc.Result == DataHashResult.Ok)
{
CacheManifest hm;
if (CheckCache(comp, args ,hc, out hm))
{
Logging.Hit(hc.Hash, comp.WorkingDirectory, comp.ObjectTarget);
return OnCacheHitLocked(comp, hc, hm);
}
else
{ // miss, try build
return OnCacheMissLocked(comp, hc, args, hm);
}
}
}
else
{
Stats.LockStatsCall(() => Stats.CacheUnsupported++);
}
if (comp.ResponseFile != null)
{
if (File.Exists(comp.ResponseFile))
{
//var resp = File.ReadAllText(comp.ResponseFile);
}
}
return CompileOnly(comp, args);
}