Skip to content
  • Thiago Macieira's avatar
    Place classes from private headers in the Qt_5_PRIVATE_API ELF version · fff3101b
    Thiago Macieira authored
    
    
    This way, it's possible to tell which applications and libraries depend
    on the Qt private API and of which Qt library. Linux distributions can
    use this information to decide which applications need to be recompiled
    every time Qt itself is rebuilt.
    
    This is done by scanning all class and struct definitions in the private
    headers (we've already got the list from syncqt). I opted to add a new
    script instead of modifying syncqt because then this can run in parallel
    with the rest of the compilation, as opposed to during qmake
    time. Another advantage is that it catches modifications to the headers
    in between qmake executions.
    
    Since this is already Unix specific, it should be no problem to use Perl.
    
    This solution is limited to use of non-inline symbols of classes
    declared in private headers. It will not catch free variables (such as
    qsimd_p.h's qt_cpu_features), use of inlined functions or just plain use
    of a class/struct for accessing its data members. However, this is
    already better than nothing and should help Linux distributions quite a
    lot. And there's no way to catch the latter issue anyway.
    
    Change-Id: I049a653beeb5454c9539ffff13e3fff36400ebbd
    Reviewed-by: default avatarOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
    Reviewed-by: default avatarThiago Macieira <thiago.macieira@intel.com>
    fff3101b