aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java24
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java12
3 files changed, 50 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index 3b54a8b17c..d5aa190596 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -604,10 +604,22 @@ public class BuildConfiguration implements BuildEvent {
category = "semantics", // Should this be "flags"?
documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
effectTags = { OptionEffectTag.AFFECTS_OUTPUTS, OptionEffectTag.ACTION_COMMAND_LINES },
- help = "Specify the mode the binary will be built in. " + "Values: 'fastbuild', 'dbg', 'opt'."
+ help = "Specify the mode the binary will be built in. Values: 'fastbuild', 'dbg', 'opt'."
)
public CompilationMode compilationMode;
+ @Option(
+ name = "host_compilation_mode",
+ converter = CompilationMode.Converter.class,
+ defaultValue = "opt",
+ category = "semantics", // Should this be "flags"?
+ documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
+ effectTags = { OptionEffectTag.AFFECTS_OUTPUTS, OptionEffectTag.ACTION_COMMAND_LINES },
+ help = "Specify the mode the tools used during the build will be built in. Values: "
+ + "'fastbuild', 'dbg', 'opt'."
+ )
+ public CompilationMode hostCompilationMode;
+
/**
* This option is used internally to set output directory name of the <i>host</i> configuration
* to a constant, so that the output files for the host are completely independent of those for
@@ -1066,7 +1078,7 @@ public class BuildConfiguration implements BuildEvent {
Options host = (Options) getDefault();
host.outputDirectoryName = "host";
- host.compilationMode = CompilationMode.OPT;
+ host.compilationMode = hostCompilationMode;
host.isHost = true;
host.configsMode = configsMode;
host.enableRunfiles = enableRunfiles;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
index 3d2a242318..77f846d645 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -720,6 +720,28 @@ public class CppOptions extends FragmentOptions {
public List<String> hostCxxoptList;
@Option(
+ name = "host_conlyopt",
+ allowMultiple = true,
+ defaultValue = "",
+ category = "flags",
+ documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
+ effectTags = {OptionEffectTag.ACTION_COMMAND_LINES, OptionEffectTag.AFFECTS_OUTPUTS},
+ help = "Additional option to pass to gcc when compiling C source files for host tools."
+ )
+ public List<String> hostConlyoptList;
+
+ @Option(
+ name = "host_linkopt",
+ defaultValue = "",
+ category = "flags",
+ allowMultiple = true,
+ documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
+ effectTags = {OptionEffectTag.ACTION_COMMAND_LINES, OptionEffectTag.AFFECTS_OUTPUTS},
+ help = "Additional option to pass to gcc when linking host tools."
+ )
+ public List<String> hostLinkoptList;
+
+ @Option(
name = "grte_top",
defaultValue = "null", // The default value is chosen by the toolchain.
category = "version",
@@ -882,6 +904,8 @@ public class CppOptions extends FragmentOptions {
}
host.coptList = coptListBuilder.addAll(hostCoptList).build();
host.cxxoptList = cxxoptListBuilder.addAll(hostCxxoptList).build();
+ host.conlyoptList = ImmutableList.copyOf(hostConlyoptList);
+ host.linkoptList = ImmutableList.copyOf(hostLinkoptList);
host.useStartEndLib = useStartEndLib;
host.stripBinaries = StripMode.ALWAYS;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java
index 2bc20c343a..d3a1d4d764 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java
@@ -353,6 +353,18 @@ public class BuildConfigurationTest extends ConfigurationTestCase {
assertThat(cfg.getCommandLineBuildVariables().get("foo")).isEqualTo("bar");
}
+ @Test
+ public void testHostCompilationModeDefault() throws Exception {
+ BuildConfiguration cfg = createHost();
+ assertThat(cfg.getCompilationMode()).isEqualTo(CompilationMode.OPT);
+ }
+
+ @Test
+ public void testHostCompilationModeNonDefault() throws Exception {
+ BuildConfiguration cfg = createHost("--host_compilation_mode=dbg");
+ assertThat(cfg.getCompilationMode()).isEqualTo(CompilationMode.DBG);
+ }
+
/**
* Returns a mock config fragment that loads the given label and does nothing else.
*/