aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
Commit message (Collapse)AuthorAge
...
* Extract CppLinkAction.Builder to its own top level class.Gravatar Cal Peyser2016-07-13
| | | | | -- MOS_MIGRATED_REVID=127221256
* ThinLTO changes for upstreamed compiler implementation and other fixes to ↵Gravatar Googler2016-07-01
| | | | | | | | | | | blaze handling. - Converted to correct upstreamed options - Handling of bitcode when creating dynamic libraries - New LTOBackendAction derived from SpawnAction that discovers and adds the imported bitcode files identified by the LTO indexing step. -- MOS_MIGRATED_REVID=126344132
* Make building dll less a hack on WindowsGravatar Yun Peng2016-07-01
| | | | | | | | | | | | | | | | | | | | Add .dll as a shared library type like .so If we have target: cc_binary( name = "bar.dll", srcs = ["bar.cc"], linkshared = 1, ) Now we can build a dll using bazel build //foo:bar.dll If the target name is still bar.so, the wrapper script also build the dll by copying the output file to bar.dll. -- Change-Id: Ie3d1fb83965ddf691d0cc4734a61a0b0ce89d948 Reviewed-on: https://bazel-review.googlesource.com/#/c/3931 MOS_MIGRATED_REVID=126301390
* Enable non_arc_srcs for experimental_objc_library. Allow build variables to ↵Gravatar Cal Peyser2016-06-24
| | | | | | | | | be passed to CcLibraryHelper for an individual source rather than the entire build. -- MOS_MIGRATED_REVID=125738742
* Pass toolchain build variables to C++ link actions.Gravatar Chris Parsons2016-06-16
| | | | | | | Also add platform sdk versions to the build variables defined by AppleCcToolchain, so that these values may be referenced in crosstool config. -- MOS_MIGRATED_REVID=124976362
* Use the cc_toolchain rule instead of an event bus-based hack to signal an ↵Gravatar Lukacs Berki2016-06-10
| | | | | | | | | error when the LIPO context is not a cc_binary. RELNOTES[NEW]: LIPO context (--lipo_context) can now also be a cc_test (in addition to cc_binary) -- MOS_MIGRATED_REVID=124555465
* Allow use of Exceptions to exit early out of configured-target creation, ↵Gravatar Chris Parsons2016-05-24
| | | | | | | | | | instead of passing and checking null in all helpers. Demonstrates this pattern usage in a few select rules (e.g. AndroidBinary) where this was particularly egregious. There are many places which can benefit from this pattern -- this change doesn't try to fix them all at once. -- MOS_MIGRATED_REVID=123012378
* Add mechanism to crosstool language to specify action-specific execution ↵Gravatar Cal Peyser2016-04-25
| | | | | | | requirements. Uses this mechanism to configure c/c++ compilation and linking for darwin execution from the crosstool. -- MOS_MIGRATED_REVID=120701108
* Add a --legacy_external_runfiles optionGravatar Kristina Chodorow2016-04-25
| | | | | | | | This isn't hooked up to anything yet, but is another piece of getting #848 rolled forward. -- MOS_MIGRATED_REVID=120582973
* Automated [] rollback of commit 857cda2c45a5cc68c3fa398311c48c571a64915d and ↵Gravatar Damien Martin-Guillerez2016-04-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | commit 790d2f6009d47fe92cf0cd92a1473bbf0141f32e. *** Reason for rollback *** Broke non-Bazel projects on ci.bazel.io Fixes #1168 *** Original change description *** Move the runfiles for external repositories to under the x.runfiles/ directory This also sets the Bazel workspace name to io_bazel_source. Fixes #848. Relevant to #1116, #1124, RELNOTES[INC]: All repositories are now directly under the x.runfiles directory in the runfiles tree (previously, external repositories were at x.runfiles/main-repo/external/other-repo. This simplifies handling remote repository runfiles considerably, but will break existing references to external repository runfiles.... *** -- MOS_MIGRATED_REVID=120535721
* --Gravatar Michael Staib2016-04-21
| | | | MOS_MIGRATED_REVID=120353718
* Rename CppCompilationContext.getCompilationPrerequisites toGravatar Manuel Klimek2016-04-20
| | | | | | | | | | | | | | getTransitiveCompilationPrerequisites. The missing 'transitive' in the name is misleading. This change is a preparation for further refactorings that will in the end introduce a getCompilationPrerequisites method that actually returns the compilation prerequisites for a rule - as that will be require some more things to be shuffled around in CppCompilationContext, this change gets the purely syntactical change in first. -- MOS_MIGRATED_REVID=120247461
* Move the runfiles for external repositories to under the x.runfiles/ directoryGravatar Kristina Chodorow2016-04-20
| | | | | | | | | | | | | | | This also sets the Bazel workspace name to io_bazel_source. Fixes #848. Relevant to #1116, #1124, RELNOTES[INC]: All repositories are now directly under the x.runfiles directory in the runfiles tree (previously, external repositories were at x.runfiles/main-repo/external/other-repo. This simplifies handling remote repository runfiles considerably, but will break existing references to external repository runfiles. --- Furthermore, if a Bazel project does not provide a workspace name in the WORKSPACE file, Bazel will now default to using __main__ as the workspace name (instead of "", as previously). The repository's runfiles will appear under x.runfiles/__main__/. -- MOS_MIGRATED_REVID=120224534
* Add mechanism to crosstool language to specify action-specific execution ↵Gravatar Cal Peyser2016-04-19
| | | | | | | requirements. Uses this mechanism to configure c/c++ compilation and linking for darwin execution from the crosstool. -- MOS_MIGRATED_REVID=120218079
* Permit cc_test to run on darwin.Gravatar Cal Peyser2016-03-24
| | | | | -- MOS_MIGRATED_REVID=118019851
* Do not put both pic and non-pic header modules into the inputs of a compile ↵Gravatar Manuel Klimek2016-03-23
| | | | | | | action. -- MOS_MIGRATED_REVID=117915931
* Pass the source path -> Artifact mapping into FdoSupport from a provider ↵Gravatar Lukacs Berki2016-02-28
| | | | | | | | | instead of special-casing it. This removes the need to deserialize artifacts in FdoSupport, which in turn removes the need to support artifact deserialization at all, which makes our lives simpler and Thoreauvian programming is good. -- MOS_MIGRATED_REVID=115660698
* Make process_headers_in_dependencies work for cc_binary und cc_test targets.Gravatar Googler2016-02-25
| | | | | -- MOS_MIGRATED_REVID=115550466
* Support MOSTLY_STATIC with --build_test_dwp.Gravatar Googler2016-02-11
| | | | | -- MOS_MIGRATED_REVID=114469301
* Allow switching on header processing (parse_headers or preprocess_headers)Gravatar Manuel Klimek2016-02-04
| | | | | | | | | | | for targets in the transitive closure of a target that is built. Rollback of commit e01291a1a3d65cd706190c9bf0c8cfc585f38eb7. Added an additional test to check that the configuration value is actually effectively used. -- MOS_MIGRATED_REVID=113836105
* Do not compile source files mentioned in 'hdrs'.Gravatar Manuel Klimek2016-02-03
| | | | | | | | | | | | Currently for a library: cc_library(name='a', hdrs=['a.cc']) we compile a.cc into a.pic.o and link that into its reverse dependencies. With this change, a .cc file in hdrs will be treated like a .inc file or a file in textual_hd... -- MOS_MIGRATED_REVID=113773418
* Include .dwp file in the runfiles for cc_test when building with Fission.Gravatar Googler2016-02-03
| | | | | -- MOS_MIGRATED_REVID=113660258
* Rollback of commit 16444baf21780c4bff00b9736b268e97157e6bc2.Gravatar Carmi Grushko2016-02-02
| | | | | | | | | | | | | | | | | | | | | | *** Reason for rollback *** Breaks targets. See [] Manually verified this unbreaks the target mentioned in the bug. *** Original change description *** Do not compile source files mentioned in 'hdrs'. Currently for a library: cc_library(name='a', hdrs=['a.cc']) we compile a.cc into a.pic.o and link that into its reverse dependencies. With this change, a .cc file in hdrs will be treated like a .inc file or a file in textual_hdrs. -- MOS_MIGRATED_REVID=113568452
* Rollback of commit 4fdd66db55d36c923b1e9fa30a158e1596408670.Gravatar Michajlo Matijkiw2016-02-02
| | | | | | | | | *** Reason for rollback *** The change this relies on is to be rolled back. -- MOS_MIGRATED_REVID=113564031
* Rollback of commit e379f28f464faacc4db21f4fed3a48fa6d4d23f0.Gravatar Googler2016-01-29
| | | | | | | | | | | | | *** Reason for rollback *** The new test apparently breaks some targets. Rolling back to fix the build. *** Original change description *** Include .dwp file in the runfiles for cc_test when building with Fission. -- MOS_MIGRATED_REVID=113310353
* Include .dwp file in the runfiles for cc_test when building with Fission.Gravatar Googler2016-01-29
| | | | | -- MOS_MIGRATED_REVID=113295790
* Allow switching on header processing (parse_headers or preprocess_headers)Gravatar Manuel Klimek2016-01-22
| | | | | | | | | | | | | | | | | for targets in the transitive closure of a target that is built. Previously, this would only happen if a link action for the library containing the headers was also built; this specifically means it did not trigger if a library didn't contain source files, as there is no link action for such libraries. That led to no header-only libraries would get their headers parsed, which includes all cc_public_library rules. Adding a flag to introduce this under so we can switch it on independently from the blaze release. Once it is switched on, we can remove the edges in the action graph from the link actions to the header processing actions. -- MOS_MIGRATED_REVID=112782219
* Do not compile source files mentioned in 'hdrs'.Gravatar Manuel Klimek2016-01-22
| | | | | | | | | | | | Currently for a library: cc_library(name='a', hdrs=['a.cc']) we compile a.cc into a.pic.o and link that into its reverse dependencies. With this change, a .cc file in hdrs will be treated like a .inc file or a file in textual_hdrs. -- MOS_MIGRATED_REVID=112770625
* Use Bazel Preconditions variant which avoids varargs array creationGravatar Mark Schaller2015-12-10
| | | | | | | Reduces garbage. -- MOS_MIGRATED_REVID=109914243
* Collect .o files compiled from C(++), and skip the rest for the LTO backend ↵Gravatar Han-Wen Nienhuys2015-10-07
| | | | | | | | | | step. This should make ThinLTO work with .o files that are not generated by compiling C++ in a cc_library() -- MOS_MIGRATED_REVID=104764111
* Rationalize copyright headersGravatar Damien Martin-Guillerez2015-09-25
| | | | | | | | | | | The headers were modified with `find . -type f -exec 'sed' '-Ei' 's|Copyright 201([45]) Google|Copyright 201\1 The Bazel Authors|' '{}' ';'` And manual edit for not Google owned copyright. Because of the nature of ijar, I did not modified the header of file owned by Alan Donovan. The list of authors were extracted from the git log. It is missing older Google contributors that can be added on-demand. -- MOS_MIGRATED_REVID=103938715
* Move Label from the lib.syntax to the lib.cmdline package so that:Gravatar Lukacs Berki2015-09-21
| | | | | | | | | | - Label parsing can be simplified - lib.syntax is only contains the code for Skylark and is reasonably independent from the problem domain of building things This change is mostly only changes to imports declarations. The rest is reversing the dependency between :cmdline and :syntax and moving a tiny amount of code between Printer and FilesetEntry and the addition of SkylarkPrintableValue that I couldn't be bothered to separate out into its own change. -- MOS_MIGRATED_REVID=103527877
* Separate build-specific types and types inherent to Skylark.Gravatar Lukacs Berki2015-09-21
| | | | | -- MOS_MIGRATED_REVID=103374106
* Prevented catching/wrapping of InterruptedExceptions, especially in ↵Gravatar Florian Weikert2015-09-14
| | | | | | | BaseFunction. -- MOS_MIGRATED_REVID=102988766
* Drop the baseline artifact output group.Gravatar Ulf Adams2015-08-31
| | | | | | | | | | The baseline artifacts are part of the instrumented files provider now, and are strongly tied to the collect_code_coverage flag. It seems to be simpler to collect them explicitly in the BuildView (which already collects them for post-processing), than to rely on the output group selection. -- MOS_MIGRATED_REVID=101926341
* Merge the baseline coverage code path into the coverage codepath.Gravatar Ulf Adams2015-08-31
| | | | | | | | | | | | | | | | | We're currently doing too much work for baseline coverage - every rule creates an action for its entire transitive closure; these actions are added to the output group for baseline coverage, but not transitively accumulated. It would be better for every rule to create an action for local baseline coverage, and to aggregate the baseline coverage artifacts down the dependency tree. By merging the code paths, the InstrumentedFilesCollector can perform the aggregation, because it can distinguish local and transitive files; I'm planning to implement that in a subsequent change. -- MOS_MIGRATED_REVID=101914334
* Add the implicit output of unstripped binary for Launcher-enabled java_binary.Gravatar Googler2015-08-24
| | | | | | | Use stripped launcher when Fission is enabled. -- MOS_MIGRATED_REVID=101244628
* Set the workspace suffix for runfilesGravatar Kristina Chodorow2015-08-13
| | | | | | | This CL covers the "easy" cases. Followup CLs will take care of couple dozen remaining gnarly ones. -- MOS_MIGRATED_REVID=100479410
* Experimental support LLVM ThinLTO.Gravatar Han-Wen Nienhuys2015-08-11
| | | | | | | | | | | | | | | | | | | | | | ThinLTO is a Link Time Opimization strategy, where the inlining step operates on LLVM intermediate code, and is sharded across multiple compiler invocations, so they can be parallelized. For more information, see http://llvm.org/devmtg/2015-04/slides/ThinLTO_EuroLLVM2015.pdf Using this features requires an experimental LLVM toolchain, with the following stanza in CROSSTOOL feature { name: "thin_lto" flag_set { action: "c-compile" action: "c++-compile" flag_group { flag: "-Xclang-only=-Wno-inconsistent-missing-override" flag: "-flto" flag: "-O2" } } } -- MOS_MIGRATED_REVID=100269776
* Use pic mode for cc_fake_binary if pic actions are used for binaries.Gravatar Manuel Klimek2015-08-05
| | | | | | | | | | | | | | | | | | | | | To allow the commands in the cc_fake_binary to work with modules (which is a precondition to writing nocompile tests for modules), we need to create header modules in the same pic/nopic mode as the rest of the commandline indicates. There are two ways to resolve this problem: a) Make cc_fake_binary use the same pic mode as other binaries. b) Make sure fake compile actions get all their inputs in non-pic mode. This patch proposes solution a), as that makes sure cc_fake_binary is as close to the actual compilation going on as possible; for example, if we decide to always use pic in the future, this will simply work; additionally, we will currently get more test coverage through different compilation modes. RELNOTES: 'cc_fake_binary' uses the same pic/nopic mode as other binaries. -- MOS_MIGRATED_REVID=99902738
* Lazy evaluation of C & C++ sources in CcCommon.Gravatar Ulf Adams2015-08-04
| | | | | -- MOS_MIGRATED_REVID=99718820
* Refactor CcBinary / CcCommon a bit.Gravatar Ulf Adams2015-08-04
| | | | | | | | | | Don't compute the linkopts in CcCommon unconditionally, only on demand. In order to only do this once, I had to pull out all calls to getLinkopts and move them up in the call hierarchy. This in turn resulted in some simplification and dead code removal in CcBinary. -- MOS_MIGRATED_REVID=99716999
* Split CcCommon handling of srcs filtering into a new class.Gravatar Ulf Adams2015-08-04
| | | | | -- MOS_MIGRATED_REVID=99715964
* Remove all calls to AnalysisEnvironment.getDerivedArtifact() from the C++ ↵Gravatar Lukacs Berki2015-08-04
| | | | | | | | | | | | rules that can be removed. What is left: - The outputs of ExtractInclusionsAction. I think this action is shared between multiple rules that have the same generated file in srcs, so this call site is legitimate. - Creating the solib symlinks. This is not a shared action, but these need to be in the same directory so that the RPATH is not too long, so we must live with this for the time being. - FDO, which is beyond salvation. The artifacts under the FDO root don't really conform to the usual "only under the package directory" convention. -- MOS_MIGRATED_REVID=99551394
* Refactor Cc* some more.Gravatar Ulf Adams2015-07-30
| | | | | | | | | - Move getTemps to CcBinary (only caller). - Change getFilesToCompile to return a nested set. - Inline CcCommon.getHeader(), which was a one-liner. -- MOS_MIGRATED_REVID=99384327
* Remove some unnecessary code from CcBinary.Gravatar Ulf Adams2015-07-29
| | | | | | | | | The object files from sources are already merged into the cc compilation outputs by the CcLibraryHelper, and returned from getObjectFiles. There's no need to add them again later. -- MOS_MIGRATED_REVID=99379096
* Move a method from CcCommon to CcBinary that is only called from there.Gravatar Ulf Adams2015-07-29
| | | | | -- MOS_MIGRATED_REVID=99372555
* Move shared settings between CcBinary and CcLibrary toGravatar Han-Wen Nienhuys2015-07-29
| | | | | | | CcLibraryHelper#setCommon. -- MOS_MIGRATED_REVID=99370685
* Check that most output artifacts are under a directory determined by the ↵Gravatar Lukacs Berki2015-07-29
| | | | | | | | | repository and package of the rule being analyzed. Currently this directory is PACKAGE for rules in the main repository and external/REPOSITORY_NAME/PACKAGE for rules in other repositories. This is a plan to fix #293. Ideally, we would simply make it impossible to create artifacts not under that location, but in practice, we cannot do that because some rules do want to do this, mostly those that are already problematic due to shared actions. So the battle plan is to eliminate as many calls to AnalysisEnvironment.getDerivedArtifact() as I possibly can and audit the rest. -- MOS_MIGRATED_REVID=99351151
* Refactor C++ link action creation.Gravatar Ulf Adams2015-07-27
| | | | | | | | | Remove an unnecessary intermediate method in CcBinary and provide a helper method in CcLinkAction.Builder that simplifies several call sites that just want to add CcLinkParams to the link action. -- MOS_MIGRATED_REVID=99172303