1515
1616load ("@bazel_skylib//lib:paths.bzl" , "paths" )
1717load ("@rules_cc//cc:cc_library.bzl" , "cc_library" )
18+ load ("@rules_cc//cc/common:cc_info.bzl" , "CcInfo" )
1819load ("@rules_java//java:java_library.bzl" , "java_library" )
1920load ("@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
3536def _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 ,
0 commit comments