Commit Graph

253 Commits

Author SHA1 Message Date
Andrzej Głuszak 8398f4b2c1 Fixes after code review 2020-09-23 11:11:15 +00:00
Andrzej Głuszak 8346df34b6 Remove line breaks using backslashes 2020-09-22 14:07:45 +00:00
Andrzej Głuszak 299299f82a Move description to doc parameter, add docs for arguments 2020-09-22 13:59:48 +00:00
Andrzej Głuszak c4886cbf16 Add a module description 2020-09-22 11:48:42 +00:00
Andrzej Głuszak d3808499d2 Fix style 2020-09-22 08:18:25 +00:00
Andrzej Głuszak 6c1dbe079d Implement a repository rule for importing system libraries 2020-09-21 17:47:08 +00:00
Googler 02becfef8b Automatic code cleanup.
PiperOrigin-RevId: 327262788
Change-Id: I13ea852be5ec154593a547e4a4511df5f9c94928
2020-08-18 10:57:24 -07:00
Copybara-Service 1477dbab59 Merge pull request #76 from laurentlb:master
PiperOrigin-RevId: 323574787
Change-Id: I8ede4b3db044e2e0e6e351559783f04487907503
2020-07-28 08:17:49 -07:00
Laurent Le Brun ea0c09ecff Stop depending on rules_pkg through the federation
See discussion on https://github.com/bazelbuild/bazel-federation/issues/117
2020-07-28 14:15:43 +02:00
Copybara-Service 5cbd3dfbd1 Merge pull request #73 from hlopko:skylark_bye_bye
PiperOrigin-RevId: 314484747
Change-Id: Ic88f26a254371a4204844e279a4a189f9775b2d0
2020-06-03 00:53:38 -07:00
Marcel Hlopko d6cfe773b8 Rename skylark->starlark 2020-06-03 09:13:26 +02:00
Googler 818289e561 Add flags to cc_shared_library for easier debugging
--//examples:incompatible_link_once=False[default = False]
When True, it will be an error to link the same library more than once
unless it has the tag LINKABLE_MORE_THAN_ONCE

--//examples:experimental_debug=True[default = False]
When True, it will generate files listing the exports of each cc_shared_library
and which libraries are linked to it statically.

RELNOTES:none
PiperOrigin-RevId: 311323625
Change-Id: I340cc71965650f7c9dd7ef7fb9656da362021527
2020-05-13 07:24:06 -07:00
Googler 8c31dd406c Change cc_shared_library exports logic.
Changes in this CL:
1. 'exports' attribute renamed to roots
2. Removed restrictions for exporting a rule in a different repository
3. Kept restrictions for rules in the same repository but not in the same
package or subpackages
4. To get around restrictions, instead of the exported_by tag, one can use the
cc_shared_library_permissions rule
5. Added exports_filter that will match libraries in the transitive closure of
a root. Anything matched by the exports_filter will also be exported.
Restrictions as in 4. still apply.

RELNOTES:none
PiperOrigin-RevId: 310547916
Change-Id: I32d8e0d4dd4bcc9c9e92f4ff3c5b2a01564c31b2
2020-05-08 06:35:54 -07:00
Yannic Bonenberger dbe8807224 Add optional tool_path_origin to Tools in C++ crosstool
This change adds an optional field to the C++ crosstool proto that
allows configuring the origin tool_path is relative to.

For now, the origin can be one of the following:
  - CROSSTOOL_PACKAGE: If tool_path is a relative path, it's assumed to
    be relative to the package of the crosstool top.
  - FILESYSTEM_ROOT: tool_path is an absolute path. This is checked by
    Bazel.
  - WORKSPACE_ROOT: tool_path must be a relative path and is assumed to
    be relative to the exec-root of the workspace (similar to other
    executables).

Updates bazelbuild/bazel#8438

Closes #10967.

