blob: de261f05a00d73bad546d5f2c68f8d65266b1732 [file] [log] [blame]
# 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"],
),
# Temporary workaround to ensure Java 6 compatible class files after Java
# 7 upgrade.
# TODO: only the requestfactory client should be required to be Android
# compatible.
constraints = ["android"],
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",
"core/src/**/*.txt",
],
exclude = [
"**/package-info.java",
"README.txt",
],
),
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/CompilerContext.java",
"core/src/com/google/gwt/dev/CompileTaskOptions.java",
"core/src/com/google/gwt/dev/CompileTaskOptionsImpl.java",
"core/src/com/google/gwt/dev/GwtVersion.java",
"core/src/com/google/gwt/dev/Permutation.java",
"core/src/com/google/gwt/dev/PrecompileTaskOptions.java",
"core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java",
"core/src/com/google/gwt/dev/PrecompilationResult.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",
],
),
constraints = ["android"],
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><source path=\"client\" /></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,
)