Hi all,
As mentioned by Alan, some compilers do not like it when the symbol declaration and definition differ wrt their visibility attribute.
Afaict there are three ways to handle this; - Add the drm_public macro into the public headers, and annotate the declarations. - Use version script to limit the exported symbols. - Remove the drm_public macro/VISIBILITY_CFLAGS and annotate the private symbols.
From the above three I believe that 3) is the better one as:
- it does not add drm_public to the library API, - does not rely on features that some platform may be missing (or require singling out every platform in the configure.ac script).
So I've went ahead with 3), added a few tests and wired them to `make check' so that one can easily catch problems.
I have checked that the libraries do not export any new symbols and the scripts work as intended nearly a dozen times :-)
The whole series can be found in branch reannotate-symbols at https://github.com/evelikov/libdrm
Cheers, Emil