PiperOrigin-RevId: 310142352
Change-Id: If6316ffa5d7d2713b197840b4aafb2f0cdbb0b96
2020-05-06 06:52:27 -07:00
Copybara-Service 9ddf8aac74 Merge pull request #70 from hlopko:disable-unnamed-macro
PiperOrigin-RevId: 309715272
Change-Id: I3623a890776af2ff2e344e755b673fb9a58d3fc8
2020-05-04 04:03:00 -07:00
Marcel Hlopko 0e4443f2ca Instead disable the buildifier warning 2020-05-04 11:59:13 +02:00
Marcel Hlopko 65436199d8 Duh 2020-05-04 11:59:13 +02:00
Marcel Hlopko e8781b53aa Fix repositories.bzl 2020-05-04 11:59:10 +02:00
Marcel Hlopko b70b375b6d Add `name` parameter to `cc_configure`
To satisfy the buildifier and make the build green again.
2020-05-04 11:58:50 +02:00
Marcel Hlopko ed50da4736 Disable unnamed-macro check for cc_configure 2020-05-04 11:58:50 +02:00
Googler 4c3e410486 C++: Fix path checking cc_shared_library
We were returning false when checking whether //foo:bar is under
//:__subpackages__

RELNOTES:none
PiperOrigin-RevId: 307808962
Change-Id: I080e4c239b75c188dae8af89f4b38aa935d92b0d
2020-04-22 07:05:49 -07:00
Googler a74452e910 C++: Optimize cc_shared_library
1. Don't pop from the front of the list being iterated on
2. Don't visit the same node_label more than once

RELNOTES:none
PiperOrigin-RevId: 307610981
Change-Id: I9b35a27a1bdabafbe290d1ff23eeb4659b07d554
2020-04-21 08:38:17 -07:00
Copybara-Service 77099ee80d Merge pull request #69 from Yexo:master
PiperOrigin-RevId: 307024012
Change-Id: I40dd8d6310437099dd90fb7beec854696c67a561
2020-04-17 05:03:37 -07:00
Googler 67086db2c4 Remove obsolete alias to //external:cc_toolchain.
RELNOTES: None.
PiperOrigin-RevId: 306383589
Change-Id: Id1c4cebefb444d7bd76624ef05a623eafd75808d
2020-04-13 23:44:09 -07:00
Googler 7c3170fe93 Automatic code cleanup.
PiperOrigin-RevId: 305641156
Change-Id: I4f0b09f27d06c00ab23e6c7f19b187c09c8937f7
2020-04-09 01:35:48 -07:00
Thijs Marinussen d97ac303e5 Stop using the deprecated items parameter. See https://github.com/bazelbuild/bazel/issues/9017 for details 2020-03-30 15:16:33 +02:00
Googler 34ca16f4aa Partially fix MacOS llvm coverage collection
This allows setting GCOV on the command line to overwrite the default setting, which points to /usr/bin/gcov. In order to use this, you also need to disable the gcov coverage feature and enable the llvm coverage feature instead. The full command-line looks like this:

GCOV=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/llvm-profdata bazel coverage --features=llvm_coverage_map_format --features=-gcc_coverage_map_format //cpp:test

Progress on #10457.

Original change by ulfjack
RELNOTES: None.
PiperOrigin-RevId: 300583709
Change-Id: Ibeda8469db6750fc9fc3bba60e19118a2e482ed8
2020-03-12 11:08:12 -07:00
Googler 7fdc27c099 Automatic code cleanup.
PiperOrigin-RevId: 300062414
Change-Id: I0df6327b0a651aed821351f9aaff731ff6183aa6
2020-03-10 04:40:22 -07:00
Googler e7f1b2c2e5 Automatic code cleanup.
PiperOrigin-RevId: 299879428
Change-Id: I647d3900c2f26b0b9f587cdbd517ad649cb843d7
2020-03-09 10:48:16 -07:00
Googler b14a82ed17 Build with Bazel@last_downstream_green
Closes https://github.com/bazelbuild/rules_cc/pull

