aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Carmi Grushko <carmi@google.com>2015-12-10 15:48:50 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-12-10 20:15:43 +0000
commite8a8624f9f33f3f98122d6134635ed3cc0d5b517 (patch)
treec0337bf26aac6a8ee7844bedd563a77b16f54caf /src/main/java
parent02269df1dc05ac9538d1c9fdcc4e2b32f38de5e9 (diff)
Open-source command-line options specific to protocol buffer.
-- MOS_MIGRATED_REVID=109897602
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java75
2 files changed, 76 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 0421fa4dae..2a1e028b18 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -612,6 +612,7 @@ java_library(
":util",
":vfs",
"//src/main/java/com/google/devtools/build/lib/actions",
+ "//src/main/java/com/google/devtools/common/options",
"//third_party:auto_value",
"//third_party:guava",
"//third_party:jsr305",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
new file mode 100644
index 0000000000..a8eb823ade
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
@@ -0,0 +1,75 @@
+// Copyright 2015 The Bazel Authors. All rights reserved.
+//
+// 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.
+
+package com.google.devtools.build.lib.rules.proto;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment;
+import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.analysis.config.ConfigurationEnvironment;
+import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
+import com.google.devtools.build.lib.analysis.config.FragmentOptions;
+import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
+import com.google.devtools.common.options.Option;
+
+import java.util.List;
+
+/**
+ * Configuration for Protocol Buffer Libraries.
+ */
+public class ProtoConfiguration extends Fragment {
+
+ /**
+ * Command line options.
+ */
+ public static class Options extends FragmentOptions {
+ @Option(name = "protocopt",
+ allowMultiple = true,
+ defaultValue = "",
+ category = "flags",
+ help = "Additional options to pass to the protobuf compiler.")
+ public List<String> protocOpts;
+ }
+
+ /**
+ * Loader class for proto.
+ */
+ public static class Loader implements ConfigurationFragmentFactory {
+ @Override
+ public Fragment create(ConfigurationEnvironment env, BuildOptions buildOptions)
+ throws InvalidConfigurationException {
+ return new ProtoConfiguration(buildOptions.get(Options.class));
+ }
+
+ @Override
+ public Class<? extends Fragment> creates() {
+ return ProtoConfiguration.class;
+ }
+
+ @Override
+ public ImmutableSet<Class<? extends FragmentOptions>> requiredOptions() {
+ return ImmutableSet.<Class<? extends FragmentOptions>>of(Options.class);
+ }
+ }
+
+ private final Options options;
+
+ public ProtoConfiguration(Options options) {
+ this.options = options;
+ }
+
+ public List<String> protocOpts() {
+ return options.protocOpts;
+ }
+}