Установите разные флаги компилятора для разных исходных файлов с помощью 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 использовать разные флаги для разных файлов?

Если это невозможно, как лучше построить и упаковать такой большой проект?

0 ответов

Другие вопросы по тегам