diff mbox

Solaris & [PATCH libdrm 1/2] configure.ac: split -fvisibility and __attribute__((visibility)) checks

Message ID 550F7087.2040609@oracle.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alan Coopersmith March 23, 2015, 1:46 a.m. UTC
On 03/ 9/15 05:37 AM, Emil Velikov wrote:
> The former does not imply the latter and vice-versa. One such example is
> the Sun compiler.
> 
> Cc: Alan Coopersmith <alan.coopersmith@oracle.com>
> Cc: Thierry Reding <treding@nvidia.com>
> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
> ---
> 
> Hi Alan,
> Can you please take a look it this series covers the symbol visibility
> issues mentioned earlier ? In theory it should work like a charm but I
> cannot really test it :-\

Patch 1 of 2 breaks configure on Solaris - I get:

checking for VALGRIND... no
checking whether cc -xc99=%all supports __attribute__((visibility))... ./configure[13393]: set does not quote correctly, so add quotes: double-quote^J      # substitution turns \\ into \, and sed turns \ into \.^J      sed -n ^I"s//\\/g;^J^I  s/^\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\)=\(.*\)/\1=2/p"^J      ;; #(^J    *)^J      # : not found [No such file or directory]
./configure[13393]: {\1+set}: bad substitution
./configure[13992]: : cannot open
./configure[14000]: : cannot open
./configure[14032]: : cannot open
./configure[14051]: : cannot open
./configure[14128]: : cannot open
./configure[14139]: : cannot open
./configure[14150]: : cannot open
./configure[14435]: : cannot open
./configure[14563]: : cannot open
./configure[14603]: : cannot open
./configure[14610]: : cannot open
./configure[14639]: : cannot open
./configure[14671]: : cannot open
./configure[14740]: : cannot open
./configure[14744]: : cannot open
./configure[14778]: : cannot open
./configure[14928]: : cannot open
./configure[14948]: : cannot open
./configure[14962]: : cannot open
./configure[14966]: : cannot open
configure: error: write failure creating 

It also generated new autoconf warnings generating the configure script:

configure.ac:422: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
configure.ac:422: the top level
configure.ac:422: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
configure.ac:422: the top level
autoreconf: running: /net/also.us.oracle.com/export/alanc/autotools/install/bin/autoconf --force
configure.ac:422: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
configure.ac:422: the top level
autoreconf: running: /net/also.us.oracle.com/export/alanc/autotools/install/bin/autoheader --force
configure.ac:422: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
configure.ac:422: the top level
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:422: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
configure.ac:422: the top level

Both seem to have been caused by a misplaced close paren/brace pair and are 
fixed by:


(Gotta love autoconf and the mysteries of proper [] placements.)

After that I can build on Solaris with patch #1 applied, but patch #2 then breaks
due to Solaris Studio 12.4 compilers being more pedantic about prototypes in headers
having the external visibility declarations too - lots of errors of the form:

"intel_bufmgr.c", line 60: redeclaration must have the same or more restrictive linker scoping: drm_intel_bo_alloc_for_render

It looks like none of the headers have the drm_public attributes the compiler wants
to see there.

> Additionally can you guys build libdrm (barring the patch you sent the
> other day), or you need some parts of this ancient patch
> http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/x11-libs/libdrm/files/libdrm-2.4.58-solaris.patch?view=markup

That looks very much like an ancient patch we still have in our tree [1] since
I never found out if we could upstream it or replace it from our former DRM
team. Unfortunately, they're all gone now - I've cc'ed the people who picked
up that work - I'd already asked Randy to look at it as part of the work he's
doing to reconcile our DRM sources with upstream.

[1] https://hg.java.net/hg/solaris-x11~x-s12-clone/file/4e6b5865e3ec/open-src/lib/libdrm/solaris-drm-port.patch

I keep a subset in my local git repo to enable building from upstream since the
raw upstream builds don't work without at least some of it.   (See attached 
patches for that subset.)

Comments

