mirror of
https://github.com/Z3Prover/z3
synced 2025-06-09 23:53:25 +00:00
Refactor `mk_pat_db()
` so that it is usable externally via a new function
``mk_pat_db_internal()`` which is called by a new ``mk_pat_db.py`` script. This will allow other build systems to generate the ``database.h`` file.
This commit is contained in:
parent
9558dc14fb
commit
ef58179462
2 changed files with 46 additions and 9 deletions
34
scripts/mk_pat_db.py
Executable file
34
scripts/mk_pat_db.py
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
"""
|
||||||
|
Reads a pattern database and generates the corresponding
|
||||||
|
header file.
|
||||||
|
"""
|
||||||
|
import mk_util
|
||||||
|
import argparse
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def main(args):
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
parser = argparse.ArgumentParser(description=__doc__)
|
||||||
|
parser.add_argument("db_file", help="pattern database file")
|
||||||
|
parser.add_argument("output_file", help="output header file path")
|
||||||
|
pargs = parser.parse_args(args)
|
||||||
|
|
||||||
|
if not os.path.exists(pargs.db_file):
|
||||||
|
logging.error('"{}" does not exist'.format(pargs.db_file))
|
||||||
|
return 1
|
||||||
|
|
||||||
|
if (os.path.exists(pargs.output_file) and
|
||||||
|
not os.path.isfile(pargs.output_file)):
|
||||||
|
logging.error('Refusing to overwrite "{}"'.format(
|
||||||
|
pargs.output_file))
|
||||||
|
return 1
|
||||||
|
|
||||||
|
mk_util.mk_pat_db_internal(pargs.db_file, pargs.output_file)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(main(sys.argv[1:]))
|
||||||
|
|
|
@ -2602,16 +2602,19 @@ def exec_pyg_scripts():
|
||||||
# database.smt ==> database.h
|
# database.smt ==> database.h
|
||||||
def mk_pat_db():
|
def mk_pat_db():
|
||||||
c = get_component(PATTERN_COMPONENT)
|
c = get_component(PATTERN_COMPONENT)
|
||||||
fin = open(os.path.join(c.src_dir, 'database.smt2'), 'r')
|
fin = os.path.join(c.src_dir, 'database.smt2')
|
||||||
fout = open(os.path.join(c.src_dir, 'database.h'), 'w')
|
fout = os.path.join(c.src_dir, 'database.h')
|
||||||
|
mk_pat_db_internal(fin, fout)
|
||||||
|
|
||||||
|
def mk_pat_db_internal(inputFilePath, outputFilePath):
|
||||||
|
with open(inputFilePath, 'r') as fin:
|
||||||
|
with open(outputFilePath, 'w') as fout:
|
||||||
fout.write('static char const g_pattern_database[] =\n')
|
fout.write('static char const g_pattern_database[] =\n')
|
||||||
for line in fin:
|
for line in fin:
|
||||||
fout.write('"%s\\n"\n' % line.strip('\n'))
|
fout.write('"%s\\n"\n' % line.strip('\n'))
|
||||||
fout.write(';\n')
|
fout.write(';\n')
|
||||||
fin.close()
|
|
||||||
fout.close()
|
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
print("Generated '%s'" % os.path.join(c.src_dir, 'database.h'))
|
print("Generated '%s'" % outputFilePath)
|
||||||
|
|
||||||
# Update version numbers
|
# Update version numbers
|
||||||
def update_version():
|
def update_version():
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue