3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-13 04:28:17 +00:00

Added full version strings and associated API functions.

This commit is contained in:
Christoph M. Wintersteiger 2016-07-28 18:06:02 +01:00
parent 5f5ef8b38d
commit 3587baaf24
12 changed files with 65 additions and 1 deletions

View file

@ -2159,6 +2159,8 @@ namespace test_mapi
Console.WriteLine(Microsoft.Z3.Version.Major.ToString()); Console.WriteLine(Microsoft.Z3.Version.Major.ToString());
Console.Write("Z3 Full Version: "); Console.Write("Z3 Full Version: ");
Console.WriteLine(Microsoft.Z3.Version.ToString()); Console.WriteLine(Microsoft.Z3.Version.ToString());
Console.Write("Z3 Full Version String: ");
Console.WriteLine(Microsoft.Z3.Version.FullVersion);
SimpleExample(); SimpleExample();

View file

@ -2291,6 +2291,8 @@ class JavaExample
System.out.println(Version.getMajor()); System.out.println(Version.getMajor());
System.out.print("Z3 Full Version: "); System.out.print("Z3 Full Version: ");
System.out.println(Version.getString()); System.out.println(Version.getString());
System.out.print("Z3 Full Version String: ");
System.out.println(Version.getFullVersion());
p.simpleExample(); p.simpleExample();

View file

@ -323,6 +323,7 @@ let _ =
else else
( (
Printf.printf "Running Z3 version %s\n" Version.to_string ; Printf.printf "Running Z3 version %s\n" Version.to_string ;
Printf.printf "Z3 full version string: %s\n" Version.full_version ;
let cfg = [("model", "true"); ("proof", "false")] in let cfg = [("model", "true"); ("proof", "false")] in
let ctx = (mk_context cfg) in let ctx = (mk_context cfg) in
let is = (Symbol.mk_int ctx 42) in let is = (Symbol.mk_int ctx 42) in

View file

@ -99,6 +99,7 @@ VS_PAR=False
VS_PAR_NUM=8 VS_PAR_NUM=8
GPROF=False GPROF=False
GIT_HASH=False GIT_HASH=False
GIT_DESCRIBE=False
SLOW_OPTIMIZE=False SLOW_OPTIMIZE=False
USE_OMP=True USE_OMP=True
@ -534,11 +535,14 @@ def find_c_compiler():
raise MKException('C compiler was not found. Try to set the environment variable CC with the C compiler available in your system.') raise MKException('C compiler was not found. Try to set the environment variable CC with the C compiler available in your system.')
def set_version(major, minor, build, revision): def set_version(major, minor, build, revision):
global VER_MAJOR, VER_MINOR, VER_BUILD, VER_REVISION global VER_MAJOR, VER_MINOR, VER_BUILD, VER_REVISION, GIT_DESCRIBE
VER_MAJOR = major VER_MAJOR = major
VER_MINOR = minor VER_MINOR = minor
VER_BUILD = build VER_BUILD = build
VER_REVISION = revision VER_REVISION = revision
if GIT_DESCRIBE:
branch = check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD'])
VER_REVISION = int(check_output(['git', 'rev-list', '--count', 'HEAD']))
def get_version(): def get_version():
return (VER_MAJOR, VER_MINOR, VER_BUILD, VER_REVISION) return (VER_MAJOR, VER_MINOR, VER_BUILD, VER_REVISION)
@ -621,6 +625,7 @@ def display_help(exit_code):
print(" --pypkgdir=<dir> Force a particular Python package directory (default %s)" % PYTHON_PACKAGE_DIR) print(" --pypkgdir=<dir> Force a particular Python package directory (default %s)" % PYTHON_PACKAGE_DIR)
print(" -b <subdir>, --build=<subdir> subdirectory where Z3 will be built (default: %s)." % BUILD_DIR) print(" -b <subdir>, --build=<subdir> subdirectory where Z3 will be built (default: %s)." % BUILD_DIR)
print(" --githash=hash include the given hash in the binaries.") print(" --githash=hash include the given hash in the binaries.")
print(" --git-describe include the output of 'git describe' in the version information.")
print(" -d, --debug compile Z3 in debug mode.") print(" -d, --debug compile Z3 in debug mode.")
print(" -t, --trace enable tracing in release mode.") print(" -t, --trace enable tracing in release mode.")
if IS_WINDOWS: if IS_WINDOWS:
@ -732,6 +737,8 @@ def parse_options():
GPROF = True GPROF = True
elif opt == '--githash': elif opt == '--githash':
GIT_HASH=arg GIT_HASH=arg
elif opt == '--git-describe':
GIT_DESCRIBE = True
elif opt in ('', '--ml'): elif opt in ('', '--ml'):
ML_ENABLED = True ML_ENABLED = True
elif opt in ('', '--noomp'): elif opt in ('', '--noomp'):
@ -2593,6 +2600,16 @@ def update_version():
mk_all_assembly_infos(major, minor, build, revision) mk_all_assembly_infos(major, minor, build, revision)
mk_def_files() mk_def_files()
def get_full_version_string(major, minor, build, revision):
global GIT_HASH, GIT_DESCRIBE
res = "Z3 %s.%s.%s.%s" % (major, minor, build, revision)
if GIT_HASH:
res += " " + GIT_HASH
if GIT_DESCRIBE:
branch = check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD', '--long'])
res += " master " + check_output(['git', 'describe'])
return '"' + res + '"'
# Update files with the version number # Update files with the version number
def mk_version_dot_h(major, minor, build, revision): def mk_version_dot_h(major, minor, build, revision):
c = get_component(UTIL_COMPONENT) c = get_component(UTIL_COMPONENT)
@ -2606,6 +2623,7 @@ def mk_version_dot_h(major, minor, build, revision):
'Z3_VERSION_MINOR': str(minor), 'Z3_VERSION_MINOR': str(minor),
'Z3_VERSION_PATCH': str(build), 'Z3_VERSION_PATCH': str(build),
'Z3_VERSION_TWEAK': str(revision), 'Z3_VERSION_TWEAK': str(revision),
'Z3_FULL_VERSION': get_full_version_string(major, minor, build, revision)
} }
) )
if VERBOSE: if VERBOSE:

