Commit Graph

344 Commits

Author SHA1 Message Date
hlopko 5743a325d1 Add examples on how to integrate with rules_cc
RELNOTES: None.
PiperOrigin-RevId: 233926824
2019-02-14 13:22:51 +01:00
hlopko 7caec85c2c Improve rules_cc copybara
* # copybara-scrub suffix now works in BUILD and bzl files
* //tools/cpp is rewritten to @bazel_build//tools/cpp **in any filetype**
* //third_party/bazel_rules/rules_cc is rewritten to // **in any filetype**

PiperOrigin-RevId: 233919400
2019-02-14 13:22:37 +01:00
hlopko d485e267a5 Enable features that were previously enabled by Bazel in legacy_fields_migrator
https://github.com/bazelbuild/bazel/issues/6861

RELNOTES: None.
PiperOrigin-RevId: 233735389
2019-02-13 05:40:50 -08:00
hlopko 49a6c21b32 Do not use static_linking_mode for dynamic libraries and objc rules
Another dark corner corner of crosstools appeared, and apparently we didn't enable MOSTLY STATIC linking mode flags for dynamic libraries or objc. This cl addresses that in the legacy fields migrator.

RELNOTES: None.
PiperOrigin-RevId: 233397974
2019-02-11 06:47:26 -08:00
hlopko dfb180b486 Migrate repeated expand_if_(all|none)_available into nested flag_groups
Crosstool in Starlark assumes these fields as singular, not collections. This cl updates the migration script to prepare crosstool in proto for this.

https://github.com/bazelbuild/bazel/issues/6861
https://github.com/bazelbuild/bazel/issues/5883

RELNOTES: None.
PiperOrigin-RevId: 233041028
2019-02-08 04:53:52 -08:00
rosica 903ad72c43 Make CToolchain comparator ignore differences in CToolchain.Tool.tool_path and CToolcain.ToolPath.path when one is "" and the other "NOT_USED"
Starlark constructors for tool_path and tool do not allow empty strings for the path field. Therefore the migrator replaces the "" with "NOT_USED". We should ignore this difference when comparing the CToolchains.

#5380

PiperOrigin-RevId: 232827179
2019-02-07 01:04:52 -08:00
rosica d4fef61119 Add feature declaration tests
And fix an error where we added previously unseen action_names to the dictionary of familiar ACTION_NAMES, so later when we would encounter them, we would treat them as variables, not as string literals
eg
env_set {
  action = "a"
}
would translate to
env_set(
  actions = [a],
)
which is, obviously wrong.

Issue #5380

PiperOrigin-RevId: 232817515
2019-02-06 23:50:49 -08:00
rosica e02152f86e Remove fail("Unreachable") from features' and action_configs' declaration statements
If toolchain A and B need feature f, but toolchain C doesn't, the generated declaration statement for feature f would be:
if ctx.attr.cpu == 'A.cpu':
   f = feature(...)
elif ctx.attr.cpu == "B.cpu" and ctx.attr.compiler == "B.compiler":
   f = feature(...)
else:
   fail("Unreachable")

This will break the rule implementation in the case of toolchain C because it will reach the  fail("Unreachable") although it doesn't need to declare feature f

This cl fixes that

Issue #5380

