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