Releases: MobileNativeFoundation/rules_xcodeproj
0.7.0: Improved Performance, Custom Schemes, and Focused Projects
What’s Changed
⚠️ Breaking Changes ⚠️
xcodeproj
'stargets
attribute has been renamed totop_level_targets
: #831- This is to better reflect what types of targets you should list here. Listing dependencies of top-level targets (including
device_and_simulator
) will result in additional incorrectly configured targets in your project.
- This is to better reflect what types of targets you should list here. Listing dependencies of top-level targets (including
New
- Added C++ support to BwB: #787
- Added initial support for custom schemes: #803, #808, #809
- Added support for manually defined Focused Projects: #826
- These are defined by specifying labels in the
focused_targets
and/orunfocused_targets
attributes onxcodeproj
- These are defined by specifying labels in the
Fixes and Improvements
- Disabled BES for Index Builds: #736
- Improved handling of
linkopts
: #738, #737, #745, #747, #746, #750, #751, #757, #765, #777, #785, #789, and #829 - Improved handling of "simple" projects (BwX with no generated files): #743
- Most Bazel generated files are no longer copied into Derived Data: #744, #749, #752, #754, #760, #761, #768, #767, #771, #773, #775, #780
- Improved handling of automatic unfocused targets (i.e. "Xcode unsupported" targets): #753, #824, and #830
- Fixed errors when using
--incompatible_enable_cc_toolchain_resolution
: #756 - Fixed launching of tests with test hosts with custom
executable_name
: #758 EXECUTABLE_EXTENSION
is now only set when it differs from the default: #759- Improved handling of resources: #769, #788, #814, #883, and #886
- Improved handling of
Info.plist
s: #770, #778, and #793 - Improved handling of entitlements: #774 and #776
- Improved third-party rule support: #781 and #782
- Reduced spec.json size: #791, #814, #827, #875
BazelDependency
now only generates files for the specified target: #796, #851, and #862- Reduced amount of work done during project generation: #797 and #880
- Improved formatting of generated schemes to better match what Xcode expects: #800
- Fixed calculation of
*_DEPLOYMENT_TARGET
build settings: #843 - Greatly improved handling of Swift -> Objective-C debugging: #836, #876, #877, #879
- Improved handling of
cc_binary
andswift_binary
: #840 and #874 - Moved intermediate files to
$OBJROOT
: #860 - Improved indexing: #880
Full Changelog: 0.6.0...0.7.0
Contributors
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_buildbuddy_io_rules_xcodeproj",
sha256 = "a647ad9ee6664a78377cf5707331966b6788be09d1fea48045a61bc450c8f1b1",
url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.7.0/release.tar.gz",
)
load(
"@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
0.6.0: Embedded Targets
What’s Changed
New
- Added support for Watch Apps: #657, #661, #666, #660, #665, and #718
- Added support for App Extensions: #689, #687, #699, #701, #720, #634, and #723
- Added support for iMessage Apps: #728, #729
- Added support for App Clips: #731 and #732
- Added support for the
launchdplists
attribute: #684 - Added support for the
executable_name
attribute: #721
Fixes and Improvements
- Various fixes for unmerged top-level targets: #669, #673, #674, #725, #726
- Improved linker flag handling: #670
- Removed invalid target merges warning: #671
- Fixed formatting of some build settings: #717 and #719
- Fixed handling of
$location()/$rootpath()
in copts: #722 - Fixed handling of
apple_resource_bundle
indeps
: #734
Full Changelog: 0.5.1...0.6.0
Contributors
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_buildbuddy_io_rules_xcodeproj",
sha256 = "0d53b6154c1296e5ac7885978b3b6430dcb88648c324e934f639e1f955184f41",
url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.6.0/release.tar.gz",
)
load(
"@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
0.5.1: --ld-path, exported_symbols_lists, and simple BwB projects
What’s Changed
A small bug fix/improvements release:
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD
is now only set for iOS targets: #635- Fixed
--ld-path
path processing: #639 - Fixed handing of targets with precompiled outputs as sources: #644
- Fixed some missing PCM header search paths: #645
- Fixed simple Build with Bazel project generation: #650 and #652
- Fixed accidental inclusion of
BUILD
file in internalbazel
folder: #654 - Added support for
exported_symbols_lists
: #649 and #655
Full Changelog: 0.5.0...0.5.1
Contributors
First PRs
- @luispadron made their first contribution in #647
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_buildbuddy_io_rules_xcodeproj",
sha256 = "6f382ee8151352c01c8900b1098eeb49172aac087120327b930c31c3c2e9b8ff",
url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.5.1/release.tar.gz",
)
load(
"@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
0.5.0: Improved rules support
What’s Changed
New
- Unknown rules are generically handled better
- For Bazel targets that can't be made into Xcode targets, we let Bazel build them and copy out the required outputs: #575, #578, #590, #591
- Bazel
features
needed by Build with Bazel are now enabled for Build with Xcode as well: #576 - The Build with Bazel custom lldbinit is used when Building with Xcode as well, to enable debugging of the copied swiftmodules: #581
- Various other fixes: #558, #598
- Added support for the
codesignopts
attribute: #593 - Added support for
swift_import
: #597 - Added support for the
alwayslink
attribute: #607, #608 - Finalized support for
apple_{dynamic,static}_{framework,xcframework}_import
: #609, #610, #625, #628 - Added
xcodeproj.scheme_autogeneration_mode
with support fornone
,auto
, andall
: #612
Fixes and Improvements
- Improvements to how entitlements are handled: #546, #547
- Fixed flakey output group check: #551
- Fixed handling of
--define=apple.experimental.tree_artifact_outputs=0
: #552 - Fixed missing App Icons in BwX mode: #556
- Fixed
TestAction
scheme ordering: #557 - Improved resource bundle handling: #559, #563, #564, #567, #571, #580, #599, #604, #605, #611, #624
- Breakpoints set from
swiftsourceinfo
now work: #579 - PCM flags now match what are set by rules_swift: #586, #595
- Reduced the size of the specification file passed between Bazel and
generator
: #600, #615, #621 - Improved collection of header files: #601
- Improved how linker flags are determined: #602
- Made file sorting more deterministic: #629
Breaking Changes
- Adjustments to
InputFileAttributesInfo
(now namedXcodeProjAutomaticTargetProcessingInfo
)
Full Changelog: 0.4.2...0.5.0
Contributors
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_buildbuddy_io_rules_xcodeproj",
sha256 = "728cb6089ad2f4c4de2003ce23462be662bfdd250a8735dc590e61fb7401e7d2",
url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.5.0/release.tar.gz",
)
load(
"@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
0.4.2: Info.plist is back and indexing improvements
What’s Changed
A small bug fix/improvement release:
- Improved indexing: #534, #536, #537, #544, #545
- Added back the Info.plist display for Built with Bazel device builds: #541
- Stopped including intermediate generated files: #542
Full Changelog: 0.4.1...0.4.2
Contributors
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_buildbuddy_io_rules_xcodeproj",
sha256 = "c35896feb752df214f0f79cdb3b78404662ca7d710a7069f18b81158c1f442e2",
url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.4.2/release.tar.gz",
)
load(
"@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
0.4.1: Debugging and device installation bug fixes
What’s Changed
A small bug fix release:
- Fixed debugging before indexing bazel-out has been created: #529
- Fixed reinstalls of Built with Bazel apps to device: #531
Full Changelog: 0.4.0...0.4.1
Contributors
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_buildbuddy_io_rules_xcodeproj",
sha256 = "7f617ea9f353567d6443f071391d29e0e365fae4b4c9ef2f7514437a9a3ea9e5",
url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.4.1/release.tar.gz",
)
load(
"@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
0.4.0: Improved Simulator and device support
What’s Changed
New
- Added experimental support for single targets to support both the Simulator and device destinations with the
device_and_simulator
rule: #457, #465, #466, #472, #473, #474, #477, #480, #490, #488, #491, #492, #496, #498, #503, #507, #511, #521 and more - Added experimental support for improved code signing settings with the
xcode_provisioning_profile
rule: #523 and #525
Fixes and Improvements
- More file extensions are now treated as header files: #468
- Non-header files are now filtered out from the Compile Source phase: #469
- Fixed swiftmodule copying during Index Build: #471
- Multiplatform targets now consolidate down to a single target in Xcode: #484, #493
- Improved scheme XML generation: #486, #494, #495
- Fixed a bug with
module.compilation_context
handling: #489 - Fixed possible output map collisions: #500
- Improved handling of generated files
BazelDependencies
: #508, #510, and #509 - Improved code signing support when using
local_provisioning_profile
: #505, #506, and #522 - Improved SwiftUI Previews support when Building with Bazel: #512, #513, #514, #516, #518, #519
-g
is now filtered from PCM compilation: #518- Fixed Building with Bazel in Xcode 14.0.0 Beta 1: #520
- Fixed running UI tests when Building with Bazel: #526
xcodeproj
'sBUILD
files are now added to the Project navigator: #528
Full Changelog: 0.3.0...0.4.0
Contributors
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_buildbuddy_io_rules_xcodeproj",
sha256 = "c6be5570ee76c2d427767ea8484b4f0193492bedfdf7dee0fbb735b8d4d37b9d",
url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.4.0/release.tar.gz",
)
load(
"@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
0.3.0: Initial Build with Bazel
What’s Changed
New
- Added initial support for Building with Bazel: #313, #316, #350, #359, #362, #384, #389, #394, #396, #401, #404, #405, #408, #407, #420, #422, #423, #425, #426, #440, #446, and more
⚠️ Support for Building with Bazel is still very rough, and has a bit more to go in order to reach our high level goals. Also, in Bazel versions that still have this bug, the rapidly changing nature of the support (which will involve more transitions changes) can make it annoying to use this mode. With that said, we would appreciate all the feedback we can get from early testers!⚠️
- Added support for
cc_library.includes
: #310 and #325 - Added support for
swift_library.private_deps
: #342 - Added support for
objc_import
: #347 - Schemes are now generated instead of letting Xcode generate them: #361, #397, and #385
- Added support for code signing entitlements: #367
- Added support for
objc_library.sdk_dylibs
: #372 - Added support for Core Data model files: #288
Fixes and Improvements
- Fixed explosive memory use of inefficient
_process_dependencies()
: #307 - Fixed projects failing to build after being moved: #319
- Improved indexing: #329 and #330
- Improved handling of projects without Bazel generated files: #331, #332, #337, and #381
- Improved handling of Bazel outputs: #333, #353, #430, #431, and #434
- Various linking improvements: #340, #345, #348, #365, #409
- Improved handling of frameworks: #346 and #444
- Objective-C is now used instead of Swift for the compile stub: #369
- A work around for an Xcode debugging crash related to
DYLD_LIBRARY_PATH
is now used: #373 - Various changes to ensure that
--incompatible_disallow_empty_glob
is supported - Removed color ansi codes from bazel output within Xcode: #410
- Info.plist patching warning is now silenced: #411
dbg
compilation mode is used when building insides Xcode: #413- Fixed default
GCC_OPTIMIZATION_LEVEL
: #412 - Fixed
-debug-prefix-map
handling: #416 - Improved disambiguation of targets with names that only differ by case: #424
- Improved filtering of input files: #442
Full Changelog: 0.2.0...0.3.0
Contributors
First PRs
- @maxwellE made their first contribution in #335
- @erikkerber made their first contribution in #377
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_buildbuddy_io_rules_xcodeproj",
sha256 = "5a902801e2337fc14faeb2613d70202f2dd4755bba3d94ba068c1f622edba89e",
url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.3.0/release.tar.gz",
)
load(
"@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
0.2.0: Build with Xcode improvements
What’s Changed
New
- Added support for
macos_unit_test
,tvos_unit_test
, andwatchos_unit_test
: #267, #282, and #286 - Added support for
-application-extension
: #287 - Added support for the
pch
attribute: #280 BUILD
files are now included in Xcode's Project navigator: #301
Fixes and Improvements
- Fixed build errors when no targets produced
modulemap
files: #251 - The
ARCHS
build setting is now set: #249 - Fixed
PRODUCT_MODULE_NAME
calculation: #253 - Fixed
UIDeviceFamily
Info.plist warning: #260 - Fixed various framework linking issues: #259, #258, #277, and #278
- Converted last use of
python
topython3
: #254 - Fixed file permissions of copied generated files: #255
- We now list sources in the same order that Bazel sees them: #265
- Fixed function name typo in warning message: #274
- Fixed PCM compilation by setting
GCC_PREPROCESSOR_DEFINITIONS
instead ofOTHER_CFLAGS
: #275 - Fixed modulemap rewriting: #279 and #284
- Improved
defines
andlocal_defines
detection: #276 - Fixed resource collection for targets that are included via
deps
: #263 - The
SUPPORTED_PLATFORMS
build setting is now set: #289 - Fixed Swift
copt
set PCM header search paths: #291 - Improved Indexing: #292 and #294
- Improved initial project generation experience: #297 and #298
Full Changelog: 0.1.0...0.2.0
Contributors
First PRs
- @BalestraPatrick made their first contribution in #254
- @a2 made their first contribution in #274
- @jpsim made their first contribution in #301
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_buildbuddy_io_rules_xcodeproj",
sha256 = "3a45e9e20bfb36c306ccc51407b97ff7d320c597d3c1c533cbdee9e66cff5cda",
url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.2.0/release.tar.gz",
)
load(
"@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()
0.1.0: Initial Build with Xcode
What’s Changed
Initial release.
Full Changelog: https://github.com/buildbuddy-io/rules_xcodeproj/commits/0.1.0
New Contributors
Special Thanks
Thank you @BalestraPatrick at @spotify and @erikkerber at @slackhq for helping test the ruleset on some real codebases ❤️.
Thank you @tylerwilliams for the many, many code reviews 🤗.
Workspace Snippet
Please use the release asset (release.tar.gz
) from your Bazel WORKSPACE
instead of GitHub's source asset to reduce download size and improve reproducibility.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_buildbuddy_io_rules_xcodeproj",
sha256 = "e82b24c55e479905383d1567d7617a14d1995638bf78b468218f7a44c176ce15",
url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.1.0/release.tar.gz",
)
load(
"@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
"xcodeproj_rules_dependencies",
)
xcodeproj_rules_dependencies()
load(
"@build_bazel_rules_apple//apple:repositories.bzl",
"apple_rules_dependencies",
)
apple_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:repositories.bzl",
"swift_rules_dependencies",
)
swift_rules_dependencies()
load(
"@build_bazel_rules_swift//swift:extras.bzl",
"swift_rules_extra_dependencies",
)
swift_rules_extra_dependencies()
load(
"@build_bazel_apple_support//lib:repositories.bzl",
"apple_support_dependencies",
)
apple_support_dependencies()