Emil Velikov March 26, 2015, 3:46 p.m. UTC | #1
On 23/03/15 01:46, Alan Coopersmith wrote:
> On 03/ 9/15 05:37 AM, Emil Velikov wrote:
>> The former does not imply the latter and vice-versa. One such example is
>> the Sun compiler.
>>
>> Cc: Alan Coopersmith <alan.coopersmith@oracle.com>
>> Cc: Thierry Reding <treding@nvidia.com>
>> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
>> ---
>>
>> Hi Alan,
>> Can you please take a look it this series covers the symbol visibility
>> issues mentioned earlier ? In theory it should work like a charm but I
>> cannot really test it :-\
> 
> Patch 1 of 2 breaks configure on Solaris - I get:
> 
> checking for VALGRIND... no
> checking whether cc -xc99=%all supports __attribute__((visibility))...
> ./configure[13393]: set does not quote correctly, so add quotes:
> double-quote^J      # substitution turns \\ into \, and sed turns \ into
> \.^J      sed -n ^I"s//\\/g;^J^I 
> s/^\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\)=\(.*\)/\1=2/p"^J      ;;
> #(^J    *)^J      # : not found [No such file or directory]
> ./configure[13393]: {\1+set}: bad substitution
> ./configure[13992]: : cannot open
> ./configure[14000]: : cannot open
> ./configure[14032]: : cannot open
> ./configure[14051]: : cannot open
> ./configure[14128]: : cannot open
> ./configure[14139]: : cannot open
> ./configure[14150]: : cannot open
> ./configure[14435]: : cannot open
> ./configure[14563]: : cannot open
> ./configure[14603]: : cannot open
> ./configure[14610]: : cannot open
> ./configure[14639]: : cannot open
> ./configure[14671]: : cannot open
> ./configure[14740]: : cannot open
> ./configure[14744]: : cannot open
> ./configure[14778]: : cannot open
> ./configure[14928]: : cannot open
> ./configure[14948]: : cannot open
> ./configure[14962]: : cannot open
> ./configure[14966]: : cannot open
> configure: error: write failure creating
> It also generated new autoconf warnings generating the configure script:
> 
> configure.ac:422: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call
> detected in body
> ../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
> ../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
> ../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
> configure.ac:422: the top level
> configure.ac:422: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call
> detected in body
> ../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
> ../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
> ../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
> configure.ac:422: the top level
> autoreconf: running:
> /net/also.us.oracle.com/export/alanc/autotools/install/bin/autoconf --force
> configure.ac:422: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call
> detected in body
> ../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
> ../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
> ../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
> configure.ac:422: the top level
> autoreconf: running:
> /net/also.us.oracle.com/export/alanc/autotools/install/bin/autoheader
> --force
> configure.ac:422: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call
> detected in body
> ../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
> ../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
> ../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
> configure.ac:422: the top level
> autoreconf: running: automake --add-missing --copy --force-missing
> configure.ac:422: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call
> detected in body
> ../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
> ../../lib/autoconf/general.m4:2661: _AC_LINK_IFELSE is expanded from...
> ../../lib/autoconf/general.m4:2678: AC_LINK_IFELSE is expanded from...
> configure.ac:422: the top level
> 
> Both seem to have been caused by a misplaced close paren/brace pair and
> are fixed by:
> 
> --- a/configure.ac
> +++ b/configure.ac
> @@ -422,7 +422,7 @@ AC_MSG_CHECKING([whether $CC supports
> __attribute__((visibility))])
> AC_LINK_IFELSE([AC_LANG_PROGRAM([
>     int foo_default( void ) __attribute__((visibility("default")));
>     int foo_hidden( void ) __attribute__((visibility("hidden")));
> -], HAVE_ATTRIBUTE_VISIBILITY="yes"; AC_MSG_RESULT([yes]),
> AC_MSG_RESULT([no])]);
> +])], [HAVE_ATTRIBUTE_VISIBILITY="yes"; AC_MSG_RESULT([yes])],
> AC_MSG_RESULT([no]));
> 
> if test "x$HAVE_ATTRIBUTE_VISIBILITY" = xyes; then
>     AC_DEFINE(HAVE_VISIBILITY, 1, [Compiler supports
> __attribute__((visibility))])
> 
> (Gotta love autoconf and the mysteries of proper [] placements.)
> 
Playing around with [] is always fun. Thanks for the fix.

