[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]


On August 20, 2005 16:23, Mark Purcell wrote:
> In rebuilding a number of KDE packages for gcc 4. It would appear that
> there is an issue with KDE_ENABLE_HIDDEN_VISIBILITY, which is generally
> swtiched on in configure.in.in.
> The short fix appears to delete/comment out this switch as there are
> issues with gcc 4.
> Thought I would post this here as it took me a while looking on upstream
> sites to find it if people are having issues building. Errors are
> missing typeinfo...
> Has anyone else seen this and should be we doing something about it
> across the Debian board?

Yes, thanks for bringing this up. Everyone who maintains a KDE package, 
please read on.

GCC 4.0 has introduced a nifty feature, symbol visibility hiding, that 
promises to improve the performance of KDE applications, particularly load 
times (it does other things, but this is probably why people have heard of 
it). 'man gcc' has a good paragraph on it.

KDE 3.4 has acquired a measure of support for this feature, as have a great 
many unofficial KDE applications, and those that haven't yet probably will 

For anything based on Qt3 (and therefore everything KDE) to work properly 
with this feature, Qt must be specially patched. The Qt3 presently in Sid 
does not have this patch. Since the new visibility feature is still causing 
a lot of problems (build issues and strange PIC/non-PIC head-scratchers), 
we don't plan to enable its use in the immediate future. Perhaps KDE 3.5 
will improve matters. Please note that even if/when Qt3 does acquire 
support, you should not immediately assume that it is time to enable this 
feature for your packages, since you'll want to wait for KDE (or at least 
kdelibs) to be rebuilt to make sure all is well, and then you'll still have 
to make a judgment call about the state of your own packages.

The latest versions of the KDE build infrastructure (the admin folder, 
basically) check whether or not the Qt present on the system is patched to 
support the new visibility feature. Other versions of the build system 
either don't have this check, or have a broken check. I've never seen 
a ./configure option to enable or disable the visibility feature, though 
you may very well get ./configure output telling you whether of not the 
visibility support has been enabled or disabled. It is therefore up to all 
maintainers of KDE packages to examine his or her own packages carefully, 
and if necessary to rip out the relevant parts from acinclude.m4.in and/or 
configure.in.in. Then you must regenerate the autotool build files manually 
("make -f admin/Makefile.common dist") or ensure that they get regenerated 
at build time. You'll know if your package is attempting to build with this 
feature enabled if the build logs contain the following flags: 
"-fvisibility=hidden" and "-fvisibility-inlines-hidden".

The core KDE packages of the upcoming gcc-4.0 generation are patched to 
ensure that the symbol visibility feature is not used. This very simple 
patch, for those interested in an example of how we managed, is available 
in the pkg-kde alioth subversion repository, at 

Cheers and good luck,
Christopher Martin

Attachment: pgp831DmtOU_2.pgp
Description: PGP signature

Reply to: