blob: 0ccd7fd43d32a79891b6584f8aca11a04e7a1e23 [file] [log] [blame]
Austin Schuh1c619d52024-06-15 21:09:19 -07001load("@bazel_skylib//rules:write_file.bzl", "write_file")
2
3genrule(
4 name = "symengine_config_h_gen",
5 srcs = ["symengine/symengine_config.h.in"],
6 outs = ["symengine/symengine_config.h"],
7 cmd = "|".join(
8 [
9 "cat $(SRCS)",
10 "sed 's/$${SYMENGINE_MAJOR_VERSION}/0/'",
11 "sed 's/$${SYMENGINE_MINOR_VERSION}/11/'",
12 "sed 's/$${SYMENGINE_PATCH_VERSION}/2/'",
13 "sed 's/$${SYMENGINE_VERSION}/0.11.2/'",
14 "sed 's/$${SYMENGINE_INTEGER_CLASS}/GMP/'",
15 "sed 's/$${SYMENGINE_SIZEOF_LONG_DOUBLE}/16/'",
16 ] + [
17 "sed 's/#cmakedefine " + x + "/\\/* #undef " + x + " *\\//'"
18 for x in [
19 "WITH_SYMENGINE_ASSERT",
20 "WITH_SYMENGINE_TEUCHOS",
21 "WITH_SYMENGINE_THREAD_SAFE",
22 "HAVE_SYMENGINE_ECM",
23 "HAVE_SYMENGINE_PRIMESIEVE",
24 "WITH_SYMENGINE_VIRTUAL_TYPEID",
25 "HAVE_SYMENGINE_FLINT",
26 "HAVE_SYMENGINE_ARB",
27 "HAVE_SYMENGINE_PIRANHA",
28 "HAVE_SYMENGINE_BOOST",
29 "HAVE_SYMENGINE_LLVM",
30 "HAVE_C_FUNCTION_NOT_FUNC",
31 # TODO(austin): Turn these on at some point...
32 "HAVE_SYMENGINE_MPFR",
33 "HAVE_SYMENGINE_MPC",
34 ]
35 ] + [
36 "sed 's/#cmakedefine " + x + "/#define " + x + "/'"
37 for x in [
38 "HAVE_SYMENGINE_GMP",
39 "WITH_SYMENGINE_RCP",
40 "HAVE_SYMENGINE_PTHREAD",
41 "HAVE_DEFAULT_CONSTRUCTORS",
42 "HAVE_SYMENGINE_NOEXCEPT",
43 "HAVE_SYMENGINE_IS_CONSTRUCTIBLE",
44 "HAVE_SYMENGINE_RESERVE",
45 "HAVE_SYMENGINE_STD_TO_STRING",
46 ]
47 ] + [
48 " cat - > $(OUTS)",
49 ],
50 ),
51)
52
53write_file(
54 name = "symengine_export_h",
55 out = "symengine/symengine_export.h",
56 content = [
57 "",
58 "#ifndef SYMENGINE_EXPORT_H",
59 "#define SYMENGINE_EXPORT_H",
60 "",
61 "#ifdef SYMENGINE_STATIC_DEFINE",
62 "# define SYMENGINE_EXPORT",
63 "# define SYMENGINE_NO_EXPORT",
64 "#else",
65 "# ifndef SYMENGINE_EXPORT",
66 "# ifdef symengine_EXPORTS",
67 " /* We are building this library */",
68 "# define SYMENGINE_EXPORT",
69 "# else",
70 " /* We are using this library */",
71 "# define SYMENGINE_EXPORT",
72 "# endif",
73 "# endif",
74 "",
75 "# ifndef SYMENGINE_NO_EXPORT",
76 "# define SYMENGINE_NO_EXPORT",
77 "# endif",
78 "#endif",
79 "",
80 "#ifndef SYMENGINE_DEPRECATED",
81 "# define SYMENGINE_DEPRECATED __attribute__ ((__deprecated__))",
82 "#endif",
83 "",
84 "#ifndef SYMENGINE_DEPRECATED_EXPORT",
85 "# define SYMENGINE_DEPRECATED_EXPORT SYMENGINE_EXPORT SYMENGINE_DEPRECATED",
86 "#endif",
87 "",
88 "#ifndef SYMENGINE_DEPRECATED_NO_EXPORT",
89 "# define SYMENGINE_DEPRECATED_NO_EXPORT SYMENGINE_NO_EXPORT SYMENGINE_DEPRECATED",
90 "#endif",
91 "",
92 "#if 0 /* DEFINE_NO_DEPRECATED */",
93 "# ifndef SYMENGINE_NO_DEPRECATED",
94 "# define SYMENGINE_NO_DEPRECATED",
95 "# endif",
96 "#endif",
97 "",
98 "#endif /* SYMENGINE_EXPORT_H */",
99 ],
100 is_executable = False,
101)
102
103cc_library(
104 name = "cerial",
105 hdrs = [
106 "symengine/utilities/cereal/include/cereal/access.hpp",
107 "symengine/utilities/cereal/include/cereal/archives/adapters.hpp",
108 "symengine/utilities/cereal/include/cereal/archives/binary.hpp",
109 "symengine/utilities/cereal/include/cereal/archives/json.hpp",
110 "symengine/utilities/cereal/include/cereal/archives/portable_binary.hpp",
111 "symengine/utilities/cereal/include/cereal/archives/xml.hpp",
112 "symengine/utilities/cereal/include/cereal/cereal.hpp",
113 "symengine/utilities/cereal/include/cereal/details/helpers.hpp",
114 "symengine/utilities/cereal/include/cereal/details/polymorphic_impl.hpp",
115 "symengine/utilities/cereal/include/cereal/details/polymorphic_impl_fwd.hpp",
116 "symengine/utilities/cereal/include/cereal/details/static_object.hpp",
117 "symengine/utilities/cereal/include/cereal/details/traits.hpp",
118 "symengine/utilities/cereal/include/cereal/details/util.hpp",
119 "symengine/utilities/cereal/include/cereal/macros.hpp",
120 "symengine/utilities/cereal/include/cereal/specialize.hpp",
121 "symengine/utilities/cereal/include/cereal/types/array.hpp",
122 "symengine/utilities/cereal/include/cereal/types/atomic.hpp",
123 "symengine/utilities/cereal/include/cereal/types/base_class.hpp",
124 "symengine/utilities/cereal/include/cereal/types/bitset.hpp",
125 "symengine/utilities/cereal/include/cereal/types/boost_variant.hpp",
126 "symengine/utilities/cereal/include/cereal/types/chrono.hpp",
127 "symengine/utilities/cereal/include/cereal/types/common.hpp",
128 "symengine/utilities/cereal/include/cereal/types/complex.hpp",
129 "symengine/utilities/cereal/include/cereal/types/concepts/pair_associative_container.hpp",
130 "symengine/utilities/cereal/include/cereal/types/deque.hpp",
131 "symengine/utilities/cereal/include/cereal/types/forward_list.hpp",
132 "symengine/utilities/cereal/include/cereal/types/functional.hpp",
133 "symengine/utilities/cereal/include/cereal/types/list.hpp",
134 "symengine/utilities/cereal/include/cereal/types/map.hpp",
135 "symengine/utilities/cereal/include/cereal/types/memory.hpp",
136 "symengine/utilities/cereal/include/cereal/types/optional.hpp",
137 "symengine/utilities/cereal/include/cereal/types/polymorphic.hpp",
138 "symengine/utilities/cereal/include/cereal/types/queue.hpp",
139 "symengine/utilities/cereal/include/cereal/types/set.hpp",
140 "symengine/utilities/cereal/include/cereal/types/stack.hpp",
141 "symengine/utilities/cereal/include/cereal/types/string.hpp",
142 "symengine/utilities/cereal/include/cereal/types/tuple.hpp",
143 "symengine/utilities/cereal/include/cereal/types/unordered_map.hpp",
144 "symengine/utilities/cereal/include/cereal/types/unordered_set.hpp",
145 "symengine/utilities/cereal/include/cereal/types/utility.hpp",
146 "symengine/utilities/cereal/include/cereal/types/valarray.hpp",
147 "symengine/utilities/cereal/include/cereal/types/variant.hpp",
148 "symengine/utilities/cereal/include/cereal/types/vector.hpp",
149 "symengine/utilities/cereal/include/cereal/version.hpp",
150 ],
151 includes = [
152 "symengine/utilities/cereal/include",
153 ],
154)
155
156cc_library(
157 name = "symengine",
158 srcs = [
159 "symengine/add.cpp",
160 "symengine/assumptions.cpp",
161 "symengine/basic.cpp",
162 "symengine/complex.cpp",
163 "symengine/complex_double.cpp",
164 "symengine/constants.cpp",
165 "symengine/cse.cpp",
166 "symengine/cwrapper.cpp",
167 "symengine/dense_matrix.cpp",
168 "symengine/derivative.cpp",
169 "symengine/dict.cpp",
170 "symengine/diophantine.cpp",
171 "symengine/eval.cpp",
172 "symengine/eval_double.cpp",
173 "symengine/expand.cpp",
174 "symengine/expression.cpp",
175 "symengine/fields.cpp",
176 "symengine/finitediff.cpp",
177 "symengine/functions.cpp",
178 "symengine/infinity.cpp",
179 "symengine/integer.cpp",
180 "symengine/logic.cpp",
181 "symengine/matrices/conjugate_matrix.cpp",
182 "symengine/matrices/diagonal_matrix.cpp",
183 "symengine/matrices/hadamard_product.cpp",
184 "symengine/matrices/identity_matrix.cpp",
185 "symengine/matrices/immutable_dense_matrix.cpp",
186 "symengine/matrices/is_diagonal.cpp",
187 "symengine/matrices/is_lower.cpp",
188 "symengine/matrices/is_real.cpp",
189 "symengine/matrices/is_square.cpp",
190 "symengine/matrices/is_symmetric.cpp",
191 "symengine/matrices/is_toeplitz.cpp",
192 "symengine/matrices/is_upper.cpp",
193 "symengine/matrices/is_zero.cpp",
194 "symengine/matrices/matrix_add.cpp",
195 "symengine/matrices/matrix_mul.cpp",
196 "symengine/matrices/matrix_symbol.cpp",
197 "symengine/matrices/size.cpp",
198 "symengine/matrices/trace.cpp",
199 "symengine/matrices/transpose.cpp",
200 "symengine/matrices/zero_matrix.cpp",
201 "symengine/matrix.cpp",
202 "symengine/monomials.cpp",
203 "symengine/mp_wrapper.cpp",
204 "symengine/mul.cpp",
205 "symengine/nan.cpp",
206 "symengine/ntheory.cpp",
207 "symengine/ntheory_funcs.cpp",
208 "symengine/number.cpp",
209 "symengine/numer_denom.cpp",
210 "symengine/parser/parser.cpp",
211 "symengine/parser/parser.tab.cc",
212 "symengine/parser/parser_old.cpp",
213 "symengine/parser/sbml/sbml_parser.cpp",
214 "symengine/parser/sbml/sbml_parser.tab.cc",
215 "symengine/parser/sbml/sbml_tokenizer.cpp",
216 "symengine/parser/tokenizer.cpp",
217 "symengine/polys/basic_conversions.cpp",
218 "symengine/polys/msymenginepoly.cpp",
219 "symengine/polys/uexprpoly.cpp",
220 "symengine/polys/uintpoly.cpp",
221 "symengine/polys/uratpoly.cpp",
222 "symengine/pow.cpp",
223 "symengine/prime_sieve.cpp",
224 "symengine/printers/codegen.cpp",
225 "symengine/printers/latex.cpp",
226 "symengine/printers/mathml.cpp",
227 "symengine/printers/sbml.cpp",
228 "symengine/printers/stringbox.cpp",
229 "symengine/printers/strprinter.cpp",
230 "symengine/printers/unicode.cpp",
231 "symengine/rational.cpp",
232 "symengine/real_double.cpp",
233 "symengine/refine.cpp",
234 "symengine/rewrite.cpp",
235 "symengine/rings.cpp",
236 "symengine/series.cpp",
237 "symengine/series_generic.cpp",
238 "symengine/set_funcs.cpp",
239 "symengine/sets.cpp",
240 "symengine/simplify.cpp",
241 "symengine/solve.cpp",
242 "symengine/sparse_matrix.cpp",
243 "symengine/symbol.cpp",
244 "symengine/symengine_rcp.cpp",
245 "symengine/test_visitors.cpp",
246 "symengine/tuple.cpp",
247 "symengine/visitor.cpp",
248 ],
249 hdrs = [
250 "symengine/add.h",
251 "symengine/assumptions.h",
252 "symengine/basic.h",
253 "symengine/basic-inl.h",
254 "symengine/basic-methods.inc",
255 "symengine/complex.h",
256 "symengine/complex_double.h",
257 "symengine/complex_mpc.h",
258 "symengine/constants.h",
259 "symengine/cwrapper.h",
260 "symengine/derivative.h",
261 "symengine/dict.h",
262 "symengine/diophantine.h",
263 "symengine/eval.h",
264 "symengine/eval_double.h",
265 "symengine/eval_mpc.h",
266 "symengine/eval_mpfr.h",
267 "symengine/expression.h",
268 "symengine/fields.h",
269 "symengine/finitediff.h",
270 "symengine/functions.h",
271 "symengine/infinity.h",
272 "symengine/integer.h",
273 "symengine/lambda_double.h",
274 "symengine/logic.h",
275 "symengine/matrices/conjugate_matrix.h",
276 "symengine/matrices/diagonal_matrix.h",
277 "symengine/matrices/hadamard_product.h",
278 "symengine/matrices/identity_matrix.h",
279 "symengine/matrices/immutable_dense_matrix.h",
280 "symengine/matrices/matrix_add.h",
281 "symengine/matrices/matrix_expr.h",
282 "symengine/matrices/matrix_mul.h",
283 "symengine/matrices/matrix_symbol.h",
284 "symengine/matrices/size.h",
285 "symengine/matrices/trace.h",
286 "symengine/matrices/transpose.h",
287 "symengine/matrices/zero_matrix.h",
288 "symengine/matrix.h",
289 "symengine/matrix_expressions.h",
290 "symengine/monomials.h",
291 "symengine/mp_class.h",
292 "symengine/mp_wrapper.h",
293 "symengine/mul.h",
294 "symengine/nan.h",
295 "symengine/ntheory.h",
296 "symengine/ntheory_funcs.h",
297 "symengine/number.h",
298 "symengine/parser.h",
299 "symengine/parser/parser.h",
300 "symengine/parser/parser.tab.hh",
301 "symengine/parser/sbml/sbml_parser.h",
302 "symengine/parser/sbml/sbml_parser.tab.hh",
303 "symengine/parser/sbml/sbml_tokenizer.h",
304 "symengine/parser/tokenizer.h",
305 "symengine/polys/basic_conversions.h",
306 "symengine/polys/msymenginepoly.h",
307 "symengine/polys/uexprpoly.h",
308 "symengine/polys/uintpoly.h",
309 "symengine/polys/uintpoly_flint.h",
310 "symengine/polys/uintpoly_piranha.h",
311 "symengine/polys/upolybase.h",
312 "symengine/polys/uratpoly.h",
313 "symengine/polys/usymenginepoly.h",
314 "symengine/pow.h",
315 "symengine/prime_sieve.h",
316 "symengine/printers.h",
317 "symengine/printers/codegen.h",
318 "symengine/printers/latex.h",
319 "symengine/printers/mathml.h",
320 "symengine/printers/sbml.h",
321 "symengine/printers/stringbox.h",
322 "symengine/printers/strprinter.h",
323 "symengine/printers/unicode.h",
324 "symengine/rational.h",
325 "symengine/real_double.h",
326 "symengine/real_mpfr.h",
327 "symengine/refine.h",
328 "symengine/rings.h",
329 "symengine/serialize-cereal.h",
330 "symengine/series.h",
331 "symengine/series_flint.h",
332 "symengine/series_generic.h",
333 "symengine/series_piranha.h",
334 "symengine/series_visitor.h",
335 "symengine/sets.h",
336 "symengine/simplify.h",
337 "symengine/solve.h",
338 "symengine/subs.h",
339 "symengine/symbol.h",
340 "symengine/symengine_assert.h",
341 "symengine/symengine_casts.h",
342 "symengine/symengine_exception.h",
343 "symengine/symengine_rcp.h",
344 "symengine/test_visitors.h",
345 "symengine/tribool.h",
346 "symengine/tuple.h",
347 "symengine/type_codes.inc",
348 "symengine/utilities/stream_fmt.h",
349 "symengine/visitor.h",
350 ],
351 copts = ["-Wno-unused-but-set-variable"],
352 includes = [
353 ".",
354 ],
355 textual_hdrs = [
356 "symengine/as_real_imag.cpp",
357 ],
358 visibility = ["//visibility:public"],
359 deps = [
360 ":cerial",
361 ":config",
362 "@//third_party/gmp",
363 ],
364)
365
366cc_library(
367 name = "config",
368 hdrs = [
369 "symengine/symengine_config.h",
370 "symengine/symengine_export.h",
371 ],
372 includes = [
373 ".",
374 ],
375)
376
377cc_library(
378 name = "catch",
379 srcs = [
380 "symengine/utilities/catch/catch.cpp",
381 ],
382 hdrs = [
383 "symengine/utilities/catch/catch.hpp",
384 ],
385 includes = [
386 "symengine/utilities/catch",
387 ],
388 textual_hdrs = [
389 "symengine/numer_denom.cpp",
390 ],
391 deps = [":symengine"],
392)
393
394[
395 cc_test(
396 name = x,
397 srcs = [
398 "symengine/tests/basic/" + x + ".cpp",
399 ],
400 deps = [
401 ":catch",
402 ":symengine",
403 ],
404 )
405 for x in [
406 "test_basic",
407 "test_arit",
408 "test_poly",
409 "test_series",
410 "test_series_generic",
411 "test_functions",
412 "test_subs",
413 "test_integer",
414 "test_rational",
415 "test_relationals",
416 "test_number",
417 "test_as_numer_denom",
418 "test_parser",
419 "test_serialize-cereal",
420 "test_sbml_parser",
421 "test_sets",
422 "test_fields",
423 "test_infinity",
424 "test_nan",
425 "test_solve",
426 "test_as_real_imag",
427 "test_cse",
428 "test_count_ops",
429 "test_test_visitors",
430 "test_assumptions",
431 "test_refine",
432 "test_simplify",
433 "test_tuple",
434 "test_tribool",
435 ]
436]
437
438[
439 cc_test(
440 name = x,
441 srcs = [
442 "symengine/tests/eval/" + x + ".cpp",
443 ],
444 deps = [
445 ":catch",
446 ":symengine",
447 ],
448 )
449 for x in [
450 "test_evalf",
451 "test_eval_double",
452 "test_lambda_double",
453 ]
454]
455
456cc_test(
457 name = "test_expression",
458 srcs = [
459 "symengine/tests/expression/test_expression.cpp",
460 ],
461 deps = [
462 ":catch",
463 ":symengine",
464 ],
465)
466
467cc_test(
468 name = "test_finitediff",
469 srcs = [
470 "symengine/tests/finitediff/test_finitediff.cpp",
471 ],
472 deps = [
473 ":catch",
474 ":symengine",
475 ],
476)
477
478cc_test(
479 name = "test_logic",
480 srcs = [
481 "symengine/tests/logic/test_logic.cpp",
482 ],
483 deps = [
484 ":catch",
485 ":symengine",
486 ],
487)
488
489[
490 cc_test(
491 name = x,
492 srcs = [
493 "symengine/tests/matrix/" + x + ".cpp",
494 ],
495 deps = [
496 ":catch",
497 ":symengine",
498 ],
499 )
500 for x in [
501 "test_matrix",
502 "test_matrixexpr",
503 ]
504]
505
506[
507 cc_test(
508 name = x,
509 srcs = [
510 "symengine/tests/ntheory/" + x + ".cpp",
511 ],
512 deps = [
513 ":catch",
514 ":symengine",
515 ],
516 )
517 for x in [
518 "test_ntheory",
519 "test_diophantine",
520 "test_ntheory_funcs",
521 ]
522]
523
524[
525 cc_test(
526 name = x,
527 srcs = [
528 "symengine/tests/polynomial/" + x + ".cpp",
529 ],
530 deps = [
531 ":catch",
532 ":symengine",
533 ],
534 )
535 for x in [
536 "test_uintpoly",
537 "test_uratpoly",
538 "test_mintpoly",
539 "test_uexprpoly",
540 "test_mexprpoly",
541 "test_basic_conversions",
542 ]
543]
544
545[
546 cc_test(
547 name = x,
548 srcs = [
549 "symengine/tests/printing/" + x + ".cpp",
550 ],
551 deps = [
552 ":catch",
553 ":symengine",
554 ],
555 )
556 for x in [
557 "test_printing",
558 "test_ccode",
559 ]
560]
561
562cc_test(
563 name = "test_rcp",
564 srcs = [
565 "symengine/tests/rcp/test_rcp.cpp",
566 ],
567 deps = [
568 ":catch",
569 ":symengine",
570 ],
571)