> After that I can build on Solaris with patch #1 applied, but patch #2
> then breaks
> due to Solaris Studio 12.4 compilers being more pedantic about
> prototypes in headers
> having the external visibility declarations too - lots of errors of the
> form:
> 
> "intel_bufmgr.c", line 60: redeclaration must have the same or more
> restrictive linker scoping: drm_intel_bo_alloc_for_render
> 
> It looks like none of the headers have the drm_public attributes the
> compiler wants
> to see there.
> 
Ouch... this explains why many places in X symbols are explicitly
annotated as X_HIDDEN. From a closer look it seems to be the
shorter/safe option. Plus to catch internal symbols slipping away I can
add wire up a few tests at make check :-)

>> Additionally can you guys build libdrm (barring the patch you sent the
>> other day), or you need some parts of this ancient patch
>> http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/x11-libs/libdrm/files/libdrm-2.4.58-solaris.patch?view=markup
>>
> 
> That looks very much like an ancient patch we still have in our tree [1]
> since
> I never found out if we could upstream it or replace it from our former DRM
> team. Unfortunately, they're all gone now - I've cc'ed the people who
> picked
> up that work - I'd already asked Randy to look at it as part of the work
> he's
> doing to reconcile our DRM sources with upstream.
> 
> [1]
> https://hg.java.net/hg/solaris-x11~x-s12-clone/file/4e6b5865e3ec/open-src/lib/libdrm/solaris-drm-port.patch
> 
> 
> I keep a subset in my local git repo to enable building from upstream
> since the
> raw upstream builds don't work without at least some of it.   (See
> attached patches for that subset.)
> 
Thanks !

Was honestly hoping that patch #1 is not required as:
 - Getting the drm.h header in sync with the kernel will be annoying.
 - The struct drm_map/drmMapBufs/drmRmMap is part of the legacy drm
cruft for which, I would like to think, there are no more users.

Obviously the latter can be confirmed by Randy and friends.

Cheers,
Emil
randyf@sibernet.com March 26, 2015, 4:56 p.m. UTC | #2
>
> Was honestly hoping that patch #1 is not required as:
> - Getting the drm.h header in sync with the kernel will be annoying.

   Indeed.

   I have a version of drm.h that works with Solaris and *should* still 
work with all other consumers, but as I still have a ways to get fully to 
speed, am hesitant to suggest a patch (are there other issues I have yet 
to discover).

> - The struct drm_map/drmMapBufs/drmRmMap is part of the legacy drm
> cruft for which, I would like to think, there are no more users.
>
> Obviously the latter can be confirmed by Randy and friends.

   I'm somewhat confused by this statement, as I still see the use of 
struct drm_map, as is it's usage in the Solaris ports of drm.  Am I 
missing something (like I said, I still have a ways to go to get to any 
decent level of contribution)?

   Cheers!

 	---- Randy
Emil Velikov March 26, 2015, 6:50 p.m. UTC | #3
Hello Randy

On 26/03/15 16:56, randyf@sibernet.com wrote:
>>
>> Was honestly hoping that patch #1 is not required as:
>> - Getting the drm.h header in sync with the kernel will be annoying.
> 
>   Indeed.
> 
>   I have a version of drm.h that works with Solaris and *should* still
> work with all other consumers, but as I still have a ways to get fully
> to speed, am hesitant to suggest a patch (are there other issues I have
> yet to discover).
> 
Afaict the current Patch #1 will work with non-sun consumers.
Considering that the header(s) are currently out of sync (rather badly
imho), and the legacy note below would be nice if we can avoid the change.

Sometimes dri-devel can be a bit slow, so I would suggest that you post
finding/patches earlier rather than later.

>> - The struct drm_map/drmMapBufs/drmRmMap is part of the legacy drm
>> cruft for which, I would like to think, there are no more users.
>>
>> Obviously the latter can be confirmed by Randy and friends.
> 
>   I'm somewhat confused by this statement, as I still see the use of
> struct drm_map, as is it's usage in the Solaris ports of drm.  Am I
> missing something (like I said, I still have a ways to go to get to any
> decent level of contribution)?
> 
Can you relate Solaris ports of drm to the linux one in a sentence ? Or
if there is a public repo somewhere that would be great.