PiperOrigin-RevId: 232683639
2019-02-06 08:56:10 -08:00
rosica de27916485 Fix action_config names
If an action_config's name doesn't appear in the action_names.bzl, eg action-a.b+c, in it's assignments statement we would declare it as:
action_a.b+c_action = action_config( ...

This cl fixes it to create the action_config variable with the +, - and .
It also adds tests for action_config

Issue #5380

PiperOrigin-RevId: 232681355
2019-02-06 08:41:22 -08:00
rosica 9432a5a6e8 Make crosstool to starlark converter error out if it comes across multiple expand_if_all_available or expand_if_none_available in a single flag_group
PiperOrigin-RevId: 232499399
2019-02-05 09:20:21 -08:00
rosica 1576db8e94 Fix paths resolving for --crosstool and --output_location.
This is to make the script usable from bazel run

PiperOrigin-RevId: 232472300
2019-02-05 06:09:25 -08:00
rosica ba06942f95 Fix flag parsing
PiperOrigin-RevId: 232470483
2019-02-05 05:57:20 -08:00
dslomov 081d3ef0ad Add CODEOWNERS for rules_cc.
RELNOTES: None.
PiperOrigin-RevId: 232448494
2019-02-05 02:22:15 -08:00
Googler f76ab4888a Migrate Apple CROSSTOOL to starlark.
RELNOTES: None.
PiperOrigin-RevId: 231209609
2019-01-28 06:40:54 -08:00
rosica b3a83d701a Add a script for converting CROSSTOOL files to Starlark rules
Progress towards issue #5380

RELNOTES: None
PiperOrigin-RevId: 230795058
2019-01-24 14:54:38 -08:00
hlopko 0f72a1209b Fix rules_cc badge
RELNOTES: None.
PiperOrigin-RevId: 230732829
2019-01-24 09:10:10 -08:00
hlopko ddf13fe1da Don't require supports_fission to be set in the crosstool
Having a 'per_object_debug_data' feature enabled is giving the same signal as having supports_fission enabled. This is a safe change because all crosstools that have supports_fission: true have per_object_debug_info disabled, and with the legacy crosstool fields migration we will migrate this feature to be enabled by default for these crosstools.

https://github.com/bazelbuild/bazel/issues/6861
https://github.com/bazelbuild/bazel/issues/5883

RELNOTES: None.
PiperOrigin-RevId: 230701029
2019-01-24 04:55:15 -08:00
hlopko a9932b3939 Make ctoolchain_compare.bzl more robust by using ctx.label.name as generated files name.
This ensures that the generated files will be unique in the package and therefore there won't be action conflict.

RELNOTES: None.
PiperOrigin-RevId: 230514342
2019-01-23 05:42:09 -08:00
hlopko b8be74cc45 Change rules_cc badge to only show master branch status
RELNOTES: None.
PiperOrigin-RevId: 230198892
2019-01-21 02:54:52 -08:00
Googler da4639bd1f Actually cause the comparator / test to fail when there is an error reading one
of the toolchains.

Cosmetic spacing fixes for strings that will be concatenated and fixed a typo.

PiperOrigin-RevId: 229961708
2019-01-18 11:20:25 -08:00
Googler dc71ef6ea6 Make it possible to test multiple configs in the same BUILD file.
PiperOrigin-RevId: 229960389
2019-01-18 11:13:22 -08:00
rosica 0627ae379c Create a test rule that compares CToolchains from CROSSTOOL file and from Starlark rule
Work towards issue #5380
RELNOTES: None
PiperOrigin-RevId: 229928313
2019-01-18 07:56:03 -08:00
rosica f64680e017 Make ctoolchain_comparator.py throw exit(1) when CToolchains differ
While here, Also fix _read_crosstool_or_ctoolchain_proto to actually return the CToolchain found in the CROSSTOOL file, and add some missing \n.

RELNOTES: None.
PiperOrigin-RevId: 229926500
2019-01-18 07:37:16 -08:00
hlopko f9cdb36627 Always put linker_flags from linking_mode_flags.DYNAMIC to nodeps-dynamic-library
This cl fixes a bug in the migrator where it didn't pass mentioned flags to c++-nodeps-dynamic-library unconditionally (it only passed them as with feature { feature: 'dynamic_linking_mode' }, which is incorrect, the feature doesn't not apply to nodeps-dynamic-library, only to transitive linking actions.

https://github.com/bazelbuild/bazel/issues/6861
https://github.com/bazelbuild/bazel/issues/5883

RELNOTES: None.
PiperOrigin-RevId: 229692958
2019-01-17 00:07:27 -08:00
hlopko 0fd5bb9b75 Rename/remove fields referencing legacy features in legacy_fields_migrator
When renaming legacy_*_flags to default_*_flags, also rename other fields such as requires.

We're intentionally not replacing the implies line, just removing it, because default_*_features are enabled by default, so they don't need to be implied (Implied field is older than enabled field, so there are uses of it where enabled would work just fine. The only semantic difference is that implied features cannot be disabled, whereas enabled can. But since the standard style of writing crosstools seems to prefer enabled, I'm doing the same here.)

https://github.com/bazelbuild/bazel/issues/6861
https://github.com/bazelbuild/bazel/issues/5883

RELNOTES: None.
PiperOrigin-RevId: 229518029
2019-01-16 01:41:22 -08:00
hlopko f79b9301fa Add buildkite badge to rules_cc readme
RELNOTES: None.
PiperOrigin-RevId: 229379408
2019-01-15 08:54:24 -08:00
hlopko 04195ada17 Fix legacy_fields_migrator
Another round of fixes:

* if the toolchain contains legacy_compile_flags or legacy_link_flags, replace the feature with default_compile_flags or default_link_flags. This is to ensure the location of the flags stays intact.
* it fixes the order of compilation flags, the correct order is:
  1) compiler_flag
  2) compilation_mode_flags.compiler_flag
  3) cxx_flag
  4) compilation_mode_flags.cxx_flag
