Skip to content
  • Jörg Bornemann's avatar
    AutoMoc: Re-run moc if a dependency is missing · 9ac3503d
    Jörg Bornemann authored
    AutoMoc uses the moc-emitted dependency file of Qt 5.15 to track
    dependencies. Such a dependency may well live outside the project and
    can vanish, for example when installing a new compiler version.
    
    This situation was detected before, but merely a warning was issued.
    Now, we're considering a generated file as out of date if a dependency
    is missing and re-generate it.
    
    We also have to remove the missing dependency from the ParseCache.
    Otherwise the AUTOMOC target for all generators other than Ninja will
    always be out of date.
    
    The ParseCacheChanged flag had to be made atomic, because we're
    potentially accessing it from multiple threads. The dependencies vector
    itself is not vulnerable in this regard, because there's one vector per
    file, and we're accessing exactly one ParseCacheT::FileHandleT per thread.
    
    Fixes: #21136
    9ac3503d