Guessing that "legacy" is the keyword here - it refers to old drm
drivers that do user mode-setting - UMS, amongst other nasty stuff.
Based on the latest kernel sources the ioctls (and the struct) are
considered as legacy, that plus the lack of any users (very quick grep)
seems rather conclusive.

If you guys are still using legacy drm drivers (for whatever reason)
that would be rather unfortunate. Otherwise you should be able to kill
off the remaining users of struct drm_map/drmMapBufs/drmRmMap.


Cheers,
Emil
randyf@sibernet.com April 1, 2015, 2:42 p.m. UTC | #4
Sorry, went to drafts and not to send...

>>> - The struct drm_map/drmMapBufs/drmRmMap is part of the legacy drm
>>> cruft for which, I would like to think, there are no more users.
>>>
>>> Obviously the latter can be confirmed by Randy and friends.
>>
>>   I'm somewhat confused by this statement, as I still see the use of
>> struct drm_map, as is it's usage in the Solaris ports of drm.  Am I
>> missing something (like I said, I still have a ways to go to get to any
>> decent level of contribution)?
>>
> Can you relate Solaris ports of drm to the linux one in a sentence ? Or
> if there is a public repo somewhere that would be great.

   We may not be as behind as you might have believed, but we are not as 
close as I would like either.

   In that sentance: we have an i915 KMS driver with a decent amount of 
feature set (reasonable Haswell and DRI/DRM that would support that 
chipset) to the end of 2013 (when we had a significant amount of help from 
Intel), but we have a way too much Solaris-centric port than I would have 
preferred.

   The public repo (Mercurial based) is at:

     https://hg.java.net/hg/solaris-x11~x-s12-clone/

The kernel driver source specifically at:

     https://hg.java.net/hg/solaris-x11~x-s12-clone/file/tip/open-src/kernel

Note that the move of KMS drivers to this repo is recent, so there is 
little history of their evolution.

>
> Guessing that "legacy" is the keyword here - it refers to old drm
> drivers that do user mode-setting - UMS, amongst other nasty stuff.
> Based on the latest kernel sources the ioctls (and the struct) are
> considered as legacy, that plus the lack of any users (very quick grep)
> seems rather conclusive.

   AFAICT, we aren't that bad.  And where we divert is probably more driven 
by our lack of knowlege at the time than the ability to properly converge, 
but I have lots of ground to cover before I can properly resolve the 
differences.

>
> If you guys are still using legacy drm drivers (for whatever reason)
> that would be rather unfortunate. Otherwise you should be able to kill
> off the remaining users of struct drm_map/drmMapBufs/drmRmMap.
>

   For the most part, I have no problem with killing off any legacy layers 
that should go, as we will catch up (we do have the ability to at least 
offer a working frozen solution in the intrim).  At least in the near 
term, there are bodies actively working on getting the above driver source 
in sync with what the community has.

>
> Cheers,
> Emil
>

   Ditto!

   Randy
     (enjoying a bit of downtime a couple thousand miles from home)
Emil Velikov April 5, 2015, 3:16 p.m. UTC | #5
On 1 April 2015 at 15:42,  <randyf@sibernet.com> wrote:
>
> Sorry, went to drafts and not to send...
>
>>>> - The struct drm_map/drmMapBufs/drmRmMap is part of the legacy drm
>>>> cruft for which, I would like to think, there are no more users.
>>>>
>>>> Obviously the latter can be confirmed by Randy and friends.
>>>
>>>
>>>   I'm somewhat confused by this statement, as I still see the use of
>>> struct drm_map, as is it's usage in the Solaris ports of drm.  Am I
>>> missing something (like I said, I still have a ways to go to get to any
>>> decent level of contribution)?
>>>
>> Can you relate Solaris ports of drm to the linux one in a sentence ? Or
>> if there is a public repo somewhere that would be great.
>
>
>   We may not be as behind as you might have believed, but we are not as
> close as I would like either.
>
>   In that sentance: we have an i915 KMS driver with a decent amount of
> feature set (reasonable Haswell and DRI/DRM that would support that chipset)
> to the end of 2013 (when we had a significant amount of help from Intel),
> but we have a way too much Solaris-centric port than I would have preferred.
>
>   The public repo (Mercurial based) is at:
>
>     https://hg.java.net/hg/solaris-x11~x-s12-clone/
>
> The kernel driver source specifically at:
>
>     https://hg.java.net/hg/solaris-x11~x-s12-clone/file/tip/open-src/kernel
>
> Note that the move of KMS drivers to this repo is recent, so there is little
> history of their evolution.
>
Right, so things are a few newer than I thought, but still a bit off
from upstream drm. Not too shocking though considering the amount of
work that goes in there ;-) The thing that struck me is that every drm
driver comes with its own version of core drm. Not critisizing, just a
bit unusual.

