Implement Bazel build
To run the tests:
bazel test //...
To build the Gerrit plugin API, run:
bazel build gerrit-plugin-api:plugin-api_deploy.jar
To build the Gerrit extension API, run:
bazel build gerrit-extension-api:extension-api_deploy.jar
TODOs:
Licenses
Reduce visibility (all public for now)
Generate HTML Documentation
Core plugins
gerrit_plugin() rule to build plugins in tree and standalone modes
GWT UI (only gwt_module() skylark rule is provided, no gwt_binary())
PolyGerrit UI
WAR
Publish artifacts to Maven Central
Ask Bazel team to add Gerrit to their CI on ci.bazel.io
Contributed-By: Han-Wen Nienhuys <hanwen@google.com>
Change-Id: I9a86e670882a44a5c966579cdeb8ed79b1590de3
diff --git a/lib/BUILD b/lib/BUILD
new file mode 100644
index 0000000..e89e63c
--- /dev/null
+++ b/lib/BUILD
@@ -0,0 +1,204 @@
+java_library(
+ name = 'servlet-api-3_1',
+ neverlink = 1,
+ exports = ['@servlet_api_3_1//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'servlet-api-3_1-without-neverlink',
+ exports = ['@servlet_api_3_1//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'gwtjsonrpc',
+ exports = ['@gwtjsonrpc//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'gwtjsonrpc_src',
+ exports = ['@gwtjsonrpc_src//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'gson',
+ exports = ['@gson//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'gwtorm_client',
+ exports = ['@gwtorm_client//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'gwtorm_client_src',
+ exports = ['@gwtorm_client_src//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'protobuf',
+ exports = ['@protobuf//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'gwtorm',
+ exports = [':gwtorm_client'],
+ runtime_deps = [':protobuf'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'guava',
+ exports = ['@guava//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'velocity',
+ exports = ['@velocity//jar'],
+ runtime_deps = [
+ '//lib/commons:collections',
+ '//lib/commons:lang',
+ '//lib/commons:oro',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'jsch',
+ exports = ['@jsch//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'juniversalchardet',
+ exports = ['@juniversalchardet//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'args4j',
+ exports = ['@args4j//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'automaton',
+ exports = ['@automaton//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'pegdown',
+ exports = ['@pegdown//jar'],
+ runtime_deps = [':grappa'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'grappa',
+ exports = ['@grappa//jar'],
+ runtime_deps = [
+ ':jitescript',
+ '//lib/ow2:ow2-asm',
+ '//lib/ow2:ow2-asm-analysis',
+ '//lib/ow2:ow2-asm-tree',
+ '//lib/ow2:ow2-asm-util',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'jitescript',
+ exports = ['@jitescript//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'tukaani-xz',
+ exports = ['@tukaani_xz//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'mime-util',
+ exports = ['@mime_util//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'guava-retrying',
+ exports = ['@guava_retrying//jar'],
+ runtime_deps = [':jsr305'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'jsr305',
+ exports = ['@jsr305//jar'],
+)
+
+java_library(
+ name = 'blame-cache',
+ exports = ['@blame_cache//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'h2',
+ exports = ['@h2//jar'],
+ visibility = ['//visibility:public'],
+)
+
+
+java_library(
+ name = 'jimfs',
+ exports = ['@jimfs//jar'],
+ runtime_deps = [':guava'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'junit',
+ exports = [
+ '@junit//jar',
+ ':hamcrest-core',
+ ],
+ runtime_deps = [':hamcrest-core'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'hamcrest-core',
+ exports = ['@hamcrest_core//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'truth',
+ exports = [
+ '@truth//jar',
+ ':guava',
+ ':junit',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'javassist',
+ exports = ['@javassist//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'derby',
+ exports = ['@derby//jar'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/antlr/BUILD b/lib/antlr/BUILD
new file mode 100644
index 0000000..ede7665
--- /dev/null
+++ b/lib/antlr/BUILD
@@ -0,0 +1,31 @@
+
+[java_library(
+ name = n,
+ exports = ['@%s//jar' % n],
+) for n in [
+ 'antlr27',
+ 'stringtemplate',
+]]
+
+java_library(
+ name = 'java_runtime',
+ exports = ['@java_runtime//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_binary(
+ name = 'antlr-tool',
+ main_class = 'org.antlr.Tool',
+ runtime_deps = [':tool'],
+ visibility = ['//gerrit-antlr:__pkg__'],
+)
+
+java_library(
+ name = 'tool',
+ exports = ['@org_antlr//jar'],
+ runtime_deps = [
+ ':antlr27',
+ ':java_runtime',
+ ':stringtemplate',
+ ],
+)
diff --git a/lib/auto/BUILD b/lib/auto/BUILD
new file mode 100644
index 0000000..e07c36d
--- /dev/null
+++ b/lib/auto/BUILD
@@ -0,0 +1,21 @@
+java_plugin(
+ name = 'auto-annotation-plugin',
+ processor_class = 'com.google.auto.value.processor.AutoAnnotationProcessor',
+ deps = ['@auto_value//jar'],
+)
+
+java_plugin(
+ name = 'auto-value-plugin',
+ processor_class = 'com.google.auto.value.processor.AutoValueProcessor',
+ deps = ['@auto_value//jar'],
+)
+
+java_library(
+ name = 'auto-value',
+ exported_plugins = [
+ ':auto-annotation-plugin',
+ ':auto-value-plugin',
+ ],
+ exports = ['@auto_value//jar'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/bouncycastle/BUILD b/lib/bouncycastle/BUILD
new file mode 100644
index 0000000..49c54ba
--- /dev/null
+++ b/lib/bouncycastle/BUILD
@@ -0,0 +1,38 @@
+java_library(
+ name = 'bcprov',
+ neverlink = 1,
+ exports = ['@bcprov//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'bcprov-without-neverlink',
+ exports = ['@bcprov//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'bcpg',
+ neverlink = 1,
+ exports = ['@bcpg//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'bcpg-without-neverlink',
+ exports = ['@bcpg//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'bcpkix',
+ neverlink = 1,
+ exports = ['@bcpkix//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'bcpkix-without-neverlink',
+ exports = ['@bcpkix//jar'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/commons/BUILD b/lib/commons/BUILD
new file mode 100644
index 0000000..8c42e53f
--- /dev/null
+++ b/lib/commons/BUILD
@@ -0,0 +1,54 @@
+java_library(
+ name = 'codec',
+ exports = ['@commons_codec//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'collections',
+ exports = ['@commons_collections//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'compress',
+ exports = ['@commons_compress//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'lang',
+ exports = ['@commons_lang//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'net',
+ exports = ['@commons_net//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'dbcp',
+ exports = ['@commons_dbcp//jar'],
+ runtime_deps = [':pool'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'pool',
+ exports = ['@commons_pool//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'oro',
+ exports = ['@commons_oro//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'validator',
+ exports = ['@commons_validator//jar'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/dropwizard/BUILD b/lib/dropwizard/BUILD
new file mode 100644
index 0000000..9d4a8d3
--- /dev/null
+++ b/lib/dropwizard/BUILD
@@ -0,0 +1,5 @@
+java_library(
+ name = 'dropwizard-core',
+ exports = ['@dropwizard_core//jar'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/easymock/BUILD b/lib/easymock/BUILD
new file mode 100644
index 0000000..df77128
--- /dev/null
+++ b/lib/easymock/BUILD
@@ -0,0 +1,22 @@
+java_library(
+ name = 'easymock',
+ exports = ['@easymock//jar'],
+ runtime_deps = [
+ ':cglib-2_2',
+ ':objenesis',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'cglib-2_2',
+ exports = ['@cglib_2_2//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'objenesis',
+ exports = ['@objenesis//jar'],
+ visibility = ['//visibility:public'],
+)
+
diff --git a/lib/guice/BUILD b/lib/guice/BUILD
new file mode 100644
index 0000000..acade50
--- /dev/null
+++ b/lib/guice/BUILD
@@ -0,0 +1,39 @@
+java_library(
+ name = 'guice',
+ exports = [
+ ':guice_library',
+ ':javax-inject',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'guice_library',
+ exports = ['@guice_library//jar'],
+ runtime_deps = ['aopalliance'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'guice-assistedinject',
+ exports = ['@guice_assistedinject//jar'],
+ runtime_deps = [':guice'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'guice-servlet',
+ exports = ['@guice_servlet//jar'],
+ runtime_deps = [':guice'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'aopalliance',
+ exports = ['@aopalliance//jar'],
+)
+
+java_library(
+ name = 'javax-inject',
+ exports = ['@javax_inject//jar'],
+)
diff --git a/lib/gwt/BUILD b/lib/gwt/BUILD
new file mode 100644
index 0000000..2168bb4
--- /dev/null
+++ b/lib/gwt/BUILD
@@ -0,0 +1,9 @@
+[java_library(
+ name = n,
+ exports = ['@%s//jar' % n.replace("-", "_")],
+ visibility = ["//visibility:public"],
+) for n in [
+ 'javax-validation',
+ 'dev',
+ 'user',
+]]
diff --git a/lib/httpcomponents/BUILD b/lib/httpcomponents/BUILD
new file mode 100644
index 0000000..74ab00a
--- /dev/null
+++ b/lib/httpcomponents/BUILD
@@ -0,0 +1,29 @@
+java_library(
+ name = 'fluent-hc',
+ exports = ['@fluent_hc//jar'],
+ runtime_deps = [':httpclient'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'httpclient',
+ exports = ['@httpclient//jar'],
+ runtime_deps = [
+ '//lib/commons:codec',
+ ':httpcore',
+ '//lib/log:jcl-over-slf4j',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'httpcore',
+ exports = ['@httpcore//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'httpmime',
+ exports = ['@httpmime//jar'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/jetty/BUILD b/lib/jetty/BUILD
new file mode 100644
index 0000000..da3af1c
--- /dev/null
+++ b/lib/jetty/BUILD
@@ -0,0 +1,67 @@
+java_library(
+ name = 'servlet',
+ exports = ['@jetty_servlet//jar'],
+ runtime_deps = [':security'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'security',
+ exports = ['@jetty_security//jar'],
+ runtime_deps = [':server'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'servlets',
+ exports = ['@jetty_servlets//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'server',
+ exports = [
+ '@jetty_server//jar',
+ ':continuation',
+ ':http',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'jmx',
+ exports = [
+ '@jetty_jmx//jar',
+ ':continuation',
+ ':http',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'continuation',
+ exports = ['@jetty_continuation//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'http',
+ exports = [
+ '@jetty_http//jar',
+ ':io',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'io',
+ exports = [
+ '@jetty_io//jar',
+ ':util',
+ ],
+)
+
+java_library(
+ name = 'util',
+ exports = ['@jetty_util//jar'],
+)
diff --git a/lib/jgit/org.eclipse.jgit.archive/BUILD b/lib/jgit/org.eclipse.jgit.archive/BUILD
new file mode 100644
index 0000000..8fa94f2
--- /dev/null
+++ b/lib/jgit/org.eclipse.jgit.archive/BUILD
@@ -0,0 +1,6 @@
+java_library(
+ name = 'jgit-archive',
+ exports = ['@jgit_archive//jar'],
+ runtime_deps = ['//lib/jgit/org.eclipse.jgit:jgit'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/jgit/org.eclipse.jgit.http.server/BUILD b/lib/jgit/org.eclipse.jgit.http.server/BUILD
new file mode 100644
index 0000000..6a442cc
--- /dev/null
+++ b/lib/jgit/org.eclipse.jgit.http.server/BUILD
@@ -0,0 +1,6 @@
+java_library(
+ name = 'jgit-servlet',
+ exports = ['@jgit_servlet//jar'],
+ runtime_deps = ['//lib/jgit/org.eclipse.jgit:jgit'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/jgit/org.eclipse.jgit.junit/BUILD b/lib/jgit/org.eclipse.jgit.junit/BUILD
new file mode 100644
index 0000000..d00b82c9
--- /dev/null
+++ b/lib/jgit/org.eclipse.jgit.junit/BUILD
@@ -0,0 +1,6 @@
+java_library(
+ name = 'junit',
+ exports = ['@jgit_junit//jar'],
+ runtime_deps = ['//lib/jgit/org.eclipse.jgit:jgit'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/jgit/org.eclipse.jgit/BUILD b/lib/jgit/org.eclipse.jgit/BUILD
new file mode 100644
index 0000000..a1f9cad
--- /dev/null
+++ b/lib/jgit/org.eclipse.jgit/BUILD
@@ -0,0 +1,12 @@
+java_library(
+ name = 'jgit',
+ exports = ['@jgit//jar'],
+ runtime_deps = [':ewah'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'ewah',
+ exports = ['@ewah//jar'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/joda/BUILD b/lib/joda/BUILD
new file mode 100644
index 0000000..a673bf5
--- /dev/null
+++ b/lib/joda/BUILD
@@ -0,0 +1,11 @@
+java_library(
+ name = 'joda-time',
+ exports = ['@joda_time//jar'],
+ runtime_deps = ['joda-convert'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'joda-convert',
+ exports = ['@joda_convert//jar'],
+)
diff --git a/lib/log/BUILD b/lib/log/BUILD
new file mode 100644
index 0000000..ac92ab6
--- /dev/null
+++ b/lib/log/BUILD
@@ -0,0 +1,47 @@
+java_library(
+ name = 'api',
+ exports = ['@log_api//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'nop',
+ exports = ['@log_nop//jar'],
+ runtime_deps = [':api'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'impl_log4j',
+ exports = ['@impl_log4j//jar'],
+ runtime_deps = [':log4j'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'jcl-over-slf4j',
+ exports = ['@jcl_over_slf4j//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'log4j',
+ exports = ['@log4j//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'jsonevent-layout',
+ exports = ['@jsonevent_layout//jar'],
+ runtime_deps = [
+ ':json-smart',
+ '//lib/commons:lang'
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'json-smart',
+ exports = ['@json_smart//jar'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/lucene/BUILD b/lib/lucene/BUILD
new file mode 100644
index 0000000..679c9f0
--- /dev/null
+++ b/lib/lucene/BUILD
@@ -0,0 +1,33 @@
+load('//tools/bzl:maven.bzl', 'merge_maven_jars')
+
+# core and backward-codecs both provide
+# META-INF/services/org.apache.lucene.codecs.Codec, so they must be merged.
+merge_maven_jars(
+ name = 'lucene-core-and-backward-codecs',
+ srcs = [
+ '@backward_codecs//jar',
+ '@lucene_core//jar',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'lucene-analyzers-common',
+ exports = ['@lucene_analyzers_common//jar'],
+ runtime_deps = [':lucene-core-and-backward-codecs'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'lucene-misc',
+ exports = ['@lucene_misc//jar'],
+ runtime_deps = [':lucene-core-and-backward-codecs'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'lucene-queryparser',
+ exports = ['@lucene_queryparser//jar'],
+ runtime_deps = [':lucene-core-and-backward-codecs'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/mina/BUILD b/lib/mina/BUILD
new file mode 100644
index 0000000..52468a4
--- /dev/null
+++ b/lib/mina/BUILD
@@ -0,0 +1,12 @@
+java_library(
+ name = 'sshd',
+ exports = ['@sshd//jar'],
+ visibility = ['//visibility:public'],
+ runtime_deps = [':core'],
+)
+
+java_library(
+ name = 'core',
+ exports = ['@mina_core//jar'],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/openid/BUILD b/lib/openid/BUILD
new file mode 100644
index 0000000..7d97a86
--- /dev/null
+++ b/lib/openid/BUILD
@@ -0,0 +1,23 @@
+java_library(
+ name = 'consumer',
+ exports = ['@openid_consumer//jar'],
+ runtime_deps = [
+ ':nekohtml',
+ ':xerces',
+ '//lib/httpcomponents:httpclient',
+ '//lib/log:jcl-over-slf4j',
+ '//lib/guice:guice',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'nekohtml',
+ exports = ['@nekohtml//jar'],
+ runtime_deps = [':xerces'],
+)
+
+java_library(
+ name = 'xerces',
+ exports = ['@xerces//jar'],
+)
diff --git a/lib/ow2/BUILD b/lib/ow2/BUILD
new file mode 100644
index 0000000..0b99b6f
--- /dev/null
+++ b/lib/ow2/BUILD
@@ -0,0 +1,30 @@
+java_library(
+ name = 'ow2-asm',
+ exports = ['@ow2_asm//jar'],
+ visibility = ["//visibility:public"],
+)
+
+java_library(
+ name = 'ow2-asm-analysis',
+ exports = ['@ow2_asm_analysis//jar'],
+ visibility = ["//visibility:public"],
+)
+
+java_library(
+ name = 'ow2-asm-commons',
+ exports = ['@ow2_asm_commons//jar'],
+ runtime_deps = [':ow2-asm-tree'],
+ visibility = ["//visibility:public"],
+)
+
+java_library(
+ name = 'ow2-asm-tree',
+ exports = ['@ow2_asm_tree//jar'],
+ visibility = ["//visibility:public"],
+)
+
+java_library(
+ name = 'ow2-asm-util',
+ exports = ['@ow2_asm_util//jar'],
+ visibility = ["//visibility:public"],
+)
diff --git a/lib/powermock/BUILD b/lib/powermock/BUILD
new file mode 100644
index 0000000..8dc7d23
--- /dev/null
+++ b/lib/powermock/BUILD
@@ -0,0 +1,60 @@
+java_library(
+ name = 'powermock-module-junit4',
+ exports = [
+ '@powermock_module_junit4//jar',
+ ':powermock-module-junit4-common',
+ '//lib:junit',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'powermock-module-junit4-common',
+ exports = [
+ '@powermock_module_junit4_common//jar',
+ ':powermock-reflect',
+ '//lib:junit',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'powermock-reflect',
+ exports = [
+ '@powermock_reflect//jar',
+ '//lib:junit',
+ '//lib/easymock:objenesis',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'powermock-api-easymock',
+ exports = [
+ '@powermock_api_easymock//jar',
+ ':powermock-api-support',
+ '//lib/easymock:easymock',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'powermock-api-support',
+ exports = [
+ '@powermock_api_support//jar',
+ ':powermock-core',
+ ':powermock-reflect',
+ '//lib:junit',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'powermock-core',
+ exports = [
+ ':powermock-reflect',
+ '//lib:javassist',
+ '//lib:junit',
+ ],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/prolog/BUILD b/lib/prolog/BUILD
new file mode 100644
index 0000000..74d8b80
--- /dev/null
+++ b/lib/prolog/BUILD
@@ -0,0 +1,47 @@
+java_library(
+ name = 'runtime',
+ exports = ['@prolog_runtime//jar'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'compiler',
+ exports = ['@prolog_compiler//jar'],
+ runtime_deps = [
+ ':io',
+ ':runtime',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'io',
+ exports = ['@prolog_io//jar'],
+)
+
+java_library(
+ name = 'cafeteria',
+ exports = ['@cafeteria//jar'],
+ runtime_deps = [
+ 'io',
+ 'runtime',
+ ],
+ visibility = ['//visibility:public'],
+)
+
+java_binary(
+ name = 'compiler_bin',
+ main_class = 'BuckPrologCompiler',
+ runtime_deps = [':compiler_lib'],
+ visibility = ['//visibility:public'],
+)
+
+java_library(
+ name = 'compiler_lib',
+ srcs = ['java/BuckPrologCompiler.java'],
+ deps = [
+ ':compiler',
+ ':runtime',
+ ],
+ visibility = ['//visibility:public'],
+)
diff --git a/lib/prolog/prolog.bzl b/lib/prolog/prolog.bzl
new file mode 100644
index 0000000..3afb031
--- /dev/null
+++ b/lib/prolog/prolog.bzl
@@ -0,0 +1,36 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# 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.
+
+load('//tools/bzl:genrule2.bzl', 'genrule2')
+
+def prolog_cafe_library(
+ name,
+ srcs,
+ deps = [],
+ visibility = []):
+ genrule2(
+ name = name + '__pl2j',
+ cmd = '$(location //lib/prolog:compiler_bin) ' +
+ '$$TMP $@ ' +
+ '$(SRCS)',
+ srcs = srcs,
+ tools = ['//lib/prolog:compiler_bin'],
+ out = name + '.srcjar',
+ )
+ native.java_library(
+ name = name,
+ srcs = [':' + name + '__pl2j'],
+ deps = ['//lib/prolog:runtime'] + deps,
+ visibility = visibility,
+ )