Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sage
Path: blob/develop/meson.build
4052 views
1
project(
2
'SageMath',
3
['c', 'cpp', 'cython'],
4
version: files('src/VERSION.txt'),
5
license: 'GPL v3',
6
default_options: ['c_std=c17', 'cpp_std=c++17', 'python.install_env=auto'],
7
meson_version: '>=1.2',
8
)
9
10
# Python module
11
# https://mesonbuild.com/Python-module.html
12
py_module = import('python')
13
py = py_module.find_installation(pure: false)
14
py_dep = py.dependency()
15
16
fs = import('fs')
17
18
is_windows = host_machine.system() == 'windows'
19
20
# Additional targets
21
py_with_pytest = py_module.find_installation(
22
required: false,
23
modules: ['pytest'],
24
)
25
if py_with_pytest.found()
26
test(
27
'pytest',
28
py_with_pytest,
29
args: [
30
'-m',
31
'pytest',
32
'-c',
33
meson.current_source_dir() / 'tox.ini',
34
'--doctest',
35
meson.current_source_dir() / 'src' / 'sage' / 'categories',
36
],
37
timeout: 0,
38
)
39
endif
40
41
# Workaround for missing init files (Cython doesn't handle namespace packages well)
42
create_files_command = [
43
py,
44
'-c',
45
'''
46
from pathlib import Path
47
content = "# Here so that cython creates the correct module name"
48
file_paths = [
49
'src/sage/interfaces/__init__.py',
50
'src/sage/crypto/block_cipher/__init__.py',
51
'src/sage/crypto/public_key/__init__.py',
52
'src/sage/logic/__init__.py',
53
'src/sage/parallel/__init__.py',
54
'src/sage/dynamics/cellular_automata/__init__.py',
55
'src/sage/dynamics/arithmetic_dynamics/__init__.py',
56
'src/sage/dynamics/__init__.py',
57
'src/sage/dynamics/complex_dynamics/__init__.py',
58
'src/sage/knots/__init__.py',
59
'src/sage/topology/__init__.py',
60
'src/sage/functions/__init__.py',
61
'src/sage/manifolds/subsets/__init__.py',
62
'src/sage/manifolds/__init__.py',
63
'src/sage/manifolds/differentiable/examples/__init__.py',
64
'src/sage/manifolds/differentiable/__init__.py',
65
'src/sage/coding/source_coding/__init__.py',
66
'src/sage/coding/guruswami_sudan/__init__.py',
67
'src/sage/coding/__init__.py',
68
'src/sage/coding/codecan/__init__.py',
69
'src/sage/games/__init__.py',
70
'src/sage/quivers/__init__.py',
71
'src/sage/schemes/cyclic_covers/__init__.py',
72
'src/sage/schemes/plane_conics/__init__.py',
73
'src/sage/schemes/curves/__init__.py',
74
'src/sage/schemes/plane_quartics/__init__.py',
75
'src/sage/schemes/jacobians/__init__.py',
76
'src/sage/schemes/toric/sheaf/__init__.py',
77
'src/sage/schemes/toric/__init__.py',
78
'src/sage/schemes/product_projective/__init__.py',
79
'src/sage/schemes/elliptic_curves/__init__.py',
80
'src/sage/schemes/riemann_surfaces/__init__.py',
81
'src/sage/schemes/hyperelliptic_curves/__init__.py',
82
'src/sage/schemes/berkovich/__init__.py',
83
'src/sage/schemes/generic/__init__.py',
84
'src/sage/schemes/projective/__init__.py',
85
'src/sage/schemes/__init__.py',
86
'src/sage/schemes/affine/__init__.py',
87
'src/sage/modular/hecke/__init__.py',
88
'src/sage/modular/pollack_stevens/__init__.py',
89
'src/sage/modular/overconvergent/__init__.py',
90
'src/sage/modular/modform/__init__.py',
91
'src/sage/modular/quasimodform/__init__.py',
92
'src/sage/modular/modsym/__init__.py',
93
'src/sage/modular/local_comp/__init__.py',
94
'src/sage/modular/quatalg/__init__.py',
95
'src/sage/modular/ssmod/__init__.py',
96
'src/sage/modular/abvar/__init__.py',
97
'src/sage/modular/__init__.py',
98
'src/sage/modular/btquotients/__init__.py',
99
'src/sage/modular/arithgroup/__init__.py',
100
'src/sage/modular/modform_hecketriangle/__init__.py',
101
'src/sage/combinat/cluster_algebra_quiver/__init__.py',
102
'src/sage/combinat/root_system/__init__.py',
103
'src/sage/combinat/species/__init__.py',
104
'src/sage/combinat/designs/__init__.py',
105
'src/sage/combinat/posets/__init__.py',
106
'src/sage/combinat/matrices/__init__.py',
107
'src/sage/combinat/rigged_configurations/__init__.py',
108
'src/sage/combinat/ncsf_qsym/__init__.py',
109
'src/sage/combinat/path_tableaux/__init__.py',
110
'src/sage/combinat/sf/__init__.py',
111
'src/sage/combinat/__init__.py',
112
'src/sage/combinat/chas/__init__.py',
113
'src/sage/combinat/ncsym/__init__.py',
114
'src/sage/combinat/words/__init__.py',
115
'src/sage/combinat/crystals/__init__.py',
116
'src/sage/tensor/modules/__init__.py',
117
'src/sage/tensor/__init__.py',
118
'src/sage/groups/matrix_gps/__init__.py',
119
'src/sage/groups/semimonomial_transformations/__init__.py',
120
'src/sage/groups/perm_gps/partn_ref2/__init__.py',
121
'src/sage/groups/perm_gps/partn_ref/__init__.py',
122
'src/sage/groups/perm_gps/__init__.py',
123
'src/sage/groups/__init__.py',
124
'src/sage/groups/affine_gps/__init__.py',
125
'src/sage/groups/abelian_gps/__init__.py',
126
'src/sage/groups/additive_abelian/__init__.py',
127
'src/sage/groups/lie_gps/__init__.py',
128
'src/sage/groups/misc_gps/__init__.py',
129
'src/sage/symbolic/__init__.py',
130
'src/sage/symbolic/integration/__init__.py',
131
'src/sage/lfunctions/__init__.py',
132
'src/sage/arith/__init__.py',
133
'src/sage/ext/__init__.py',
134
'src/sage/ext/interpreters/__init__.py',
135
'src/sage/categories/examples/__init__.py',
136
'src/sage/categories/__init__.py',
137
'src/sage/modules/fg_pid/__init__.py',
138
'src/sage/modules/__init__.py',
139
'src/sage/modules/with_basis/__init__.py',
140
'src/sage/modules/fp_graded/steenrod/__init__.py',
141
'src/sage/modules/fp_graded/__init__.py',
142
'src/sage/misc/__init__.py',
143
'src/sage/rings/convert/__init__.py',
144
'src/sage/rings/invariants/__init__.py',
145
'src/sage/rings/finite_rings/__init__.py',
146
'src/sage/rings/function_field/__init__.py',
147
'src/sage/rings/function_field/drinfeld_modules/__init__.py',
148
'src/sage/rings/semirings/__init__.py',
149
'src/sage/rings/number_field/__init__.py',
150
'src/sage/rings/__init__.py',
151
'src/sage/rings/padics/__init__.py',
152
'src/sage/rings/valuation/__init__.py',
153
'src/sage/rings/asymptotic/__init__.py',
154
'src/sage/rings/polynomial/weil/__init__.py',
155
'src/sage/rings/polynomial/__init__.py',
156
'src/sage/rings/polynomial/padics/__init__.py',
157
'src/sage/monoids/__init__.py',
158
'src/sage/matrix/__init__.py',
159
'src/sage/matroids/__init__.py',
160
'src/sage/interacts/__init__.py',
161
'src/sage/__init__.py',
162
'src/sage/plot/__init__.py',
163
'src/sage/plot/plot3d/__init__.py',
164
'src/sage/typeset/__init__.py',
165
'src/sage/algebras/lie_conformal_algebras/__init__.py',
166
'src/sage/algebras/fusion_rings/__init__.py',
167
'src/sage/algebras/letterplace/__init__.py',
168
'src/sage/algebras/quatalg/__init__.py',
169
'src/sage/algebras/steenrod/__init__.py',
170
'src/sage/algebras/finite_dimensional_algebras/__init__.py',
171
'src/sage/algebras/__init__.py',
172
'src/sage/algebras/hecke_algebras/__init__.py',
173
'src/sage/algebras/lie_algebras/__init__.py',
174
'src/sage/algebras/quantum_groups/__init__.py',
175
'src/sage/quadratic_forms/genera/__init__.py',
176
'src/sage/quadratic_forms/__init__.py',
177
'src/sage/game_theory/__init__.py',
178
'src/sage/sandpiles/__init__.py',
179
'src/sage/sat/__init__.py',
180
'src/sage/homology/__init__.py',
181
'src/sage/geometry/riemannian_manifolds/__init__.py',
182
'src/sage/geometry/hyperplane_arrangement/__init__.py',
183
'src/sage/geometry/triangulation/__init__.py',
184
'src/sage/geometry/polyhedron/modules/__init__.py',
185
'src/sage/geometry/polyhedron/__init__.py',
186
'src/sage/geometry/polyhedron/combinatorial_polyhedron/__init__.py',
187
'src/sage/geometry/__init__.py',
188
'src/sage/geometry/hyperbolic_space/__init__.py',
189
'src/sage/sets/__init__.py',
190
'src/sage/probability/__init__.py',
191
'src/sage/numerical/backends/__init__.py',
192
'src/sage/numerical/__init__.py',
193
'src/sage/data_structures/__init__.py',
194
'src/sage/graphs/graph_decompositions/__init__.py',
195
'src/sage/graphs/generators/__init__.py',
196
'src/sage/graphs/__init__.py',
197
'src/sage/graphs/base/__init__.py',
198
'src/sage/databases/__init__.py',
199
'src/sage/stats/hmm/__init__.py',
200
'src/sage/stats/__init__.py',
201
'src/sage/stats/distributions/__init__.py',
202
'src/sage/libs/gap/__init__.py',
203
'src/sage/libs/mpfi/__init__.py',
204
'src/sage/libs/__init__.py',
205
'src/sage/libs/polybori/__init__.py',
206
'src/sage/libs/mpfr/__init__.py',
207
'src/sage/libs/mpc/__init__.py',
208
'src/sage/calculus/transforms/__init__.py',
209
'src/sage/calculus/__init__.py',
210
]
211
for path in file_paths:
212
resolved_path = Path("''' + fs.as_posix(meson.current_source_dir()) + '''") / path
213
resolved_path.parent.mkdir(parents=True, exist_ok=True)
214
resolved_path.write_text(content)
215
''',
216
]
217
run_command(create_files_command, check: true)
218
219
root = meson.current_source_dir()
220
221
subdir('src')
222
223