* We don't add cxx_flags to assemble and preprocess-assemble actions
* We don't add sysroot to assemble action

https://github.com/bazelbuild/bazel/issues/6861
https://github.com/bazelbuild/bazel/issues/5883

RELNOTES: None.
PiperOrigin-RevId: 229336027
2019-01-15 02:09:19 -08:00
hlopko 5a13c61858 Fix typo in readme
RELNOTES: None.

PiperOrigin-RevId: 229193101
2019-01-14 09:06:25 -08:00
hlopko e08b244cc5 Test rules_cc postsubmit pipeline
RELNOTES: None.
PiperOrigin-RevId: 228871773
2019-01-11 06:18:23 -08:00
hlopko c0ac741cbe Improve legacy_fields_migrator to work properly for objc crosstools
https://github.com/bazelbuild/bazel/issues/5883
https://github.com/bazelbuild/bazel/issues/6861

RELNOTES: None.
PiperOrigin-RevId: 228839863
2019-01-11 00:11:34 -08:00
hlopko 9a340db871 Fix inconsistencies in rules_cc WORKSPACE file
RELNOTES: None.
PiperOrigin-RevId: 228839269
2019-01-11 00:05:36 -08:00
hlopko eefe53ee7c Add initial bazelci config for rules_cc
RELNOTES: None.
PiperOrigin-RevId: 228509583
2019-01-11 00:05:29 -08:00
hlopko e9752a83c6 Add rules_cc deps to bazel-mirror
RELNOTES: None.
PiperOrigin-RevId: 228469668
2019-01-11 00:05:25 -08:00
hlopko da4c91577a Add repository for py.mock to rules_cc
RELNOTES: None.
PiperOrigin-RevId: 228326658
2019-01-09 08:59:42 +01:00
hlopko 281a8bc480 Add BUILD.third_party to rules_cc
Only to make //third_party a package

RELNOTES: None
PiperOrigin-RevId: 228316989
2019-01-09 08:59:30 +01:00
rosica 175f81c847 Add a script for comparing CToolchian built from different CROSSTOOL/Ctoolchain proto text files
Progress towards #5380

RELNOTES: None.
PiperOrigin-RevId: 228312688
2019-01-09 08:59:20 +01:00
hlopko 246bff6d0e Add things needed for rules_cc to build & test in the open
* Adding .gitignore
* Referencing protobuf, absl, and six in the WORKSPACE
* Adding six.BUILD

RELNOTES: None
PiperOrigin-RevId: 228309963
2019-01-09 08:59:09 +01:00
hlopko 63003094c9 Make cc_embed_data.bzl forward compatible with removal of legacy crosstool fields
RELNOTES: None
PiperOrigin-RevId: 228301880
2019-01-09 08:58:59 +01:00
hlopko f835b8bea2 Fix legacy_fields_migrator
This cl fixes:

* clears 'supports_embedded_runtimes'
* adds user_compile_flags and sysroot feature
  * these are needed to appear before unfiltered_compile_flags

