3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-06-21 08:00:27 +00:00
z3/src/api
davedets 69cd7e0c4c
Fixes necessary to compile z3 included in clang-tidy via FetchContents. (#9768)
The page
https://github.com/Z3Prover/z3/blob/master/README-CMake.md#adding-z3-as-a-dependency-to-a-cmake-project
advises using the CMake FetchContent feature to include z3 as source
into other CMake project. I'm trying to do this to use Z3 within a
ClangTidy checker. This is one of a series of PR's aimed at getting Z3
to compile cleanly when included this way.

This initial PR fixes all the errors, allowing the compilation to
succeed. Subsequent diffs will address warnings.

I tested only the CMake compilation, on a Mac.

*Missing Z3_THROWs*

Update z3++.h to use Z3_THROW in a couple of places. Clang compiles with
exceptions disabled so we get messages like:

```
/Users/daviddetlefs/llvm-project/build_dbg/_deps/z3-src/src/api/c++/z3++.h:4928:17: error: cannot use 'throw' with exceptions disabled4928 |                 throw exception("rcf_num objects from different contexts");
```

NOTE TO REVIEWERS: I'm not complete clear on the usage conventions for
Z3_THROW. With exception disabled, it seems like the throwing function
will just continue. If there's somethign else that should be done, like
setting some error state, please let me know.

*CMake component name collision*

There was an error at the CMake level, a name collision (on "opt").
Apparently CMake components are named using a flat namespace, so it's
easy to see how this could occur. It seems to me that the right global
way to fix this would be to encourage people to use some form of
"qualified name" convention in naming their component. The fix I chose
was a local version of this, changing the Z3 component name to z3_opt.
(It didn't seem feasible to make the change in clang.)

NOTE TO REVIEWERS: If you think this is OK, please let me know if

a) You'd like me to also change the name of the opt directory, to keep
thecomponent-name == directory-name invariant, and

b) You'd like me to make this z3_ change more globally, to future-proof
(somewhat) against similar component name collisions.
2026-06-08 19:44:01 -07:00
..
c++ Fixes necessary to compile z3 included in clang-tidy via FetchContents. (#9768) 2026-06-08 19:44:01 -07:00
dll Tabs, formatting. 2017-09-17 14:54:09 +01:00
dotnet Fix ARM64 nightly build: dotnet NuGet packaging broken under Ninja/cmake (#9589) 2026-05-21 11:18:03 -07:00
go Go bindings: extract CGo slice-conversion helpers to eliminate boilerplate (#9465) 2026-05-06 12:32:53 -07:00
java Fix Java UnsatisfiedLinkError on macOS (#7640) (#9027) 2026-06-08 19:35:04 -07:00
js fix(make-ts-wrapper): correct out buffer size for WASM (#9644) 2026-05-27 10:03:39 -07:00
julia fix issues 1-10: add missing API bindings across Go, Julia, TypeScript, OCaml, and Java (#9432) 2026-05-04 09:29:47 -07:00
mcp remove non-working ts mcp server, settle with python variant 2025-04-18 10:10:12 -07:00
ml Expose Seq.mk_re_diff in ocaml bindings (#9584) 2026-05-21 10:29:08 -07:00
python python: make Statistics doctests robust to optional ":time" counter (#9729) 2026-06-06 13:24:19 -07:00
api_algebraic.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
api_arith.cpp Add check that argument of Z3_is_algebraic_number is_expr (#8027) 2026-02-18 20:55:56 -08:00
api_array.cpp Fix API bugs exercised by test/deep_api_bugs.cpp 2026-03-12 22:58:53 +00:00
api_ast.cpp [code-simplifier] Simplify api_ast.cpp by removing unreachable branch and stray comment (#9570) 2026-05-19 13:56:17 -07:00
api_ast_map.cpp Add [[nodiscard]] to AST factory functions and modernize iterator loops (#8143) 2026-02-18 20:57:08 -08:00
api_ast_map.h booyah 2020-07-04 15:56:30 -07:00
api_ast_vector.cpp Modern C++: Add std::span overload for mk_or, adopt std::clamp, optimize stream output (#8507) 2026-02-18 20:58:05 -08:00
api_ast_vector.h Remove empty leaf destructors. (#6211) 2022-07-30 10:07:03 +01:00
api_bv.cpp fix #7572 and fix #7574 2025-03-07 10:46:29 -08:00
api_config_params.cpp fix #7622 2025-04-17 11:05:49 -07:00
api_context.cpp Refactor mk_and and mk_app to use std::span API (#8285) 2026-02-18 20:57:52 -08:00
api_context.h Add finite set API functions to access term constructors from finite_set_decl_plugin.h (#7996) 2025-10-23 17:10:47 +02:00
api_datalog.cpp Adopt std::optional for try_get_value and try_get_size functions (#8268) 2026-02-18 20:57:50 -08:00
api_datalog.h move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
api_datatype.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
api_finite_set.cpp add parameter validation 2026-02-19 14:02:59 -08:00
api_fpa.cpp Fix API bugs exercised by test/deep_api_bugs.cpp 2026-03-12 22:58:53 +00:00
api_goal.cpp fix #7609 2025-04-04 18:40:15 -07:00
api_goal.h Remove empty leaf destructors. (#6211) 2022-07-30 10:07:03 +01:00
api_log.cpp api: avoid some string copies when using mk_external_string 2024-12-28 09:42:54 +00:00
api_model.cpp Fix indentation: use spaces instead of tabs in api_model.cpp CHECK_NON_NULL 2026-03-12 23:00:07 +00:00
api_model.h Remove empty leaf destructors. (#6211) 2022-07-30 10:07:03 +01:00
api_numeral.cpp Note that Z3_get_numeral_small is essentially redundant (#7599) 2025-03-29 10:02:32 -07:00
api_opt.cpp Fix API bugs exercised by test/deep_api_bugs.cpp 2026-03-12 22:58:53 +00:00
api_params.cpp Modern C++: Add std::span overload for mk_or, adopt std::clamp, optimize stream output (#8507) 2026-02-18 20:58:05 -08:00
api_parsers.cpp add py_value to selected classes in python bindings, add mode for input-assertion based lookahead solving 2025-01-04 13:40:49 -08:00
api_pb.cpp call it data instead of c_ptr for approaching C++11 std::vector convention. 2021-04-13 18:17:35 -07:00
api_polynomial.cpp preserve the initial state of the solver with push/pop for multiple objectives (#8264) 2026-02-18 20:57:53 -08:00
api_polynomial.h remove a hundred implicit constructors/destructors 2021-05-23 14:25:01 +01:00
api_qe.cpp filter out terms that are not solved 2025-04-30 09:40:45 -07:00
api_quant.cpp Fix API bugs exercised by test/deep_api_bugs.cpp 2026-03-12 22:58:53 +00:00
api_rcf.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-02-18 20:57:29 -08:00
api_seq.cpp Fix API bugs exercised by test/deep_api_bugs.cpp 2026-03-12 22:58:53 +00:00
api_solver.cpp Fix API bugs exercised by test/deep_api_bugs.cpp 2026-03-12 22:58:53 +00:00
api_solver.h add API for creating and attaching simplifiers 2023-01-31 17:06:03 -08:00
api_special_relations.cpp remove '#include <iostream>' from headers and from unneeded places 2022-06-17 14:10:19 +01:00
api_stats.cpp fix infinite loop in internalize 2022-09-14 11:50:53 +01:00
api_stats.h Remove empty leaf destructors. (#6211) 2022-07-30 10:07:03 +01:00
api_tactic.cpp Revert "Refactor find_tactic_cmd to use std::optional<tactic_cmd*> (#8331)" 2026-02-18 20:57:56 -08:00
api_tactic.h add API for creating and attaching simplifiers 2023-01-31 17:06:03 -08:00
api_util.h Add parameter validation for selected API functions 2025-07-27 13:38:37 -07:00
CMakeLists.txt Fixes necessary to compile z3 included in clang-tidy via FetchContents. (#9768) 2026-06-08 19:44:01 -07:00
z3.h z3.h: Don't include stdio.h (#7014) 2023-11-24 16:46:32 +01:00
z3_algebraic.h fix grouping for latest doxygen (#5626) 2021-10-27 23:46:31 +02:00
z3_api.h Fix documentation for Z3_solver_to_dimacs_string (#9053) 2026-03-20 10:18:13 -07:00
z3_ast_containers.h fix grouping for latest doxygen (#5626) 2021-10-27 23:46:31 +02:00
z3_fixedpoint.h Added function to select the next variable to split on (User-Propagator) (#6096) 2022-06-19 10:49:25 -07:00
z3_fpa.h Return sign from Z3_fpa_get_numeral_sign as bool instead of int (#8047) 2026-02-18 20:56:01 -08:00
z3_logger.h Make sure all headers do #pragma once. (#6188) 2022-07-23 10:41:14 -07:00
z3_macros.h Make sure all headers do #pragma once. (#6188) 2022-07-23 10:41:14 -07:00
z3_optimization.h Implement Z3_optimize_translate for context translation (#8072) 2026-02-18 20:56:58 -08:00
z3_polynomial.h fix grouping for latest doxygen (#5626) 2021-10-27 23:46:31 +02:00
z3_private.h remove '#include <iostream>' from headers and from unneeded places 2022-06-17 14:10:19 +01:00
z3_rcf.h Return bool instead of int from Z3_rcf_interval (#8046) 2026-02-18 20:56:01 -08:00
z3_replayer.cpp Add static linkage to internal functions 2026-02-18 20:58:05 -08:00
z3_replayer.h Return sign from Z3_fpa_get_numeral_sign as bool instead of int (#8047) 2026-02-18 20:56:01 -08:00
z3_spacer.h add projection with witnesses 2024-11-27 10:26:34 -08:00
z3_v1.h booyah 2020-07-04 15:56:30 -07:00