Releases: bazelbuild/rules_swift
0.8.0
- This release is tested with Bazel 0.24.
-simulator
is now added to the target triple passed toswiftc
(e.g., "-target x86_64-apple-ios10.3-simulator") by the Xcode toolchain when targeting simulator platforms. (73c2508) Thanks @kastiglione!- The Xcode toolchain now supports dynamically linking to Swift runtimes distributed with the OS (which is the case on macOS 10.14.4 and higher). (d0f1415)
- The
allow_testing
parameter toswift_common.compile_as_{library,objects}
is now deprecated. To control testability of code compiled with these APIs, you should now set or unset the"swift.enable_testing"
feature in your feature configuration. (62b3b4c) - The
objc_fragment
andswift_fragment
arguments toswift_common
compilation APIs are now deprecated. (957cdae) - The
feature_configuration
argument is now required for thecompile_as_objects
,compile_as_library
, andswiftc_command_line_and_inputs
methods inswift_common
. (fb38185)
Thanks to the following contributors:
- Dave Lee (@kastiglione): 73c2508, 13acad9
- Keith Smiley (@keith): b22ce2b
Please use the rules_swift.0.8.0.tar.gz
release asset from your Bazel WORKSPACE
.
SHA-256 digest: 31aad005a9c4e56b256125844ad05eb27c88303502d74138186f9083479f93a6
0.7.0
-
This release is tested with Bazel 0.23.0.
-
swift_library
now lists the Objective-C bridging header as one of its output files. -
The
cc_libs
andmodule_link_name
attributes have been removed from the Swift rules. If you need to create a static library that contains both Swift and C++ code, have theswift_library
depend on thecc_library
and then use another rule, such as agenrule
, to combine the archives.To replace the behavior of the
module_link_name
attribute, pass the-module-link-name <name>
flags directly in the target'scopts
. This change no longer affects the name of the output library; it is the responsibility of the user to ensure that the.a
file that is output by the rule matches the link name embedded in the module. This allows the link name to refer to an archive emitted by a different rule, such as one that merges static archives as described above. -
Feature-related APIs in
swift_common
have changed slightly. Theget_{disabled,enabled}_features
methods have been removed, andis_enabled
has been added. Also, the Swift feature configuration now embeds a C++ feature configuration (accessible by callingswift_common.cc_feature_configuration
) for users who need to call C++ APIs with a feature configuration compatible with the Swift toolchain's underlying C++ toolchain. -
Uses of the legacy
"cc"
provider have been migrated to the newCcInfo
provider. -
Uses of the legacy
"instrumented_files"
provider have been migrated to the newInstrumentedFilesInfo
provider. -
Information in
SwiftInfo
providers is no longer lost when passing through a non-Swift target (such asobjc_library
). In some cases, build graphs could be constructed that caused upstream Swift compilations to not be passed the.swiftmodule
files they needed to perform type lookups.
0.6.0
- This release is tested with Bazel 0.21.0.
- Incompatible change: The
resources
andstructured_resources
ofswift_library
have been removed. Replace them as follows:- Files and labels referenced in
resources
can be placed directly in the library'sdata
attribute. - Files and labels referenced in
structured_resources
should be moved to thestructured_resources
of a newapple_resource_group
target (defined in rules_apple) and that target should be placed in the library'sdata
attribute.
- Files and labels referenced in
0.5.0
- This release is tested with Bazel 0.20.0.
- Support linking prebuilt framework dependencies (
objc_framework
and the newapple_framework_import
rule in rules_apple) intoswift_{binary,test}
targets. - Allow Objective-C rules to depend on
swift_import
targets. - Add
alwayslink
support toswift_{binary,test}
. - Add
-pie
flag when linking on Linux. - Add descriptive progress messages to most actions.
- Add dependency on bazelbuild/apple_support.
0.4.0
- This release is tested with Bazel 0.19.0.
- Minor debugging improvements.
- Support batch mode compilation for Xcode 10 or higher (macOS only at this time).
- Propagate simple defines between Swift and Objective-C targets.
- Ensure that transitive headers are available when a
swift_library
depends on acc_library
, and that their include paths are correct. - A number of compatibility and cleanup fixes for more recent Bazel versions (thanks @keith and @kastiglione!)
0.3.1
0.3.0
- rules_swift now requires Bazel 0.16.0.
- Linux users must now set
CC=clang
in their environment to linkswift_{binary,test}
targets. - Fixes cross-repository references among protos and well-known types (thanks @steeve!)
- Fixes module name derivation for targets containing
.
(thanks @gwik!) - Serializes debugging options into
.swiftmodule
files until a proper path remapping solution is available. - Exposes common attribute sets in
swift_common
to make it easier to write custom Swift rules. .swiftdoc
files are now propagated bySwiftInfo
.- Additional bug fixes and refactorings.
0.2.0
0.1.1
0.1.0
Initial release.
This repository contains a full suite of Swift build rules for Bazel (swift_library
, swift_binary
, swift_test
, and others).
In particular, the swift_library
rule in this library is intended to replace the rule of the same name in bazelbuild/rules_apple. As of now, all Swift-specific compiling/linking logic will be implemented in this repository and is cross-platform, supporting both Apple operating system as well as Linux.