Compiling Fortran code for Python module

Joshua Root jmr at macports.org
Thu May 2 19:34:17 PDT 2013


Interesting. Although, LDSHARED is defined like this in config/Makefile:

LDSHARED=	$(CC) -bundle -undefined dynamic_lookup $(LDFLAGS)

so you'd think setting LDFLAGS wouldn't affect those initial flags.

- Josh

On 2013-5-3 12:07 , Michael Dickens wrote:
> In my recent (still not fully tested and hence not yet checked in) work
> with numpy and scipy, to get +universal working robustly, I have to
> manually set env LDFLAGS="-undefined dynamic_lookup -bundle", and also
> be careful with the other *FLAGS (e.g., CFLAGS, CPPFLAGS, CXXFLAGS,
> F2CFLAGS, ...). IIRC, the default Python distutils will -overwrite-
> their internal LDFLAGS, but -augment- the other *FLAGS. There's also an
> option when specifying a compile to do it using "noopt" or "noarch" --
> disable optimization or arch-specific flags; the former implies the
> latter.  There are also some compiles that I've run across in scipy and
> numpy that overrule the LDFLAGS default, but will honor the env LDFLAGS
> -- so, setting them this way seems to work very well all around.  I'm
> betting this is what Frank came upon. - MLD
> 
> On Thu, May 2, 2013, at 09:32 PM, Joshua Root wrote:
>> The default LDSHARED command when building C extensions for python
>> definitely contains "-bundle -undefined dynamic_lookup". For example
>> this is a link command run by py27-game (which succeeds, of course):
>>
>> /usr/bin/clang -bundle -undefined dynamic_lookup -L/opt/local/lib -arch
>> x86_64 -arch x86_64 build/temp.macosx-10.7-x86_64-2.7/src/imageext.o
>> -L/opt/local/lib -L/opt/local/lib -L/opt/local/lib -L/opt/local/lib
>> -lSDL -lSDL_image -lpng -ljpeg -o
>> build/lib.macosx-10.7-x86_64-2.7/pygame/imageext.so
>>
>> So it's not clear why (a) you would have to add it manually at all, or
>> (b) why it would fail like that. For (a), I can only guess that maybe
>> the setup.py is overriding some of the standard distutils behaviour for
>> handling environment variables, and overwriting something when it should
>> append. The environment is one of the relevant differences between
>> running it manually and from a portfile.



More information about the macports-dev mailing list