> On Jan 13, 2016, at 2:19 AM, Ryan Schmidt <ryandes...@macports.org> wrote:
> 
> On Jan 12, 2016, at 1:05 PM, Craig Treleaven wrote:
>> On Jan 12, 2016, at 4:09 AM, Ryan Schmidt wrote:
>>> On Jan 11, 2016, at 9:03 AM, Craig Treleaven wrote:
>>>> I’m having buiild failures due to includes pointing to old/other headers 
>>>> installed in /opt/local/include.
>>>> 
>>>> As I understand it, 'pig-config —cflags’ returns an empty string when a 
>>>> header is installed in /usr/include.  The port I’m working on, MythTV 
>>>> 0.28-pre, uses pkg-config to check for several dependencies.  Under 
>>>> MacPorts, I end up with '-I/opt/local/include’ early in the compiler 
>>>> arguments and thus picks up old or unintended versions of headers.  Under 
>>>> Linux, no problem.
>>>> 
>>>> Is there some way I can coerce pkg-config to treat /opt/local/include like 
>>>> it does /usr/include?  I’ve looked at the man page for pkg-config and 
>>>> tried using some of the environment variables but without success.
>>>> 
>>>> Eg, with MacPorts:
>>>> $ pkg-config --cflags x264
>>>> -I/opt/local/include                     ## want to make this disappear!
>>>> 
>>>> is there a magic recipe?
>>> 
>>> You should not want to make -I/opt/local/include disappear. It is where the 
>>> headers of dependencies are installed, so it is needed. If it is causing 
>>> problems, it is likely because your project's build system does not place 
>>> the include flags in the correct order. The correct order is (relative) 
>>> project include paths first, (absolute) dependency include paths second. If 
>>> you cannot fix the build system to do that, you can use your sed trick to 
>>> replace -I/opt/local/include with -isystem/opt/local/include which will 
>>> have the same effect.
>>> 
>> 
>> Hi Ryan:
>> 
>> I asked over on the pkg-config mailing list and got:
>> 
>>> This isn't documented (should be), but you can override pkg-config's notion 
>>> of the system include path with the environment variable 
>>> PKG_CONFIG_SYSTEM_INCLUDE_PATH. If that's not set, it uses the compiled in 
>>> defaults. That's been in pkg-config for a long time, so it should work with 
>>> the version you have. This should be in the form of a path style variable 
>>> with : separators.
> 
> I didn't know about that variable. Thanks for finding out about that.
> 
> 
>> This is exactly what I wanted:
>> 
>> $ pkg-config --cflags-only-I libass
>> -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include 
>> -I/opt/local/include/libpng16 -I/opt/local/include 
>> -I/opt/local/include/fribidi -I/opt/local/include/glib-2.0 
>> -I/opt/local/lib/glib-2.0/include -I/opt/local/include 
>> -I/opt/local/include/freetype2 
>> 
>> $ PKG_CONFIG_SYSTEM_INCLUDE_PATH=/opt/local/include pkg-config 
>> --cflags-only-I libass
>> -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 
>> -I/opt/local/include/fribidi -I/opt/local/include/glib-2.0 
>> -I/opt/local/lib/glib-2.0/include -I/opt/local/include/freetype2 
>> 
>> Adding 'configure.env-append    
>> PKG_CONFIG_SYSTEM_INCLUDE_PATH=${prefix}/include’  makes the MythTV build 
>> work the way it does on Linux (aka “successfully”).
> 
> But is that because -I/opt/local/include then gets inserted into the correct 
> place in the compile line, or because -I/opt/local/include is omitted from 
> the compile line and it only works because MacPorts also happens to set 
> CPATH=/opt/local/include and you're using a newer compiler that supports 
> that? (Granted, only very old versions of clang don't support CPATH.)

There is no '-I/opt/local/include' anywhere in my compiler args now so I assume 
CPATH is used.  

BTW, you made me curious.  A recent Fedora23 compile log from a Myth’s buildbot 
is at:

https://code.mythtv.org/buildbot/builders/master-f23-64bit/builds/104/steps/compile%20core/logs/stdio

If you search for “-I/usr/include “, the only hits are invocations of Qt’s mod! 
 Never appears in the compiler args.  So I’m now building the “Myth-blessed” 
way!  ;)

> 
>> As to whether this is the “right” thing to do, you have far more knowledge 
>> and experience than me.  I think Myth’s configure is relying on a quirk of 
>> pkg-config.  I would think that other folks that are cross-compiling--or 
>> even just using a different prefix—must be hitting this problem.  I get very 
>> little traction with the Myth devs.  They writeoff stuff like this as a 
>> “MacPorts problem”.
> 
> Yeah they would be incorrect to blame bugs in their build system on us just 
> because we use their build system in a slightly different way than they 
> apparently do.

Agreed.

Craig
_______________________________________________
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to