aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp
Commit message (Collapse)AuthorAge
* @AutoCodec some c++ linking data structures.Gravatar cpeyser2018-02-20
| | | | PiperOrigin-RevId: 186314781
* Accept proto paths relative to proto_source_root as direct dependencies.Gravatar elenairina2018-02-20
| | | | | | | | | | | This will make protoc see as direct dependencies the .proto files that were included using the proto_source_root flag. Until now, Bazel passed to protoc the direct dependencies of a target as the path relative to the WORKSPACE, which made it fail when a shorter path, relative to the package was used. Progress on #4544. RELNOTES: None. PiperOrigin-RevId: 186294997
* Route fdo logic that deals with the path to the fdo profile through ↵Gravatar Googler2018-02-20
| | | | | | | | | | CcToolchainProvider As --fdo_optimize can point to a label, the path to the fdo profile can not be reliably determined in CppConfiguration. In order to enable the fdo features (which depend on the path to the fdo profile), the logic from CppConfiguration.configurationEnabledFeatures() has been moved to CcCommon.configureFeatures(). The latter method has access to the fdo profile path through CcToolchainProvider. RELNOTES: None. PiperOrigin-RevId: 186278311
* Add @AutoCodec for FdoSupport(Provider) and TemplateVariableInfo.Gravatar mjhalupka2018-02-16
| | | | PiperOrigin-RevId: 186007056
* Add "proto_source_root" flag to proto_library.Gravatar elenairina2018-02-16
| | | | | | | Fixes #4544. RELNOTES: Add "proto_source_root" flag to proto_library. PiperOrigin-RevId: 185997723
* Automated rollback of commit c7e343ad314aeab6283b5939bc8126a112140a11.Gravatar plf2018-02-16
| | | | | | | | | | | | | | | *** Reason for rollback *** Rolling back after having come up with a more principled solution in b/73047818 that will add a more generic attribute called additional_linker_inputs so that users can depend on any file of any type and reference it from linkopts. *** Original change description *** C++: Allows adding linkopts through file. The file can be generated during execution by a different rule. RELNOTES:none PiperOrigin-RevId: 185977745
* Tag for classes with @AutoCodec.Gravatar mjhalupka2018-02-15
| | | | PiperOrigin-RevId: 185906605
* Move CommandLine, CommandLineItem, and ParamFileInfo from ↵Gravatar tomlu2018-02-15
| | | | | | | | | lib.analysis.actions -> lib.actions. These are fundamental types that want to sit alongside types like Spawn. RELNOTES: None PiperOrigin-RevId: 185887971
* Stop storing ActionTemplate in a SkyKey: it's too heavyweight. Use the same ↵Gravatar janakr2018-02-15
| | | | | | mechanism as for normal actions, have the ActionTemplateExpansionFunction look the template up when needed. PiperOrigin-RevId: 185861672
* Add AutoCodec for a bunch of cc library providers.Gravatar mjhalupka2018-02-15
| | | | PiperOrigin-RevId: 185850685
* C++: Removes CppModel classGravatar plf2018-02-15
| | | | | | | The logic is split between CcCompilationHelper and CcLinkingHelper. RELNOTES:none PiperOrigin-RevId: 185809915
* Pull out useful parts of discoverInputs into findAdditionalInputs so that it ↵Gravatar Googler2018-02-14
| | | | | | | can also be called by getInputFilesForExtraAction rather than duplicating the logic. RELNOTES: None PiperOrigin-RevId: 185757663
* Add a CODEC for CppCompileAction.Gravatar cpeyser2018-02-14
| | | | PiperOrigin-RevId: 185733313
* @AutoCodec for CcLinkParamsInfo.Gravatar cpeyser2018-02-14
| | | | PiperOrigin-RevId: 185728950
* Specialize CCToolchainFeatures flags for single-variable flags.Gravatar tomlu2018-02-14
| | | | | | | This avoids iterator, string builder, and string garbage. RELNOTES: None PiperOrigin-RevId: 185703066
* Set extra action tool path to the value that crosstool will actually use ↵Gravatar Googler2018-02-13
| | | | | | based on feature configuration PiperOrigin-RevId: 185600940
* Replaces InjectingObjectCodec with dependencies threaded through ↵Gravatar shahan2018-02-13
| | | | | | (Des|S)erializationContext. PiperOrigin-RevId: 185547740
* Route --fdo_optimize information through an implicit dependency instead of ↵Gravatar Googler2018-02-13
| | | | | | | CppConfiguration RELNOTES: None. PiperOrigin-RevId: 185527875
* Blaze: let a LinkerInput declare that it needs debug info in the executableGravatar Googler2018-02-12
| | | | | RELNOTES: None. PiperOrigin-RevId: 185455486
* Ensure that RuleContext is not referenced after analysis by objc_library.Gravatar cparsons2018-02-12
| | | | | | Previously, RuleContext was referenced via the objc implementation of CppSemantics. Objects of that class are no longer held by CppCompileAction post-analysis. PiperOrigin-RevId: 185446320
* C++: Allows adding linkopts through file.Gravatar plf2018-02-12
| | | | | | | The file can be generated during execution by a different rule. RELNOTES:none PiperOrigin-RevId: 185361140
* C++: Remove last instatiation of CppModel outside CcLibraryHelper.Gravatar plf2018-02-12
| | | | PiperOrigin-RevId: 185354353
* Automated rollback of commit 873f343fefbb08048e7e75c482843b9e68954de6.Gravatar jingwen2018-02-09
| | | | | | | | | | | | | | | | | | | *** Reason for rollback *** Breaking targets in 2018.02.08 and 2018.02.09 nightly TGPs There were some merge conflicts in this rollback CL. See unknown commit for the unresolved version. I kept the YOURS sections, and ran fiximports.py to remove unused imports. See b/73157879 *** Original change description *** C++: Remove last instatiation of CppModel outside CcLibraryHelper. This is the second try for this CL. The first one caused Blaze to crash when building Exoblaze as shown in b/72936965. In this CL I fix the condition of when to generate non-PIC compilation actions for WrapCcHelper. RELNOTES:none PiperOrigin-RevId: 185203398
* Replace path implementation.Gravatar tomlu2018-02-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Path and PathFragment have been replaced with String-based implementations. They are pretty similar, but each method is dissimilar enough that I did not feel sharing code was appropriate. A summary of changes: PATH ==== * Subsumes LocalPath (deleted, its tests repurposed) * Use a simple string to back Path * Path instances are no longer interned; Reference equality will no longer work * Always normalized (same as before) * Some operations will now be slower, like instance compares (which were previously just a reference check) * Multiple identical paths will now consume more memory since they are not interned PATH FRAGMENT ============= * Use a simple string to back PathFragment * No more segment arrays with interned strings * Always normalized * Remove isNormalized * Replace some isNormalizied uses with containsUpLevelReferences() to check if path fragments try to escape their scope * To check if user input is normalized, supply static methods on PathFragment to validate the string before constructing a PathFragment * Because PathFragments are always normalized, we have to replace checks for literal "." from PathFragment#getPathString to PathFragment#getSafePathString. The latter returns "." for the empty string. * The previous implementation supported efficient segment semantics (segment count, iterating over segments). This is now expensive since we do longer have a segment array. ARTIFACT ======== * Remove Path instance. It is instead dynamically constructed on request. This is necessary to avoid this CL becoming a memory regression. RELNOTES: None PiperOrigin-RevId: 185062932
* Add a CODEC for LibraryToLink, which is required to serialize CppLinkAction.Gravatar cpeyser2018-02-08
| | | | PiperOrigin-RevId: 185029456
* Change $cc_toolchain_type to NODEP_LABEL so there is no actual dependency.Gravatar jcater2018-02-08
| | | | PiperOrigin-RevId: 185018321
* Suppress ThinLTO indexing for testonly targetsGravatar Googler2018-02-08
| | | | | | | | Applies ThinLTO scalability fix https://github.com/bazelbuild/bazel/commit/8c5e290dfab3cab378a9ca107ecdd6267403cd4b to targets (e.g. cc_binary) marked "testonly = 1". RELNOTES: None PiperOrigin-RevId: 184991176
* Introduce -c source_file -o output_file build variablesGravatar hlopko2018-02-08
| | | | | | | | | | | | | | Prior to this cl CompileCommandLine would (almost) unconditionally emit -c and -o flags. This cl removes this logic and relies on crosstool to emit these flags. This is another small step towards platform independent C++ rules. Memory use is not affected, since the build variables used by this cl are already exposed, this cl just forces crosstools to use it. Encore of https://github.com/bazelbuild/bazel/commit/f26e8694ae78599b3e2004e3360eaf3443fa53a6. RELNOTES: None. PiperOrigin-RevId: 184981106
* Split CppIncludeScanningContext out of CppCompileActionContextGravatar ulfjack2018-02-08
| | | | | | Rename IncludeScanningContext to CppIncludeExtractionContext, which more closely matches its semantics. PiperOrigin-RevId: 184974810
* C++: Split C++ library into two classes, compilation and linkingGravatar plf2018-02-08
| | | | | | | These will be separate calls in the Skylark API. RELNOTES:none PiperOrigin-RevId: 184961734
* Add a CODEC for some dependencies of CppCompileAction: CompileCommandLine andGravatar cpeyser2018-02-07
| | | | | | | | CcToolchainFeatures.Variables. We rephrase the nocopts filter from a Predicate<String> to a custom class, since AutoCodec cannot serialize a Predicate. PiperOrigin-RevId: 184902162
* Non-test AspectClass codecs.Gravatar shahan2018-02-07
| | | | PiperOrigin-RevId: 184862552
* Generate a CODEC for CppCompilationContext using AutoCodec. This is ↵Gravatar cpeyser2018-02-06
| | | | | | | | required in order to serialize CppCompileAction. Rephrase CppCompilationContext's pregreppedHeaders field as its own value class instead of Pair<Artifact, Artifact>. We do this because NestedSet support in AutoCodec cannot serialize a NestedSet of a generic type. PiperOrigin-RevId: 184740075
* RELNOTES: Fix FDO_STAMP_MACRO to only be set when fdoBuildStamp is not null.Gravatar Googler2018-02-06
| | | | PiperOrigin-RevId: 184734801
* Fix CrosstoolConfigurationLoader to not assume the presense of a BUILDGravatar John Cater2018-02-06
| | | | | | | file. Change-Id: I5b66b91f016e12e546600f585546fc56d9511303 PiperOrigin-RevId: 184698749
* C++: Remove last instatiation of CppModel outside CcLibraryHelper.Gravatar plf2018-02-06
| | | | | | | This is the second try for this CL. The first one caused Blaze to crash when building Exoblaze as shown in b/72936965. In this CL I fix the condition of when to generate non-PIC compilation actions for WrapCcHelper. RELNOTES:none PiperOrigin-RevId: 184671661
* Tag a few aspect classes with @AutoCodec and make CcProtoAspect abstract, ↵Gravatar janakr2018-02-05
| | | | | | since it's never instantiated on its own. PiperOrigin-RevId: 184554483
* Add type assertion that TreeFileArtifact's parentTreeArtifact member is aGravatar cpeyser2018-02-05
| | | | | | SpecialArtifact. PiperOrigin-RevId: 184539696
* Automated rollback of commit 17830c25a816d67ba79e783acaa6a085b516bd43.Gravatar jmmv2018-02-05
| | | | | | | | | | | | | | | *** Reason for rollback *** Causes Blaze to crash when building Exoblaze as shown in b/72936965. Confirmed as root cause by rolling back this CL, building a Blaze from HEAD, and successfully using it to build Exoblaze. *** Original change description *** C++: Remove last instatiation of CppModel outside CcLibraryHelper. RELNOTES:none PiperOrigin-RevId: 184528551
* C++: Remove last instatiation of CppModel outside CcLibraryHelper.Gravatar plf2018-02-05
| | | | | RELNOTES:none PiperOrigin-RevId: 184510731
* Stop allowing generic LateBoundDefault value types. Such types are always ↵Gravatar janakr2018-02-02
| | | | | | | | either a Label or a List<Label>. We can easily enforce this through static type checking, so do it. This will help with LateBoundDefault serialization, since we don't have to serialize an arbitrary object. PiperOrigin-RevId: 184347100
* C++: Stops generating DWO files when PER_OBJECT_DEBUG_INFO feature is not ↵Gravatar plf2018-02-02
| | | | | | | enabled. RELNOTES:none PiperOrigin-RevId: 184303490
* Change how the libraries_to_link are expanded for archiverGravatar hlopko2018-02-02
| | | | | | | | | This makes object_file_group work correctly for archiving (So far object_file_group was only possible for linking, but with the introduction of tree artifact support, it can appear also for archiving). RELNOTES: Fix how libraries_to_link are expanded in the archiver command line. PiperOrigin-RevId: 184258745
* Add a codec for FeatureConfiguration using AutoCodec. This is necessary forGravatar cpeyser2018-02-01
| | | | | | CppCompileAction serialization. PiperOrigin-RevId: 184141676
* Automated rollback of commit aa8ce5653f92473b331e500a3614245dae38dfc4.Gravatar hlopko2018-02-01
| | | | | | | | | | | | | | *** Reason for rollback *** Breaks //third_party/msvc crosstool *** Original change description *** RELNOTES: Fix how libraries to link is specified to archiver actions. start-lib/end-lib should not be passed to ar. Fix how the libraries to link are passed to ar by not using the generic feature "libraries_to_link" PiperOrigin-RevId: 184140734
* Change ConfiguredAspectFactory.create signature to take in aGravatar mjhalupka2018-01-31
| | | | | | | ConfiguredTargetAndTarget instead of a ConfiguredTarget. This is to assist in deprecating ConfiguredTarget.getTarget(). PiperOrigin-RevId: 184043491
* Make CcToolchainProvider structField methods resilient to null fieldsGravatar cparsons2018-01-31
| | | | | | | | structField methods must not throw an exception in all cases. Null fields were technically used for incomplete toolchain objects (such as the EMPTY_TOOLCHAIN_IS_ERROR object). RELNOTES: None. PiperOrigin-RevId: 184031908
* Move BazelRuleClassProvider.LIPO_DATA_TRANSITION to its own class.Gravatar lpino2018-01-31
| | | | PiperOrigin-RevId: 183990860
* Remove the CppConfiguration field from CppCompileAction. MakingGravatar cpeyser2018-01-30
| | | | | | CppCompileAction smaller improves serialization. PiperOrigin-RevId: 183871454
* Drop CppCompileAction.actionContextGravatar ulfjack2018-01-30
| | | | | | It always set to the same value. PiperOrigin-RevId: 183843518