summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2014-08-10 03:01:49 (GMT)
committerBenjamin Peterson <benjamin@python.org>2014-08-10 03:01:49 (GMT)
commitacb8c5234302f8057b331abaafb2cc8697daf58f (patch)
treec2fcf8f963d5c9755937799022e05e210534211f
parent3b48af018f6a7e7d1d0ec5acefe2890361dbf832 (diff)
downloadcpython-acb8c5234302f8057b331abaafb2cc8697daf58f.zip
cpython-acb8c5234302f8057b331abaafb2cc8697daf58f.tar.gz
cpython-acb8c5234302f8057b331abaafb2cc8697daf58f.tar.bz2
add -Werror=declaration-after-statement only to stdlib extension modules (closes #21121)
Patch from Stefan Krah.
-rw-r--r--Makefile.pre.in7
-rw-r--r--Misc/NEWS3
-rwxr-xr-xconfigure4
-rw-r--r--configure.ac3
-rw-r--r--setup.py6
5 files changed, 20 insertions, 3 deletions
diff --git a/Makefile.pre.in b/Makefile.pre.in
index f36c11d..3b4e21e 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -71,12 +71,17 @@ OPT= @OPT@
BASECFLAGS= @BASECFLAGS@
BASECPPFLAGS= @BASECPPFLAGS@
CONFIGURE_CFLAGS= @CFLAGS@
+# CFLAGS_NODIST is used for building the interpreter and stdlib C extensions.
+# Use it when a compiler flag should _not_ be part of the distutils CFLAGS
+# once Python is installed (Issue #21121).
+CONFIGURE_CFLAGS_NODIST=@CFLAGS_NODIST@
CONFIGURE_CPPFLAGS= @CPPFLAGS@
CONFIGURE_LDFLAGS= @LDFLAGS@
# Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the
# command line to append to these values without stomping the pre-set
# values.
PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
+PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST)
# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
# be able to build extension modules using the directories specified in the
# environment variables
@@ -91,7 +96,7 @@ ARFLAGS= @ARFLAGS@
# Extra C flags added for building the interpreter object files.
CFLAGSFORSHARED=@CFLAGSFORSHARED@
# C flags used for building the interpreter object files
-PY_CORE_CFLAGS= $(PY_CFLAGS) $(PY_CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE
+PY_CORE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE
# Machine-dependent subdirectories
diff --git a/Misc/NEWS b/Misc/NEWS
index c0bc433..a1d55c0 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -27,6 +27,9 @@ Core and Builtins
Library
-------
+- Issue #21121: Don't force 3rd party C extensions to be built with
+ -Werror=declaration-after-statement.
+
- Issue #21975: Fixed crash when using uninitialized sqlite3.Row (in particular
when unpickling pickled sqlite3.Row). sqlite3.Row is now initialized in the
__new__() method.
diff --git a/configure b/configure
index 87e6f3e..7379203 100755
--- a/configure
+++ b/configure
@@ -662,6 +662,7 @@ SHLIB_SUFFIX
LIBTOOL_CRUFT
OTHER_LIBTOOL_OPT
UNIVERSAL_ARCH_FLAGS
+CFLAGS_NODIST
BASECFLAGS
OPT
ABIFLAGS
@@ -6292,6 +6293,7 @@ fi
+
# The -arch flags for universal builds on OSX
UNIVERSAL_ARCH_FLAGS=
@@ -6452,7 +6454,7 @@ $as_echo "$ac_cv_declaration_after_statement_warning" >&6; }
if test $ac_cv_declaration_after_statement_warning = yes
then
- BASECFLAGS="$BASECFLAGS -Werror=declaration-after-statement"
+ CFLAGS_NODIST="$CFLAGS_NODIST -Werror=declaration-after-statement"
fi
# if using gcc on alpha, use -mieee to get (near) full IEEE 754
diff --git a/configure.ac b/configure.ac
index 124c445..418e16f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1138,6 +1138,7 @@ then
fi
AC_SUBST(BASECFLAGS)
+AC_SUBST(CFLAGS_NODIST)
# The -arch flags for universal builds on OSX
UNIVERSAL_ARCH_FLAGS=
@@ -1222,7 +1223,7 @@ yes)
if test $ac_cv_declaration_after_statement_warning = yes
then
- BASECFLAGS="$BASECFLAGS -Werror=declaration-after-statement"
+ CFLAGS_NODIST="$CFLAGS_NODIST -Werror=declaration-after-statement"
fi
# if using gcc on alpha, use -mieee to get (near) full IEEE 754
diff --git a/setup.py b/setup.py
index c909261..5d4f444 100644
--- a/setup.py
+++ b/setup.py
@@ -19,6 +19,12 @@ from distutils.spawn import find_executable
cross_compiling = "_PYTHON_HOST_PLATFORM" in os.environ
+# Add special CFLAGS reserved for building the interpreter and the stdlib
+# modules (Issue #21121).
+cflags = sysconfig.get_config_var('CFLAGS')
+py_cflags_nodist = sysconfig.get_config_var('PY_CFLAGS_NODIST')
+sysconfig.get_config_vars()['CFLAGS'] = cflags + ' ' + py_cflags_nodist
+
def get_platform():
# cross build
if "_PYTHON_HOST_PLATFORM" in os.environ: