mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 20:18:18 +00:00
trying new build infrastructure on linux
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
efff6db567
commit
1d795e9a5e
|
@ -22,6 +22,7 @@ if os.name == 'nt':
|
||||||
IS_WINDOW=True
|
IS_WINDOW=True
|
||||||
CXX='cl'
|
CXX='cl'
|
||||||
MAKE='nmake'
|
MAKE='nmake'
|
||||||
|
SHOW_CPPS = True
|
||||||
|
|
||||||
LIB_KIND = 0
|
LIB_KIND = 0
|
||||||
EXE_KIND = 1
|
EXE_KIND = 1
|
||||||
|
@ -133,17 +134,18 @@ class Component:
|
||||||
out.write('%s: ' % include_node)
|
out.write('%s: ' % include_node)
|
||||||
self.add_cpp_h_deps(out, include)
|
self.add_cpp_h_deps(out, include)
|
||||||
out.write('\n')
|
out.write('\n')
|
||||||
out.write(' @echo done > %s\n' % include_node)
|
out.write('\t@echo done > %s\n' % include_node)
|
||||||
|
|
||||||
def add_cpp_rules(self, out, include_defs, cppfile):
|
def add_cpp_rules(self, out, include_defs, cppfile):
|
||||||
self.add_rule_for_each_include(out, cppfile)
|
self.add_rule_for_each_include(out, cppfile)
|
||||||
objfile = '%s/%s.$(OBJ)' % (self.build_dir, os.path.splitext(cppfile)[0])
|
objfile = '%s/%s$(OBJ_EXT)' % (self.build_dir, os.path.splitext(cppfile)[0])
|
||||||
srcfile = '%s/%s' % (self.to_src_dir, cppfile)
|
srcfile = '%s/%s' % (self.to_src_dir, cppfile)
|
||||||
out.write('%s: ' % objfile)
|
out.write('%s: ' % objfile)
|
||||||
self.add_cpp_h_deps(out, cppfile)
|
self.add_cpp_h_deps(out, cppfile)
|
||||||
out.write('\n')
|
out.write('\n')
|
||||||
flags = 'CXXFLAGS_OPT'
|
if SHOW_CPPS:
|
||||||
out.write(' @$(CXX) $(%s) $(%s) $(CXXOUTFLAG)%s %s\n' % (include_defs, flags, objfile, srcfile))
|
out.write('\t@echo %s\n' % cppfile)
|
||||||
|
out.write('\t@$(CXX) $(CXXFLAGS) $(%s) $(CXX_OUT_FLAG)%s %s\n' % (include_defs, objfile, srcfile))
|
||||||
|
|
||||||
def mk_makefile(self, out):
|
def mk_makefile(self, out):
|
||||||
include_defs = mk_fresh_name('includes')
|
include_defs = mk_fresh_name('includes')
|
||||||
|
@ -166,22 +168,33 @@ class LibComponent(Component):
|
||||||
objs = []
|
objs = []
|
||||||
for cppfile in glob.glob(os.path.join(self.src_dir, '*.cpp')):
|
for cppfile in glob.glob(os.path.join(self.src_dir, '*.cpp')):
|
||||||
cppfile = os.path.basename(cppfile)
|
cppfile = os.path.basename(cppfile)
|
||||||
objfile = '%s/%s.$(OBJ)' % (self.build_dir, os.path.splitext(cppfile)[0])
|
objfile = '%s/%s$(OBJ_EXT)' % (self.build_dir, os.path.splitext(cppfile)[0])
|
||||||
objs.append(objfile)
|
objs.append(objfile)
|
||||||
|
|
||||||
libfile = '%s/%s.$(LIB)' % (self.build_dir, self.name)
|
libfile = '%s/%s$(LIB_EXT)' % (self.build_dir, self.name)
|
||||||
out.write('%s:' % libfile)
|
out.write('%s:' % libfile)
|
||||||
for obj in objs:
|
for obj in objs:
|
||||||
out.write(' ')
|
out.write(' ')
|
||||||
out.write(obj)
|
out.write(obj)
|
||||||
out.write('\n')
|
out.write('\n')
|
||||||
out.write(' @$(MKLIB) $(MKLIB_OPT) $(MKLIBOUTFLAG)%s' % libfile)
|
out.write('\t@$(AR) $(AR_FLAGS) $(AR_OUTFLAG)%s' % libfile)
|
||||||
for obj in objs:
|
for obj in objs:
|
||||||
out.write(' ')
|
out.write(' ')
|
||||||
out.write(obj)
|
out.write(obj)
|
||||||
out.write('\n')
|
out.write('\n')
|
||||||
out.write('%s: %s\n\n' % (self.name, libfile))
|
out.write('%s: %s\n\n' % (self.name, libfile))
|
||||||
|
|
||||||
|
def comp_components(c1, c2):
|
||||||
|
id1 = _Name2Component[c1].id
|
||||||
|
id2 = _Name2Component[c2].id
|
||||||
|
if id1 < id2: return -1
|
||||||
|
if id2 > id1: return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
# Sort components based on definition time
|
||||||
|
def sort_components(cnames):
|
||||||
|
return sorted(cnames, cmp=comp_components)
|
||||||
|
|
||||||
class ExeComponent(Component):
|
class ExeComponent(Component):
|
||||||
def __init__(self, name, exe_name, path, deps):
|
def __init__(self, name, exe_name, path, deps):
|
||||||
Component.__init__(self, name, EXE_KIND, path, deps)
|
Component.__init__(self, name, EXE_KIND, path, deps)
|
||||||
|
@ -194,27 +207,28 @@ class ExeComponent(Component):
|
||||||
Component.mk_makefile(self, out)
|
Component.mk_makefile(self, out)
|
||||||
# generate rule for exe
|
# generate rule for exe
|
||||||
|
|
||||||
exefile = '%s.$(EXE)' % self.exe_name
|
exefile = '%s$(EXE_EXT)' % self.exe_name
|
||||||
out.write('%s:' % exefile)
|
out.write('%s:' % exefile)
|
||||||
for dep in self.deps:
|
deps = sort_components(self.deps)
|
||||||
|
for dep in deps:
|
||||||
c_dep = _Name2Component[dep]
|
c_dep = _Name2Component[dep]
|
||||||
out.write(' %s/%s.lib' % (c_dep.build_dir, c_dep.name))
|
out.write(' %s/%s$(LIB_EXT)' % (c_dep.build_dir, c_dep.name))
|
||||||
objs = []
|
objs = []
|
||||||
for cppfile in glob.glob(os.path.join(self.src_dir, '*.cpp')):
|
for cppfile in glob.glob(os.path.join(self.src_dir, '*.cpp')):
|
||||||
cppfile = os.path.basename(cppfile)
|
cppfile = os.path.basename(cppfile)
|
||||||
objfile = '%s/%s.$(OBJ)' % (self.build_dir, os.path.splitext(cppfile)[0])
|
objfile = '%s/%s$(OBJ_EXT)' % (self.build_dir, os.path.splitext(cppfile)[0])
|
||||||
objs.append(objfile)
|
objs.append(objfile)
|
||||||
for obj in objs:
|
for obj in objs:
|
||||||
out.write(' ')
|
out.write(' ')
|
||||||
out.write(obj)
|
out.write(obj)
|
||||||
out.write('\n')
|
out.write('\n')
|
||||||
out.write(' $(MKEXE) $(EXEOUTFLAG)%s $(EXEFLAGS_OPT)' % exefile)
|
out.write('\t$(LINK) $(LINK_OUT_FLAG)%s $(LINK_FLAGS)' % exefile)
|
||||||
for obj in objs:
|
for obj in objs:
|
||||||
out.write(' ')
|
out.write(' ')
|
||||||
out.write(obj)
|
out.write(obj)
|
||||||
for dep in self.deps:
|
for dep in deps:
|
||||||
c_dep = _Name2Component[dep]
|
c_dep = _Name2Component[dep]
|
||||||
out.write(' %s/%s.lib' % (c_dep.build_dir, c_dep.name))
|
out.write(' %s/%s$(LIB_EXT)' % (c_dep.build_dir, c_dep.name))
|
||||||
out.write('\n')
|
out.write('\n')
|
||||||
out.write('%s: %s\n\n' % (self.name, exefile))
|
out.write('%s: %s\n\n' % (self.name, exefile))
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ Revision History:
|
||||||
#include "str_hashtable.h"
|
#include "str_hashtable.h"
|
||||||
#include "front_end_params.h"
|
#include "front_end_params.h"
|
||||||
#include "stopwatch.h"
|
#include "stopwatch.h"
|
||||||
front_end_params& Z3_API Z3_get_parameters(__in Z3_context c);
|
front_end_params& Z3_API Z3_get_parameters(Z3_context c);
|
||||||
|
|
||||||
class id_param_info {
|
class id_param_info {
|
||||||
symbol m_string;
|
symbol m_string;
|
||||||
|
|
|
@ -30,49 +30,6 @@ using namespace format_ns;
|
||||||
#define MAX_INDENT 16
|
#define MAX_INDENT 16
|
||||||
#define SMALL_INDENT 2
|
#define SMALL_INDENT 2
|
||||||
|
|
||||||
bool is_smt2_simple_symbol_char(char s) {
|
|
||||||
return
|
|
||||||
('0' <= s && s <= '9') ||
|
|
||||||
('a' <= s && s <= 'z') ||
|
|
||||||
('A' <= s && s <= 'Z') ||
|
|
||||||
s == '~' || s == '!' || s == '@' || s == '$' || s == '%' || s == '^' || s == '&' ||
|
|
||||||
s == '*' || s == '_' || s == '-' || s == '+' || s == '=' || s == '<' || s == '>' ||
|
|
||||||
s == '.' || s == '?' || s == '/';
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_smt2_quoted_symbol(char const * s) {
|
|
||||||
if (s == 0)
|
|
||||||
return false;
|
|
||||||
if ('0' <= s[0] && s[0] <= '9')
|
|
||||||
return true;
|
|
||||||
unsigned len = static_cast<unsigned>(strlen(s));
|
|
||||||
for (unsigned i = 0; i < len; i++)
|
|
||||||
if (!is_smt2_simple_symbol_char(s[i]))
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_smt2_quoted_symbol(symbol const & s) {
|
|
||||||
if (s.is_numerical())
|
|
||||||
return false;
|
|
||||||
return is_smt2_quoted_symbol(s.bare_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string mk_smt2_quoted_symbol(symbol const & s) {
|
|
||||||
SASSERT(is_smt2_quoted_symbol(s));
|
|
||||||
string_buffer<> buffer;
|
|
||||||
buffer.append('|');
|
|
||||||
char const * str = s.bare_str();
|
|
||||||
while (*str) {
|
|
||||||
if (*str == '|' || *str == '\\')
|
|
||||||
buffer.append('\\');
|
|
||||||
buffer.append(*str);
|
|
||||||
str++;
|
|
||||||
}
|
|
||||||
buffer.append('|');
|
|
||||||
return std::string(buffer.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
format * smt2_pp_environment::pp_fdecl_name(symbol const & s, unsigned & len) const {
|
format * smt2_pp_environment::pp_fdecl_name(symbol const & s, unsigned & len) const {
|
||||||
ast_manager & m = get_manager();
|
ast_manager & m = get_manager();
|
||||||
if (is_smt2_quoted_symbol(s)) {
|
if (is_smt2_quoted_symbol(s)) {
|
||||||
|
|
|
@ -29,11 +29,7 @@ Revision History:
|
||||||
#include"array_decl_plugin.h"
|
#include"array_decl_plugin.h"
|
||||||
#include"float_decl_plugin.h"
|
#include"float_decl_plugin.h"
|
||||||
#include"dl_decl_plugin.h"
|
#include"dl_decl_plugin.h"
|
||||||
|
#include"smt2_util.h"
|
||||||
bool is_smt2_simple_symbol_char(char c);
|
|
||||||
bool is_smt2_quoted_symbol(char const * s);
|
|
||||||
bool is_smt2_quoted_symbol(symbol const & s);
|
|
||||||
std::string mk_smt2_quoted_symbol(symbol const & s);
|
|
||||||
|
|
||||||
class smt2_pp_environment {
|
class smt2_pp_environment {
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -712,14 +712,14 @@ namespace pdr {
|
||||||
pred_transformer& p = pt();
|
pred_transformer& p = pt();
|
||||||
ast_manager& m = p.get_manager();
|
ast_manager& m = p.get_manager();
|
||||||
manager& pm = p.get_pdr_manager();
|
manager& pm = p.get_pdr_manager();
|
||||||
TRACE("pdr", model_v2_pp(tout, model()););
|
TRACE("pdr", model_v2_pp(tout, get_model()););
|
||||||
func_decl* f = p.head();
|
func_decl* f = p.head();
|
||||||
unsigned arity = f->get_arity();
|
unsigned arity = f->get_arity();
|
||||||
expr_ref_vector args(m);
|
expr_ref_vector args(m);
|
||||||
func_decl_ref v(m);
|
func_decl_ref v(m);
|
||||||
for (unsigned i = 0; i < arity; ++i) {
|
for (unsigned i = 0; i < arity; ++i) {
|
||||||
v = pm.o2n(p.sig(i),0);
|
v = pm.o2n(p.sig(i),0);
|
||||||
expr* e = model().get_const_interp(v);
|
expr* e = get_model().get_const_interp(v);
|
||||||
if (e) {
|
if (e) {
|
||||||
args.push_back(e);
|
args.push_back(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,7 +196,7 @@ namespace pdr {
|
||||||
pred_transformer& pt() const { return m_pt; }
|
pred_transformer& pt() const { return m_pt; }
|
||||||
model_node* parent() const { return m_parent; }
|
model_node* parent() const { return m_parent; }
|
||||||
model* model_ptr() const { return m_model.get(); }
|
model* model_ptr() const { return m_model.get(); }
|
||||||
model const& model() const { return *m_model; }
|
model const& get_model() const { return *m_model; }
|
||||||
unsigned index() const;
|
unsigned index() const;
|
||||||
|
|
||||||
bool is_closed() const { return m_closed; }
|
bool is_closed() const { return m_closed; }
|
||||||
|
|
|
@ -418,10 +418,10 @@ namespace pdr {
|
||||||
// nodes from leaves that are repeated
|
// nodes from leaves that are repeated
|
||||||
// inside the search tree don't have models.
|
// inside the search tree don't have models.
|
||||||
//
|
//
|
||||||
if (!(&node.model())) {
|
if (!(&node.get_model())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_current_rule = &pt.find_rule(node.model());
|
m_current_rule = &pt.find_rule(node.get_model());
|
||||||
m_current_pt = &pt;
|
m_current_pt = &pt;
|
||||||
m_current_node = &node;
|
m_current_node = &node;
|
||||||
if (!m_current_rule) {
|
if (!m_current_rule) {
|
||||||
|
|
|
@ -908,9 +908,6 @@ bool model_evaluator::check_model(ptr_vector<expr> const& formulas) {
|
||||||
m_cfg(m, p) {}
|
m_cfg(m, p) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
template class rewriter_tpl<ite_hoister_cfg>;
|
|
||||||
|
|
||||||
|
|
||||||
void hoist_non_bool_if(expr_ref& fml) {
|
void hoist_non_bool_if(expr_ref& fml) {
|
||||||
ast_manager& m = fml.get_manager();
|
ast_manager& m = fml.get_manager();
|
||||||
datalog::scoped_no_proof _sp(m);
|
datalog::scoped_no_proof _sp(m);
|
||||||
|
@ -1039,3 +1036,8 @@ bool model_evaluator::check_model(ptr_vector<expr> const& formulas) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template class rewriter_tpl<pdr::ite_hoister_cfg>;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -498,7 +498,7 @@ public:
|
||||||
unsigned j = 0;
|
unsigned j = 0;
|
||||||
for (unsigned i = 0; i < vars.size(); ++i) {
|
for (unsigned i = 0; i < vars.size(); ++i) {
|
||||||
if (used.contains(vars.size()-i-1)) {
|
if (used.contains(vars.size()-i-1)) {
|
||||||
vars[j] = vars[i];
|
vars.set(j, vars.get(i));
|
||||||
++j;
|
++j;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue