Merge BUILD files from google/pu.

Change-Id: I1d8cbabdd5625dafe3a4e17ff87127065af29086
diff --git a/build_tools/BUILD b/build_tools/BUILD
new file mode 100644
index 0000000..feb182d
--- /dev/null
+++ b/build_tools/BUILD
@@ -0,0 +1,33 @@
+# Copyright 2012 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# Description:
+#
+# Tools used by the ant build.
+
+# Google owns the copyright
+licenses(["unencumbered"])
+
+package(
+    default_visibility = ["//third_party/java_src/gwt:__pkg__"],
+)
+
+filegroup(
+    name = "ant",
+    srcs = glob([
+        "build.xml",
+        "ant_gwt/**/*",
+        "doctool/**/*",
+    ]),
+)
diff --git a/dev/BUILD b/dev/BUILD
new file mode 100644
index 0000000..0ca17f3
--- /dev/null
+++ b/dev/BUILD
@@ -0,0 +1,320 @@
+# Copyright 2012 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# Description:
+#   The GWT compiler and dev mode.
+
+# Google owns the copyright
+licenses(["unencumbered"])
+
+package(
+    default_visibility = [
+        "//third_party/java_src/gwt:__pkg__",
+        "//third_party/java_src/gwt/legacy:__pkg__",
+    ],
+)
+
+subinclude("//third_party/java_src/gwt:build-macros")
+
+# This target logically corresponds to gwt-dev.jar but doesn't
+# actually create it, for faster builds after a compiler change.
+java_import(
+    name = "dev",
+    jars = [
+        ":gwt-dev-deps.jar",
+        ":gwt-dev-only.jar",
+    ],
+)
+
+# Files needed by the ant tests
+filegroup(
+    name = "ant",
+    srcs = glob(
+        [
+            "build.xml",
+            "core/src/**/*",
+            "core/super/**/*",
+            "core/test/**/*",
+        ],
+        exclude = [
+            "**/*~",
+            "**/#*",
+        ],
+    ),
+)
+
+# Classes needed by the requestfactory annotation processor
+java_library(
+    name = "requestfactory-apt-deps",
+    srcs = [
+        "core/src/com/google/gwt/core/ext/typeinfo/JniConstants.java",
+        "core/src/com/google/gwt/dev/asm/Opcodes.java",
+        "core/src/com/google/gwt/dev/asm/Type.java",
+        "core/src/com/google/gwt/dev/asm/commons/Method.java",
+        "core/src/com/google/gwt/dev/util/Name.java",
+        "core/src/com/google/gwt/dev/util/StringKey.java",
+    ],
+)
+
+# Dependencies of gwt-servlet.jar. (Included in server run-time classpaths.)
+java_library(
+    name = "servlet-deps",
+    srcs = glob(
+        [
+            "core/src/com/google/gwt/**/shared/**/*.java",
+            "core/src/com/google/gwt/dev/asm/**/*.java",
+            "core/src/com/google/gwt/dev/util/Name.java",
+            "core/src/com/google/gwt/dev/util/StringKey.java",
+            "core/src/com/google/gwt/util/tools/Utility.java",
+            "core/src/com/google/gwt/util/tools/shared/**/*.java",
+        ],
+        exclude = [
+            "**/junit/**",
+            "**/super/**",
+            "**/package-info.java",
+        ],
+    ),
+    deps = [
+        # GWTBridge & UnsafeNativeLong
+        ":compiler.standalone.super",
+    ],
+)
+
+# Builds gwt-dev-deps.jar, which contains third-party deps for gwt-dev.jar.
+# (This is a separate jar for better build caching.)
+AugmentedJar(
+    name = "gwt-dev-deps",
+    srcs = [],
+    added_jars = [
+        "//third_party/java_src/gwt/legacy:libdev.jar",
+        "//third_party/java_src/gwt/legacy:dev-resources.jar",
+        "//third_party/java_src/gwt/svn/tools:dev_jars",
+        "//third_party/java_src/gwt/svn/tools:legacy_dev_jars",
+    ],
+    constraints = [],
+    dojarjar = 1,
+    wrap_javalibrary = 0,
+)
+
+# Builds gwt-dev-only.jar, which contains the GWT compiler and tools.
+# Relies on gwt-dev-deps.jar being in the classpath.
+AugmentedJar(
+    name = "gwt-dev-only",
+    srcs = [],
+    added_jars = [
+        ":libgwt-dev-classes.jar",
+        ":gwt-dev-resources.jar",
+        ":libcompiler.standalone.jar",
+        ":libcompiler.standalone.super.jar",
+        ":super-resources.jar",
+    ],
+    constraints = [],
+    dojarjar = 1,
+    resources = ["//tools/gwt:gwt_google_defaults"],
+    wrap_javalibrary = 0,
+)
+
+# All the dev classes before jarjaring.
+# This should only be used in code that will itself be jarjar-ed
+# or in internal tests.
+# (Exposed because it helps other targets build faster than
+# if they waited for gwt-dev to be jarjar-ed.)
+# TODO: split up.
+java_library(
+    name = "gwt-dev-classes",
+    srcs = glob(
+        ["core/src/**/*.java"],
+        exclude = ["**/package-info.java"],
+    ),
+    deps = [
+        ":compiler.standalone.super",
+        "//third_party/java_src/gwt/svn/tools:dev_deps",
+    ],
+)
+
+# Resource files in core/src.
+# (Includes .java files.)
+Zip(
+    name = "gwt-dev-resources.jar",
+    srcs = glob(
+        [
+            "core/src/**/*.java",
+            "core/src/**/*.html",
+            "core/src/**/*.css",
+            "core/src/**/*.js",
+            "core/src/**/*.png",
+            "core/src/**/*.gif",
+            "core/src/**/*.keystore",
+            "core/src/**/*.proto",
+            "core/src/**/*.properties",
+            "core/src/**/*.xsd",
+        ],
+        exclude = ["**/package-info.java"],
+    ),
+    root = "core/src",
+)
+
+java_library(
+    name = "compiler.standalone",
+    srcs = glob(
+        [
+            "core/src/com/google/gwt/core/ext/**/*.java",
+            "core/src/com/google/gwt/core/linker/**/*.java",
+            "core/src/com/google/gwt/dev/About.java",
+            "core/src/com/google/gwt/dev/GwtVersion.java",
+            "core/src/com/google/gwt/dev/Permutation.java",
+            "core/src/com/google/gwt/dev/asm/**/*.java",
+            "core/src/com/google/gwt/dev/cfg/**/*.java",
+            "core/src/com/google/gwt/dev/javac/**/*.java",
+            "core/src/com/google/gwt/dev/jdt/**/*.java",
+            "core/src/com/google/gwt/dev/jjs/**/*.java",
+            "core/src/com/google/gwt/dev/js/**/*.java",
+            "core/src/com/google/gwt/dev/json/*.java",
+            "core/src/com/google/gwt/dev/resource/**/*.java",
+            "core/src/com/google/gwt/dev/util/**/*.java",
+            "core/src/com/google/gwt/dev/shell/DevModeSession.java",
+            "core/src/com/google/gwt/soyc/**/*.java",
+            "core/src/com/google/gwt/util/**/*.java",
+            "core/src/org/eclipse/jdt/**/*.java",
+        ],
+        exclude = [
+            "**/testing/**",
+        ],
+    ),
+    javacopts = [
+        "-encoding utf8",
+        "-source 5",
+        "-target 5",
+    ],
+    deps = [
+        ":compiler.standalone.super",
+        "//third_party/java_src/gwt/svn/tools:compiler_deps",
+    ],
+)
+
+# This is a bootstrap library; it will later be stripped out of the classpath
+# chain, since the "real" versions are super-source not class files.
+# TODO(scottb): this thing may be completely obsolete.
+java_library(
+    name = "compiler.standalone.super",
+    srcs = glob(
+        ["core/super/**/*.java"],
+        exclude = [
+            "core/super/com/google/gwt/dev/jjs/intrinsic/**",
+            "**/package-info.java",
+        ],
+    ),
+    javacopts = [
+        "-encoding utf8",
+        "-source 5",
+        "-target 5",
+    ],
+)
+
+# Resource files in core/super (including Java source)
+Zip(
+    name = "super-resources.jar",
+    srcs = glob(
+        [
+            "core/super/**/*.java",
+            "core/super/**/*.xml",
+        ],
+        exclude = ["**/package-info.java"],
+    ),
+    root = "core/super",
+)
+
+# A minimal library for annotations not likely to otherwise need gwt-user.jar
+# (so i18n annotations are out, they'd need i18n classes and interfaces, but
+# @GwtScriptOnly is in).  The test is that this target is for POJO Java work
+# that happens to want a bit of annotations to hint GWT what to do.
+#
+# CAUTION: Most internal Google code ends up depending on this, via
+#  //j/c/g/common/collect:collect-gwt.  You really don't want it to be big!
+java_library(
+    name = "interop-annotations",
+    srcs = [
+        "core/super/com/google/gwt/core/client/GwtScriptOnly.java",
+        "core/super/com/google/gwt/core/client/UnsafeNativeLong.java",
+    ],
+    constraints = [
+        "android",
+        "gwt",
+        "public",
+    ],
+    gwtxml = ":interop-annotations-gwtxml",
+    javacopts = [
+        "-encoding utf8",
+        "-source 5",
+        "-target 5",
+    ],
+)
+
+# (This is a genrule so that it won't be mirrored to svn and git.)
+genrule(
+    name = "interop-annotations-gwtxml",
+    outs = ["Gwt-dev-interop-annotations.gwt.xml"],
+    cmd = "$(ECHO) '<module></module>' > $(@)",
+)
+
+# All test code in dev.
+# TODO: split up.
+AugmentedJar(
+    name = "dev-test-code",
+    srcs = glob([
+        "core/test/**/*.java",
+    ]),
+    added_jars = [
+        # for soycTest
+        "//third_party/java_src/gwt/svn/trunk/samples:hello-src.jar",
+    ],
+    added_roots = [
+        "core/test",
+    ],
+    build_deps = [
+        ":gwt-dev-classes",
+        ":compiler.standalone.super",
+        "//third_party/java_src/gwt/svn/tools:dev_deps",  # for pre-jarjar imports
+    ],
+    constraints = [],
+    dojarjar = 1,
+    export_deps = [
+        ":dev",  # for the post-jarjar names
+    ],
+    deps = [
+        "//third_party/java/junit",
+    ],
+)
+
+# The "dev" directory is tested by loose tests.  Some of them fail because of
+# classpath expectations that are invalid in Google's distributed build
+# environment.
+GWT_DEV_TESTS = glob(
+    [
+        "core/test/**/*Test.java",
+    ],
+    # TODO(fabbott): These fail due to classpath differences,
+    #    because the distributed build's classpath is jar'ed not loose
+    exclude = [
+        "core/test/**/ClassPathEntryTest.java",
+        "core/test/**/ResourceOracleImplTest.java",
+    ],
+)
+
+GwtTestSuites(
+    name = "tests",
+    jvm_flags = ["-ea"],
+    srcjars = [":dev-test-code"],
+    tests = GWT_DEV_TESTS,
+)
diff --git a/dev/codeserver/BUILD b/dev/codeserver/BUILD
new file mode 100644
index 0000000..4bd0713
--- /dev/null
+++ b/dev/codeserver/BUILD
@@ -0,0 +1,61 @@
+# Copyright 2012 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# Description:
+#   Open Source Code for Super Dev Mode.
+#   http://go/superdevmode
+#   (Within Google, depend on //java/com/google/gwt/dev/codeserver.)
+
+# released under various licenses, but Google owns the copyright
+licenses(["unencumbered"])
+
+package_group(
+    name = "friends",
+    packages = [
+        "//java/com/google/gwt/dev/codeserver",
+    ],
+)
+
+package(
+    default_visibility = [
+        ":friends",
+    ],
+)
+
+java_library(
+    name = "codeserver",
+    srcs = glob(["java/**/*.java"]),
+    resources = glob([
+        "java/**/*.html",
+        "java/**/*.ico",
+        "java/**/*.js",
+    ]),
+    deps = [
+        # approved dependencies (for open source code)
+        "//third_party/java_src/gwt:gwt-dev",
+        # no other dependencies allowed
+    ],
+)
+
+# allow the top-level ant build to call us
+filegroup(
+    name = "ant",
+    srcs = glob([
+        "java/**/*.java",
+        "java/**/*.html",
+        "java/**/*.ico",
+        "java/**/*.js",
+    ]) + ["build.xml"],
+    visibility = ["//third_party/java_src/gwt:__pkg__"],
+)
diff --git a/doc/BUILD b/doc/BUILD
new file mode 100644
index 0000000..2a7537f
--- /dev/null
+++ b/doc/BUILD
@@ -0,0 +1,32 @@
+# Copyright 2012 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# Description:
+#  Contains static files used in javadoc.
+
+# Google owns the copyright
+licenses(["unencumbered"])
+
+package(
+    default_visibility = ["//third_party/java_src/gwt:__pkg__"],
+)
+
+filegroup(
+    name = "ant",
+    srcs = glob([
+        "*.xml",
+        "src/*",
+        "**/package-list",
+    ]),
+)
diff --git a/eclipse/BUILD b/eclipse/BUILD
new file mode 100644
index 0000000..00c4bc9
--- /dev/null
+++ b/eclipse/BUILD
@@ -0,0 +1,28 @@
+# Copyright 2012 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# Description:
+#  Contains checked-in Eclipse projects and defines the GWT code style rules.
+
+# Google owns the copyright
+licenses(["unencumbered"])
+
+package(
+    default_visibility = ["//third_party/java_src/gwt:__pkg__"],
+)
+
+filegroup(
+    name = "ant",
+    srcs = glob(["settings/code-style/*.xml"]),
+)
diff --git a/elemental/BUILD b/elemental/BUILD
new file mode 100644
index 0000000..43b2b3a
--- /dev/null
+++ b/elemental/BUILD
@@ -0,0 +1,81 @@
+# Copyright 2012 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# Description:
+#   Elemental bindings for GWT # released under various licenses, derived from Dart project
+licenses(["notice"])  # BSD (with Chrome/WebKit IDL files under LGPL)
+
+package(default_visibility = [
+    "//visibility:public",
+])
+
+ELEMENTAL_EXTRA_XML = """
+  <inherits name='com.google.gwt.resources.Resources' />
+  <set-configuration-property name='user.agent.runtimeWarning' value='false' />
+  <set-property name='user.agent' value='safari' />
+  <source path='client' />
+  <source path='js' />
+  <source path='canvas'/>
+  <source path='css'/>
+  <source path='dom'/>
+  <source path='events'/>
+  <source path='html'/>
+  <source path='json'/>
+  <source path='ranges'/>
+  <source path='stylesheets'/>
+  <source path='svg'/>
+  <source path='traversal'/>
+  <source path='xpath'/>
+  <source path='xml'/>
+  <source path='util'/>
+  <super-source path='super'/>
+"""
+
+genrule(
+    name = "elemental_extra_xml",
+    outs = ["ElementalExtra.gwt.xml"],
+    cmd = "echo \"" + ELEMENTAL_EXTRA_XML + "\" > $@",
+)
+
+gwt_module(
+    name = "elemental",
+    srcs = [":buildsrcjar"] + glob(
+        ["src/**/*.java"],
+        exclude = ["**/super/**"],
+    ),
+    base_inherits = ["com.google.gwt.core.Core"],
+    extra_module_contents = [":ElementalExtra.gwt.xml"],
+    resources = [
+        "src/elemental/super/elemental/json/Json.java",
+        "src/elemental/super/elemental/json/impl/JreJsonValue.java",
+    ],
+    deps = ["//third_party/java/gwt"],
+)
+
+genrule(
+    name = "buildsrcjar",
+    srcs = glob(["idl/**/*"]),
+    outs = ["elementaldom.srcjar"],
+    cmd = " && ".join([
+        "mkdir -p $@.tmp",
+        "export CC=$(CC)",
+        "export JAR=$(JAR)",
+        "idl/buildsrcjar $@.tmp $@",
+    ]),
+    tools = [
+        "//third_party/crosstool",
+        "//tools/defaults:jdk",
+        "//tools/defaults:python_runtime",
+    ],
+)
diff --git a/jni/BUILD b/jni/BUILD
new file mode 100644
index 0000000..fcad202
--- /dev/null
+++ b/jni/BUILD
@@ -0,0 +1,32 @@
+# Copyright 2012 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# Description:
+#
+# Not sure what this does.
+
+# Google owns the copyright
+licenses(["unencumbered"])
+
+package(
+    default_visibility = ["//third_party/java_src/gwt:__pkg__"],
+)
+
+filegroup(
+    name = "ant",
+    srcs = glob([
+        "**/*.xml",
+        "windows/prebuilt/*.dll",
+    ]),
+)
diff --git a/maven/BUILD b/maven/BUILD
new file mode 100644
index 0000000..a16536e
--- /dev/null
+++ b/maven/BUILD
@@ -0,0 +1,21 @@
+# Copyright 2012 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# Description:
+#  Contains code to push a GWT release to Maven.
+#
+# (This is just a dummy BUILD file so that build rules won't see it.)
+
+# Google owns the copyright
+licenses(["unencumbered"])
diff --git a/reference/BUILD b/reference/BUILD
new file mode 100644
index 0000000..58d3816
--- /dev/null
+++ b/reference/BUILD
@@ -0,0 +1,20 @@
+# Copyright 2012 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# Description:
+#
+# Unused code kept around for reference.
+
+# Google owns the copyright
+licenses(["unencumbered"])
diff --git a/samples/BUILD b/samples/BUILD
new file mode 100644
index 0000000..d39d623
--- /dev/null
+++ b/samples/BUILD
@@ -0,0 +1,93 @@
+# Copyright 2012 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+# Description:
+#   Sample apps for GWT. (Mirrored to svn.)
+
+# Google owns the copyright
+licenses(["unencumbered"])
+
+package(
+    default_visibility = ["//third_party/java_src/gwt:__pkg__"],
+)
+
+subinclude("//third_party/java_src/gwt:build-macros")
+
+package_group(
+    name = "showcase_friends",
+    packages = ["//javatests/com/google/gwt/tourguide/..."],
+)
+
+# Files in this directory for running ant
+# Note: ant_test.sh replaces this build.xml file with its own stub.
+filegroup(
+    name = "ant",
+    srcs = ["build.xml"],
+)
+
+Zip(
+    name = "hello-src.jar",
+    srcs = glob([
+        "hello/src/**/*.java",
+        "hello/src/**/*.xml",
+    ]),
+    root = "hello/src",
+    visibility = ["//third_party/java_src/gwt/svn/trunk/dev:__pkg__"],
+)
+
+# Allow friends to import the showcase app as a GWT module
+gwt_module(
+    name = "showcase_module",
+    extra_inherits = ["com.google.gwt.sample.showcase.Showcase"],
+    rename_to = "showcase",
+    visibility = [":showcase_friends"],
+    deps = [":showcase_lib"],
+)
+
+gwt_application(
+    name = "showcase_app",
+    module_target = ":showcase_module",
+)
+
+java_library(
+    name = "showcase_lib",
+    srcs = [":showcase.jar"],
+)
+
+AugmentedJar(
+    name = "showcase",
+    srcs = glob(
+        ["showcase/src/**/*.java"],
+        exclude_directories = 1,
+    ),
+    added_roots = ["showcase/src"],
+    deps = [
+        "//third_party/java_src/gwt",
+        "//third_party/java_src/gwt:gwt-dev",
+    ],
+)
+
+# Provides the contents of the showcase war directory as a handy zip file
+# (Doesn't include appengine-web.xml so you can replace it.)
+Zip(
+    name = "showcase-wardir.zip",
+    srcs = glob(
+        ["showcase/war/**"],
+        exclude = glob(["showcase/war/**/*~"]) + [
+            "showcase/war/WEB-INF/appengine-web.xml",
+        ],
+    ),
+    root = "showcase/war",
+    visibility = [":showcase_friends"],
+)