tree d3087c5d13118acabf05155ac6a4bc19b21b51a4
parent 33c982e01ec7ce50db0a3de4d79b2adfe9e244af
author hlopko <hlopko@google.com> 1551089097 -0800
committer Copybara-Service <copybara-worker@google.com> 1551089188 -0800

Fix legacy crosstool fields in unit-tests that depend on C++ rules

This big cl does many things, most of which would take much more effort to do in smaller steps (and that's the reason why nobody did this yet, even though we seriously suffer from the dept accumulated there):

* Bazel and Blaze unit tests now use the same MOCK_CROSSTOOL.
* Bazel and Blaze unit tests now use the same BUILD file generator (crosstool.java).
* We now default to --cpu=k8 and --host_cpu=k8 in unit tests and analysis tests. I will followup and use mock values for these in a separate cl. If a cpu-specific logic is to be tested, explicitly set the cpu in using `useConfiguration(...)`. As a result, unit tests behave the same on linux, mac, and windows.
* MOCK_CROSSTOOL is really a mock now, it doesn't contain any real flags.
* MOCK_CROSSTOOL now doesn't contain random toolchains that random tests need. If you need to extend the toolchain in there, use:

      getAnalysisMock()
        .ccSupport()
        .setupCrosstool(mockToolsConfig, ...);

  If you need to add more toolchains, use:

      getAnalysisMock()
        .ccSupport()
        .setupCrosstool(
            mockToolsConfig,
            /* appendToCurrentToolchain= */ false,
            MockCcSupport.emptyToolchainForCpu("armeabi-v7a"));

* Added few useful features to MockCcSupport, prefer using them to inlining features in the test setup.
* Toolchain in MOCK_CROSSTOOL doesn't support any advanced features, all these have to be explicitly added. This is good, because your tests now declare what parts of C++ toolchain they depend on.

RELNOTES: None.
PiperOrigin-RevId: 235492653
