Skip to content

Commit 026501a

Browse files
authored
Merge pull request #4771 from google/rework_java_wrap_cc
This change makes the oss code closer to the internal code which helps keep the two in sync.
2 parents 21b94fb + a0a1611 commit 026501a

File tree

10 files changed

+59
-66
lines changed

10 files changed

+59
-66
lines changed

bazel/swig_java.bzl

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
load("@bazel_skylib//lib:paths.bzl", "paths")
1717
load("@rules_cc//cc:cc_library.bzl", "cc_library")
18+
load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
1819
load("@rules_java//java:java_library.bzl", "java_library")
1920
load("@rules_java//java/common:java_common.bzl", "java_common")
2021

@@ -33,7 +34,9 @@ def _create_src_jar(ctx, java_runtime_info, input_dir, output_jar):
3334
)
3435

3536
def _java_wrap_cc_impl(ctx):
36-
src = ctx.file.src
37+
if len(ctx.files.srcs) != 1:
38+
fail("There must be exactly one *.swig file", attr = "srcs")
39+
swig_src = ctx.files.srcs[0]
3740
outfile = ctx.outputs.outfile
3841
outhdr = ctx.outputs.outhdr
3942

@@ -65,7 +68,7 @@ def _java_wrap_cc_impl(ctx):
6568
swig_args.add("-module", ctx.attr.module)
6669
for include_path in depset(transitive = include_path_sets).to_list():
6770
swig_args.add("-I" + include_path)
68-
swig_args.add(src.path)
71+
swig_args.add(swig_src.path)
6972
generated_c_files = [outfile]
7073
if ctx.attr.use_directors:
7174
generated_c_files.append(outhdr)
@@ -74,7 +77,7 @@ def _java_wrap_cc_impl(ctx):
7477
swig_lib = {"SWIG_LIB": paths.dirname(ctx.files._swig_lib[0].path)}
7578
ctx.actions.run(
7679
outputs = generated_c_files + [java_files_dir],
77-
inputs = depset([src] + ctx.files.swig_includes + ctx.files._swig_lib, transitive = header_sets),
80+
inputs = depset([swig_src] + ctx.files.swig_includes + ctx.files._swig_lib, transitive = header_sets),
7881
env = swig_lib,
7982
executable = ctx.executable._swig,
8083
arguments = [swig_args],
@@ -92,10 +95,13 @@ It's expected that the `swig` binary exists in the host's path.
9295
""",
9396
implementation = _java_wrap_cc_impl,
9497
attrs = {
95-
"src": attr.label(
96-
doc = "Single swig source file.",
97-
allow_single_file = True,
98-
mandatory = True,
98+
"srcs": attr.label_list(
99+
allow_empty = False,
100+
allow_files = [".swig", ".i"],
101+
flags = ["DIRECT_COMPILE_TIME_INPUT", "ORDER_INDEPENDENT"],
102+
doc = """
103+
A list of one <code>swig</code> source.
104+
""",
99105
),
100106
"deps": attr.label_list(
101107
doc = "C++ dependencies.",
@@ -141,9 +147,9 @@ It's expected that the `swig` binary exists in the host's path.
141147
},
142148
)
143149

144-
def ortools_java_wrap_cc(
150+
def java_wrap_cc(
145151
name,
146-
src,
152+
srcs,
147153
package,
148154
deps = [],
149155
java_deps = [],
@@ -159,7 +165,7 @@ def ortools_java_wrap_cc(
159165
160166
Args:
161167
name: target name.
162-
src: single .i source file.
168+
srcs: A list of one <code>swig</code> source.
163169
package: package of generated Java files.
164170
deps: C++ deps.
165171
java_deps: Java deps.
@@ -183,7 +189,7 @@ def ortools_java_wrap_cc(
183189

184190
_java_wrap_cc(
185191
name = wrapper_name,
186-
src = src,
192+
srcs = srcs,
187193
package = package,
188194
outfile = outfile,
189195
outhdr = outhdr if use_directors else None,

ortools/algorithms/java/BUILD.bazel

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@
1313

1414
# Description: java wrapping of the C++ code at ../
1515

16-
load("//bazel:swig_java.bzl", "ortools_java_wrap_cc")
16+
load("//bazel:swig_java.bzl", "java_wrap_cc")
1717

18-
ortools_java_wrap_cc(
18+
java_wrap_cc(
1919
name = "knapsacksolver",
20-
src = "knapsack_solver.swig",
20+
srcs = ["knapsack_solver.swig"],
2121
module = "operations_research_algorithms",
2222
package = "com.google.ortools.algorithms",
2323
swig_includes = [
2424
"//ortools/base:base_swig",
25-
"//ortools/util/java:vector_swig",
25+
"//ortools/util/java:vector.swig",
2626
],
2727
visibility = ["//visibility:public"],
2828
deps = [

ortools/graph/java/BUILD.bazel

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515

1616
load("@contrib_rules_jvm//java:defs.bzl", "java_junit5_test")
1717
load("@rules_jvm_external//:defs.bzl", "artifact")
18-
load("//bazel:swig_java.bzl", "ortools_java_wrap_cc")
18+
load("//bazel:swig_java.bzl", "java_wrap_cc")
1919

20-
ortools_java_wrap_cc(
20+
java_wrap_cc(
2121
name = "graph",
22-
src = "graph.swig",
22+
srcs = ["graph.swig"],
2323
module = "graph",
2424
package = "com.google.ortools.graph",
2525
swig_includes = [

ortools/init/java/BUILD.bazel

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@
1313

1414
# Description: java wrapping of the C++ code at ../
1515

16-
load("//bazel:swig_java.bzl", "ortools_java_wrap_cc")
16+
load("//bazel:swig_java.bzl", "java_wrap_cc")
1717

18-
ortools_java_wrap_cc(
18+
java_wrap_cc(
1919
name = "init",
20-
src = "init.i",
20+
srcs = ["init.i"],
2121
module = "operations_research_init",
2222
package = "com.google.ortools.init",
2323
swig_includes = [
2424
"//ortools/base:base_swig",
25-
"//ortools/util/java:absl_string_view_swig",
25+
"//ortools/util/java:absl_string_view.swig",
2626
],
2727
visibility = ["//visibility:public"],
2828
deps = [

ortools/java/com/google/ortools/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
# limitations under the License.
1313

1414
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
15+
load("@rules_java//java:java_library.bzl", "java_library")
1516

1617
# Utilities to load native libraries in java or-tools.
1718
cc_binary(

ortools/java/com/google/ortools/modelbuilder/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
# See the License for the specific language governing permissions and
1212
# limitations under the License.
1313

14+
load("@rules_java//java:java_library.bzl", "java_library")
15+
1416
package(default_visibility = ["//visibility:public"])
1517

1618
# Utilities to load native libraries in java or-tools.

ortools/java/com/google/ortools/sat/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
# See the License for the specific language governing permissions and
1212
# limitations under the License.
1313

14+
load("@rules_java//java:java_library.bzl", "java_library")
15+
1416
package(default_visibility = ["//visibility:public"])
1517

1618
# Utilities to load native libraries in java or-tools.

ortools/linear_solver/java/BUILD.bazel

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@
1515

1616
load("@contrib_rules_jvm//java:defs.bzl", "java_junit5_test")
1717
load("@rules_jvm_external//:defs.bzl", "artifact")
18-
load("//bazel:swig_java.bzl", "ortools_java_wrap_cc")
18+
load("//bazel:swig_java.bzl", "java_wrap_cc")
1919

20-
ortools_java_wrap_cc(
20+
java_wrap_cc(
2121
name = "modelbuilder",
22-
src = "modelbuilder.swig",
22+
srcs = ["modelbuilder.swig"],
2323
module = "modelbuilder",
2424
package = "com.google.ortools.modelbuilder",
2525
swig_includes = [
2626
"//ortools/base:base_swig",
27-
"//ortools/util/java:vector_swig",
27+
"//ortools/util/java:vector.swig",
2828
],
2929
visibility = ["//visibility:public"],
3030
deps = [

ortools/sat/java/BUILD.bazel

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,23 @@
1515

1616
load("@contrib_rules_jvm//java:defs.bzl", "java_junit5_test")
1717
load("@rules_jvm_external//:defs.bzl", "artifact")
18-
load("//bazel:swig_java.bzl", "ortools_java_wrap_cc")
18+
load("//bazel:swig_java.bzl", "java_wrap_cc")
1919

20-
ortools_java_wrap_cc(
20+
java_wrap_cc(
2121
name = "sat",
22-
src = "sat.swig",
22+
srcs = ["sat.swig"],
2323
java_deps = [
2424
"//ortools/sat:cp_model_java_proto",
2525
"//ortools/sat:sat_parameters_java_proto",
26-
"//ortools/util/java:sorted_interval_list",
26+
"//ortools/util/java:sorted_interval_list_swig",
2727
"@protobuf//java/core",
2828
],
2929
package = "com.google.ortools.sat",
3030
swig_includes = [
3131
"//ortools/base:base_swig",
32-
"//ortools/util/java:proto_swig",
33-
"//ortools/util/java:sorted_interval_list_swig",
34-
"//ortools/util/java:vector_swig",
32+
"//ortools/util/java:proto.i",
33+
"//ortools/util/java:sorted_interval_list.swig",
34+
"//ortools/util/java:vector.swig",
3535
],
3636
use_directors = True,
3737
visibility = ["//visibility:public"],

ortools/util/java/BUILD.bazel

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -11,48 +11,29 @@
1111
# See the License for the specific language governing permissions and
1212
# limitations under the License.
1313

14-
# Description: java wrapping of the code in ../
14+
# Description: java wrapping of (some of) the code in ../, plus
15+
# some generic utilities for SWIG java.
1516

16-
load("//bazel:swig_java.bzl", "ortools_java_wrap_cc")
17+
load("//bazel:swig_java.bzl", "java_wrap_cc")
1718

18-
filegroup(
19-
name = "vector_swig",
20-
srcs = [
21-
"vector.swig",
22-
],
23-
visibility = ["//visibility:public"],
24-
)
25-
26-
filegroup(
27-
name = "proto_swig",
28-
srcs = [
29-
"proto.i",
30-
],
31-
visibility = ["//visibility:public"],
32-
)
33-
34-
filegroup(
35-
name = "absl_string_view_swig",
36-
srcs = [
19+
# These .swig files are currently just included in other .swig files.
20+
# TODO(user): Create dedicated java_wrap_cc rules and unit tests.
21+
exports_files(
22+
[
3723
"absl_string_view.swig",
38-
],
39-
visibility = ["//visibility:public"],
40-
)
41-
42-
filegroup(
43-
name = "sorted_interval_list_swig",
44-
srcs = [
24+
"proto.i",
4525
"sorted_interval_list.swig",
26+
"tuple_set.swig",
27+
"vector.swig",
4628
],
47-
visibility = ["//visibility:public"],
4829
)
4930

50-
ortools_java_wrap_cc(
51-
name = "sorted_interval_list",
52-
src = "sorted_interval_list.swig",
31+
java_wrap_cc(
32+
name = "sorted_interval_list_swig",
33+
srcs = ["sorted_interval_list.swig"],
5334
package = "com.google.ortools.util",
5435
swig_includes = [
55-
":vector_swig",
36+
":vector.swig",
5637
"//ortools/base:base_swig",
5738
],
5839
swig_opt = select({
@@ -61,6 +42,7 @@ ortools_java_wrap_cc(
6142
}),
6243
visibility = ["//visibility:public"],
6344
deps = [
45+
"//ortools/base",
6446
"//ortools/util:sorted_interval_list",
6547
],
6648
)

0 commit comments

Comments
 (0)