[SciPy-dev] Re: Another issue with scipy_distutils and FORTRAN files
Berthold Höllmann
hoel at gl-group.com
Tue Mar 30 10:02:24 EST 2004
Berthold Höllmann <hoel at gl-group.com> writes:
> Pearu Peterson <pearu at scipy.org> writes:
>
>> On Mon, 29 Mar 2004, [ISO-8859-15] Berthold Höllmann wrote:
>>
>>> Our FORTRAN code often uses "include" statements. The FORTRAN compiler
>>> we use (DF 6.1, ifc 7.1, WorkShop 6 update 2 Fortran) recognize the
>>> -I flag for pointing to an include directory. I seems scipy_distutils
>>> have lost the ability to regognize the "include_dirs" argument to
>>> "Extensions". The compiler does not find the include files anymore.
>>
>> Hmm, I just checked and I could not reproduce this: paths in
>> the include_dirs keyword argument of an Extension class are shown
>> in `compile options:`. Try for example
>>
>> cd scipy_distutils/tests/f2py_f90_ext
>> python setup.py config_fc --fcompiler=intel build
>>
>> after updating/installing scipy_core and f2py from CVS.
>>
>> However, f2py was not able to find the include files. This is now fixed
>> in f2py CVS.
>
> I have no idea what went wrong here, but now it works,
Hello,
It turned out, the problem is how to tell include directiories when
generating a library. We use
---snip---
...
flibs = [('fortmisc',
{'sources': lib_src,
'include_dirs': [os.path.join("lib", "numfort")],
'macros':[]},),]
...
setup(...
libraries=flibs,
...)
...
---snip---
and setting
set_verbosity(3)
gives
---snip---
...
Running os.system('( /usr/software/fitools/opt/intel/compiler70_l_fc_pc_7.1.038/ia32/bin/ifc -72 -w90 -w95 -KPIC -cm -O3 -unroll -tpp5 -xM -c lib/numfort/NB.F -o build/temp.linux-i686-2.2/lib/numfort/NB.o ; echo $? > /tmp/@6992.7 ) 2>&1 | tee /tmp/@6992.6 ')
...
---snip---
I guess the the correct fix lies in _compiler in fcompiler.py. The line
---snip---
command = compiler + cc_args + s_args + o_args + extra_postargs
---snip---
should be
---snip---
command = compiler + cc_args + s_args + o_args + extra_postargs + pp_opts
---snip---
(at least this works for me). Of course "NB.F" only compiles with
another (helpfull) patch to fcompiler.f. I changed
---snip---
language_map = {'.f':'f77',
'.for':'f77',
'.F':'f77',
'.ftn':'f77',
'.f77':'f77',
'.f90':'f90',
'.F90':'f90',
'.f95':'f90'}
---snip---
and
---snip---
src_extensions = ['.for','.ftn','.f77','.f','.f90','.f95','.F','.F90']
---snip---
Probably 'language_map' shold reflect that '.F' and '.F90' files
should be preprocessed using fpp, and fpp must be explicitly switche
on on some platforms.
Kind regards
Berthold Höllmann
--
Germanischer Lloyd AG
CAE Development
Vorsetzen 35
20459 Hamburg
Phone: +49(0)40 36149-7374
Fax: +49(0)40 36149-7320
e-mail: hoel at gl-group.com
Internet: http://www.gl-group.com
This e-mail contains confidential information for the exclusive attention of the intended addressee. Any access of third parties to this e-mail is unauthorised. Any use of this e-mail by unintended recipients such as copying, distribution, disclosure etc. is prohibited and may be unlawful. When addressed to our clients the content of this e-mail is subject to the General Terms and Conditions of GL's Group of Companies applicable at the date of this e-mail.
GL's Group of Companies does not warrant and/or guarantee that this message at the moment of receipt is authentic, correct and its communication free of errors, interruption etc.
More information about the SciPy-Dev
mailing list