This is a human-friendly changelog in a keepachangelog.com style format. Because this changelog is for end-user consumption of meaningful changes, only a summary of a release’s changes is described. This means every commit is not necessarily mentioned, and internal refactors or code cleanups are omitted unless they’re particularly notable.
- TBD
- TBD
- TBD
- Fixed potential stale
--xcode_versioninrunner.sh: #3232
- TBD
3.3.0 - 2025-10-31
- Renamed
compile_only_aspect.bzltoxcodeproj_cache_warm_aspect.bzl: #3238
- Moved generator path inside main output base: #3234
- We now set
--remote_download_outputs=toplevelon therules_xcodeprojconfig: 3239
3.2.0 - 2025-09-12
- Added
xcodeproj_extra_filesaspect hint: #3150
- Improved
compile_only_aspect: #3222 & #3223- Now collects
CppCompileaction outputs - Has a new
resourcesoutput group to collect generated and processed resources
- Now collects
- Added work around for “Extract app intents metadata” failure: #3225
3.1.2 - 2025-07-29
- Fixed typo in previous fix: #3218
3.1.1 - 2025-07-29
- Fixed improper capitalization of build diagnostics: #3217
3.1.0 - 2025-07-25
- Added
SIGINThandler forprocess_bazel_build_log.py: #3200 - We now use
--@rules_swift//swift:coptinstead of--swiftcopt: #3206 - Removed
--experimental_action_cache_store_output_metadata: #3207 - Optimized out an extra regular expression substitution: #3208
- Fixed build log parsing for 'fatal error:' diagnostics: #3204
- Fixed incorrect sha256 for rules_swift: #3210
- Added
Testing.frameworkto testing frameworks: #3211 - Added support for new convention for WMO module deps artifacts naming in Xcode 26 beta 3: #3212
- Fixed Metal toolchains in Xcode 26 betas: #3213
3.0.0 - 2025-06-13
- Removed the legacy generator mode and other related deprecated things: #3192 and #3193
- rules_swift 3.0+ is required: #3187
- Public APIs are now in their own files, deprecating
defs.bzl: #3194
- Added support for rules_swift 3.0: #3187
- Fixed
_allow_remote_write_target_build_settingstypo: #3191
- Added rules_shell dev dependency: #3196
- Added protobuf dep to
examples/integration: #3197 - We set
--incompatible_use_default_test_toolchain=nofor now: #3199
2.12.0 - 2025-05-07
- We now use BCR for
kylef/PathKitandtuist/xcodeprojdeps: #3153 - We now skip targets without
compilesoutput group incompile_onlyaspect: #3172
- Fixed more
rsyncpermission issues: #3175 - Fixed argument length error for
WriteSwiftDebugSettings: #3173 - Adopted latest
index-import version(v6.1.0.1) to fix issue withlibzstd.1.dylib: #3174
2.11.2 - 2025-04-09
- Fixed
index-importto work on all Xcode 16.x versions: #3162
2.11.1 - 2025-04-01
- Added
compile_onlyaspect: #3156
2.11.0 - 2025-03-25
- We now default
LANGtoen_US.UTF-8in project generation: #3143 - Indexstore
.filelistcreation has been simplified: #3144 WriteTargetBuildSettingscan now optionally use remote cache or RBE: #3149- We now use
--action_env=TOOLCHAINS=instead of--define=SWIFT_CUSTOM_TOOLCHAIN=: #3123 - Changed instances of
--experimental_remote_download_regexto--remote_download_regex: #3125
- We now use
md5sumwhen not on macOS: #3145 xcode-selectorDEVELOPER_DIRare no longer required to generate a project: #3147- Fixed
incremental_installer.shwhen running on Linux: #3148 swift_compiler_pluginsources are now added to the generated project: #3142- Removed duplicate post/pre actions: #3122
2.10.0 - 2024-12-16
- “Make” variables are now expanded values in the
envdictionary on test rules: #3088 - Upgraded rules_apple to 3.16.1: #3114
- Drops support for Bazel 6
- Added ExtensionKit support: #3109
- Fixed support for Bazel 8 and 9: #3117
- Upgraded to Bazel 8.0.0: #3119
2.9.2 - 2024-11-18
- Fixed parsing of custom scheme test options: #3110
[2.9.1]: https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/tag/2.9.1 - 2024-11-14
- Fixed when
xcschemes.autogeneration_config.testis not set: #3108
2.9.0 - 2024-11-13
- Added support for
App LanguageandApp Regionscheme test action options: #3105
- Fixed handling of
mixed_language_librarywhen both targets are unfocused: #3104
2.8.1 - 2024-10-29
- Fixed missing BUILD files in Project navigator: #3102
2.8.0 - 2024-10-28
- Added thread checkers to
xcscheme.diagnostics: #3096
- Fixed "Generate Bazel Dependencies" target name typo Fix typo: #3091
- Fixed handling of
apple_precompiled_resource_bundleand similar rules: #3097 and #3099
2.7.0 - 2024-08-21
- Environment variables are now filtered when building with Bazel: #3075, #3077, and #3081
- This shouldn't break anyone, but if it does,
xcodeproj.bazel_envis the suggested fix
- This shouldn't break anyone, but if it does,
- Only the debug settings from the most-downstream Swift targets are used: #3073
- For this to work best, the library target for a top-level target should be a
swift_library,mixed_language_library, or equivalent. Using a non-Swift library can result in now-broken lldb debugging
- For this to work best, the library target for a top-level target should be a
- Aligned the various
--experimental_remote_download_regexflags: #3076 - Less work is performed when not importing Index Build indexstores: #3078
- The same output base is now used for Xcode Build and Index Build: #3074 and #3080
- Fixed target merging involving source-less library targets: #3079
- Fixed unfocused framework target input files filtering: #3085
- Fixed top-level targets merging with
mixed_language_library: #3082 -const-gather-protocols-fileis now skipped when calculatingSWIFT_OTHER_FLAGS: #3084
2.6.1 - 2024-08-13
- Fixed unfocused top-level targets: #3072
2.6.0 - 2024-08-12
- Generated files are now co-located with package source files: #3049 and #3071
- Headers are now included in
--remote_download_regex: #3061 and #3062
2.5.2 - 2024-07-17
- Fixed
swiftcversion invocation used in Xcode 16 Beta 3: #3058
2.5.1 - 2024-07-09
- Fixed permissions on renamed
ldandlibtoolscripts: #3053
2.5.0 - 2024-07-09
- Added support for rules_swift 2.0’s
swift_test: #3051 - Declared that we support rules_swift compatibility level 2: #3052
- Renamed
ld.shtold: #3041 - Renamed
libtool.shtolibtool: #3043 - We now set
ENABLE_DEBUG_DYLIB = NOuntil we properly support Xcode 16: #3042
- Fixed incremental project generation swift debugging: #3046
2.4.0 - 2024-05-29
- Fixed mistranslation of external sources: #3028
2.3.1 - 2024-05-09
- Fixed build when
IDEBuildingContinueBuildingAfterErrorshas never been set #3024
2.3.0 - 2024-05-09
- The "Continue building after errors" setting in Xcode is now respected: #3020
- Fixed
associated_extra_fileswhen multiple targets own the same file: #3023
2.2.0 - 2024-04-15
- Fixed handling of multiple
associated_extra_filesper target in incremental generation mode: #3011 - Target dependencies are now adjusted for transitive Xcode Preview targets instead of schemes: #3005
- Expanded
SUPPORTED_PLATFORMSfor application extensions: #3012
2.1.1 - 2024-04-09
- Upgraded WORKSPACE and dev rules_apple: #3002
- Fixed missing
BAZEL_PACKAGE_BIN_DIRfor non-Swift targets in incremental generation mode: #3004
- Upgraded dev rules_swift: #3003
2.1.0 - 2024-04-05
- Added
module.bazel_compatibilityto reflect our minimum supported Bazel version: #2995 - Upgraded WORKSPACE version of rules_swift and rules_apple: #2996
- Fixed
extension_hosterror when usinglaunch_path: #2992 - Test hosts are no longer included in schemes when
adjust_schemes_for_swiftui_previews = True: #2991 - The correct action (e.g. Test or Run) is now set for transitive Xcode Preview dependencies: #2993
- Upgraded dev version of rules_swift and rules_apple: #2996
2.0.0 - 2024-04-03
- Changed the default value for
xcodeproj.generation_modefromlegacytoincremental: #2986 - Removed some deprecated attributes: #2988
- Environment variables are now resolved in
bazel_env: #2983 additional_*_inputsare now collected as extra files in incremental generation mode: #2972swiftc_inputsare now collected as extra files in incremental generation mode: #2971
- Reduced work that incremental generation mode installer does for generated directories: #2956 & #2965
- The adjusted
Info.plistis now used forextension_infoplistsin incremental generation mode: #2966 execconfiguration targets are no longer processed in incremental generation mode: #2968
- Indentation related
project_optionsare now applied in incremental generation mode: #2959 - Uncategorized files are no longer collected for unfocused targets in incremental generation mode: #2960 & #2982
- Uncategorized files are no longer collected for source-less library targets in incremental generation mode: #2969
- The swift generated header is now excluded from the project in incremental generation mode: #2961
codesign_inputsare now collected as extra files in incremental generation mode: #2970- Fixed
build_modeto be setbazelwhen passed inNoneor"": #2987
- Locked down distribution to a specific Xcode version: #2954
1.18.0 - 2024-03-12
- Added support for visionOS: #2922
- Added Ruby file type extension for
Podspecfiles: #2932 - Added
literal_stringargument toxcschemes.arg: #2938
- Upgraded WORKSPACE version of rules_swift to 1.16.0: #2927
--experimental_remote_download_regexis no longer set by default with the command-line API: #2930- Timing output from
calculate_output_groups.pyis now flushed immediately: #2931 - We now work around when
bazeliskis called recursively during project generation: #2929 - Made
xcschemes.top_level_anchor_targetwork with*_build_testtargets: #2945 & #2949
- Fixed Xcode 15.3 LLDB debugging: #2947
- Fixed an error when using an empty or
Nonexcschemes.envvalue: #2935 - Fixed stale tests with test hosts when deploying to simulator: #2936
explicitFileTypeis now correctly set for.bazeland.bzlextensions in incremental generation mode: #2928- Fixed performance of
associated_extra_fileswith incremental generation mode: #2944 & #2948
- Upgrade dev version of rules_swift to 1.16.0: #2927
1.17.0 - 2024-02-27
- Added support for the new
swift_proto_libraryrule: #2832
- Added support for argument lists in
swiftc_stub: #2907 - We now log when the Bazel build is starting: #2895
- Upgraded WORKSPACE versions of rules_apple: #2912
- Removed incremental generation mode extra
CODE_SIGNING_ALLOWEDlogic: #2921
- Fixed duplicate
same_as_runlaunch target pre/post actions: #2892 - Fixed frozen list issue with incremental generation: #2894
- Fixed more code signing issues of UI tests with incremental generation: #2919
- Fixed processing of folder-type uncategorized resources with incremental generation: #2918
- Fixed tree artifact
Filehandling with incremental generation: #2905 - Fixed tvOS Xcode preview framework code signing with incremental generation: #2920
xcschemesno longer errors when listing a merged target inlibrary_targets: #2897
- Upgraded development apple_support and rules_apple versions: #2912
1.16.0 - 2024-01-29
- Added support for pre/post actions with
launch_path: #2866
- Added a failure when
product.original_basenameisn’t set: #2879 - Improved performance of the
files_and_groupsincremental generator: #2870 - Upgraded
xcodeproj_rules_dependenciesrules_apple, rules_swift, and bazel_features: #2882 - Upgraded bazel_features to 1.3.0: #2883
- Removed bitcode support: #2887
- Fixed macro expansion for test schemes without launch targets: #2868
- Fixed some args and env setting in incremental generation schemes: #2869
- Fixed SwiftUI Previews link command-line length issue with incremental generation mode: #2878
- Fixed Bazel 6 handling of
libSwiftProtobuf.a: #2888 - Fixed the command-line API to support all Bazel commands via the
commonpseudo-command: #2889
1.15.0 - 2024-01-08
cmakesources are now included in the Project navigator: #2847
- The default
--experimental_remote_download_regexflag set by rules_xcodeproj has been expanded to explicitly list file types needed for indexing: #2859- Incremental generation mode has been adjusted to not manually track generated files, resulting in lower CPU and memory usage
- The targets for a scheme (e.g.
.app,.xctest,.a) are now built in Index Build, similar to how Xcode does it - This should improve indexing of more complicated setups (e.g. ones that use VFS overlays or hmap files)
- Added
--experimental_use_cpp_compile_action_args_params_fileto baselinexcodeproj.bazelrc: #2850- Fixes a long command-line issue in incremental generation mode
- Fixed
build_targetsinxcschemesto accept string labels: #2864 - Fixed folder-type files (e.g.
.xcassets) in incremental generation mode: #2841 - Fixed generated input source file error in incremental generation mode: #2851
- Fixed simulator UI test debugging in incremental generation mode: #2849
- Fixed a potential hang in
import_indexstores: #2858
1.14.2 - 2023-12-19
- Fix another incremental installer issue: #2826
1.14.1 - 2023-12-19
- Fixed incremental installer: #2825
1.14.0 - 2023-12-19
- Added a new incremental generation mode
- Incremental generation mode is a new way for rules_xcodeproj to generate your project. Unlike the Build Mode (BwB or BwX), this should only really affect the process by which rules_xcodeproj takes to generate the project, not how the project itself behaves (with some small caveats). Here are some of the benefits of using incremental generation mode over the current (a.k.a
"legacy") generation mode:- Much faster generation. Numbers from a large example project:
- Clean
- Analysis: 12% faster (62s vs 71s)
- Execution: 41% faster (72s vs 123s)
- Minimal incremental (add file to a top-level target)
- Analysis: 36% faster (13s vs 21s)
- Execution: 93% faster (8.5s vs 123s)
- Clean
- Lower Starlark memory usage (about 33% lower)
- Improved target consolidation and target merging
- Some targets can now consolidate better
- Libraries can merge into multiple top-level targets
- Mixed-language targets merge better
- Improved indexing
- All Swift compiler flags are now in the project, working around more SourceKit issues
- Improved debugging
- Improved handling of extra files (mainly around target focusing)
- Improved Xcode Previews support
- For maintainers, vastly improved maintainability (docs, tests, code structure, etc.)
- Much faster generation. Numbers from a large example project:
- This is currently opt in
- Set
xcodeproj.generation_modeto"incremental"to try it out - Use
xcodeproj.xcschemes, instead ofxcodeproj.schemes, if you define custom schemes - Note: Only BwB mode is supported
- Set
- Incremental generation mode is a new way for rules_xcodeproj to generate your project. Unlike the Build Mode (BwB or BwX), this should only really affect the process by which rules_xcodeproj takes to generate the project, not how the project itself behaves (with some small caveats). Here are some of the benefits of using incremental generation mode over the current (a.k.a
- Added a Bzlmod dependency on
rules_python0.27.1: #2793
- Added recognition of additional
depsattributes for rules_ios bundle rules: #2750 - Archived bundles are now extracted with Bazel instead of in
copy_outputs.sh: #2779 cc_common.merge_cc_infosis now only called if needed: #2762- Disabled the
GenerateTAPIXcode action: #2724 - Improved handling of source-less library targets: #2714
- Optimized some Starlark CPU usage: #2760
- Optimized some Starlark retained memory usage: #2769 and #2777
- Upgraded bazel_features to 1.1.1: #2718
- Upgraded apple_support, rules_apple, and rules_swift in
WORKSPACEmacro: #2824 - Removed
--collect_specssupport: #2803 - Removed
DEPLOYMENT_LOCATIONhack when using BwB mode: #2790
1.13.0 - 2023-10-30
- Moved
import_indexstores.shearly exit to before kill: #2670 - Added target label to
xcodeprojmacro warnings and errors: #2673 - Converted
import_indexstores.shinto a Swift binary: #2671 indexstoresare now included as inputs toindexstore_filelist: #2681- Improved error message when
XCBBuildServicegets stuck on stale data: #2688 - Moved
calculate_output_groups.pyJSON parsing error reporting: #2687 - Made the launchable target error more detailed: #2689
- Fixed object path in Index Build imported unit files: #2669
- Made mutable copy of extensions when processing top-level target: #2698
- Non-Swift library targets now compile their code when building their scheme in Xcode: #2699
- We no longer delete
.xcodeproj/xcuserdata: #2700
1.12.1 - 2023-10-04
- Fixed framework Xcode previews: #2663
1.12.0 - 2023-10-04
- Upgraded
xcodeproj_rules_dependenciesrules_swift and rules_apple: #2617 - Tests now sort after library targets in schemes: #2616
- We no longer set
dwarf-with-dsymin an additional location: #2643 - We no longer copy over frameworks in BwB mode: #2644
- Xcode target names using label form now favor shorthand form: #2649
- Fixed hanging
calculate_output_groups.py: #2660
- Changed
examplesto use release archive: #2614 - Upgraded dev apple_support, rules_swift, and rules_apple: #2622
- Upgraded swift-argument-parser to 1.2.3: #2632
- Added
AppleLipoto--modify_execution_info: #2657
1.11.0 - 2023-09-20
- Added the
xcodeproj.target_name_modeattribute: #2590
- Removed fallback output group calculation: #2541
- Upgraded
xcodeproj_rules_dependenciesrules_apple to 2.5.0: #2560 - Upgraded
xcodeproj_rules_dependenciesrules_swift to 1.11.0: #2561 ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOLS = NOis now set in BwB mode: #2569- Bazel generated
.objlistfiles are now prevented from in the project: #2570 - Bazel sandboxing is now disabled by default: #2606
- All transitive swiftmodules are now included in the
bcoutput group when needed: #2571 - Fixed issues when using
--incompatible_fail_on_unknown_attributes: #2573 and #2579 - Fixed using
syncwith command-line API: #2585 - Fixed default of
ENABLE_USER_SCRIPT_SANDBOXINGfor Xcode 15: #2591 - Fixed processed build log paths: #2599
- Fixed nondeterministic product file identifier: #2602
- dSYMs are no longer generated by Xcode in BwB mode: #2605
- Upgraded apple_support to 1.9.0: #2553
platform_mappingsare now used everywhere: #2555 and #2609- Upgraded development versions of rules_apple and rules_swift: #2562
- Dropped Bazel 5 dev files and cleaned up
platform_mappingshandling: #2565 - Removed
WORKSPACEsupport for development: #2566 - Made
platform_mappingsbijective: #2588 - Bazel 6.4.0rc1 is now used for development: #2608
- The BLAKE3 digest function is now used for development: #2611
1.10.1 - 2023-09-06
- Removed generated
.proto.binfiles from target'sCompile Sources: #2538 - Specified path to
sort: #2540 - Reduced macOS requirement for legacy generator to 12.0: #2545
- Changed sorting of build action in schemes: #2546
1.10.0 - 2023-08-31
- Added a dependency on
bazel_features: #2490- If you don't use Bzlmod (i.e. use a
WORKSPACEfile), see the updated snippet at the end of the release notes.
- If you don't use Bzlmod (i.e. use a
- Added initial support for
swift_proto_libraryandswift_grpc_library: #2484 and #2515 - Added support for
codesign_inputsand improved support forcodesignopts: #2535
- Some intermediate params files are no longer unnecessarily created: #2468 and #2469
- Generated
.swiftfiles are now downloaded when using BwtB: #2473 - Improved target merging: #2471, #2482, #2487
- Starlark performance improvements: #2518, #2519, #2536, and #2537
CLANG_ENABLE_MODULESis no longer set: #2528- Removed support for WatchKit 1: #2527
- We now count
precompiled_apple_resource_bundleas a resource bundle target: #2523
- Fixed
-ivfsoverlayfor mixed-language targets: #2478 -oso_prefixis now filtered fromlink.params: #2505- Fixed a Starlark performance improvement when using bzlmod: #2510 and #2530
- Fixed a BwX mode Xcode 15 cyclic dependency error: #2483
- Fixed inherited build settings: #2531
- Fixed running BwB unit tests on device: #2534
- Bumped minimum macOS for tools to 13.0: #2475
1.9.1 - 2023-08-14
- Bundle name, instead of module name, is now used in target disambiguation: #2459
- Changed how host output groups are set in fallback case: #2461
- Fixed quoting of flags in
SWIFT_OTHER_FLAGS: #2454 - Fixed rules_ios
.xccurrentversioncollection: #2457 and #2465 - Fixed BwX resource bundle Info.plist regression: 2466
1.9.0 - 2023-08-04
GENERATE_INFOPLIST_FILEis not longer set: #2379- Added an error message when
target_ids_listis missing: #2396 - Changed “Command Line Tool” disambiguation to “Tool”: #2434
- Library module names are now preferred for target name disambiguation: #2407
- Fixed handling of conditional
bundle_name: #2368 and #2375 - Fixed Xcode set
LD_LIBRARY_PATHandSDKROOTinfluencingbazel build: #2373 - Fixed handling of conditionally empty build setting values: #2380
- Fixed handling of generated
.xccurrentversionfiles: #2389 - Fixed multiple target name disambiguation bugs: #2415, #2416, #2414, #2418, #2419, #2420, #2429, #2425, #2432, and #2435
- Fixed wrong execution root being used in Index Build indexstore importing: #2422 and #2431
- Fixed more cases of SourceKit (indexing) caching issues: #2264 and #2443
- Fixed Swift generated header not being downloaded in BwB mode: #2440
1.8.1 - 2023-07-14
- Fixed BwX not generating some Bazel generated files: #2361
- Fixed some transitive modulemaps not being generated: #2362
- Fixed
swift_debug_settings.pynot including testing search paths: #2363 and #2364 - Fixed tool overrides still being set in BwB Index Build: #2365
1.8.0 - 2023-07-13
- Updated
index-importto 5.8.0.1: #2319 and #2332 - Renamed two build phases for consistency: #2328
- Added support for
/PLACEHOLDER_DEVELOPER_DIRremapping: #2331 - The
DEVELOPER_DIRregex is now restricted to the start of the line: #2337 - Adjusted
.pbxprojformatting to match the way Xcode formats things: #2339, #2340, and #2344 - Indexes are now imported in Index Builds as well: #2283
- Project Format now supports Xcode 15: #2343
BAZELISK_SKIP_WRAPPERis now captured inbazel_env: #2357
PBXProj.objectVersionis now correctly set for Xcode 14+: #2341- Fixed
libtoolversion check in Xcode 15: #2359 - Tool overrides are now unset in the in
BazelDependenciestarget: #2358
1.7.1 - 2023-06-20
- Added a usual error message when no diagnostics are parsed: #2286
- Added support for
swift_compiler_plugintargets: #2293 - We now set
--repo_env=XCODE_VERSION: #2287
- Fixed replacement label handling when wrapped in a macro: #2291
- Fixed BwX Swift testing search paths: #2295
- Fixed possible
bazel buildoutput truncation: #2282 - Fixed indexing of Swift macros: #2292
- Fixed Swift macros in BwX mode: #2294
1.7.0 - 2023-06-07
- All clang flag processing has been moved into the execution phase: #2212
- Application schemes are now sorted before other auto generated schemes: #2211
- Removed special handling for
-strict-concurrency: #2214 - Removed special handling for
-enable-testing: #2215 - Removed special handling for
SWIFT_OPTIMIZATION_LEVEL: #2227 - Removed special handling of
ENABLE_STRICT_OBJC_MSGSEND: #2233 - Moved generator package directory to
/var/tmp: #2252 - The non-
=version of-working-directoryis now used: #2254 SWIFT_INCLUDE_PATHSis no longer set in BwB mode: #2245 and #2277-I,-explicit-swift-module-map-file, and-vfsoverlayare now set inOTHER_SWIFT_FLAGS: #2256-Fis now set inOTHER_SWIFT_FLAGS: #2258 and #2263PROJECT_DIRis now used instead ofCURRENT_EXECUTION_ROOT: #2259$(BAZEL_OUT)is now used to reference compile params files: #2260- Paths are now always absolute in
swift.compile.paramsandOTHER_SWIFT_FLAGS: #2261, #2265, #2267, and #2269 swiftc_stubnow errors out instead of warning: #2278- Removed unnecessary dependencies from release archive: #2279
__BAZEL_variables ar now replaced inswift_debug_sttings.py: #2213- Development region is now properly set in
PBXProject.knownRegions: #2228 - Fixed tests in custom schemes when
ios_unit_test.bundle_nameis used: #2248 - Fixed
test_suitelabel creation if using bzlmod: #2249 - Fixed quoting of string defines in
{c,cxx}.compile.params: #2262 - Builds now properly error out when using an
.xcworkspace: #2273 - Fixed
swiftc_stubwith Xcode 15: #2276 - Fixed handling of build configuration in custom schemes: #2274
1.6.0 - 2023-05-18
test_suitetargets can now be specified inxcodeproj.top_level_targets: #2184ios_*_test_suitetargets can now be specified inxcodeproj.top_level_targets: #2196- Added a
bzl_librarytarget for xcodeproj files: #2204
- Optimized project generation: #2129, #2130, #2134, #2138, #2136, #2137, #2174, and #2208
- Swift and Objective-C targets can now merge into the same terminal target: #2131, #2146, and #2150
- All symlinks are now resolved to their target file: #2147
- Schemes are now sorted: #2151
- The
Bazel Buildscript is now consistently named and structured: #2164 and #2177 - App extensions can no longer be specified in
xcodeproj.top_level_targets: #2183
- Fixed a target consolidation crash: #2195
- Fixed
xcodeproj.xcode_configurationsnot supporting Starlark build settings with bzlmod enabled: #2191 {resource_,}filegroupsnot belonging to focused targets are now properly excluded from the generated project: #2159
1.5.1 - 2023-04-26
- Fixed
_write_target_ids_listregression: #2121 - Fixed
_skip_targethandling ofcompilation_providers.merge: #2123
1.5.0 - 2023-04-25
- Upgraded XcodeProj to 8.9.0: #2048
- Lots of generation memory and cpu reduction optimizations: #2022, #2008, #2025, #2026, #2030, #2028, #2032, #2033, #2031, #2034, #2037, #2038, #2043, #2042, #2045, #2049, #2052, #2053, #2054, #2056, #2059, #2060, #2067, #2073, #2063, #2076, #2079, #2081, #2082, #2083, #2087, #2086, #2090, #2089, #2094, #2095, #2096, #2098, #2099, #2104, #2105, #2102, #2107, #2101, #2112, and #2110
- Reorder default PATH by @thii in #2039
- Added code highlighting to
Podfilefiles: #2041 - Removed extra quoting in
link.paramsfiles: #2061 - Added support for multiple compile targets: #2072
- Fixed output base when using
--config=indexbuildwith the command-line API: #2027 - Fixed
create_lldbinit.shnot appending content to a new line: #2036 - Fixed
import_indexstores.shwhen usingswift.remap_xcode_path: 2064 - Fixed space handling linkopts: #2062 and #2069
- Fixed space handling in
target.swift-extra-clang-flags: #2070 - Fixed custom bundle extension handling: #2093
1.4.0 - 2023-04-12
- Added support for
cc_library.implementation_deps: #1933, #1967, and #2015 - Added the
xcodeproj.bazel_envattribute: #1990 - Added the
xcodeprojfail_for_invalid_extra_files_targetsattribute: #1977
- Upgraded swift-collections to 1.0.4: #1960
- Spotlight is now prevented from indexing our Bazel output bases: #2013
- Improved target merging: #1902, #1928, and #1946
- Improved CC dynamic linking support: #1943, #1944, #1942, and #1949
- Various project generation performance improvements: #1957, #1958, #1961, #1962, #1972, #1973, #1974, #1976, #1978, #1979, #1980, #1985, #1986, #1998, #2001, #2003, #2004, and #2005
- Builds in Xcode now verify that the requested target ids are still valid: #1982
PATHis now set to/usr/bin:/binwhenbazel_path(e.g.bazel) is called to generate a project or build inside of Xcode: #1950- To adjust this behavior, set
xcodeproj.bazel_env.
- To adjust this behavior, set
- Improved progress messages for project generation: #1999 and #2002
- Improved error message when decoding fails: #1975
- You can now the generator label in the command-line API: #2011
- Fixed Xcode 14.3 support: #1937 and #1981
- Generating multiple targets in the same workspace now works correctly: #1992, #2000, and #2012
- Fixed some focused targets issues: #1923, #1930, #1983, #1994, #1995, and #1997
- Fixed handling of bzlmod external targets: #1926
- Fixed handling of
--force_pic: #1939 - Fixed CC optimization level flag calculations: #2017
- Fixed command-line API to work with the
dumpandshutdowncommands: #2019 - Fixed specs collection: #1966
- Fixed BwB test action env variables for custom schemes without launch actions: #1955
- Fixed BwX
swift_debug_settings.pygeneration: #1971
1.3.3 - 2023-03-24
- Upgraded rules_swift to 1.7.1 when not using Bzlmod: #1914
- Upgraded rules_apple to 2.2.0 when not using Bzlmod: #1916
- Logs are now colorized: #1907
- Adjusted target merging to account for targets that are present in Xcode: #1903
- Fixed linux builds: #1896
- Fixed target focusing in less than Bazel 6: #1913
- Illegal characters are now removed from custom scheme names: #1915
--output_baseset on command-line is now respected: #1917
1.3.2 - 2023-03-17
- Fixed handling of multiline
xcodeproj.{pre,post}_buildvalues: #1892 - Fixed visibility with bzlmod: #1895
- You should change your
visibility/package_groups to mention the@rules_xcodeproj//xcodeproj:generatedpackage_group
- You should change your
1.3.1 - 2023-03-16
- Moved generated generators to an external repository: #1876, #1886, and #1887
- The
.rules_xcodeprojdirectory isn't created anymore, and you can remove it from ignore lists - You'll need to change your
visibility/package_groups to mention@rules_xcodeproj_generated//:__subpackages__
- The
- Improved the efficency of various Stalark code: #1866, #1867, #1868, #1869, #1871, #1872, #1873, #1874, #1879, #1882, #1884, #1883, and #1885
- Fixed handling of
-Xcc -iquote -Xcc pathtype flags: #1875 - Fixed handling of some quoted paths in
link_params_processor.py: #1877 - Fixed device-only project generation: #1880
1.3.0 - 2023-03-15
- Added support for multiple Xcode configurations with the new
xcodeproj.xcode_configurationsattribute: #1789, #1791, #1793, #1796, #1797, #1799, #1800, #1801, #1806, #1807, #1815, #1858 - Added the
organization_nameparameter toproject_optionsparameter: #1804 - Added the
profile_actionparameter toxcode_schemes.scheme: #1819 and #1835
- Changed the default name of the repo to
@rules_xcodeproj: #1814- You should do this as well
- First change the repo name from
com_github_buildbuddy_io_rules_xcodeprojtorules_xcodeprojin yourMODULE.bazelorWORKSPACEfile - Then run this
buildifiercommand:buildozer 'substitute_load com_github_buildbuddy_io_rules_xcodeproj rules_xcodeproj' '//...:*'
- Optimized project generation to be faster: #1788, #1825, #1826, #1827, #1829, #1830, #1831, #1832, #1833, #1834, #1836, #1838, #1839, #1840, #1841, #1842, #1843, #1845, #1844, #1848, and #1850
- Bazel targets with conditional dependencies will consolidate to few targets now: #1805
- User compiler flags are now processed by the cc_toolchain: #1810
- Improved handling of dSYMs: #1856 and #1767
- Removed resource files from conditional source files in BwB mode: #1863
- Some small scheme generation improvements: #1816, #1817, and #1818
- Fixed
extra_fileslogic for merged targets when using focused targets: #1782 - Stale files in
.xcodeproj/rules_xcodeproj/bazelare now properly deleted: #1803 - Fixed CC
coptstokenization: #1811 - Fixed
bazeliskinvoking inrunner.sh: #1849 - Fixed handling of large number of linker flags: #1862
1.2.0 - 2023-02-22
- Added
xcodeproj.project_options: #1756
- We now use the first architecture when importing indexing data if multiple are set: #1763
- We now set the full range for
SUPPORTED_PLATFORMSin normal builds: #1762 --cache_computed_file_digestsis now set to a higher value by default: #1765- Upgraded index-import to 5.7.0.1: #1770
- Upgraded rules_swift to 1.6.0: #1772
- Upgraded rules_apple to 2.1.0: #1777
- Fixed LLDB issue with testable targets: #1755
- Fixed handling of relative paths in index unit files: #1761
- Fixed project generation when merge target becomes unfocused: #1769
- Fixed (in Bazel 6.1+) schemes not being able to reference external targets when using Bzlmod: #1771
- Fixed generated
*_framework.exported_symbols_listin BwX mode: #1780
1.1.0 - 2023-02-06
This release is the same as the 1.0.1 release, with the version changed to 1.1.0.
See the 1.0.1 release for details.
1.0.1 - 2023-02-06
This release is the same as the 1.0.0rc3 release, with the version changed to 1.0.1.
This is the first release with a non-zero major version. Since we are using Semantic Versioning for rules_xcodeproj, from this release forward there won’t be breaking changes unless we increment our major version as well.12
Since this is the first major release, every feature can be seen as “new”, so here is the state of all features in the release:
- Full support for Xcode features:
- Indexing (i.e. autocomplete, syntax highlighting, jump to definition)
- Debugging
- Runtime sanitizers
- Inline warnings and errors
- Fix-its (currently only in BwX mode)
- Test selection and running
- Embedded Targets (App Clips, App Extensions, and Watch Apps)
- Dynamic frameworks
- SwiftUI Previews
- Focused Projects
- Include a subset of your targets in Xcode
- Unfocused targets are built with Bazel
- Works in BwX mode as well!
- Comprehensive Bazel rules support
- Core Bazel C/C++/Objective-C
- rules_swift
- rules_apple
- rules_ios
- Most likely your custom rules as well!
- Minimal configuration needed
- Multiple ways of building your project in Xcode
- Build your Bazel targets with Bazel (a.k.a Build with Bazel or BwB mode)
- Build your Bazel targets with Xcode, not Bazel (a.k.a. Build with Xcode or BwX mode)3
1.0.0rc3 - 2023-02-03
- Added
xcodeproj.install_directoryattribute: #1723 - Added support for rules_apple's
*_build_testrules: #1730 - Fixed compiling of
objc_librarytargets that don't correctly settestonly: #1743 - Fixed indexing of rules that use
-vfsoverlay: #1726 - Fixed
args,envs, andxccurrentversionsrelated generation errors when using focused targets: #1728 and #1729 - Fixed
cp -cissue with multiple volumes: #1747
1.0.0rc2 - 2023-02-01
- dSYMs are now copied into Derived Data in BwB mode: #1626
- Non-source
*_librarytargets no longer generate Xcode targets (again): #1713 - Target merging restrictions now apply for non-Swift targets as well: #1717
- Fixed breakpoints when
~/.lldbinit-Xcodeexists: #1720 - Fixed BwX handling of
--apple_generate_dsym: #1714
See the 1.0.0rc1 release note for more details of what is in the 1.0.0rc release.
1.0.0rc1 - 2023-01-30
- Added support for
implementation_deps: #1664 - Some of the tools used in project generation are now prebuilt in
release.tar.gz: #1680 and #1682 - Moved
swift_debug_settings.pycreation to Starlark: #1666, #1667, #1669, #1670, and #1671 - Reduced the size of the intermediate json files used during project generation: #1686, #1688, #1689, #1691, #1692, #1693, and #1694
- Improved how resource bundles interact with
xcodeproj,{un,}focused_targets: #1699, #1700, and #1702 - Project generation now sets
--xcode_version, to try to reduce analysis cache trashing: #1708 - Fixed breakpoint resolution when using Test and Profile actions: #1658
- Fixed BwB UI Test Swift debugging: #1661 and #1662
- Fixed BwX handling of
-D_FORTIFY_SOURCEwhen using ASAN: #1707 - Fixed BwB handling of
-Owhen using Runtime Sanitizers: #1701
0.12.3 - 2023-01-25
- Improved handling of rules_ios's
apple_framework.vendored_xcframeworks: #1641 - Continued work on passing through compiler flags directly from Bazel: #1617, #1620, #1627, #1629, #1630, #1632, #1633, #1636, #1637, #1638
- We no longer set
OTHER_CFLAGS/OTHER_CPLUSPLUSFLAGSwhen not applicable: #1628 and #1635 - Fixed stale BwB installs: #1631
- Fixed some lldb clang compilation issues regarding framework search paths: #1621 and #1622
- Fixed some BwX compiling regressions: #1642 and #1647
- Fixed some BwX linking regressions: #1639 and #1640
- Fixed
depsetmutability issue: #1615
See the 0.12.0 release note for more details of what is in the 0.12.0 release.
0.12.2 - 2023-01-19
- Fixed handling of custom schemes and focused targets labels when using bzlmod (though only if they aren't labels to external repositories): #1599, #1601, and #1605
- Fixed handling of absolute paths in
build_setting_path(): #1602 - Fixed handling of
--config: #1604 - Header search paths are no longer made absolute: #1603
See the 0.12.0 release note for more details of what is in the 0.12.0 release.
0.12.0 - 2023-01-18
- VFS overlays (e.g.
swift.vfsoverlayor rules_ios'sapple_library) are no longer supported in BwX mode: #1559
- Started to add support for bzlmod: #1502
- Upgraded rules_swift to 1.5.1: #1571
- Upgraded rules_apple to 2.0.0 (when using Bazel 6): #1503
- App extensions and watchOS apps are now debuggable: #1536
- rules_xcodeproj’s
.lldbinitis now created in a launch pre-action: #1532, #1533, #1534, #1535, and #1587 - The
link.paramsfile is now lazily generated, and has most flags passed through directly from Bazel: #1521, #1522, #1538, #1541, #1542, #1543, #1544, #1546, #1547, #1548, #1549, #1551, #1557, #1569, #1570, #1572, #1582, and #1595 - Started work on passing through compiler flags directly from Bazel: #1565, #1566, #1568, #1569, #1570, #1573, #1574, #1575, #1576, #1577, #1578, #1579, #1583, #1581, #1592, and #1595
- BwX mode now picks up additional "headers" (e.g. hmaps), though see this FAQ for caveats : #1539 and #1540
- Added support for command line args in test schemes: #1520
- If a custom scheme sets
custom_working_directory, it's now also applied to the Profile action: #1501 - Improved iMessage app extension scheme creation: #1531
- Header-only libraries now are represented by Xcode targets: #1494
- The executable bit is now correctly set for all scripts embedded in the generated project: #1527
- Fixed BwX Swift debugging: #1526 and #1530
- Fixed BwX Index Build failure: #1552
- Fixed incorrect BwB copy path for macOS tests: #1593
- Fixed search path references to
bazel-outandexternaldirectories: #1528 - Fixed crash generating project with
apple_universal_binary: #1453 - Fixed an unresolved breakpoints edge case: #1588, #1589, and #1590
0.11.0 - 2022-12-20
- Team ID is now always required when using
xcode_provisioning_profile: #1397 - Remove deprecated
device_and_simulatorrule: #1391
- Added
xcodeproj.xcode_minimum_version: #1463, #1464, and #1465 - Added a
--collect_specscommand-line option: #1498
- Upgraded
index-importto 5.7: #1425 - Upgraded rules_apple to 1.1.3: #1427
- Upgraded rules_swift to 1.4.0: #1454
- Upgraded ZippyJSON to 1.2.10: #1469
- Fixed indexing of external files: #1382
- Fixed BwB framework SwiftUI Previews: #1388
- Removed transition on
build_mode, allowing cache sharing between BwB and BwX: #1392, #1393, #1395, and #1398 - Optimized how many
XcodeProjInfoproviders are created: #1394 - Moved some path calculations into Starlark: #1400, #1402, #1404, #1405, #1406, #1407, #1408, #1409, #1411, #1413, #1414, #1415, #1416, #1417, #1419, #1420, #1423, #1426, #1428, #1429, #1431, #1432, #1433, #1434, #1435, #1436, #1445, and #1470
--features=swift.use_global_module_cacheis now set inxcodeproj.bazelrc: #1442- Fixed excessively long filelist paths: #1458
- Fixed debugging when using BwtB: #1461
- Fixed
lldberror whenmoduleisNone: #1466 - Improved BEP/BES performance: #1472, #1473, and #1474
- Improved performance generating large projects: #1478, #1479, #1480, #1481, #1482, #1483, and #1485
- Removed warning for pre and post scripts: #1484
- Fixed incremental device installs of iOS 16+ applications with extensions: #1487
- Fixed project generation when targets don't provide an
AppleResourceInfoprovider: #1492 - Renamed an internal argument to improve compatibility with
bazelwrappers: #1497
0.10.2 - 2022-11-01
- Fixed handling of absolute paths in error messages: #1379
- Fixed capitalization of error messages: #1380
- Fixed indexing of generated and external sources: #1381
See the 0.10.0 release note for more details of what is in the 0.10.0 release.
0.10.1 - 2022-10-28
- Fixed some BwX linker bugs
See the 0.10.0 release note for more details of what is in the 0.10.0 release.
0.10.0 - 2022-10-28
- If you used the undocumented command-line API, it's been replaced by an official one (mentioned below). See the new section in the Usage Guide for more details.
- Added official command-line API: #1350 and #1371
- Added support for propagating env values from
*_testrules: #1275 - Added
pre_post_actionstotest_action: #1333
- Upgraded skylib to 1.3.0: #1236
- A separate output base is now used for building as well, reducing analysis cache invalidations: #1221 and #1264
- Optimized BwB build performance by removing most target dependencies and target embedding: #1238, #1262, #1271, #1272, #1273, #1274, #1276, #1277, #1278, #1285, #1288, #1311, and #1323
- Improved the baseline BwtB experience: #1239, #1242, #1300, and #1306
- Fixed scheme symlink creation: #1279, #1291, and #1301
- Refactored file path resolution: #1241,#1243, #1246, #1250, and #1347
- Fixed
-add_ast_pathfor merged targets: #1245 - Changed
PROJECT_DIRto Bazel's execution root: #1249, #1251, #1252, #1260, #1263, #1286, #1287, #1293, #1295, #1299, #1304, #1327, and #1329 - We now work around Bazel's handling of
DEVELOPER_DIR: #1257, #1258, and #1259 - Fixed handling of top-level linkopts: #1248
- We now apply normal configuration segregation to
BUILD_DIR: #1267 and #1305 - Fixed BwB Indexing handling of modulemaps: #1269
- Removed env variable filtering: #1280
- Removed use of output group maps: #1307
- Fixed and optimized
rsyncexclude files: #1309, #1355, #1357, #1358, #1362, and #1364 - We now set a pattern override for BuildBuddy, to improve the look of invocations: #1310
- Fixed BwX Swift generated header path for merged targets (i.e. frameworks): #1313
- Added
-emit-symbol-graph-dirto filtered swiftcopts: #1316 - Fixed target dependency to merged target: #1315
- Added support for mixed language modules: #1317, #1318, #1319, and #1328
- Fixed
test_action.diagnosticspropagation: #1321 - Removed extra
bazel infocalls: #1326, #1345, #1346, and #1348 - We now symlink instead of copy BwB SwiftUI Previews framework dependencies: #1330 and #1363
- We now properly set
ENABLE_STRICT_OBJC_MSGSEND: #1331 - Improved performance of project generation: #1335, #1337, #1338, #1339, #1341, and #1343
- Prevent
bazel cleanfrom affecting rules_xcodeproj’s output base (use the new command-line API to clean it instead): #1353 - Fixed BwB debugging of framework targets: #1356
- Moved target merging into Starlark: #1366, #1367, #1368, #1369, and #1370
0.9.0 - 2022-10-06
- Moved public rules and macros to
xcodeproj/defs.bzl: #1115
- Added support for custom pre and post build scripts in BwB mode: #1117, #1129, and #1156
- Added support for Runtime Sanitizers: #1134, #1137, #1138, #1127, #1142, #1155, #1168, #1193, #1195, #1196, #1209, #1232, #1233, #1234, and #1235
- Added support for dynamic frameworks: #1133, #1135, #1136, #1140, #1141, #1145, #1146, #1148, #1149, #1150, #1151, #1157, #1160, #1162, #1164, #1166, #1163, #1165, #1178, #1183, #1190, #1191, #1192, #1199, #1201, and #1200
- Added
top_level_targetsconvenience function: #1207 and #1219
- Added support for
STRICT_SWIFT_CONCURRENCY: #1109 - Updated rules_swift to 1.2.0 and rules_apple to 1.1.2: #1112
- Fixed issue with
-fmodule-map-filein BwX mode: #1121 - Fixed Xcode 14 resource bundle code signing: #1124
- Added support for Alternate Icons: #1125
- Xcode no longer sets default search paths: #1161
- Added support for
--features=swift.file_prefix_map: #1173 - Improved libtool stub performance: #1185
- Improved file unfocusing: #1187
- Improved error handling of XCBuildData caches: #1188 and #1213
- Fixed handling of implicit SDK frameworks: #1202
- Fixed handling of
Noneswift.module.swiftsourceinfo: #1204 - Fixed handling of
Nonemodule.clang: #1205 - Fixed handling of
NoneAppleBundleInfo.bundle_id: #1211 - Converted swiftc stub to a compiled binary: #1198, #1225, and #1227
- Fixed
--incompatible_unambiguous_label_stringificationhandling: #1218 - We now apply the same
env -iduring project generation: #1220 and #1222 - Generated source files are now always downloaded from remote caches: #1223
- Added index-while-building to SwiftUI Preview builds: #1230
- Schemes no longer have
Find Implicit Dependencieschecked: #1226
0.8.0 - 2022-09-15
device_and_simulatorhas been deprecated. Use the newtop_level_target.target_environmentsargument instead: #965xcode_provisioning_profilehas moved fromxcodeproj/experimental.bzltoxcodeproj/xcodeproj.bzl: #1069xcodeproj.build_modenow defaults to"bazel": #1022- It is now an error to list non-top-level targets in
top_level_targets: #1104
- The project generator is now run inside a runner script, and allows for configuration via Bazel configs: #911, #950, #952, #990, #1061, #1062, and #1075
- This means that most command-line flags you pass to
bazel run //:xcodeprojare ignored - To adjust the project generation, use the newly available Bazel configs
- This means that most command-line flags you pass to
- Bazel-built Swift now uses index-while-building: #1040, #1043, #1096, and #1098
- Added support for custom working directory in custom scheme launch actions: #1051, #1074, and #1076
- Added support for custom Swift toolchains: #1027
- Added support for adding extra files to the project: #1080
- Added support for custom scheme pre and post actions: #1047
- Test issues now navigate to their source location in BwB mode: #961
- Test targets now use their non-internal name: #980 and #1044
- All versions of Info.plist for a given target are now generated when building: #985
- Added support for the "Compile File" command: #976
- Fixed handling of missing
AppleBinaryInfo.infoplist: #1002 - (Mostly) fixed handling of
apple_universal_binarytargets: #1003, #1004, and #1034 - The generator is now a universal target with a set minimum OS: #1008
- Extracted
bazel_build.shto a script: #1009 and #1016 - Fixed quoting of single-file build settings: #1045
- Improved handling of
top_level_cache_buster: #1050 and #1103 - Index Build's bazel outputs are now stored inside a directory of the normal Bazel output: #1053
- Binary rules are now codesigned, fixing the Memory Graph Debugger: #1058
- Fixed edge-case building of unfocused dependencies: #1093
- Bazel now uses the correct Xcode version when compiling: #1099, #1100, and #1102
- Merged library targets are now automatically focused when their destination target is focused: #1108
0.7.1 - 2022-08-25
- Added
{device,simulator}_only_targetsattributes todevice_and_simulator: #925 - Added rules documentation: #936, #944, #964, #969, and #974
- Improved scheme generation: #890, #901, #905, #909, #934, #940, #942, #956, #962, #963, #966
- Improved Xcode 14 support: #892
- Fixed issues not navigating to source files in BwB mode: #893
- Fixed VFS overlay generation: #898, #918, #919, #921, and #941
- Fixed indexing of
local_repositoryandnew_local_repositorytargets: #900 and #929 - Fixed linking BwB SwiftUI Previews: #922
- Fixed
external/header search paths: #923 - Unfocusing of "invalid" labels is now supported: #938
- Targets can now merge into multiple top-level targets: #937
- Top-level bundle targets can now have multiple dependencies: #939
- Fixed
-Dquote handing: #948 - The
ASSETCATALOG_COMPILER_APPICON_NAMEbuild setting is now set: #932 - Fixed Resource bundle detection: #958
- Added
no-remoteto project generation: #972 - Upgrade warnings are now disabled: #970
0.7.0 - 2022-08-05
xcodeproj'stargetsattribute 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
- 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_targetsand/orunfocused_targetsattributes onxcodeproj
- These are defined by specifying labels in the
- 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_EXTENSIONis now only set when it differs from the default: #759- Improved handling of resources: #769, #788, #814, #883, and #886
- Improved handling of
Info.plists: #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
BazelDependencynow 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_TARGETbuild settings: #843 - Greatly improved handling of Swift -> Objective-C debugging: #836, #876, #877, #879
- Improved handling of
cc_binaryandswift_binary: #840 and #874 - Moved intermediate files to
$OBJROOT: #860 - Improved indexing: #880
0.6.0 - 2022-07-13
- 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
launchdplistsattribute: #684 - Added support for the
executable_nameattribute: #721
- 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_bundleindeps: #734
0.5.1 - 2022-07-06
A small bug fix/improvements release:
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPADis now only set for iOS targets: #635- Fixed
--ld-pathpath 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
BUILDfile in internalbazelfolder: #654 - Added support for
exported_symbols_lists: #649 and #655
- @brentleyjones
- @BalestraPatrick
- @maxwellE
- @cgrindel
- @luispadron
- @luispadron made their first contribution in #647
0.5.0 - 2022-07-01
- 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
featuresneeded 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
codesignoptsattribute: #593 - Added support for
swift_import: #597 - Added support for the
alwayslinkattribute: #607, #608 - Finalized support for
apple_{dynamic,static}_{framework,xcframework}_import: #609, #610, #625, #628 - Added
xcodeproj.scheme_autogeneration_modewith support fornone,auto, andall: #612
- 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
TestActionscheme ordering: #557 - Improved resource bundle handling: #559, #563, #564, #567, #571, #580, #599, #604, #605, #611, #624
- Breakpoints set from
swiftsourceinfonow 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
- Adjustments to
InputFileAttributesInfo(now namedXcodeProjAutomaticTargetProcessingInfo)
0.4.2 - 2022-06-13
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
0.4.1 - 2022-06-10
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
0.4.0 - 2022-06-10
- Added experimental support for single targets to support both the Simulator and device destinations with the
device_and_simulatorrule: #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_profilerule: #523 and #525
- 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_contexthandling: #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
-gis 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'sBUILDfiles are now added to the Project navigator: #528
0.3.0 - 2022-05-18
- 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
- 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_PATHis now used: #373 - Various changes to ensure that
--incompatible_disallow_empty_globis supported - Removed color ansi codes from bazel output within Xcode: #410
- Info.plist patching warning is now silenced: #411
dbgcompilation mode is used when building insides Xcode: #413- Fixed default
GCC_OPTIMIZATION_LEVEL: #412 - Fixed
-debug-prefix-maphandling: #416 - Improved disambiguation of targets with names that only differ by case: #424
- Improved filtering of input files: #442
0.2.0 - 2022-04-15
- 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
pchattribute: #280 BUILDfiles are now included in Xcode's Project navigator: #301
- Fixed build errors when no targets produced
modulemapfiles: #251 - The
ARCHSbuild setting is now set: #249 - Fixed
PRODUCT_MODULE_NAMEcalculation: #253 - Fixed
UIDeviceFamilyInfo.plist warning: #260 - Fixed various framework linking issues: #259, #258, #277, and #278
- Converted last use of
pythontopython3: #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_DEFINITIONSinstead ofOTHER_CFLAGS: #275 - Fixed modulemap rewriting: #279 and #284
- Improved
definesandlocal_definesdetection: #276 - Fixed resource collection for targets that are included via
deps: #263 - The
SUPPORTED_PLATFORMSbuild setting is now set: #289 - Fixed Swift
coptset PCM header search paths: #291 - Improved Indexing: #292 and #294
- Improved initial project generation experience: #297 and #298
0.1.0 - 2022-04-05
Initial release.
Footnotes
-
Bzlmod has a different way of marking breaking changes with
module.compatibility_level. We will increment both the major version and thecompatibility_levelin tandum. ↩ -
There are some APIs that have been explicitly marked as unstable, such as the
XcodeProjAutomaticTargetProcessingInfoandXcodeProjInfoproviders. Changes to unstable APIs do not count as breaking changes. ↩ -
Build with Bazel mode is the build mode with first class support. We will try to make Build with Xcode mode work with every project, but there are limitations that can make the experience subpar, or not work at all. We recommend using BwB mode if possible. ↩