>>
>> Guessing that "legacy" is the keyword here - it refers to old drm
>> drivers that do user mode-setting - UMS, amongst other nasty stuff.
>> Based on the latest kernel sources the ioctls (and the struct) are
>> considered as legacy, that plus the lack of any users (very quick grep)
>> seems rather conclusive.
>
>
>   AFAICT, we aren't that bad.  And where we divert is probably more driven
> by our lack of knowlege at the time than the ability to properly converge,
> but I have lots of ground to cover before I can properly resolve the
> differences.
>
Afaics you're using the last UMS-capable xf86-video-radeon, so maybe
not all places are updated/ported to KMS ? Not a big deal though.

>>
>> If you guys are still using legacy drm drivers (for whatever reason)
>> that would be rather unfortunate. Otherwise you should be able to kill
>> off the remaining users of struct drm_map/drmMapBufs/drmRmMap.
>>
>
>   For the most part, I have no problem with killing off any legacy layers
> that should go, as we will catch up (we do have the ability to at least
> offer a working frozen solution in the intrim).  At least in the near term,
> there are bodies actively working on getting the above driver source in sync
> with what the community has.
>
Great - glad to hear. Meanwhile I've noticed a few workarounds for
libdrm in the hg repo:
 - Force use of GCC and GNU make.
 - Disabled tests.

If you can provide some more information that would be appreciated.
Wouldn't mind squashing some bugs :-)

>>
>> Cheers,
>> Emil
>>
>
>   Ditto!
>
>   Randy
>     (enjoying a bit of downtime a couple thousand miles from home)
>
Sweet, enjoy the break.

Thanks
Emil
randyf@sibernet.com April 5, 2015, 6:33 p.m. UTC | #6
On Sun, 5 Apr 2015, Emil Velikov wrote:

>> Note that the move of KMS drivers to this repo is recent, so there is little
>> history of their evolution.
>>
> Right, so things are a few newer than I thought, but still a bit off
> from upstream drm. Not too shocking though considering the amount of
> work that goes in there ;-)

   It is a bit overwhelming, so I (currently) tend to scan this list 
irregularly, and look for some source snapshot for porting reference.


> The thing that struck me is that every drm driver comes with its own 
> version of core drm. Not critisizing, just a bit unusual.

   So technically, only one driver has it's own version, and that is mostly 
driven by a lack of hardware to verify it continues to work as drm changes 
(and is slated for removal as the hardware is obsolete and unavailable).

   With (currently) only one other drm driver, it would appear that the drm 
core is unique to it (and to some extent it is), but the evolution would 
be to be towards a common drm.


>>
>>   AFAICT, we aren't that bad.  And where we divert is probably more driven
>> by our lack of knowlege at the time than the ability to properly converge,
>> but I have lots of ground to cover before I can properly resolve the
>> differences.
>>
> Afaics you're using the last UMS-capable xf86-video-radeon, so maybe
> not all places are updated/ported to KMS ? Not a big deal though.
>

   We're hopeful that this will change in the near future (we have someone 
working on a radeon KMS port, which is expected to use a common drm).


>>
>>   For the most part, I have no problem with killing off any legacy layers
>> that should go, as we will catch up (we do have the ability to at least
>> offer a working frozen solution in the intrim).  At least in the near term,
>> there are bodies actively working on getting the above driver source in sync
>> with what the community has.
>>
> Great - glad to hear. Meanwhile I've noticed a few workarounds for
> libdrm in the hg repo:
> - Force use of GCC and GNU make.
> - Disabled tests.
>
> If you can provide some more information that would be appreciated.
> Wouldn't mind squashing some bugs :-)

   Niveditha might be a better person to answer these questions as she has 
