in python/setup.py [0:0]
def build_extensions(self):
ct = self.compiler.compiler_type
opts = self.compiler_flags.get(ct, [])
if ct == "unix":
opts.append('-DVERSION_INFO="%s"' % self.distribution.get_version())
opts.append("-std=c++17")
# Allow reordering floating-point operations for
# better automatic vectorization, even without -ffast-math
# See: https://simonbyrne.github.io/notes/fastmath/#flushing_subnormals_to_zero
# for why -ffast-math is not included:
opts.extend(
[
"-fassociative-math",
"-fno-signaling-nans",
"-fno-trapping-math",
"-fno-signed-zeros",
"-freciprocal-math",
"-fno-math-errno",
]
)
if has_flag(self.compiler, "-fvisibility=hidden"):
opts.append("-fvisibility=hidden")
elif ct == "msvc":
opts.append('/DVERSION_INFO=\\"%s\\"' % self.distribution.get_version())
opts.append("/std:c++17")
for ext in self.extensions:
ext.extra_compile_args.extend(opts)
ext.extra_link_args.extend(self.linker_flags.get(ct, []))
build_ext.build_extensions(self)