@@ -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