Commit Graph

193 Commits

Author SHA1 Message Date
Googler 1f87a00b38 C++: Fix @rules_cc for toolchain type in cc_shared_library
We need @rules_cc in front of the toolchain type in cc_shared_library. This is
still experimental.

More complete test suite is on the way in a separate CL I'm working on.

RELNOTES:none
PiperOrigin-RevId: 282716323
Change-Id: I797ef08f18987adef82b7c7d484e2838f4e1ba6a
2019-11-27 00:40:18 -08:00
Googler d562dc8046 CcSharedLibraryInfo propagates labels for exports now
It used to propagate TransitiveInfoCollections for exports which is not ideal.

RELNOTES:none
PiperOrigin-RevId: 281056556
Change-Id: I2ec39292aefb55369720fbbb93ee1e2f8704b8db
2019-11-18 06:33:34 -08:00
Googler c2b692b4e4 Adds integration test for cc_shared_library.
We use BUILD example added in previous CL and inspect the resulting *.so files with nm.

Also fixes implementation of shared library to work with Bazel after having flipped the legacy whole archive flag. This caused exported libraries to be dropped by the linker unless they were alwayslink.

Still more tests to come.

RELNOTES:none
PiperOrigin-RevId: 280640226
Change-Id: I34b48ce7379536352f87b703580083eb85ca67b3
2019-11-15 05:36:47 -08:00
Googler bf6a32cff5 Adds example usage of cc_shared_library
This is only tested with Bazel at head. We modify the presubmits file so that we don't use release. The reason we don't use release is because we need very recent changes to Bazel to test cc_shared_library. In the future we will also test with release.

Also in following CLs, we will inspect in integration test the *.so output from these example builds to make sure that the correct symbols are linked statically and are visible.

After that we will add Starlark unit test to check error conditions.

RELNOTES:none
PiperOrigin-RevId: 280381939
Change-Id: I5de9b364a2a3db28d99558fbfca7bea8052e5114
2019-11-14 02:03:24 -08:00
Googler 31c46f250a Explicitly export files needed by other packages
Add an explicit export statement (with the same visibility) for
files that are currently only implicitly exported and used by other
pacakges. This prepares changing the visibility of implicitly-exported
files to be package private without causing a breakage.

PiperOrigin-RevId: 280171386
Change-Id: I083a9d4f82067b4d4c94d7b554013aeb91e401cc
2019-11-13 04:27:16 -08:00
Googler 8e88d89faf C++: Checks in prototype of cc_shared_libraryA
Design doc at:
https://docs.google.com/document/d/13nolQXvXDsJ4yjWP1FRd-WscP2-rHZcR3Zb__js6mLA/edit?ts=5dc40747#

