# Description:
#   subset of bazel rules used by j2cl.
package(default_visibility = ["//visibility:public"])

licenses(["notice"]) # Apache2

filegroup(
    name = "java_emul",
    srcs = glob([
        "super/com/google/gwt/emul/java/**/*.java",
        "super/com/google/gwt/emul/javax/**/*.java",
        ]),
)

filegroup(
    name = "java_emul_internal",
    srcs = glob(["super/com/google/gwt/emul/javaemul/internal/*.java"]),
)

java_library(
    name = "gwt-javaemul-internal-annotations",
    srcs = glob(["super/com/google/gwt/emul/javaemul/internal/annotations/*.java"]),
)