PiperOrigin-RevId: 299828273
Change-Id: I2cce9156d7e31756195a5dac87f18f6ad457ea43
2020-03-09 06:38:07 -07:00
Googler d545fa4f79 C++: Move default linker flags with libs after libraries
Default linker flags contains flags like -lstdc++ which should come after the
user libraries. The library flags are removed from default linker flags and added to link_libs instead which comes after user libraries.

See #9254

Incompatible flag bug: https://github.com/bazelbuild/bazel/issues/10905

I introduce a new method to repositories ctx that allows checking the value of a Starlark semantic option from a repository rule.

RELNOTES:none
PiperOrigin-RevId: 299336105
Change-Id: I81b9ee0c72e2a2252b406f1c584997389a530e40
2020-03-06 05:45:05 -08:00
Googler a636005ba2 Migrate rules_cc to python 3
PiperOrigin-RevId: 298802233
Change-Id: I55930fa7e8dd621afdef8586ba81752344aa1f99
2020-03-04 02:10:07 -08:00
Googler 20bff9088b Change the syntax for labels in static_deps and exported_by
The syntax now matches visibility's. This is less confusing than
before, we now have:
 - targets like //foo, //foo:foo or //foo:bar
 - same package match like //foo:__pkg__
 - subpackages like //foo:__subpackages__

RELNOTES:none
PiperOrigin-RevId: 298598757
Change-Id: I6d02cf03c3c67d78998dda27a6529d53d0ef2708
2020-03-03 07:11:41 -08:00
Googler d4357efea4 Adds exported_by function to cc_shared_library
This function is meant to be used for the tag containing exported_by.

RELNOTES:none
PiperOrigin-RevId: 298568236
Change-Id: Ia7b039d1764a3b79a3a0cc3f7f68a8eb17e6f0d5
2020-03-03 03:33:20 -08:00
Googler f38419606c Tests for changes in unknown commit
RELNOTES:none
PiperOrigin-RevId: 298567732
Change-Id: Ib3a14ee37a43a63fbfe2623f24c5dc710a941796
2020-03-03 03:28:56 -08:00
Googler be6ea43fc8 Allows libraries to be linked more than once.
Libraries are tagged with LINKABLE_MORE_THAN_ONCE can be linked into more than
one shared library and not give an error.

RELNOTES:none
PiperOrigin-RevId: 297352891
Change-Id: Id32b5c341bfd9d5906d67216773e82b0d8b63faf
2020-02-26 07:07:44 -08:00
Googler 52cd711ab7 Make sure cc_shared_library is guarded by flag
The --experimental_cc_shared_library used to block API methods
that were needed in the cc_shared_library implementation. However, these
methods have been made freely available to everyone so that people can start
migrating to the new API.

With that change, the cc_shared_library has become free to use unless we block
it with the method call added in this CL.

RELNOTES:none
PiperOrigin-RevId: 297127873
Change-Id: I103fe7724b9c4956a5bee8bed0f6d074a6e453f1
2020-02-25 08:58:44 -08:00
Googler 286f85b5a2 C++: Adds clang resource-dir to include paths to be searched
Fixes #10510

RELNOTES:none
PiperOrigin-RevId: 297089846
Change-Id: I06e0c6557fd83698a096b2b23a78895b1ec78500
2020-02-25 04:39:35 -08:00
Googler 726dd81575 Remove attribute for visibility file.
The same command line can be obtained with the attributes
user_link_flags and additional_linker_inputs used together.

In the first design iterations of cc_shared_library it was decided to have the
visibility_file attribute so that a cc_shared_library could be used for many
different platforms smoothly.

For this to work the visibility file would have had to be platform neutral and
then Bazel would have had to write a visibility file specific for each
platform, e.g. the version script for Unix and the exports map for Windows.

However, in the last approved design it was decided not to have Bazel get in
the business of understanding symbols and automatically writing export maps.

With this approach, it then became necessary for people to use selects() in the
visibility_file attribute depending on the platform that the file was for.

Since we have added a new way to add files with the attribute
additional_linker_inputs and we need selects() anyway,
it doesn't make sense to keep the visibility_file attribute, the
same can be achieved with selects in the other two attributes mentioned.

