Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion swiftpkg/internal/pkginfos.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -1212,19 +1212,25 @@ def _new_swift_settings(build_settings):
"""
defines = []
unsafe_flags = []
experimental_features = []
for bs in build_settings:
if bs.kind == build_setting_kinds.define:
defines.append(bs)
elif bs.kind == build_setting_kinds.unsafe_flags:
unsafe_flags.append(bs)
elif bs.kind == build_setting_kinds.experimental_features:
experimental_features.append(bs)
else:
# We do not recognize the setting.
pass
if len(defines) == 0 and len(unsafe_flags) == 0:
if len(defines) == 0 and \
len(unsafe_flags) == 0 and \
len(experimental_features) == 0:
return None
return struct(
defines = defines,
unsafe_flags = unsafe_flags,
experimental_features = experimental_features,
)

def _new_linker_settings(build_settings):
Expand Down Expand Up @@ -1407,6 +1413,7 @@ build_setting_kinds = struct(
linked_framework = "linkedFramework",
linked_library = "linkedLibrary",
unsafe_flags = "unsafeFlags",
experimental_features = "enableExperimentalFeature",
)

# MARK: - API Definition
Expand Down
4 changes: 4 additions & 0 deletions swiftpkg/internal/swiftpkg_build_files.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,10 @@ def _swift_target_build_file(pkg_ctx, target):
bzl_selects.new_from_build_setting(bs)
for bs in target.swift_settings.unsafe_flags
]))
if len(target.swift_settings.experimental_features) > 0:
for bs in target.swift_settings.experimental_features:
copts.append("-enable-experimental-feature")
copts.extend(lists.flatten(bzl_selects.new_from_build_setting(bs)))

if len(defines) > 0:
attrs["defines"] = bzl_selects.to_starlark(defines)
Expand Down
9 changes: 8 additions & 1 deletion swiftpkg/tests/swiftpkg_build_files_tests.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,10 @@ _pkg_info = pkginfos.new(
],
),
),
pkginfos.new_build_setting(
kind = build_setting_kinds.experimental_features,
values = ["BuiltinModule"],
),
pkginfos.new_build_setting(
kind = build_setting_kinds.unsafe_flags,
values = ["-cross-module-optimization"],
Expand Down Expand Up @@ -544,7 +548,10 @@ load("@build_bazel_rules_swift//swift:swift.bzl", "swift_binary")

swift_binary(
name = "Source_SwiftExecutableTarget",
copts = select({
copts = [
"-enable-experimental-feature",
"BuiltinModule",
] + select({
"@rules_swift_package_manager//config_settings/spm/configuration:release": ["-cross-module-optimization"],
"//conditions:default": [],
}),
Expand Down