From a3e324d623fa223d468f864840e1f79d924feaad Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 21 Jan 2024 08:34:29 +0530 Subject: [PATCH] When testing for cf-protection support take env into account --- setup.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index e4d8bc851..598375517 100755 --- a/setup.py +++ b/setup.py @@ -454,9 +454,11 @@ def init_env( # Universal build fails with -fcf-protection clang is not smart enough to filter it out for the ARM part intel_control_flow_protection = '-fcf-protection=full' if ccver >= (9, 0) and not build_universal_binary else '' control_flow_protection = arm_control_flow_protection if is_arm else intel_control_flow_protection - if control_flow_protection: - if not test_compile(cc, control_flow_protection): - control_flow_protection = '' + env_cflags = shlex.split(os.environ.get('CFLAGS', '')) + env_cppflags = shlex.split(os.environ.get('CPPFLAGS', '')) + env_ldflags = shlex.split(os.environ.get('LDFLAGS', '')) + if control_flow_protection and not test_compile(cc, control_flow_protection, *env_cppflags, *env_cflags, ldflags=env_ldflags): + control_flow_protection = '' cflags_ = os.environ.get( 'OVERRIDE_CFLAGS', ( f'-Wextra {float_conversion} -Wno-missing-field-initializers -Wall -Wstrict-prototypes {std}' @@ -473,9 +475,9 @@ def init_env( ) ldflags = shlex.split(ldflags_) ldflags.append('-shared') - cppflags += shlex.split(os.environ.get('CPPFLAGS', '')) - cflags += shlex.split(os.environ.get('CFLAGS', '')) - ldflags += shlex.split(os.environ.get('LDFLAGS', '')) + cppflags += env_cppflags + cflags += env_cflags + ldflags += env_ldflags if not debug and not sanitize and not is_openbsd and link_time_optimization: # See https://github.com/google/sanitizers/issues/647 cflags.append('-flto')