[mythtv] OSX backend beta test
David Abrahams
dave at boost-consulting.com
Sun Jan 8 19:26:17 UTC 2006
Daniel Kristjansson <danielk at cuymedia.net> writes:
> On Sun, 2006-01-08 at 11:20 -0500, David Abrahams wrote:
>> Daniel Kristjansson <danielk at cuymedia.net> writes:
>>
>> > On Sat, 2006-01-07 at 16:56 -1000, David Abrahams wrote:
>> >> * As noted in numerous places in my patch, the project's use of
>> >>
>> >> #define always_inline
>> >>
>> >> is problematic. That practice should end; for now it's worked
>> >> around through careful management of #include order and a
>> >> strategically-placed #undef always_inline
>> > Not a MythTV problem; you need to make your case with the ffmpeg people.
>> >
>> > They are much more ornery than us, so steel yourself. :)
>>
>> Err, wait a minute. The MythTV configure script generates
>>
>> #define always_inline
>>
>> Isn't that part, at least, our problem?
>>
>> Are you saying that even if we fix that, FFMPEG is still #defining
>> always_inline in their headers?
> This is an inherited problem from ffmpeg, grep the code for
> always_inline.. And yes it is defined in libs/libavutil/common.h
> if we don't do it.. Our ./configure is a modification of the
> ffmpeg configure, we are just aping their always_inline handling.
>
> What is going on here is that some functions should always be
> inlined, but depending on the compiler there are different
> keywords or attributes to achieve this.
Yes, I understand what's going on, thanks.
> gcc for instance has
> the function attribute 'always_inline',
Yes, that's part of the problem. The GCC people should have used a
__reserved_identifier__. But then, FFMPEG should have used
PREFIXED_ALL_UPPER_CASE anyway, to stay out of the way of user
identifiers.
> while icc does not
> respect that attribute (and does not have it at all in earlier
> versions). If the MacOSX system headers define always_inline
They do not. Apple just uses always_inline in legal ways that are
incompatible with the way that FFMPEG (and we) are #defining it.
> then the ffmpeg version must be renamed to something like
> ALWAYS_INLINE, and in the case of OSX, simply be defined as
> always_inline.
No, that wouldn't work. It would have to be
#define FFMPEG_ALWAYS_INLINE __attribute__((always_inline))
or
#define FFMPEG_ALWAYS_INLINE __inline__ __attribute__((always_inline))
> But this is something to discuss in the ffmeg mailing list,
Okay, will do.
> since the developers there may have some reason for not doing
> this, or they may simply not know that OSX uses this define.
In principle, it's not just an OSX issue. Any code that uses GCC's
always_inline feature in the same legal ways as OSX will have the same
problem.
--
Dave Abrahams
Boost Consulting
www.boost-consulting.com
More information about the mythtv-dev
mailing list