RELNOTES:none
PiperOrigin-RevId: 279939859
Change-Id: Ib68ef39e42237962c53e72f79f0389906c4e61a5
2019-11-12 05:06:44 -08:00
Googler 6cfb2fba70 Fix codebase in preparation for incompatible_use_cc_configure_from_rules_cc
We're working on removing C++ toolchain autoconfiguration logic out of Bazel,
and moving towards using rules_cc repository for it. Some bzl files will no
longer be available through bazel/tools/cpp/*, but through
@rules_cc/cc/*.

RELNOTES: None.
PiperOrigin-RevId: 279935457
Change-Id: I3bae259548dacc5c6789efe0f27dd07738c1057c
2019-11-12 04:35:10 -08:00
Googler 8bd6cd75d0 Keep @rules_cc//cc:toolchain_type as fully-qualified label always
Labels in toolchains attribute need to include the repository, otherwise the resolution won't work.

RELNOTES: None.
PiperOrigin-RevId: 279347045
Change-Id: Iba1eb8bb677771e2c089ab6bc1b5e019c4da434e
2019-11-08 10:50:36 -08:00
Googler fe8f0a4cf9 Add //cc:srcs filegroup that Bazel can depend on in unittests
RELNOTES: None.
PiperOrigin-RevId: 279041716
Change-Id: I90ce28031a4f2ac737cffbe57d42030c0d1d862b
2019-11-07 02:27:13 -08:00
Copybara-Service e7c97c3af7 Merge pull request #45 from hlopko:fix_cc_configure
PiperOrigin-RevId: 278612577
Change-Id: I70ed5cfba7bc5c5ee5cb0db45e0f072a36a49cff
2019-11-05 06:40:31 -08:00
Copybara-Service 99a7a02b7b Merge pull request #46 from bazelbuild:hlopko-patch-2
PiperOrigin-RevId: 278581955
Change-Id: I2058d69e8e7c9418e5d9a773cbc056c3da1d9ec8
2019-11-05 03:22:24 -08:00
Copybara-Service 5c0675a136 Merge pull request #48 from hlopko:fix_gold
PiperOrigin-RevId: 278581858
Change-Id: Id8791b4b1405f5210cc60714ed8d77feddc800dd
2019-11-05 03:21:47 -08:00
Marcel Hlopko d978571909
Merge branch 'master' into hlopko-patch-2 2019-11-05 11:16:12 +01:00
Marcel Hlopko 1f8a00e6b8 Skip gcc build configuration options mentioning gold 2019-11-04 20:02:10 +01:00
Marcel Hlopko fbde6cceb5
Merge branch 'master' into fix_cc_configure 2019-11-04 15:47:01 +01:00
Copybara-Service 252442d133 Merge pull request #44 from bazelbuild:hlopko-patch-1
PiperOrigin-RevId: 278347427
Change-Id: Ib0f20fa111e1074dc67fbd53596e8b41a94bf8e3
2019-11-04 04:02:23 -08:00
Marcel Hlopko 0d35394cd6 Add badge for incompatible flag pipeline
https://buildkite.com/bazel/rules-cc-plus-bazelisk-migrate
2019-11-04 12:38:06 +01:00
Copybara-Service 81e8a6c100 Merge pull request #47 from hlopko:fix_typo
PiperOrigin-RevId: 278333623
Change-Id: Ifd26dbe5dc3544a1f20bcac3548b5b7a1cad2abe
2019-11-04 02:18:47 -08:00
Marcel Hlopko 4420fcb440 Fix typo 2019-11-04 09:38:06 +01:00
Marcel Hlopko 80b5b6b64b
Update renovate.json
Apparently formatting json with buildifier results in something that is not json. Who would have thought.
2019-11-03 11:40:55 +01:00
Marcel Hlopko 199157190a Use wrapped_clang for C++ link actions (port of 2682688331) 2019-11-01 17:02:17 +01:00
Marcel Hlopko 157a07b53c Fix call in WORKSPACE 2019-11-01 16:39:47 +01:00
Marcel Hlopko 4f8676f6ca Add rules_cc_toolchains to repositories.bzl
This is the new entry point for registering C++ toolchains (replacing
implicit cc_configure()).

While at it, fix one misnamed function.
2019-11-01 16:36:34 +01:00
Googler 262ebec3c2 Fix buildifier warnings in @rules_cc
Fixes:

* Enabled buildifier on the Bazel CI again
* Added Skydocs where missing
* Moved public files out of .../private/... (e.g. cc_toolchain_config_lib.bzl)
* Reformatted
* Removed unused loads
* Using relative labels for cc_configure related files
* Added development dependency on rules_proto
    * they're not in the federation yet, so hand rolling in rules_cc's WORKSPACE file
* Added development dependency on rules_python (from federation)
* Cleaned up copybara (notable change - not using @rules_cc in labels inside rules_cc repo)
* Made cc_flags_supplier usable internally
* Moved load statements to the top of the bzl file
* Moved runfiles to the tools directory
* Unified toolchain_utils.bzl and find_cc_toolchain.bzl

RELNOTES: None.
PiperOrigin-RevId: 276479521
Change-Id: I3196896061fa2ee61a3efb130c214d288782066a
2019-10-24 07:01:25 -07:00
Googler 0e66ef31d6 rules_cc: Add top-level BUILD file to distribution.
Before this commit Bazel could not use the distribution since it failed with "Every .bzl file must have a corresponding package, but '@rules_cc//:internal_deps.bzl' does not have one."

https://buildkite.com/bazel/bazel-federation-distro-pre-release-testing/builds/20#29164fc9-b0bb-41aa-b62f-e2f3f20e9efc

PiperOrigin-RevId: 275263945
Change-Id: I12216f2070ddc579f553a22975790bbc9a18f0f9
2019-10-17 08:30:50 -07:00
Copybara-Service 12a2d801f6 Merge pull request #38 from hlopko:update_gtest
PiperOrigin-RevId: 274161434
Change-Id: Ic7cc0802695afff00095d5565496f7db46fe83e4
2019-10-11 06:35:58 -07:00
Marcel Hlopko 54c783c4d9 Actually, lets depend on the release archive, not the branch 2019-10-09 15:18:06 +02:00
Marcel Hlopko 2c9c93bc07 Update googletest to 1.10.x 2019-10-09 09:49:37 +02:00
Googler a508235df9 Add missing bzl files to rules_cc distribution.
PiperOrigin-RevId: 272505874
Change-Id: I68d1b43c859db54abf3da71ce1e11d5c15567257
2019-10-02 13:25:11 -07:00
Copybara-Service f871759081 Merge pull request #35 from fweikert:distro
PiperOrigin-RevId: 272444545
Change-Id: I8d582773c5ef124ecafe77a353434887f1abc1aa
2019-10-02 08:49:43 -07:00
fweikert 182a477244 Add version number to a dedicated bzl file
Adding the version number to defs.bzl caused some problems in our internal codebase.
2019-10-02 15:25:05 +02:00
Florian Weikert eae134361b Make Buildifier happy 2019-09-30 15:58:14 +02:00
Florian Weikert df4a51f42e Use latest federation version
This version includes rules_pkg 0.2.4, which contains the fix required to cut a first rules_cc release.
2019-09-30 15:10:00 +02:00
fweikert 29da92c66c Use rules_pkg for building releases
This commit allows the creation of distributions, with 0.0.1 being the first version.
See distro/README.md for details on how to build a release.

This commit also uses a new version of the Bazel federation that contains rules_pkg 0.2.2 instead of 0.2.1.

There are still some problems with the WORKSPACE stanza that is being printed by the release notes generation script, though:
- It references a //cc:deps.bzl file, which doesn't exist. I have to modify the scripts in rules_pkg to support a flag like 'has_deps'.
- It doesn't support the Bazel federation yet, since it always tells users to download code from the rules_cc repository.
2019-09-17 18:00:18 +02:00
Googler 42ed56d8ac Remove unused load statements from .bzl files
BEGIN_PUBLIC
Remove unused load statements from .bzl files

After transitive loads have been disabled in Blaze, unused load statements have
no effect (besides not useful memory consumption).

The CL has been created automatically by calling `buildifier --lint=fix --warnings=load` on all .bzl files.

The following additional command were run on all affected files to clean them up:

  * buildifier -a -v --lint=fix --warnings=load-on-top
    Moves all load statements to the top of a file
  * buildifier -a -v --lint=fix --warnings=same-origin-load
    Compresses all load statements from the same .bzl file to one load statement

END_PUBLIC

PiperOrigin-RevId: 269552258
Change-Id: I85ae6bf3467bf560ac3e0ab2470f864abb89e8e6
2019-09-17 06:09:06 -07:00
Copybara-Service cb2dfba674 Merge pull request #34 from hlopko:put_include_paths_into_action
PiperOrigin-RevId: 266894179
Change-Id: Ic93db66d9d22843b61b68f30851a312f74673ddb
2019-09-03 03:35:29 -07:00
Marcel Hlopko 8cf01f5ce5 Fix 2019-09-03 11:51:10 +02:00
Marcel Hlopko 2d62d780d1 Put include paths into action 2019-09-03 11:30:13 +02:00
Googler ea5c5422a6 Add support for thin LTO optimization in Bazel
Usage: CC=clang bazel build //foo:bar --features=thin_lto -c opt

RELNOTES: Bazel now supports ThinLTO builds on Linux for Clang versions >= 6.0. ThinLTO can be enabled through --features=thin_lto
PiperOrigin-RevId: 265649618
Change-Id: I68a38b8b8c1480e3b73d8e6f24e9dafece2c7de6
2019-08-27 03:33:52 -07:00
Googler c2790137ae Stop running Buildifier as part of the presubmit
We now have copies of .bzl files that we have to keep in sync between @rules_cc and @bazel_tools/tools
I propose to re-enable the Buildifier presubmit once this issue is resolved.

*** Original change description ***

Run Buildifier as part of the presubmit.

As a result we will catch some errors already in GitHub, and not later in Critique when it's harder to fix them.

***

PiperOrigin-RevId: 265636234
Change-Id: I10730665134240b3f47950e0e8fa0add8e0bd591
2019-08-27 01:51:17 -07:00
Googler 1d7c9eb8c8 Update copyright year in BUILD file.
RELNOTES:none
PiperOrigin-RevId: 265457282
Change-Id: Ibfb7f335c5f8c563ce9b31ba22435eec210cf132
2019-08-26 08:06:40 -07:00
Googler 4a1c578fb0 C++: Move tools/cpp from bazel_tools to rules_cc
Here we are duplicating bazel_tools/tools/cpp. The goal is for the BUILD files in bazel_tools/tools/cpp to have an alias that point to rules_cc. Then later on with the incompatible flag these aliases will no longer be valid.

Working towards #8743

RELNOTES:none
PiperOrigin-RevId: 264604076
Change-Id: I389702793a1a95b0990dce93577de2b7182e2e6b
2019-08-21 07:30:04 -07:00
Googler 624b5d59df Run Buildifier as part of the presubmit.
As a result we will catch some errors already in GitHub, and not later in Critique when it's harder to fix them.

PiperOrigin-RevId: 262967050
Change-Id: If598cea7cf9283203bad94533a6bb5be3349e118
2019-08-12 11:23:38 -07:00
Copybara-Service aed5c5b6d4 Merge pull request #31 from fweikert:merge
PiperOrigin-RevId: 262965730
Change-Id: Ibf68e12666dd01930f40adf04c4be18cb52d040f
2019-08-12 11:19:21 -07:00
fweikert 6d232cc0d6 Use federation version with working zlib repo 2019-08-12 15:56:12 +02:00
Florian Weikert d5d6527fcf Use federation version with required BUILD files 2019-08-09 16:17:16 +02:00
Florian Weikert 6cc7e712fb Fetch dependencies through the Bazel federation.
As a result of this commit, rules_cc now contains the required bzl files to be tested as part of the Bazel federation.
2019-08-09 15:41:00 +02:00
Googler 401380cd22 Add a cc_toolchain_config_compare_test that compares 2 Starlark C++ toolchain configuration rules
With CROSSTOOL not existing anymore, the comparison script can continue being useful in refactoring Starlark toolchain config rules.

RELNOTES: None.
PiperOrigin-RevId: 262544859
Change-Id: I633fdc4c09c7643d6e5d1c10537efa3c9a82003c
2019-08-09 05:56:16 -07:00
Googler e68ae76a67 Allow the C++ toolchain config rules comparator script to not need toolchain_identifier argument when both --before and --after arguments are CToolchains (coming from Starlark rules instead of CROSSTOOL proto)
We don't need to select a toolchain by the identifier when we get the proto from Starlark rules because in that case the proto contains a single toolchain.
The difference in toolchain_identifier field between the first and the second proto file will be caught as any other field.

RELNOTES: None.
PiperOrigin-RevId: 262543753
Change-Id: I1e66ee302bf551ade883c217f6269f44382393c0
2019-08-09 05:43:22 -07:00
Googler b7fe9697c0 C++: Add two more rules to defs.bzl in rules_cc
These rules are in bazel_tools.

RELNOTES:none
PiperOrigin-RevId: 259298756
Change-Id: I9ed4b8f3cd712adc889a950765c96b5b68a5d43c
2019-07-22 04:17:22 -07:00