From 23077fd6a6131f8abd2c5f8a3ceed58e8c16d506 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 20 Apr 2018 20:56:29 +0530 Subject: [PATCH] DRYer --- setup.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index 4b203c6a2..4c0f95992 100755 --- a/setup.py +++ b/setup.py @@ -148,6 +148,13 @@ def test_compile(cc, *cflags): return subprocess.Popen([cc] + list(cflags) + [f.name, '-o', os.devnull]).wait() == 0 +def first_successful_compile(cc, *cflags): + for x in cflags: + if test_compile(cc, *shlex.split(x)): + return x + return '' + + class Env: def __init__(self, cc, cppflags, cflags, ldflags, ldpaths=[]): @@ -163,12 +170,7 @@ def init_env( native_optimizations = native_optimizations and not sanitize and not debug cc, ccver = cc_version() print('CC:', cc, ccver) - if test_compile(cc, '-fstack-protector-strong'): - stack_protector = '-fstack-protector-strong' - elif test_compile(cc, '-fstack-protector'): - stack_protector = '-fstack-protector' - else: - stack_protector = '' + stack_protector = first_successful_compile(cc, '-fstack-protector-strong', '-fstack-protector') missing_braces = '' if ccver < (5, 2) and cc == 'gcc': missing_braces = '-Wno-missing-braces'