ports/127297: Redefinition warnings in print/freetype2
Jeremy Chadwick
koitsu at FreeBSD.org
Wed Sep 24 23:30:03 UTC 2008
The following reply was made to PR ports/127297; it has been noted by GNATS.
From: Jeremy Chadwick <koitsu at FreeBSD.org>
To: Jeremy Messenger <mezz7 at cox.net>
Cc: bug-followup at freebsd.org
Subject: Re: ports/127297: Redefinition warnings in print/freetype2
Date: Wed, 24 Sep 2008 16:29:11 -0700
On Wed, Sep 24, 2008 at 05:18:14PM -0500, Jeremy Messenger wrote:
> On Wed, 24 Sep 2008 17:07:20 -0500, Jeremy Chadwick <koitsu at freebsd.org>
> wrote:
>
>> On Wed, Sep 24, 2008 at 11:58:26AM -0500, Jeremy Messenger wrote:
>>>> The pre-patch section comments out #define
>>>> TT_CONFIG_OPTION_BYTECODE_INTERPRETER in
>>>> include/freetype/config/ftoption.h (when
>>>> WITHOUT_TTF_BYTECODE_ENABLED is
>>>> not defined by the user), but then earlier in the Makefile, it
>>>> re-enables it:
>>>
>>> I am not seeing any bug. When the WITHOUT_TTF_BYTECODE_ENABLED is not
>>> defined then the TT_CONFIG_OPTION_BYTECODE_INTERPRETER will be enable,
>>> which is a correct behavior. Unless I am blind?
>>>
>>> {snip}
>>>
>>> There is no problem. As for the redefine warning, I think it's harmless
>>> since it's still enable with no change as it's merely enable again.
>>
>> The bug is in the port Makefile as I described. The CFLAGS addition of
>> -DTT_CONFIG_OPTION_BYTECODE_INTERPRETER is 100% worthless, and induces
>> the warnings.
>>
>> Let's step through each piece of the build process.
>>
>> Someone ultimately does "make" in ports/print/freetype2. They do not
>> have WITHOUT_TTF_BYTECODE_ENABLED defined.
>>
>> In the port Makefile:
>>
>> .if !defined(WITHOUT_TTF_BYTECODE_ENABLED)
>> CFLAGS+= -DTT_CONFIG_OPTION_BYTECODE_INTERPRETER
>> .endif
>>
>> At this point TT_CONFIG_OPTION_BYTECODE_INTERPRETER will be defined
>> during the build of the actual program. You can even see it being
>> defined forcefully in "cc".
>>
>> Then later, in the port Makefile, we find this:
>>
>> .if !defined(WITHOUT_TTF_BYTECODE_ENABLED)
>> @${REINPLACE_CMD} -e '/#define
>> TT_CONFIG_OPTION_BYTECODE_INTERPRETER/s,/\* \(.*\) \*/,\1,; /#define
>> TT_CONFIG_OPTION_UNPATENTED_HINTING/s,^\(.*\),/* \1 \*/,' \
>> ${WRKSRC}/include/freetype/config/ftoption.h
>> .endif
>>
>> The $REINPLACE_CMD code never gets executed, which makes sense because
>> WITHOUT_TTF_BYTECODE_ENABLED is not defined.
>
> Incorrect. See that '!', so the REINPLACE_CMD does get executed. It's why
> I have shown you my example.
Yes you're right -- it does get executed. I was incorrect.
But this is part of the problem. The REINPLACE_CMD causes this to
happen (ftconfig.h) when WITHOUT_TTF_BYTECODE_ENABLED is not defined:
-/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
+#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
Which ultimately means the #define happens in the .h, ***AND*** being
defined via cc ... -DTT_CONFIG_OPTION_BYTECODE_INTERPRETER.
So again -- what is the point of the CFLAGS modifier part of the
Makefile when you're already doing it with the REINPLACE_CMD? :-)
> The warnings don't mean it's bug.
Are you *serious*? Wow. Just... wow.
Shall I close the PR?
--
| Jeremy Chadwick jdc at parodius.com |
| Parodius Networking http://www.parodius.com/ |
| UNIX Systems Administrator Mountain View, CA, USA |
| Making life hard for others since 1977. PGP: 4BD6C0CB |
More information about the freebsd-gnome
mailing list