[Kde-games-devel] What defines __KDE_HAVE_GCC_VISIBILITY? was: Build system changes: new library libkdegamesprivate

Ian Wadham iandw.au at gmail.com
Tue May 22 06:12:46 UTC 2012


On 22/05/2012, at 4:01 AM, Albert Astals Cid wrote:

> El Dissabte, 19 de maig de 2012, a les 14:13:41, Ian Wadham va escriure:
>> The problem was that the macros KDEGAMES_EXPORT and KDE_EXPORT
>> evaluated to null strings in my system.  Consequently, although libkdegames
>> would compile and build, none of the symbols were visible to any of the
>> games programs or dependent libraries, so I was continually getting
>> undefined symbols when linking.
>> 
>> KDE_EXPORT is defined in <prefix>/include/kdemacros.h by:
>> 
>> #ifdef __KDE_HAVE_GCC_VISIBILITY
>> #define KDE_NO_EXPORT __attribute__ ((visibility("hidden")))
>> #define KDE_EXPORT __attribute__ ((visibility("default")))
>> #define KDE_IMPORT __attribute__ ((visibility("default")))
>> #elif defined(_WIN32) || defined(_WIN64)
>> #define KDE_NO_EXPORT
>> #define KDE_EXPORT __declspec(dllexport)
>> #define KDE_IMPORT __declspec(dllimport)
>> #else
>> #define KDE_NO_EXPORT
>> #define KDE_EXPORT
>> #define KDE_IMPORT
>> #endif
>> 
>> Somehow __KDE_HAVE_GCC_VISIBILITY was not defined in my system, although
>> __GNUC__ evaluates to 4.  So where, in KDE, is __KDE_HAVE_GCC_VISIBILITY
>> defined (it is not in kdemacros.h)?  And, if there is neither GCC visibility
>> nor Windows, should not KDE_EXPORT evaluate to some sensible default or
>> something uncompileable?
> 
> __KDE_HAVE_GCC_VISIBILITY is defined by kdemacros.h that originates from 
> kdelibs

Errmmmm, no.  That was exactly my problem … __KDE_HAVE_GCC_VISIBILITY
not defined, null KDE_EXPORT, null KDEGAMES_EXPORT, no external links to
libkdegames ... no build.

__KDE_HAVE_GCC_VISIBILITY is *referenced* in kdemacros.h but it is not defined
there, nor can I find it in any other kdelibs include-file.  However, after much further
probing, I have found <prefix>/share/apps/cmake/modules/FindKDE4Internal.cmake,
which appears to define __KDE_HAVE_GCC_VISIBILITY … phew, puff, puff …

So now I know the part of KDE to file a bug report and have done so.

Cheers, Ian W.




Cheers, Ian W.






More information about the kde-games-devel mailing list