def compile_c_single_file(filename, vectorize=True):
"""
Compile C source (excluding .c extension) in place to module.
"""
c_filename = filename + '.c'
# this is a temporary hack to force the use of GCC instead of clang
if os.path.isfile("/usr/local/bin/gcc-5"):
print("using gcc-5 compiler from homebrew...")
os.environ["CC"] = os.environ["CXX"] = "gcc-5"
else:
os.environ["CC"] = os.environ["CXX"] = "gcc"
if os.name == 'nt':
extension = [
Extension(
filename,
sources = [c_filename],
include_dirs = [numpy.get_include()],
extra_compile_args = '-openmp'.split(),
extra_link_args = '-openmp'.split()
)
]
else:
extension = [
Extension(
filename,
sources = [c_filename],
include_dirs = [numpy.get_include()],
extra_compile_args = '-w -fopenmp'.split() + (['-fno-tree-vectorize'] if not vectorize else []),
extra_link_args = '-fopenmp'.split()
)
]
setup(
name = filename,
cmdclass = {'build_ext' : build_ext},
include_dirs = [numpy.get_include()],
ext_modules = extension,
script_args='build_ext --inplace'.split()
)
评论列表
文章目录