From 043328577c7c90f6658d7cdf6980cac7c0208697 Mon Sep 17 00:00:00 2001 From: Nikhil Idiculla Date: Sun, 25 May 2025 19:50:46 -0700 Subject: [PATCH] Expose z3_static target for Bazel build --- .bazelrc | 7 +++++++ BUILD.bazel | 38 +++++++++++++++++++++++++++++++++++--- MODULE.bazel | 2 ++ 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/.bazelrc b/.bazelrc index b31c49c40..99bf57ce1 100644 --- a/.bazelrc +++ b/.bazelrc @@ -2,6 +2,13 @@ common --enable_bzlmod common --noenable_workspace +# Specifies... +# --config=windows on Windows hosts +# --config=linux on Linux hosts +# --config=macos on macOS hosts +# NOTE: We assume our host and target platforms are identical. +common --enable_platform_specific_config + # Use C++20. build --cxxopt=-std=c++20 build --host_cxxopt=-std=c++20 diff --git a/BUILD.bazel b/BUILD.bazel index 51ff02b11..7fde74caa 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -17,10 +17,42 @@ filegroup( ) cmake( - name = "z3", - generate_args = ["-G Ninja"], + name = "z3_dynamic", + generate_args = [ + "-G Ninja", + "-D Z3_EXPORTED_TARGETS=", # prevents installation, leaving symlinks between dylibs intact on copy + ], lib_source = ":all_files", out_binaries = ["z3"], - out_shared_libs = ["libz3.so"], + out_shared_libs = select({ + "@platforms//os:linux": ["libz3.so"], + # "@platforms//os:osx": ["libz3.dylib"], # FIXME: this is not working, libz3.dylib is not copied + # "@platforms//os:windows": ["z3.dll"], # TODO: test this + "//conditions:default": ["@platforms//:incompatible"], + }), + visibility = ["//visibility:public"], +) + +cmake( + name = "z3_static", + generate_args = [ + "-G Ninja", + "-D BUILD_SHARED_LIBS=OFF", + "-D Z3_BUILD_LIBZ3_SHARED=OFF", + ], + lib_source = ":all_files", + out_binaries = ["z3"], + out_static_libs = select({ + "@platforms//os:linux": ["libz3.a"], + "@platforms//os:osx": ["libz3.a"], + # "@platforms//os:windows": ["z3.lib"], # TODO: test this + "//conditions:default": ["@platforms//:incompatible"], + }), + visibility = ["//visibility:public"], +) + +alias( + name = "z3", + actual = ":z3_dynamic", visibility = ["//visibility:public"], ) diff --git a/MODULE.bazel b/MODULE.bazel index 58aa2520f..60f5ad456 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -17,3 +17,5 @@ bazel_dep( version = "8.0.1", dev_dependency = True, ) + +bazel_dep(name = "platforms", version = "0.0.11")