In any case, if this can be made more ergonomic in the future, we can do so.
However, removing this attribute after flipping the experimental flag would be
an incompatible change.

PiperOrigin-RevId: 295925566
Change-Id: I52733e006f4b0f79f50380e89fc2eeae58dbad4d
2020-02-19 02:22:42 -08:00
Googler 0893766cef Allow unlimited number of additional linker inputs for cc_shared_library
RELNOTES:none
PiperOrigin-RevId: 295908805
Change-Id: I42a727d6ab0f4d342036df39a131d66ecd62734e
2020-02-19 00:10:00 -08:00
Googler 8f87c5e364 C++: Fixes order for cc_shared_library linked libs
Before dynamic lib dependencies of cc_shared_library were always linked at the
end. Now for creating the command line we respect the topological order that
would be given when getting the libs from the dependency graph created by the
cc_libraries.

RELNOTES:none
PiperOrigin-RevId: 295676824
Change-Id: I327a0e10920f18fed234dd5835e54cab75a0d428
2020-02-18 00:20:42 -08:00
Googler 810a11e772 C++: Allow libraries to be exported by any target
Any library should be exportable by any cc_shared_library target regardless of whether the cc_shared_library target is in the same package or a parent package as long as the library author gives permission.

The library author can now do this by writing tags=["exported_by=//foo,//baz"].

PiperOrigin-RevId: 295137965
Change-Id: I4acffd26981fedd6cb0c505e2691da0c70a7b6b0
2020-02-14 06:59:11 -08:00
Googler a2060ec7c9 C++: Remove linked_statically_by from cc_shared_library
RELNOTES:none
PiperOrigin-RevId: 295131987
Change-Id: I507106a7553da61f706b64c9232e4b7ea9a180d9
2020-02-14 06:11:35 -08:00
Googler 4de26b53a6 Remove need for exported_by or linked_statically_by
For now we will restrict allowed exports to the same package. At the same time
static_deps should be used to take into account what should be linked into a
shared library.

RELNOTES:none
PiperOrigin-RevId: 294668451
Change-Id: Ia087519106983bfa9a980e471d3102ab391a53eb
2020-02-12 08:01:50 -08:00
Googler cd0fa354f6 Remove linked_statically_by attribute for test
This is in preparation to renaming linked_statically_by to exported_by. The attribute linked_statically_by became redundant in a previous CL that added the static_deps attribute and made libraries in exports be linked statically automatically.

RELNOTES:none
PiperOrigin-RevId: 293355106
Change-Id: Iac987087e2f8e280f0fcaa2b7fcf61c55542825b
2020-02-05 06:24:04 -08:00
Googler 519989d3d5 Introduces static_deps attribute to cc_shared_library.
This removes the need for linked_statically_by, although both attributes work for now. The attribute linked_statically_by will disappear from cc_library and instead we will add exported_by which will allow library authors to retain the power of deciding who exports their library.

When a library is linked statically by more than one shared library and this library was only supposed to be linked once, i.e. it contains static initializers, then Bazel will give an error.

PiperOrigin-RevId: 293319906
Change-Id: I3713511e09feffb9429d38ac3ae868498ed4afe6
2020-02-05 01:25:55 -08:00
Copybara-Service 6546ee9822 Merge pull request #54 from arturdryomov:ad/readme
PiperOrigin-RevId: 292902629
Change-Id: I96ce35f974d4a0700008124ad9b66bff6d6ff254
2020-02-03 05:52:18 -08:00
Artur Dryomov 2d1f48d061
Replace Python with Starlark. 2020-02-03 09:25:33 +03:00
Artur Dryomov 6600161826
Merge branch 'master' into ad/readme 2020-02-03 09:24:32 +03:00
Googler 9e10b8a6db Include static libraries in link order before dynamic libraries
PiperOrigin-RevId: 291984417
Change-Id: I3135a5eac0ff41e976da04e3e2691da841e4a741
2020-01-28 12:00:30 -08:00