New submission from Marcus von Appen <m...@sysfault.org>:

If CPython is built and installed with additional CPPFLAGS and/or LDFLAGS on a 
posix platform, those flags are not passed to C extension modules, leaving 
users (in the worst case) lost without the ability to build and install C 
extension modules, if the flags are important for detecting include files or 
linking.

Example:

* Python shall be built with GNU pthreads (--with-pth)
* The pth libs are not installed in any default location, CPP and LD know 
about, but somewhere else (e.g. /usr/local/lib/pth/ and /usr/local/include/pth/)
* Appropriate CPPFLAGS="-I/usr/local/include/pth" and 
LDFLAGS="-L/usr/local/lib/pth" are defined in the environment for the build.

Python gets built and installed. Result in /wherever/pythonX.X/config/Makefile:

...
OPT=        
BASECFLAGS= -fno-strict-aliasing
CFLAGS=     $(BASECFLAGS) -pipe $(OPT) $(EXTRA_CFLAGS)
...
CPPFLAGS=   -I. -IInclude -I$(srcdir)/Include -I/usr/local/include/pth
LDFLAGS=    -L/usr/local/lib/pth
...

Invocation of python-config --cflags:

# python-config --cflags 
-I/whereever/include/pythonX.X -I/whereever/include/pythonX.X 
-fno-strict-aliasing -pipe 

Invocation of python-config --ldflags:

# python-config --ldflags 
-L/whereever/lib/pythonX.X/config -lpth -lutil -lm -lpythonX.X


So far, so problematic. Since Python.h incorporates pth.h, compiling something 
without defining the necessary CPPFLAGS manually will fail. Same for linking.

The issue is *not* limited to --with-pth, but to any CPPFLAGS/LDFLAGS settings 
that are necessary to get CPython to work on the target platform. One might 
argue that CPPFLAGS should go to CFLAGS, but that contradicts the purpose of 
CPPFLAGS and CFLAGS.

At least for posix-alike platforms (those for which _init_posix() is called in 
distutils/sysconfig.py), it is necessary that both, python-config as well as 
the distutils internals add the appropriate CPPFLAGS.

It might be argued that one should use CFLAGS instead of CPPFLAGS for such 
important additional flags, but what shall be done with LDFLAGS then?

----------
assignee: eric.araujo
components: Build, Distutils, Extension Modules
messages: 162405
nosy: eric.araujo, marcusva, tarek
priority: normal
severity: normal
status: open
title: Incomplete Python LDFLAGS and CPPFLAGS used for extension modules on 
posix
type: behavior
versions: Python 2.6, Python 2.7, Python 3.1, Python 3.2

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue15018>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to