Установите разные флаги компилятора для разных исходных файлов с помощью f2py и numpy.distutils
У меня есть оболочка Python для набора кодов Fortran90, которые я создаю с помощью f2py и упаковываю с помощью numpy.distutils
Моя проблема в том, что один исходный файл (из большого и сложного проекта) не будет создан, если оптимизация компилятора не отключена. Таким образом, я пытаюсь выяснить, как установить разные оптимизации компилятора для разных исходных файлов, которые передаются в numpy.distutils.
Подходящий setup.py
В данный момент файл выглядит так:
def configuration(parent_package='', top_path=None):
global config
from numpy.distutils.misc_util import Configuration
from numpy.distutils.fcompiler import get_default_fcompiler
# figure out which compiler we're going to use
compiler = get_default_fcompiler()
# set some fortran compiler-dependent flags
f90flags = []
if compiler == 'gnu95':
f90flags.append('-fno-range-check')
f90flags.append('-ffree-form')
elif compiler == 'intel' or compiler == 'intelem':
f90flags.append('-132')
# Need zero-level optimization to avoid build problems with one file only!
f90flags.append('-O0')
# Suppress all compiler warnings (avoid huge CI log files)
f90flags.append('-w')
config = Configuration(package_name='mypackage', parent_name=parent_package, top_path=top_path)
config.add_extension(name='_mypackage',
sources=[mypackage_gen_source],
extra_f90_compile_args=f90flags,
f2py_options=['--quiet'],
)
return config
def mypackage_gen_source(ext, build_dir):
# ... some code that assembles a list of file paths called sourcelist
config.have_f90c()
return sourcelist
if __name__ == '__main__':
from numpy.distutils.core import setup
setup(configuration=configuration)
Есть ли способ указать numpy.distutils использовать разные флаги для разных файлов?
Если это невозможно, как лучше построить и упаковать такой большой проект?