Skip to content

Commit e5b4269

Browse files
code-perspectivecopybara-github
authored andcommitted
Add heir-openfhe.bzl to create openfhe lib
PiperOrigin-RevId: 736322644
1 parent efb0d50 commit e5b4269

File tree

3 files changed

+73
-41
lines changed

3 files changed

+73
-41
lines changed

tests/Examples/openfhe/test.bzl

+2-41
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
"""A macro providing an end-to-end test for OpenFHE codegen."""
22

33
load("@heir//bazel/openfhe:copts.bzl", "MAYBE_OPENFHE_LINKOPTS", "MAYBE_OPENMP_COPTS")
4-
load("@heir//tools:heir-opt.bzl", "heir_opt")
5-
load("@heir//tools:heir-translate.bzl", "heir_translate")
4+
load("@heir//tools:heir-openfhe.bzl", "openfhe_lib")
65

76
def openfhe_end_to_end_test(name, mlir_src, test_src, generated_lib_header, heir_opt_flags = [], heir_translate_flags = [], data = [], tags = [], deps = [], **kwargs):
87
"""A rule for running generating OpenFHE and running a test on it.
@@ -20,46 +19,8 @@ def openfhe_end_to_end_test(name, mlir_src, test_src, generated_lib_header, heir
2019
deps: Deps to pass to cc_test and cc_library
2120
**kwargs: Keyword arguments to pass to cc_library and cc_test.
2221
"""
23-
cc_codegen_target = name + ".heir_translate_cc"
24-
h_codegen_target = name + ".heir_translate_h"
2522
cc_lib_target_name = "%s_cc_lib" % name
26-
generated_cc_filename = "%s_lib.inc.cc" % name
27-
heir_opt_name = "%s_heir_opt" % name
28-
generated_heir_opt_name = "%s_heir_opt.mlir" % name
29-
heir_translate_flags = heir_translate_flags + ["--emit-openfhe-pke", "--openfhe-include-type=source-relative"]
30-
31-
if heir_opt_flags:
32-
heir_opt(
33-
name = heir_opt_name,
34-
src = mlir_src,
35-
pass_flags = heir_opt_flags,
36-
generated_filename = generated_heir_opt_name,
37-
)
38-
else:
39-
generated_heir_opt_name = mlir_src
40-
41-
heir_translate(
42-
name = cc_codegen_target,
43-
src = generated_heir_opt_name,
44-
pass_flags = heir_translate_flags,
45-
generated_filename = generated_cc_filename,
46-
)
47-
heir_translate(
48-
name = h_codegen_target,
49-
src = generated_heir_opt_name,
50-
pass_flags = heir_translate_flags,
51-
generated_filename = generated_lib_header,
52-
)
53-
native.cc_library(
54-
name = cc_lib_target_name,
55-
srcs = [":" + generated_cc_filename],
56-
hdrs = [":" + generated_lib_header],
57-
deps = deps + ["@openfhe//:pke"],
58-
tags = tags,
59-
copts = MAYBE_OPENMP_COPTS,
60-
linkopts = MAYBE_OPENFHE_LINKOPTS,
61-
**kwargs
62-
)
23+
openfhe_lib(name, mlir_src, generated_lib_header, cc_lib_target_name, heir_opt_flags, heir_translate_flags, tags, deps, **kwargs)
6324
native.cc_test(
6425
name = name,
6526
srcs = [test_src],

tools/BUILD

+10
Original file line numberDiff line numberDiff line change
@@ -262,3 +262,13 @@ bzl_library(
262262
"@rules_python//python:py_library_bzl",
263263
],
264264
)
265+
266+
bzl_library(
267+
name = "heir_openfhe_bzl",
268+
srcs = ["heir-openfhe.bzl"],
269+
visibility = ["//visibility:public"],
270+
deps = [
271+
":heir_opt_bzl",
272+
":heir_translate_bzl",
273+
],
274+
)

tools/heir-openfhe.bzl

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
"""A macro providing an end-to-end library for OpenFHE codegen."""
2+
3+
load("@heir//bazel/openfhe:copts.bzl", "MAYBE_OPENFHE_LINKOPTS", "MAYBE_OPENMP_COPTS")
4+
load("@heir//tools:heir-opt.bzl", "heir_opt")
5+
load("@heir//tools:heir-translate.bzl", "heir_translate")
6+
7+
def openfhe_lib(name, mlir_src, generated_lib_header, cc_lib_target_name, heir_opt_flags = [], heir_translate_flags = [], tags = [], deps = [], **kwargs):
8+
"""A rule for running generating OpenFHE and running a test on it.
9+
10+
Args:
11+
name: The name of the cc_test target and the generated .cc file basename.
12+
mlir_src: The source mlir file to run through heir-translate
13+
generated_lib_header: The name of the generated .h file (explicit
14+
because it needs to be manually #include'd in the test_src file)
15+
cc_lib_target_name: The name of the generated cc_library target
16+
heir_opt_flags: Flags to pass to heir-opt before heir-translate
17+
heir_translate_flags: Flags to pass to heir-translate
18+
tags: Tags to pass to cc_test and cc_library
19+
deps: Deps to pass to cc_test and cc_library
20+
**kwargs: Keyword arguments to pass to cc_library and cc_test.
21+
"""
22+
cc_codegen_target = name + ".heir_translate_cc"
23+
h_codegen_target = name + ".heir_translate_h"
24+
25+
generated_cc_filename = "%s_lib.inc.cc" % name
26+
heir_opt_name = "%s_heir_opt" % name
27+
generated_heir_opt_name = "%s_heir_opt.mlir" % name
28+
heir_translate_flags = heir_translate_flags + ["--emit-openfhe-pke", "--openfhe-include-type=source-relative"]
29+
30+
if heir_opt_flags:
31+
heir_opt(
32+
name = heir_opt_name,
33+
src = mlir_src,
34+
pass_flags = heir_opt_flags,
35+
generated_filename = generated_heir_opt_name,
36+
)
37+
else:
38+
generated_heir_opt_name = mlir_src
39+
40+
heir_translate(
41+
name = cc_codegen_target,
42+
src = generated_heir_opt_name,
43+
pass_flags = heir_translate_flags,
44+
generated_filename = generated_cc_filename,
45+
)
46+
heir_translate(
47+
name = h_codegen_target,
48+
src = generated_heir_opt_name,
49+
pass_flags = heir_translate_flags,
50+
generated_filename = generated_lib_header,
51+
)
52+
native.cc_library(
53+
name = cc_lib_target_name,
54+
srcs = [":" + generated_cc_filename],
55+
hdrs = [":" + generated_lib_header],
56+
deps = deps + ["@openfhe//:pke"],
57+
tags = tags,
58+
copts = MAYBE_OPENMP_COPTS,
59+
linkopts = MAYBE_OPENFHE_LINKOPTS,
60+
**kwargs
61+
)

0 commit comments

Comments
 (0)