diff options
author | Benjamin Peterson <benjamin@python.org> | 2014-08-10 03:01:49 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2014-08-10 03:01:49 (GMT) |
commit | acb8c5234302f8057b331abaafb2cc8697daf58f (patch) | |
tree | c2fcf8f963d5c9755937799022e05e210534211f | |
parent | 3b48af018f6a7e7d1d0ec5acefe2890361dbf832 (diff) | |
download | cpython-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.in | 7 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rwxr-xr-x | configure | 4 | ||||
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | setup.py | 6 |
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 @@ -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. @@ -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 @@ -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: |