Skip to content

Commit f55aabd

Browse files
committed
Add support for clang modules in experimental_mixed_language_library
1 parent 82ade19 commit f55aabd

File tree

4 files changed

+18
-7
lines changed

4 files changed

+18
-7
lines changed

apple/internal/experimental_mixed_language_library.bzl

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ def experimental_mixed_language_library(
195195
name,
196196
srcs,
197197
deps = [],
198+
enable_modules = False,
198199
module_name = None,
199200
objc_copts = [],
200201
swift_copts = [],
@@ -212,13 +213,14 @@ def experimental_mixed_language_library(
212213
it easier to migrate codebases with mixed language modules to Bazel without
213214
having to demix them first.
214215
215-
This macro only supports a very simple use case of mixed language
216-
modules---it does not support for header maps or Clang modules.
216+
This macro only supports a simple use case of mixed language
217+
modules, it does not support header maps.
217218
218219
Args:
219220
name: A unique name for this target.
220221
deps: A list of targets that are dependencies of the target being
221222
built, which will be linked into that target.
223+
enable_modules: Enables clang module support for the Objective-C target.
222224
module_name: The name of the mixed language module being built.
223225
If left unspecified, the module name will be the name of the
224226
target.
@@ -267,6 +269,7 @@ target only contains Objective-C files.""")
267269
swift_library_name = name + ".internal.swift"
268270

269271
objc_deps = []
272+
objc_copts = [] + objc_copts
270273
swift_deps = [] + deps
271274

272275
swift_copts = swift_copts + [
@@ -275,6 +278,12 @@ target only contains Objective-C files.""")
275278
"-import-underlying-module",
276279
]
277280

281+
# Modules is not enabled if a custom module map is present even with
282+
# `enable_modules` set to `True` in `objc_library`. This enables it via copts.
283+
# See: https://github.com/bazelbuild/bazel/issues/20703
284+
if enable_modules:
285+
objc_copts.append("-fmodules")
286+
278287
objc_deps = [":" + swift_library_name]
279288

280289
# Add Obj-C includes to Swift header search paths

doc/rules-apple.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -375,8 +375,8 @@ ios_application(
375375
## experimental_mixed_language_library
376376

377377
<pre>
378-
experimental_mixed_language_library(<a href="#experimental_mixed_language_library-name">name</a>, <a href="#experimental_mixed_language_library-srcs">srcs</a>, <a href="#experimental_mixed_language_library-deps">deps</a>, <a href="#experimental_mixed_language_library-module_name">module_name</a>, <a href="#experimental_mixed_language_library-objc_copts">objc_copts</a>, <a href="#experimental_mixed_language_library-swift_copts">swift_copts</a>,
379-
<a href="#experimental_mixed_language_library-swiftc_inputs">swiftc_inputs</a>, <a href="#experimental_mixed_language_library-testonly">testonly</a>, <a href="#experimental_mixed_language_library-kwargs">kwargs</a>)
378+
experimental_mixed_language_library(<a href="#experimental_mixed_language_library-name">name</a>, <a href="#experimental_mixed_language_library-srcs">srcs</a>, <a href="#experimental_mixed_language_library-deps">deps</a>, <a href="#experimental_mixed_language_library-enable_modules">enable_modules</a>, <a href="#experimental_mixed_language_library-module_name">module_name</a>, <a href="#experimental_mixed_language_library-objc_copts">objc_copts</a>,
379+
<a href="#experimental_mixed_language_library-swift_copts">swift_copts</a>, <a href="#experimental_mixed_language_library-swiftc_inputs">swiftc_inputs</a>, <a href="#experimental_mixed_language_library-testonly">testonly</a>, <a href="#experimental_mixed_language_library-kwargs">kwargs</a>)
380380
</pre>
381381

382382
Compiles and links Objective-C and Swift code into a static library.
@@ -390,8 +390,8 @@ mixed language modules in some old codebases. This macro is meant to make
390390
it easier to migrate codebases with mixed language modules to Bazel without
391391
having to demix them first.
392392

393-
This macro only supports a very simple use case of mixed language
394-
modules---it does not support for header maps or Clang modules.
393+
This macro only supports a simple use case of mixed language
394+
modules, it does not support header maps.
395395

396396

397397
**PARAMETERS**
@@ -402,6 +402,7 @@ modules---it does not support for header maps or Clang modules.
402402
| <a id="experimental_mixed_language_library-name"></a>name | A unique name for this target. | none |
403403
| <a id="experimental_mixed_language_library-srcs"></a>srcs | The list of Objective-C and Swift source files to compile. | none |
404404
| <a id="experimental_mixed_language_library-deps"></a>deps | A list of targets that are dependencies of the target being built, which will be linked into that target. | `[]` |
405+
| <a id="experimental_mixed_language_library-enable_modules"></a>enable_modules | Enables clang module support for the Objective-C target. | `False` |
405406
| <a id="experimental_mixed_language_library-module_name"></a>module_name | The name of the mixed language module being built. If left unspecified, the module name will be the name of the target. | `None` |
406407
| <a id="experimental_mixed_language_library-objc_copts"></a>objc_copts | Additional compiler options that should be passed to `clang`. | `[]` |
407408
| <a id="experimental_mixed_language_library-swift_copts"></a>swift_copts | Additional compiler options that should be passed to `swiftc`. These strings are subject to `$(location ...)` and "Make" variable expansion. | `[]` |

examples/multi_platform/MixedLib/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ experimental_mixed_language_library(
1212
"MixedAnswer.swift",
1313
],
1414
hdrs = ["MixedAnswer.h"],
15+
enable_modules = True,
1516
)
1617

1718
swift_library(

examples/multi_platform/MixedLib/MixedAnswer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#import <Foundation/Foundation.h>
1+
@import Foundation;
22

33
@interface MixedAnswerObjc : NSObject
44

0 commit comments

Comments
 (0)