Skip to content

Commit 928e197

Browse files
authored
Implement KEVM.kompile in terms of kompile (#1563)
1 parent 38821f1 commit 928e197

File tree

1 file changed

+22
-31
lines changed

1 file changed

+22
-31
lines changed

kevm-pyk/src/kevm_pyk/kevm.py

Lines changed: 22 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import logging
22
import sys
33
from pathlib import Path
4-
from subprocess import CalledProcessError
54
from typing import Final, Iterable, List, Optional
65

7-
from pyk.cli_utils import run_process
86
from pyk.cterm import CTerm
97
from pyk.kast.inner import KApply, KInner, KLabel, KSort, KToken, KVariable, build_assoc
108
from pyk.kast.manip import flatten_label, get_cell
119
from pyk.kast.outer import KFlatModule
12-
from pyk.ktool.kompile import KompileBackend
10+
from pyk.ktool.kompile import KompileBackend, kompile
1311
from pyk.ktool.kprint import SymbolTable, paren
1412
from pyk.ktool.kprove import KProve
1513
from pyk.ktool.krun import KRun
@@ -20,8 +18,6 @@
2018
from pyk.prelude.string import stringToken
2119
from pyk.utils import unique
2220

23-
from .utils import add_include_arg
24-
2521
_LOGGER: Final = logging.getLogger(__name__)
2622

2723

@@ -76,33 +72,28 @@ def kompile(
7672
llvm_kompile: bool = True,
7773
optimization: int = 0,
7874
) -> 'KEVM':
79-
command = ['kompile', '--output-definition', str(definition_dir), str(main_file)]
80-
if debug:
81-
command += ['--debug']
82-
command += ['--backend', backend.value]
83-
command += ['--main-module', main_module_name] if main_module_name else []
84-
command += ['--syntax-module', syntax_module_name] if syntax_module_name else []
85-
command += ['--md-selector', md_selector] if md_selector else []
86-
command += ['--hook-namespaces', ' '.join(KEVM.hook_namespaces())]
87-
command += add_include_arg(includes)
88-
if emit_json:
89-
command += ['--emit-json']
90-
if backend == KompileBackend.HASKELL:
91-
command += ['--concrete-rules', ','.join(KEVM.concrete_rules())]
92-
if backend == KompileBackend.LLVM:
93-
if ccopts:
94-
for ccopt in ccopts:
95-
command += ['-ccopt', ccopt]
96-
if 0 < optimization and optimization <= 3:
97-
command += [f'-O{optimization}']
98-
if not llvm_kompile:
99-
command += ['--no-llvm-kompile']
10075
try:
101-
run_process(command, logger=_LOGGER, profile=profile)
102-
except CalledProcessError as err:
103-
sys.stderr.write(f'\nkompile stdout:\n{err.stdout}\n')
104-
sys.stderr.write(f'\nkompile stderr:\n{err.stderr}\n')
105-
sys.stderr.write(f'\nkompile returncode:\n{err.returncode}\n')
76+
kompile(
77+
main_file=main_file,
78+
output_dir=definition_dir,
79+
backend=backend,
80+
emit_json=emit_json,
81+
include_dirs=[include for include in includes if Path(include).exists()],
82+
main_module=main_module_name,
83+
syntax_module=syntax_module_name,
84+
md_selector=md_selector,
85+
hook_namespaces=KEVM.hook_namespaces(),
86+
debug=debug,
87+
concrete_rules=KEVM.concrete_rules() if backend == KompileBackend.HASKELL else (),
88+
ccopts=ccopts,
89+
no_llvm_kompile=not llvm_kompile,
90+
opt_level=optimization or None,
91+
profile=profile,
92+
)
93+
except RuntimeError as err:
94+
sys.stderr.write(f'\nkompile stdout:\n{err.args[1]}\n')
95+
sys.stderr.write(f'\nkompile stderr:\n{err.args[2]}\n')
96+
sys.stderr.write(f'\nkompile returncode:\n{err.args[3]}\n')
10697
sys.stderr.flush()
10798
raise
10899
return KEVM(definition_dir, main_file=main_file)

0 commit comments

Comments
 (0)