Progress towards:
https://github.com/bazelbuild/bazel/issues/6861
https://github.com/bazelbuild/bazel/issues/5883

RELNOTES: None.
PiperOrigin-RevId: 228299172
2019-01-09 08:58:48 +01:00
hlopko 91210fecfb Add WORKSPACE to rules_cc
PiperOrigin-RevId: 228298222
2019-01-09 08:58:36 +01:00
hlopko 05d087e921 Make bazel option --collect_symbol_counts a noop
Our reasoning:
* it only works with gold
* it was broken for the last 3 months (since unknown commit) (silently did
nothing and nobody complained)
* we see almost zero usage of this option

RELNOTES: None.
PiperOrigin-RevId: 228116158
2019-01-09 08:58:26 +01:00
hlopko 17818b2501 Add initial content of rules_cc repo
RELNOTES: None.
PiperOrigin-RevId: 227846116
2019-01-09 08:58:14 +01:00
hlopko 30e32836fa Add --inline option to legacy_fields_migrator
https://github.com/bazelbuild/bazel/issues/5883

RELNOTES: None.
PiperOrigin-RevId: 227827560
2019-01-09 08:58:04 +01:00
hlopko b809b1312f Fix edge cases of legacy crosstool migrator
https://github.com/bazelbuild/bazel/issues/5883

RELNOTES: None.
PiperOrigin-RevId: 227688115
2019-01-09 08:57:53 +01:00
hlopko 37f9cc51a5 Add --incompatible_disable_expand_if_all_available_in_flag_set
Corresponding issue: https://github.com/bazelbuild/bazel/issues/7008

RELNOTES: None.
PiperOrigin-RevId: 227522028
2019-01-09 08:57:41 +01:00
hlopko 169818c32d Allow setting needsPic crosstool capability using feature
`needsPic` can now be expressed using 'pic' feature (should be enabled for it to take effect).

This cl is a step towards https://github.com/bazelbuild/bazel/issues/5883. Also
see the rollout doc here:
https://docs.google.com/document/d/1uv4c1zag6KvdI31qdx8C6jiTognXPQrxgsUpVefm9fM/edit#.

Flag removing legacy behavior is https://github.com/bazelbuild/bazel/issues/6861

RELNOTES: None.
PiperOrigin-RevId: 227134726
2019-01-09 08:57:31 +01:00
hlopko c8a8211959 Allow setting supports_embedded_runtimes crosstool capability using feature
`supports_embedded_runtimes` can now be expressed using 'static_link_cpp_runtimes' feature (should be enabled for it to take effect).

This cl allows toolchain owners to express that toolchain supports embedded runtimes in the same way as other crosstool capabilities are expressed.

This cl is a step towards https://github.com/bazelbuild/bazel/issues/5883. Also
see the rollout doc here:
https://docs.google.com/document/d/1uv4c1zag6KvdI31qdx8C6jiTognXPQrxgsUpVefm9fM/edit#.

Flag removing legacy behavior is https://github.com/bazelbuild/bazel/issues/6861

RELNOTES: None.
PiperOrigin-RevId: 227024509
2019-01-09 08:57:20 +01:00
hlopko 8062601195 Allow setting supports_fission crosstool capability using feature
`supports_fission` can now be expressed using 'per_object_debug_info' feature (should be enabled for it to take effect).

This cl is a step towards https://github.com/bazelbuild/bazel/issues/5883. Also
see the rollout doc here:
https://docs.google.com/document/d/1uv4c1zag6KvdI31qdx8C6jiTognXPQrxgsUpVefm9fM/edit#.

Flag removing legacy behavior is https://github.com/bazelbuild/bazel/issues/6861

RELNOTES: None.
PiperOrigin-RevId: 226950450
2019-01-09 08:57:10 +01:00
hlopko 392be757fe Cleanup uses of supports_dsym
Apparently it's not used, so removing traces of it.

RELNOTES: None.
PiperOrigin-RevId: 226486811
2019-01-09 08:56:59 +01:00
hlopko e327d70146 Mark unused crosstool fields
RELNOTES: None.
PiperOrigin-RevId: 226302225
2019-01-09 08:56:44 +01:00