Skip to content

Commit 4155d91

Browse files
committed
Disable LTO if -fno-lto is in *FLAGS environment.
1 parent 7cfdbe1 commit 4155d91

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

setup.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,21 +106,40 @@ def add_optimization_flags(self):
106106
"""
107107

108108
env = os.environ.copy()
109-
if not setupext.config.getboolean('libs', 'enable_lto', fallback=True):
110-
return env
111109
if sys.platform == 'win32':
112110
return env
113-
111+
enable_lto = setupext.config.getboolean('libs', 'enable_lto',
112+
fallback=None)
113+
114+
if 'CFLAGS' in os.environ:
115+
if '-fno-lto' in os.environ['CFLAGS']:
116+
if enable_lto is True:
117+
raise ValueError('Configuration enable_lto=True, but '
118+
'CFLAGS contains -fno-lto')
119+
enable_lto = False
114120
cppflags = []
115121
if 'CPPFLAGS' in os.environ:
116122
cppflags.append(os.environ['CPPFLAGS'])
123+
if '-fno-lto' in os.environ['CPPFLAGS']:
124+
if enable_lto is True:
125+
raise ValueError('Configuration enable_lto=True, but '
126+
'CPPFLAGS contains -fno-lto')
127+
enable_lto = False
117128
cxxflags = []
118129
if 'CXXFLAGS' in os.environ:
119130
cxxflags.append(os.environ['CXXFLAGS'])
131+
if '-fno-lto' in os.environ['CXXFLAGS']:
132+
if enable_lto is True:
133+
raise ValueError('Configuration enable_lto=True, but '
134+
'CXXFLAGS contains -fno-lto')
135+
enable_lto = False
120136
ldflags = []
121137
if 'LDFLAGS' in os.environ:
122138
ldflags.append(os.environ['LDFLAGS'])
123139

140+
if enable_lto is False:
141+
return env
142+
124143
if has_flag(self.compiler, '-fvisibility=hidden'):
125144
for ext in self.extensions:
126145
ext.extra_compile_args.append('-fvisibility=hidden')

0 commit comments

Comments
 (0)