Skip to content

Commit

Permalink
[WASM] Allow .js sources in j2wasm_library.
Browse files Browse the repository at this point in the history
Some things are made cleaner if we allow .js sources in j2wasm_library.

To do this, I extracted the logic to split srcs in j2cl_common, and use it in j2wasm_common._compile. I added ".js" to the list of allowed files in j2wasm_library.

PiperOrigin-RevId: 519851424
  • Loading branch information
Googler authored and Copybara-Service committed Mar 27, 2023
1 parent 24a7b79 commit 66e289b
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 49 deletions.
14 changes: 9 additions & 5 deletions build_defs/internal_do_not_use/j2cl_common.bzl
Expand Up @@ -25,11 +25,7 @@ def _compile(
artifact_suffix = ""):
name = ctx.label.name + artifact_suffix

# Categorize the sources.
js_srcs = []
jvm_srcs = []
for src in srcs:
(js_srcs if src.extension in ["js", "zip"] else jvm_srcs).append(src)
jvm_srcs, js_srcs = split_srcs(srcs)

has_kotlin_srcs = any([src for src in jvm_srcs if src.extension == "kt"]) or kt_common_srcs

Expand Down Expand Up @@ -114,6 +110,14 @@ def _compile(
_is_j2cl_provider = 1,
)

def split_srcs(srcs):
""" Split the srcs into Jvm and JS groups. """
jvm_srcs = []
js_srcs = []
for src in srcs:
(js_srcs if src.extension in ["js", "zip"] else jvm_srcs).append(src)
return (jvm_srcs, js_srcs)

def split_deps(deps):
""" Split the provider deps into Jvm and JS groups. """
jvm_deps = []
Expand Down
6 changes: 4 additions & 2 deletions build_defs/internal_do_not_use/j2wasm_common.bzl
Expand Up @@ -5,7 +5,7 @@ load(
"j2cl_common",
)
load("//build_defs/internal_do_not_use:provider.bzl", "J2wasmInfo")
load(":j2cl_common.bzl", "split_deps")
load(":j2cl_common.bzl", "split_deps", "split_srcs")
load(":j2cl_js_common.bzl", "j2cl_js_provider")

def _compile(
Expand All @@ -19,13 +19,14 @@ def _compile(
output_jar = None,
javac_opts = [],
mnemonic = "J2Wasm"):
java_srcs, js_srcs = split_srcs(srcs)
java_deps, js_deps = split_deps(deps)
java_exports, js_exports = split_deps(exports)

java_provider = j2cl_common.java_compile(
ctx = ctx,
name = name,
srcs = srcs,
srcs = java_srcs,
deps = java_deps,
exports = java_exports,
plugins = plugins,
Expand All @@ -37,6 +38,7 @@ def _compile(

js_provider = j2cl_js_provider(
ctx = ctx,
srcs = js_srcs,
# These are exports, because they will need to be referenced by the j2wasm_application
# eventually downstream. They may not be direct dependencies.
exports = js_deps + js_exports,
Expand Down
2 changes: 1 addition & 1 deletion build_defs/internal_do_not_use/j2wasm_library.bzl
Expand Up @@ -10,7 +10,7 @@ load(":j2wasm_common.bzl", "j2wasm_common")
load("//build_defs/internal_do_not_use:provider.bzl", "J2wasmInfo")

J2WASM_LIB_ATTRS = {
"srcs": attr.label_list(allow_files = [".java", ".srcjar", ".jar"]),
"srcs": attr.label_list(allow_files = [".java", ".srcjar", ".jar", ".js"]),
"deps": attr.label_list(providers = [[J2wasmInfo], [JS_PROVIDER_NAME]]),
"exports": attr.label_list(providers = [J2wasmInfo]),
"plugins": attr.label_list(allow_rules = ["java_plugin", "java_library"], cfg = "exec"),
Expand Down
Expand Up @@ -2,33 +2,12 @@ load(
"//transpiler/javatests/com/google/j2cl/readable:readable_example.bzl",
"readable_example",
)
load("//build_defs:rules.bzl", "j2wasm_library")
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library")

package(
default_applicable_licenses = ["//:j2cl_license"],
licenses = ["notice"],
)

# TODO(b/269494058) Remove if js srcs are allowed in j2wasm_library.
closure_js_library(
name = "native_sources",
srcs = glob(["native_sources/*.js"]),
deps = ["//javascript/closure:base"],
)

j2wasm_library(
name = "readable-j2wasm",
srcs = glob(["*.java"]),
javacopts = [
"-Xep:CheckReturnValue:OFF",
],
deps = [
":native_sources",
"//third_party:gwt-jsinterop-annotations-j2wasm",
],
)

readable_example(
srcs = glob([
"*.java",
Expand Down
14 changes: 4 additions & 10 deletions transpiler/javatests/com/google/j2cl/readable/java/jsoverlay/BUILD
Expand Up @@ -3,25 +3,19 @@ load(
"readable_example",
)
load("//build_defs:rules.bzl", "j2wasm_library")
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library")

package(
default_applicable_licenses = ["//:j2cl_license"],
licenses = ["notice"],
)

# TODO(b/269494058) Remove if js srcs are allowed in j2wasm_library.
closure_js_library(
name = "native_sources",
srcs = glob(["native_sources/*.js"]),
deps = ["//javascript/closure:base"],
)

j2wasm_library(
name = "readable-j2wasm",
srcs = glob(["super-wasm/*.java"]),
srcs = glob([
"super-wasm/*.java",
"native_sources/*.js",
]),
deps = [
":native_sources",
"//third_party:gwt-jsinterop-annotations-j2wasm",
],
)
Expand Down
Expand Up @@ -3,24 +3,19 @@ load(
"readable_example",
)
load("//build_defs:rules.bzl", "j2wasm_library")
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library")

package(
default_applicable_licenses = ["//:j2cl_license"],
licenses = ["notice"],
)

# TODO(b/269494058) Remove if js srcs are allowed in j2wasm_library.
closure_js_library(
name = "native_sources",
srcs = glob(["native_sources/*.js"]),
deps = ["//javascript/closure:base"],
)

j2wasm_library(
name = "readable-j2wasm",
srcs = glob(
["*.java"],
[
"*.java",
"native_sources/*.js",
],
exclude = [
"NativeEnum.java",
"NonNative.java",
Expand All @@ -30,7 +25,6 @@ j2wasm_library(
"-Xep:CheckReturnValue:OFF",
],
deps = [
":native_sources",
"//jre/java:javaemul_internal_annotations-j2wasm",
"//third_party:gwt-jsinterop-annotations-j2wasm",
],
Expand Down

0 comments on commit 66e289b

Please sign in to comment.