View file

@ -430,6 +430,11 @@ extern "C" {
*revision_number = Z3_REVISION_NUMBER; *revision_number = Z3_REVISION_NUMBER;
} }
Z3_string Z3_API Z3_get_full_version(void) {
LOG_Z3_get_full_version();
return Z3_FULL_VERSION;
}
void Z3_API Z3_enable_trace(Z3_string tag) { void Z3_API Z3_enable_trace(Z3_string tag) {
memory::initialize(UINT_MAX); memory::initialize(UINT_MAX);
LOG_Z3_enable_trace(tag); LOG_Z3_enable_trace(tag);

View file

@ -83,6 +83,17 @@ namespace Microsoft.Z3
} }
} }
/// <summary>
/// A full version string
/// </summary>
public static string FullVersion
{
get
{
return Native.Z3_get_full_version();
}
}
/// <summary> /// <summary>
/// A string representation of the version information. /// A string representation of the version information.
/// </summary> /// </summary>

View file

@ -63,6 +63,14 @@ public class Version
return revision.value; return revision.value;
} }
/**
* A full version string
**/
public static String getFullVersion()
{
return Native.getFullVersion();
}
/** /**
* A string representation of the version information. * A string representation of the version information.
**/ **/

View file

@ -25,6 +25,8 @@ module Version =
struct struct
let (major, minor, build, revision) = Z3native.get_version () let (major, minor, build, revision) = Z3native.get_version ()
let full_version : string = Z3native.get_full_version()
let to_string = let to_string =
string_of_int major ^ "." ^ string_of_int major ^ "." ^
string_of_int minor ^ "." ^ string_of_int minor ^ "." ^

View file

@ -80,6 +80,9 @@ sig
(** The revision. *) (** The revision. *)
val revision : int val revision : int
(** A full version string. *)
val full_version : string
(** A string representation of the version information. *) (** A string representation of the version information. *)
val to_string : string val to_string : string
end end

View file

@ -79,6 +79,9 @@ def get_version():
Z3_get_version(major, minor, build, rev) Z3_get_version(major, minor, build, rev)
return (major.value, minor.value, build.value, rev.value) return (major.value, minor.value, build.value, rev.value)
def get_full_version():
return Z3_get_full_version()
# We use _z3_assert instead of the assert command because we want to # We use _z3_assert instead of the assert command because we want to
# produce nice error messages in Z3Py at rise4fun.com # produce nice error messages in Z3Py at rise4fun.com
def _z3_assert(cond, msg): def _z3_assert(cond, msg):

View file

@ -5139,6 +5139,13 @@ extern "C" {
*/ */
void Z3_API Z3_get_version(unsigned * major, unsigned * minor, unsigned * build_number, unsigned * revision_number); void Z3_API Z3_get_version(unsigned * major, unsigned * minor, unsigned * build_number, unsigned * revision_number);
/**
\brief Return a string that fully describes the version of Z3 in use.
def_API('Z3_get_full_version', STRING, ())
*/
Z3_string Z3_API Z3_get_full_version(void);
/** /**
\brief Enable tracing messages tagged as \c tag when Z3 is compiled in debug mode. \brief Enable tracing messages tagged as \c tag when Z3 is compiled in debug mode.
It is a NOOP otherwise It is a NOOP otherwise

View file

@ -3,3 +3,5 @@
#define Z3_MINOR_VERSION @Z3_VERSION_MINOR@ #define Z3_MINOR_VERSION @Z3_VERSION_MINOR@
#define Z3_BUILD_NUMBER @Z3_VERSION_PATCH@ #define Z3_BUILD_NUMBER @Z3_VERSION_PATCH@
#define Z3_REVISION_NUMBER @Z3_VERSION_TWEAK@ #define Z3_REVISION_NUMBER @Z3_VERSION_TWEAK@
#define Z3_FULL_VERSION @Z3_FULL_VERSION@