mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
Merge branch 'unstable' of https://git01.codeplex.com/z3 into unstable
This commit is contained in:
commit
41a59325d9
159 changed files with 12259 additions and 10647 deletions
|
@ -519,6 +519,9 @@ def get_c_files(path):
|
|||
def get_cs_files(path):
|
||||
return filter(lambda f: f.endswith('.cs'), os.listdir(path))
|
||||
|
||||
def get_java_files(path):
|
||||
return filter(lambda f: f.endswith('.java'), os.listdir(path))
|
||||
|
||||
def find_all_deps(name, deps):
|
||||
new_deps = []
|
||||
for dep in deps:
|
||||
|
@ -957,20 +960,20 @@ class JavaDLLComponent(Component):
|
|||
|
||||
def mk_makefile(self, out):
|
||||
if is_java_enabled():
|
||||
dllfile = '%s$(SO_EXT)' % self.dll_name
|
||||
out.write('%s: %s/Z3Native.java %s$(SO_EXT)\n' % (dllfile, self.to_src_dir, get_component('api_dll').dll_name))
|
||||
if IS_WINDOWS:
|
||||
out.write('\tcd %s && %s Z3Native.java\n' % (unix_path2dos(self.to_src_dir), JAVAC))
|
||||
out.write('\tmove %s\\*.class .\n' % unix_path2dos(self.to_src_dir))
|
||||
out.write('\t$(CXX) $(CXXFLAGS) $(CXX_OUT_FLAG)Z3Native$(OBJ_EXT) -I"%s/include" -I"%s/include/win32" -I%s %s/Z3Native.c\n' % (JAVA_HOME, JAVA_HOME, get_component('api').to_src_dir, self.to_src_dir))
|
||||
out.write('\t$(SLINK) $(SLINK_OUT_FLAG)%s $(SLINK_FLAGS) Z3Native$(OBJ_EXT) libz3.lib\n' % dllfile)
|
||||
else:
|
||||
out.write('\tcd %s; %s Z3Native.java\n' % (self.to_src_dir, JAVAC))
|
||||
out.write('\tmv %s/*.class .\n' % self.to_src_dir)
|
||||
out.write('\t$(CXX) $(CXXFLAGS) $(CXX_OUT_FLAG)Z3Native$(OBJ_EXT) -I"%s/include" -I%s %s/Z3Native.c\n' % (JAVA_HOME, get_component('api').to_src_dir, self.to_src_dir))
|
||||
out.write('\t$(SLINK) $(SLINK_OUT_FLAG)%s $(SLINK_FLAGS) -L. Z3Native$(OBJ_EXT) -lz3\n' % dllfile)
|
||||
out.write('%s: %s\n\n' % (self.name, dllfile))
|
||||
# TODO: Compile and package all the .class files.
|
||||
dllfile = '%s$(SO_EXT)' % self.dll_name
|
||||
out.write('libz3java$(SO_EXT): libz3$(SO_EXT) ../src/api/java/Native.cpp\n')
|
||||
out.write('\t$(CXX) $(CXXFLAGS) $(CXX_OUT_FLAG)Native$(OBJ_EXT) -I"%s/include" -I"%s/include/win32" -I%s %s/Native.cpp\n' % (JAVA_HOME, JAVA_HOME, get_component('api').to_src_dir, self.to_src_dir))
|
||||
out.write('\t$(SLINK) $(SLINK_OUT_FLAG)libz3java$(SO_EXT) $(SLINK_FLAGS) Native$(OBJ_EXT) libz3.lib\n')
|
||||
out.write('%s.jar: libz3java$(SO_EXT) ' % self.package_name)
|
||||
# for java_file in get_java_files(self.src_dir):
|
||||
# out.write('%s ' % java_file)
|
||||
# for java_file in get_java_files((self.src_dir + "/%s/Enumerations") % subdir):
|
||||
# out.write('%s ' % java_file)
|
||||
out.write('\n')
|
||||
out.write(('\t%s %s/Enumerations/*.java -d api/java\n' % (JAVAC, self.to_src_dir)).replace("/","\\"))
|
||||
out.write(('\t%s -cp api/java %s/*.java -d api/java\n' % (JAVAC, self.to_src_dir)).replace("/","\\"))
|
||||
out.write('\tjar cf %s.jar api/java/\n' % self.package_name)
|
||||
out.write('java: %s.jar\n\n' % self.package_name)
|
||||
|
||||
def main_component(self):
|
||||
return is_java_enabled()
|
||||
|
@ -1822,7 +1825,7 @@ def mk_z3consts_java(api_files):
|
|||
java = get_component(JAVA_COMPONENT)
|
||||
|
||||
DeprecatedEnums = [ 'Z3_search_failure' ]
|
||||
gendir = java.src_dir + "/" + java.package_name.replace(".", "/") + "/Enumerations"
|
||||
gendir = java.src_dir + "/Enumerations"
|
||||
if not os.path.exists(gendir):
|
||||
os.mkdir(gendir)
|
||||
|
||||
|
@ -1873,15 +1876,32 @@ def mk_z3consts_java(api_files):
|
|||
if name not in DeprecatedEnums:
|
||||
efile = open('%s/%s.java' % (gendir, name), 'w')
|
||||
efile.write('/**\n * Automatically generated file\n **/\n\n')
|
||||
efile.write('package %s;\n\n' % java.package_name);
|
||||
efile.write('package %s.Enumerations;\n\n' % java.package_name);
|
||||
|
||||
efile.write('/**\n')
|
||||
efile.write(' * %s\n' % name)
|
||||
efile.write(' **/\n')
|
||||
efile.write('public enum %s {\n' % name)
|
||||
efile.write
|
||||
first = True
|
||||
for k, i in decls.iteritems():
|
||||
efile.write('%s (%s),\n' % (k, i))
|
||||
if first:
|
||||
first = False
|
||||
else:
|
||||
efile.write(',\n')
|
||||
efile.write(' %s (%s)' % (k, i))
|
||||
efile.write(";\n")
|
||||
efile.write('\n private final int intValue;\n\n')
|
||||
efile.write(' %s(int v) {\n' % name)
|
||||
efile.write(' this.intValue = v;\n')
|
||||
efile.write(' }\n\n')
|
||||
efile.write(' public static final %s fromInt(int v) {\n' % name)
|
||||
efile.write(' for (%s k: values()) \n' % name)
|
||||
efile.write(' if (k.intValue == v) return k;\n')
|
||||
efile.write(' return values()[0];\n')
|
||||
efile.write(' }\n\n')
|
||||
efile.write(' public final int toInt() { return this.intValue; }\n')
|
||||
# efile.write(';\n %s(int v) {}\n' % name)
|
||||
efile.write('}\n\n')
|
||||
efile.close()
|
||||
mode = SEARCHING
|
||||
|
|
|
@ -252,11 +252,11 @@ def param2java(p):
|
|||
k = param_kind(p)
|
||||
if k == OUT:
|
||||
if param_type(p) == INT or param_type(p) == UINT:
|
||||
return "Integer"
|
||||
return "IntPtr"
|
||||
elif param_type(p) == INT64 or param_type(p) == UINT64 or param_type(p) >= FIRST_OBJ_ID:
|
||||
return "Long"
|
||||
return "LongPtr"
|
||||
elif param_type(p) == STRING:
|
||||
return "String"
|
||||
return "StringPtr"
|
||||
else:
|
||||
print "ERROR: unreachable code"
|
||||
assert(False)
|
||||
|
@ -496,19 +496,16 @@ def mk_java():
|
|||
if not is_java_enabled():
|
||||
return
|
||||
java_dir = get_component('java').src_dir
|
||||
try:
|
||||
os.mkdir('%s/com/Microsoft/Z3/' % java_dir)
|
||||
except:
|
||||
pass # OK if it exists already.
|
||||
java_nativef = '%s/com/Microsoft/Z3/Native.java' % java_dir
|
||||
java_wrapperf = '%s/com/Microsoft/Z3/Native.c' % java_dir
|
||||
java_nativef = '%s/Native.java' % java_dir
|
||||
java_wrapperf = '%s/Native.cpp' % java_dir
|
||||
java_native = open(java_nativef, 'w')
|
||||
java_native.write('// Automatically generated file\n')
|
||||
java_native.write('package com.Microsoft.Z3;\n')
|
||||
java_native.write('package %s;\n' % get_component('java').package_name)
|
||||
java_native.write('public final class Native {\n')
|
||||
java_native.write(' public static class IntPtr { public int value; }\n')
|
||||
java_native.write(' public static class LongPtr { public long value; }\n')
|
||||
java_native.write(' public static class StringPtr { public String value; }\n')
|
||||
java_native.write(' public static class errorHandler { public long ptr; }\n')
|
||||
|
||||
if is_windows():
|
||||
java_native.write(' static { System.loadLibrary("%s"); }\n' % get_component('java'))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue