1+ project (' OMMBV' , ' c' ,
2+ version : ' 1.0.2' ,
3+ license : ' BSD-3' ,
4+ meson_version : ' >=0.64.0' ,
5+ default_options : [
6+ ' warning_level=2' ,
7+ ' c_args=-Wno-unused-parameter -Wno-cast-function-type -Wno-missing-field-initializers' ,
8+ ' fortran_args=-Wno-line-truncation -Wno-conversion -Wno-unused-variable -Wno-maybe-uninitialized -Wno-unused-dummy-argument -Wno-compare-reals' ,
9+ ' fortran_std=legacy' ],
10+ )
11+
12+ add_languages (' fortran' , native : false )
13+
14+ py_mod = import (' python' )
15+ py = py_mod.find_installation(pure : false )
16+ py_dep = py.dependency ()
17+
18+ incdir_numpy = run_command (py,
19+ [' -c' , ' import os; os.chdir(".."); import numpy; print(numpy.get_include())' ],
20+ check : true
21+ ).stdout().strip()
22+
23+ incdir_f2py = run_command (py,
24+ [' -c' , ' import os; os.chdir(".."); import numpy.f2py; print(numpy.f2py.get_include())' ],
25+ check : true
26+ ).stdout().strip()
27+
28+ inc_np = include_directories (incdir_numpy, incdir_f2py)
29+
30+ # Unlike distutils, meson doesn't yet include some of the f2py stuff
31+ fortranobject_c = incdir_f2py / ' fortranobject.c'
32+
33+ fortranobject_lib = static_library (' _fortranobject' ,
34+ fortranobject_c,
35+ dependencies : py_dep,
36+ include_directories : [incdir_numpy, incdir_f2py])
37+
38+ fortranobject_dep = declare_dependency (
39+ link_with : fortranobject_lib,
40+ include_directories : [incdir_numpy, incdir_f2py])
41+
42+
43+ igrf_source = custom_target (' igrfmodule.c' ,
44+ input : [' OMMBV/igrf13.f' ], # .f so no F90 wrappers
45+ output : [' igrfmodule.c' , ' igrf-f2pywrappers.f' ],
46+ command : [py, ' -m' , ' numpy.f2py' , ' @INPUT@' , ' -m' , ' igrf' , ' --lower' ]
47+ )
48+ py.extension_module(' igrf' ,
49+ [
50+ ' OMMBV/igrf13.f' ,
51+ igrf_source,
52+ fortranobject_c
53+ ],
54+ include_directories : inc_np,
55+ link_with : fortranobject_lib,
56+ dependencies : [py_dep, fortranobject_dep],
57+ subdir : ' OMMBV' ,
58+ install : true
59+ )
60+
61+
62+ sources_source = custom_target (' sourcesmodule.c' ,
63+ input : [' OMMBV/sources.f' , ' OMMBV/igrf13.f' ], # .f so no F90 wrappers
64+ output : [' sourcesmodule.c' , ' sources-f2pywrappers.f' ],
65+ command : [py, ' -m' , ' numpy.f2py' , ' @INPUT@' , ' -m' , ' sources' , ' --lower' ]
66+ )
67+ py.extension_module(' sources' ,
68+ [
69+ ' OMMBV/sources.f' ,
70+ ' OMMBV/igrf13.f' ,
71+ sources_source,
72+ fortranobject_c
73+ ],
74+ include_directories : inc_np,
75+ link_with : fortranobject_lib,
76+ dependencies : [py_dep, fortranobject_dep],
77+ subdir : ' OMMBV' ,
78+ install : true
79+ )
80+
81+
82+ fcoords_source = custom_target (' fortran_coordsmodule.c' ,
83+ input : [' OMMBV/_coords.f' ], # .f so no F90 wrappers
84+ output : [' fortran_coordsmodule.c' , ' fortran_coords-f2pywrappers.f' ],
85+ command : [py, ' -m' , ' numpy.f2py' , ' @INPUT@' , ' -m' , ' fortran_coords' , ' --lower' ]
86+ )
87+ py.extension_module(' fortran_coords' ,
88+ [
89+ ' OMMBV/_coords.f' ,
90+ fcoords_source,
91+ fortranobject_c
92+ ],
93+ include_directories : inc_np,
94+ link_with : fortranobject_lib,
95+ dependencies : [py_dep, fortranobject_dep],
96+ subdir : ' OMMBV' ,
97+ install : true
98+ )
99+
100+ py.install_sources(
101+ ' OMMBV/_core.py' ,
102+ ' OMMBV/heritage.py' ,
103+ ' OMMBV/satellite.py' ,
104+ ' OMMBV/trace.py' ,
105+ ' OMMBV/trans.py' ,
106+ ' OMMBV/utils.py' ,
107+ ' OMMBV/vector.py' ,
108+ ' OMMBV/__init__.py' ,
109+ pure : false ,
110+ subdir : ' OMMBV'
111+ )
0 commit comments