'system cflags' with other prefix
ctreleaven at cogeco.ca
Tue Jan 12 07:43:20 PST 2016
The -I/opt/local/include is going into the compiler arguments too early which leads to at least two problems:
1) finds includes for the system version of certain libraries which may differ from the version bundled with MythTV. For example, MythTV has a customized version of FFmpeg but the early include finds the general MacPorts version. The MacPorts version lacks Myth’s customizations and therefore lacks certain symbols. Build fails.
2) finds the previous installed version of MythTV; ie building 0.27.5 finds previously installed 0.27.4. Changed functions lead to the wrong symbols being included. Build fails.
These problems don’t occur on Linux because pkg-config never returns (the system default) ‘-I/usr/include’, just an empty string. When ‘-I/opt/local/include’ is my system default, it would be nice if it were treated the same way.
(Yes, I know that MythTV’s configure is basically broken. It is a huge hairy beast (based on FFmpeg’s configure) and it works fine for all the Linux folk. I can’t get much interest in a “Mac” problem. Even though they are really relying on a quirk of pkg-config.)
> On Jan 12, 2016, at 9:24 AM, Dan Kegel <dank at kegel.com> wrote:
> It's behaving as intended. Why are the macports include files causing problems? If you don't want them, don't use macports' pkg-config, it's giving that -I flag for good reason.
> On Jan 12, 2016 6:04 AM, "Craig Treleaven" <ctreleaven at cogeco.ca <mailto:ctreleaven at cogeco.ca>> wrote:
> I’m trying to port a Linux-based application to OS X via the MacPorts packaging system and having buiild failures due to includes pointing to old/other headers installed in /opt/local/include. ‘/opt/local’ is the default prefix for everything MacPorts installs.
> As I understand it, under Linux, '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 it 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 since it is the ‘system include'
> Is there a magic recipe? (Changing the build system would be…difficult! I think I have a workaround with a simple script wrapper for pkg-config that uses sed to strip out '-I/opt/local/include’.)
> pkg-config mailing list
> pkg-config at lists.freedesktop.org <mailto:pkg-config at lists.freedesktop.org>
> http://lists.freedesktop.org/mailman/listinfo/pkg-config <http://lists.freedesktop.org/mailman/listinfo/pkg-config>
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the pkg-config