more history with libdrm.  I've only recently become aware of the tests, 
but hoping to somehow make use of them.

   I'm happy also to squash bugs as well, and also hoping to offer patches 
in the next couple of months (might need some help or understanding for 
those first few).


>>
>>   Randy
>>     (enjoying a bit of downtime a couple thousand miles from home)
>>
> Sweet, enjoy the break.
>

   It was sort of part work, part relax and nice to get away, but now back 
to reality.


 	---- Randy
Niveditha Rau April 6, 2015, 4:22 p.m. UTC | #7
On 04/05/15 11:33, randyf@sibernet.com wrote:
>
>
> On Sun, 5 Apr 2015, Emil Velikov wrote:
>
>>> Note that the move of KMS drivers to this repo is recent, so there 
>>> is little
>>> history of their evolution.
>>>
>> Right, so things are a few newer than I thought, but still a bit off
>> from upstream drm. Not too shocking though considering the amount of
>> work that goes in there ;-)
>
>   It is a bit overwhelming, so I (currently) tend to scan this list 
> irregularly, and look for some source snapshot for porting reference.
>
>
>> The thing that struck me is that every drm driver comes with its own 
>> version of core drm. Not critisizing, just a bit unusual.
>
>   So technically, only one driver has it's own version, and that is 
> mostly driven by a lack of hardware to verify it continues to work as 
> drm changes (and is slated for removal as the hardware is obsolete and 
> unavailable).
>
>   With (currently) only one other drm driver, it would appear that the 
> drm core is unique to it (and to some extent it is), but the evolution 
> would be to be towards a common drm.
>
>
>>>
>>>   AFAICT, we aren't that bad.  And where we divert is probably more 
>>> driven
>>> by our lack of knowlege at the time than the ability to properly 
>>> converge,
>>> but I have lots of ground to cover before I can properly resolve the
>>> differences.
>>>
>> Afaics you're using the last UMS-capable xf86-video-radeon, so maybe
>> not all places are updated/ported to KMS ? Not a big deal though.
>>
>
>   We're hopeful that this will change in the near future (we have 
> someone working on a radeon KMS port, which is expected to use a 
> common drm).
>
>
>>>
>>>   For the most part, I have no problem with killing off any legacy 
>>> layers
>>> that should go, as we will catch up (we do have the ability to at least
>>> offer a working frozen solution in the intrim).  At least in the 
>>> near term,
>>> there are bodies actively working on getting the above driver source 
>>> in sync
>>> with what the community has.
>>>
>> Great - glad to hear. Meanwhile I've noticed a few workarounds for
>> libdrm in the hg repo:
>> - Force use of GCC and GNU make.
>> - Disabled tests.
>>
>> If you can provide some more information that would be appreciated.
>> Wouldn't mind squashing some bugs :-)
>
IIRC, we had issues with getting drm.7 without using GNU make.   And the 
build of libdrm_radeon was failing without using gcc.  I'll revert back 
to Studio and get you the failures since its been a while having made 
the switch.

We had disabled tests because of parfait failures which is part of our 
build process.  But I think we should be able to enable it now since we 
have an updated version of parfait that we are building with.

Thanks
Niveditha
diff mbox

Patch

--- a/configure.ac
+++ b/configure.ac
@@ -422,7 +422,7 @@  AC_MSG_CHECKING([whether $CC supports __attribute__((visibility))])
 AC_LINK_IFELSE([AC_LANG_PROGRAM([
     int foo_default( void ) __attribute__((visibility("default")));
     int foo_hidden( void ) __attribute__((visibility("hidden")));
-], HAVE_ATTRIBUTE_VISIBILITY="yes"; AC_MSG_RESULT([yes]), AC_MSG_RESULT([no])]);
+])], [HAVE_ATTRIBUTE_VISIBILITY="yes"; AC_MSG_RESULT([yes])], AC_MSG_RESULT([no]));
 
 if test "x$HAVE_ATTRIBUTE_VISIBILITY" = xyes; then
     AC_DEFINE(HAVE_VISIBILITY, 1, [Compiler supports __attribute__((visibility))])