Chris@87
|
1 #!/usr/bin/env python
|
Chris@87
|
2 """
|
Chris@87
|
3 setup.py for installing F2PY
|
Chris@87
|
4
|
Chris@87
|
5 Usage:
|
Chris@87
|
6 python setup.py install
|
Chris@87
|
7
|
Chris@87
|
8 Copyright 2001-2005 Pearu Peterson all rights reserved,
|
Chris@87
|
9 Pearu Peterson <pearu@cens.ioc.ee>
|
Chris@87
|
10 Permission to use, modify, and distribute this software is given under the
|
Chris@87
|
11 terms of the NumPy License.
|
Chris@87
|
12
|
Chris@87
|
13 NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
|
Chris@87
|
14 $Revision: 1.32 $
|
Chris@87
|
15 $Date: 2005/01/30 17:22:14 $
|
Chris@87
|
16 Pearu Peterson
|
Chris@87
|
17
|
Chris@87
|
18 """
|
Chris@87
|
19 from __future__ import division, print_function
|
Chris@87
|
20
|
Chris@87
|
21 __version__ = "$Id: setup.py,v 1.32 2005/01/30 17:22:14 pearu Exp $"
|
Chris@87
|
22
|
Chris@87
|
23 import os
|
Chris@87
|
24 import sys
|
Chris@87
|
25 from distutils.dep_util import newer
|
Chris@87
|
26 from numpy.distutils import log
|
Chris@87
|
27 from numpy.distutils.core import setup
|
Chris@87
|
28 from numpy.distutils.misc_util import Configuration
|
Chris@87
|
29
|
Chris@87
|
30 from __version__ import version
|
Chris@87
|
31
|
Chris@87
|
32 def configuration(parent_package='',top_path=None):
|
Chris@87
|
33 config = Configuration('f2py', parent_package, top_path)
|
Chris@87
|
34
|
Chris@87
|
35 config.add_data_dir('docs')
|
Chris@87
|
36 config.add_data_dir('tests')
|
Chris@87
|
37
|
Chris@87
|
38 config.add_data_files('src/fortranobject.c',
|
Chris@87
|
39 'src/fortranobject.h',
|
Chris@87
|
40 'f2py.1'
|
Chris@87
|
41 )
|
Chris@87
|
42
|
Chris@87
|
43 config.make_svn_version_py()
|
Chris@87
|
44
|
Chris@87
|
45 def generate_f2py_py(build_dir):
|
Chris@87
|
46 f2py_exe = 'f2py'+os.path.basename(sys.executable)[6:]
|
Chris@87
|
47 if f2py_exe[-4:]=='.exe':
|
Chris@87
|
48 f2py_exe = f2py_exe[:-4] + '.py'
|
Chris@87
|
49 if 'bdist_wininst' in sys.argv and f2py_exe[-3:] != '.py':
|
Chris@87
|
50 f2py_exe = f2py_exe + '.py'
|
Chris@87
|
51 target = os.path.join(build_dir, f2py_exe)
|
Chris@87
|
52 if newer(__file__, target):
|
Chris@87
|
53 log.info('Creating %s', target)
|
Chris@87
|
54 f = open(target, 'w')
|
Chris@87
|
55 f.write('''\
|
Chris@87
|
56 #!%s
|
Chris@87
|
57 # See http://cens.ioc.ee/projects/f2py2e/
|
Chris@87
|
58 import os, sys
|
Chris@87
|
59 for mode in ["g3-numpy", "2e-numeric", "2e-numarray", "2e-numpy"]:
|
Chris@87
|
60 try:
|
Chris@87
|
61 i=sys.argv.index("--"+mode)
|
Chris@87
|
62 del sys.argv[i]
|
Chris@87
|
63 break
|
Chris@87
|
64 except ValueError: pass
|
Chris@87
|
65 os.environ["NO_SCIPY_IMPORT"]="f2py"
|
Chris@87
|
66 if mode=="g3-numpy":
|
Chris@87
|
67 sys.stderr.write("G3 f2py support is not implemented, yet.\\n")
|
Chris@87
|
68 sys.exit(1)
|
Chris@87
|
69 elif mode=="2e-numeric":
|
Chris@87
|
70 from f2py2e import main
|
Chris@87
|
71 elif mode=="2e-numarray":
|
Chris@87
|
72 sys.argv.append("-DNUMARRAY")
|
Chris@87
|
73 from f2py2e import main
|
Chris@87
|
74 elif mode=="2e-numpy":
|
Chris@87
|
75 from numpy.f2py import main
|
Chris@87
|
76 else:
|
Chris@87
|
77 sys.stderr.write("Unknown mode: " + repr(mode) + "\\n")
|
Chris@87
|
78 sys.exit(1)
|
Chris@87
|
79 main()
|
Chris@87
|
80 '''%(sys.executable))
|
Chris@87
|
81 f.close()
|
Chris@87
|
82 return target
|
Chris@87
|
83
|
Chris@87
|
84 config.add_scripts(generate_f2py_py)
|
Chris@87
|
85
|
Chris@87
|
86 log.info('F2PY Version %s', config.get_version())
|
Chris@87
|
87
|
Chris@87
|
88 return config
|
Chris@87
|
89
|
Chris@87
|
90 if __name__ == "__main__":
|
Chris@87
|
91
|
Chris@87
|
92 config = configuration(top_path='')
|
Chris@87
|
93 version = config.get_version()
|
Chris@87
|
94 print('F2PY Version', version)
|
Chris@87
|
95 config = config.todict()
|
Chris@87
|
96
|
Chris@87
|
97 if sys.version[:3]>='2.3':
|
Chris@87
|
98 config['download_url'] = "http://cens.ioc.ee/projects/f2py2e/2.x"\
|
Chris@87
|
99 "/F2PY-2-latest.tar.gz"
|
Chris@87
|
100 config['classifiers'] = [
|
Chris@87
|
101 'Development Status :: 5 - Production/Stable',
|
Chris@87
|
102 'Intended Audience :: Developers',
|
Chris@87
|
103 'Intended Audience :: Science/Research',
|
Chris@87
|
104 'License :: OSI Approved :: NumPy License',
|
Chris@87
|
105 'Natural Language :: English',
|
Chris@87
|
106 'Operating System :: OS Independent',
|
Chris@87
|
107 'Programming Language :: C',
|
Chris@87
|
108 'Programming Language :: Fortran',
|
Chris@87
|
109 'Programming Language :: Python',
|
Chris@87
|
110 'Topic :: Scientific/Engineering',
|
Chris@87
|
111 'Topic :: Software Development :: Code Generators',
|
Chris@87
|
112 ]
|
Chris@87
|
113 setup(version=version,
|
Chris@87
|
114 description = "F2PY - Fortran to Python Interface Generaton",
|
Chris@87
|
115 author = "Pearu Peterson",
|
Chris@87
|
116 author_email = "pearu@cens.ioc.ee",
|
Chris@87
|
117 maintainer = "Pearu Peterson",
|
Chris@87
|
118 maintainer_email = "pearu@cens.ioc.ee",
|
Chris@87
|
119 license = "BSD",
|
Chris@87
|
120 platforms = "Unix, Windows (mingw|cygwin), Mac OSX",
|
Chris@87
|
121 long_description = """\
|
Chris@87
|
122 The Fortran to Python Interface Generator, or F2PY for short, is a
|
Chris@87
|
123 command line tool (f2py) for generating Python C/API modules for
|
Chris@87
|
124 wrapping Fortran 77/90/95 subroutines, accessing common blocks from
|
Chris@87
|
125 Python, and calling Python functions from Fortran (call-backs).
|
Chris@87
|
126 Interfacing subroutines/data from Fortran 90/95 modules is supported.""",
|
Chris@87
|
127 url = "http://cens.ioc.ee/projects/f2py2e/",
|
Chris@87
|
128 keywords = ['Fortran', 'f2py'],
|
Chris@87
|
129 **config)
|