Skip to content

Latest commit

 

History

History
1803 lines (1255 loc) · 164 KB

File metadata and controls

1803 lines (1255 loc) · 164 KB

Changelog

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.

⚠️ Breaking changes ⚠️

  • TBD

New

  • TBD

Adjusted

  • TBD

Fixed

  • Fixed potential stale --xcode_version in runner.sh: #3232

Ruleset Development Changes

  • TBD

3.3.0 - 2025-10-31

⚠️ Breaking changes ⚠️

  • Renamed compile_only_aspect.bzl to xcodeproj_cache_warm_aspect.bzl: #3238

Adjusted

  • Moved generator path inside main output base: #3234
  • We now set --remote_download_outputs=toplevel on the rules_xcodeproj config: 3239

Fixed

  • Fixed incompatible output base causing startup options change: #3229, #3233

3.2.0 - 2025-09-12

New

  • Added xcodeproj_extra_files aspect hint: #3150

Adjusted

  • Improved compile_only_aspect: #3222 & #3223
    • Now collects CppCompile action outputs
    • Has a new resources output group to collect generated and processed resources

Fixed

  • Added work around for “Extract app intents metadata” failure: #3225

3.1.2 - 2025-07-29

Fixed

  • Fixed typo in previous fix: #3218

3.1.1 - 2025-07-29

Fixed

  • Fixed improper capitalization of build diagnostics: #3217

3.1.0 - 2025-07-25

Adjusted

  • Added SIGINT handler for process_bazel_build_log.py: #3200
  • We now use --@rules_swift//swift:copt instead of --swiftcopt: #3206
  • Removed --experimental_action_cache_store_output_metadata: #3207
  • Optimized out an extra regular expression substitution: #3208

Fixed

  • Fixed build log parsing for 'fatal error:' diagnostics: #3204
  • Fixed incorrect sha256 for rules_swift: #3210
  • Added Testing.framework to 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

⚠️ Breaking changes ⚠️

  • Removed the legacy generator mode and other related deprecated things: #3192 and #3193
  • rules_swift 3.0+ is required: #3187

New

  • Public APIs are now in their own files, deprecating defs.bzl: #3194

Adjusted

  • Added support for rules_swift 3.0: #3187

Fixed

  • Fixed _allow_remote_write_target_build_settings typo: #3191

Ruleset Development Changes

  • Added rules_shell dev dependency: #3196
  • Added protobuf dep to examples/integration: #3197
  • We set --incompatible_use_default_test_toolchain=no for now: #3199

2.12.0 - 2025-05-07

Adjusted

  • We now use BCR for kylef/PathKit and tuist/xcodeproj deps: #3153
  • We now skip targets without compiles output group in compile_only aspect: #3172

Fixed

  • Fixed more rsync permission issues: #3175
  • Fixed argument length error for WriteSwiftDebugSettings: #3173
  • Adopted latest index-import version (v6.1.0.1) to fix issue with libzstd.1.dylib: #3174

2.11.2 - 2025-04-09

Fixed

  • Fixed index-import to work on all Xcode 16.x versions: #3162

2.11.1 - 2025-04-01

New

  • Added compile_only aspect: #3156

Fixed

  • Fixed rsync on macOS 15.4: #3157
  • Fixed comm on macOS 15.4: #3161

2.11.0 - 2025-03-25

Adjusted

  • We now default LANG to en_US.UTF-8 in project generation: #3143
  • Indexstore .filelist creation has been simplified: #3144
  • WriteTargetBuildSettings can 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_regex to --remote_download_regex: #3125

Fixed

  • We now use md5sum when not on macOS: #3145
  • xcode-select or DEVELOPER_DIR are no longer required to generate a project: #3147
  • Fixed incremental_installer.sh when running on Linux: #3148
  • swift_compiler_plugin sources are now added to the generated project: #3142
  • Removed duplicate post/pre actions: #3122

2.10.0 - 2024-12-16

⚠️ Breaking changes ⚠️

  • “Make” variables are now expanded values in the env dictionary on test rules: #3088
  • Upgraded rules_apple to 3.16.1: #3114
    • Drops support for Bazel 6

New

  • Added ExtensionKit support: #3109

Fixed

  • Fixed support for Bazel 8 and 9: #3117

Ruleset Development Changes

  • Upgraded to Bazel 8.0.0: #3119

2.9.2 - 2024-11-18

Fixed

  • Fixed parsing of custom scheme test options: #3110

[2.9.1]

[2.9.1]: https://github.com/MobileNativeFoundation/rules_xcodeproj/releases/tag/2.9.1 - 2024-11-14

Fixed

  • Fixed when xcschemes.autogeneration_config.test is not set: #3108

2.9.0 - 2024-11-13

New

  • Added support for App Language and App Region scheme test action options: #3105

Fixed

  • Fixed handling of mixed_language_library when both targets are unfocused: #3104

2.8.1 - 2024-10-29

Fixed

  • Fixed missing BUILD files in Project navigator: #3102

2.8.0 - 2024-10-28

New

  • Added thread checkers to xcscheme.diagnostics: #3096

Adjusted

  • Structured resources are now represented as files instead of folders in Xcode: #3098 and #3100

Fixed

  • Fixed "Generate Bazel Dependencies" target name typo Fix typo: #3091
  • Fixed handling of apple_precompiled_resource_bundle and similar rules: #3097 and #3099

2.7.0 - 2024-08-21

⚠️ Breaking changes ⚠️

  • Environment variables are now filtered when building with Bazel: #3075, #3077, and #3081
    • This shouldn't break anyone, but if it does, xcodeproj.bazel_env is the suggested fix
  • 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

Adjusted

  • Aligned the various --experimental_remote_download_regex flags: #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

  • 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-file is now skipped when calculating SWIFT_OTHER_FLAGS: #3084

2.6.1 - 2024-08-13

Fixed

  • Fixed unfocused top-level targets: #3072

2.6.0 - 2024-08-12

New

  • Added support for rules_swift’s mixed_language_library: #3063 and #3069

Adjusted

  • 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

  • Fixed swiftc version invocation used in Xcode 16 Beta 3: #3058

2.5.1 - 2024-07-09

Fixed

  • Fixed permissions on renamed ld and libtool scripts: #3053

2.5.0 - 2024-07-09

Adjusted

  • Added support for rules_swift 2.0’s swift_test: #3051
  • Declared that we support rules_swift compatibility level 2: #3052
  • Renamed ld.sh to ld: #3041
  • Renamed libtool.sh to libtool: #3043
  • We now set ENABLE_DEBUG_DYLIB = NO until we properly support Xcode 16: #3042

Fixed

  • Fixed incremental project generation swift debugging: #3046

2.4.0 - 2024-05-29

New

Fixed

  • Fixed mistranslation of external sources: #3028

2.3.1 - 2024-05-09

Fixed

  • Fixed build when IDEBuildingContinueBuildingAfterErrors has never been set #3024

2.3.0 - 2024-05-09

New

  • The "Continue building after errors" setting in Xcode is now respected: #3020

Adjusted

  • Only declared input headers are now included in the project navigator: #3015, #3016, and #3017

Fixed

  • Fixed associated_extra_files when multiple targets own the same file: #3023

2.2.0 - 2024-04-15

Fixed

  • Fixed handling of multiple associated_extra_files per target in incremental generation mode: #3011
  • Target dependencies are now adjusted for transitive Xcode Preview targets instead of schemes: #3005
  • Expanded SUPPORTED_PLATFORMS for application extensions: #3012

2.1.1 - 2024-04-09

Fixed

  • Upgraded WORKSPACE and dev rules_apple: #3002
  • Fixed missing BAZEL_PACKAGE_BIN_DIR for non-Swift targets in incremental generation mode: #3004

Ruleset Development Changes

  • Upgraded dev rules_swift: #3003

2.1.0 - 2024-04-05

Adjusted

  • Added module.bazel_compatibility to reflect our minimum supported Bazel version: #2995
  • Upgraded WORKSPACE version of rules_swift and rules_apple: #2996

Fixed

  • Fixed extension_host error when using launch_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

Ruleset Development Changes

  • Upgraded dev version of rules_swift and rules_apple: #2996

2.0.0 - 2024-04-03

⚠️ Breaking changes ⚠️

New

  • Environment variables are now resolved in bazel_env: #2983
  • additional_*_inputs are now collected as extra files in incremental generation mode: #2972
  • swiftc_inputs are now collected as extra files in incremental generation mode: #2971

Adjusted

  • Reduced work that incremental generation mode installer does for generated directories: #2956 & #2965
  • The adjusted Info.plist is now used for extension_infoplists in incremental generation mode: #2966
  • exec configuration targets are no longer processed in incremental generation mode: #2968

Fixed

  • Indentation related project_options are 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_inputs are now collected as extra files in incremental generation mode: #2970
  • Fixed build_mode to be set bazel when passed in None or "": #2987

Ruleset Development Changes

  • Locked down distribution to a specific Xcode version: #2954

1.18.0 - 2024-03-12

New

  • Added support for visionOS: #2922
  • Added Ruby file type extension for Podspec files: #2932
  • Added literal_string argument to xcschemes.arg: #2938

Adjusted

  • Upgraded WORKSPACE version of rules_swift to 1.16.0: #2927
  • --experimental_remote_download_regex is no longer set by default with the command-line API: #2930
  • Timing output from calculate_output_groups.py is now flushed immediately: #2931
  • We now work around when bazelisk is called recursively during project generation: #2929
  • Made xcschemes.top_level_anchor_target work with *_build_test targets: #2945 & #2949

Fixed

  • Fixed Xcode 15.3 LLDB debugging: #2947
  • Fixed an error when using an empty or None xcschemes.env value: #2935
  • Fixed stale tests with test hosts when deploying to simulator: #2936
  • explicitFileType is now correctly set for .bazel and .bzl extensions in incremental generation mode: #2928
  • Fixed performance of associated_extra_files with incremental generation mode: #2944 & #2948

Ruleset Development Changes

  • Upgrade dev version of rules_swift to 1.16.0: #2927

1.17.0 - 2024-02-27

New

  • Added support for the new swift_proto_library rule: #2832

Adjusted

  • 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_ALLOWED logic: #2921

Fixed

  • Fixed duplicate same_as_run launch 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 File handling with incremental generation: #2905
  • Fixed tvOS Xcode preview framework code signing with incremental generation: #2920
  • xcschemes no longer errors when listing a merged target in library_targets: #2897

Ruleset Development Changes

  • Upgraded development apple_support and rules_apple versions: #2912

1.16.0 - 2024-01-29

New

  • Added support for pre/post actions with launch_path: #2866

Adjusted

  • Added a failure when product.original_basename isn’t set: #2879
  • Improved performance of the files_and_groups incremental generator: #2870
  • Upgraded xcodeproj_rules_dependencies rules_apple, rules_swift, and bazel_features: #2882
  • Upgraded bazel_features to 1.3.0: #2883
  • Removed bitcode support: #2887

Fixed

  • 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 common pseudo-command: #2889

Ruleset Development Changes

  • Upgraded dev versions of rules_apple and rules_swift: #2884 and #2886

1.15.0 - 2024-01-08

New

  • cmake sources are now included in the Project navigator: #2847

Adjusted

  • The default --experimental_remote_download_regex flag 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_file to baseline xcodeproj.bazelrc: #2850
    • Fixes a long command-line issue in incremental generation mode

Fixed

  • Fixed build_targets in xcschemes to 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

Fixed

  • Fix another incremental installer issue: #2826

1.14.1 - 2023-12-19

Fixed

  • Fixed incremental installer: #2825

1.14.0 - 2023-12-19

New

  • 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)
      • 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.)
    • This is currently opt in
  • Added a Bzlmod dependency on rules_python 0.27.1: #2793

Adjusted

  • Added recognition of additional deps attributes for rules_ios bundle rules: #2750
  • Archived bundles are now extracted with Bazel instead of in copy_outputs.sh: #2779
  • cc_common.merge_cc_infos is now only called if needed: #2762
  • Disabled the GenerateTAPI Xcode 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 WORKSPACE macro: #2824
  • Removed --collect_specs support: #2803
  • Removed DEPLOYMENT_LOCATION hack when using BwB mode: #2790

Ruleset Development Changes

  • Upgraded rules_apple related dev dependencies: #2728
  • Upgraded dev version of skylib to 1.5.0: #2729

1.13.0 - 2023-10-30

Adjusted

  • Moved import_indexstores.sh early exit to before kill: #2670
  • Added target label to xcodeproj macro warnings and errors: #2673
  • Converted import_indexstores.sh into a Swift binary: #2671
  • indexstores are now included as inputs to indexstore_filelist: #2681
  • Improved error message when XCBBuildService gets stuck on stale data: #2688
  • Moved calculate_output_groups.py JSON parsing error reporting: #2687
  • Made the launchable target error more detailed: #2689

Fixed

  • 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

  • Fixed framework Xcode previews: #2663

1.12.0 - 2023-10-04

Adjusted

  • Upgraded xcodeproj_rules_dependencies rules_swift and rules_apple: #2617
  • Tests now sort after library targets in schemes: #2616
  • We no longer set dwarf-with-dsym in 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

  • Fixed hanging calculate_output_groups.py: #2660

Ruleset Development Changes

  • Changed examples to use release archive: #2614
  • Upgraded dev apple_support, rules_swift, and rules_apple: #2622
  • Upgraded swift-argument-parser to 1.2.3: #2632
  • Added AppleLipo to --modify_execution_info: #2657

1.11.0 - 2023-09-20

New

Adjusted

  • Removed fallback output group calculation: #2541
  • Upgraded xcodeproj_rules_dependencies rules_apple to 2.5.0: #2560
  • Upgraded xcodeproj_rules_dependencies rules_swift to 1.11.0: #2561
  • ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOLS = NO is now set in BwB mode: #2569
  • Bazel generated .objlist files are now prevented from in the project: #2570
  • Bazel sandboxing is now disabled by default: #2606

Fixed

  • All transitive swiftmodules are now included in the bc output group when needed: #2571
  • Fixed issues when using --incompatible_fail_on_unknown_attributes: #2573 and #2579
  • Fixed using sync with command-line API: #2585
  • Fixed default of ENABLE_USER_SCRIPT_SANDBOXING for 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

Ruleset Development Changes

  • Upgraded apple_support to 1.9.0: #2553
  • platform_mappings are 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_mappings handling: #2565
  • Removed WORKSPACE support for development: #2566
  • Made platform_mappings bijective: #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

Adjusted

  • Removed generated .proto.bin files from target's Compile 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

⚠️ Breaking Changes ⚠️

  • Added a dependency on bazel_features: #2490
    • If you don't use Bzlmod (i.e. use a WORKSPACE file), see the updated snippet at the end of the release notes.

New

  • Added initial support for swift_proto_library and swift_grpc_library: #2484 and #2515
  • Added support for codesign_inputs and improved support for codesignopts: #2535

Adjusted

  • Some intermediate params files are no longer unnecessarily created: #2468 and #2469
  • Generated .swift files are now downloaded when using BwtB: #2473
  • Improved target merging: #2471, #2482, #2487
  • Starlark performance improvements: #2518, #2519, #2536, and #2537
  • CLANG_ENABLE_MODULES is no longer set: #2528
  • Removed support for WatchKit 1: #2527
  • We now count precompiled_apple_resource_bundle as a resource bundle target: #2523

Fixed

  • Fixed -ivfsoverlay for mixed-language targets: #2478
  • -oso_prefix is now filtered from link.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

Ruleset Development Changes

  • Bumped minimum macOS for tools to 13.0: #2475

1.9.1 - 2023-08-14

Adjusted

  • 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

  • Fixed quoting of flags in SWIFT_OTHER_FLAGS: #2454
  • Fixed rules_ios .xccurrentversion collection: #2457 and #2465
  • Fixed BwX resource bundle Info.plist regression: 2466

1.9.0 - 2023-08-04

Adjusted

  • GENERATE_INFOPLIST_FILE is not longer set: #2379
  • Added an error message when target_ids_list is missing: #2396
  • Changed “Command Line Tool” disambiguation to “Tool”: #2434
  • Library module names are now preferred for target name disambiguation: #2407

Fixed

  • Fixed handling of conditional bundle_name: #2368 and #2375
  • Fixed Xcode set LD_LIBRARY_PATH and SDKROOT influencing bazel build: #2373
  • Fixed handling of conditionally empty build setting values: #2380
  • Fixed handling of generated .xccurrentversion files: #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

  • Fixed BwX not generating some Bazel generated files: #2361
  • Fixed some transitive modulemaps not being generated: #2362
  • Fixed swift_debug_settings.py not including testing search paths: #2363 and #2364
  • Fixed tool overrides still being set in BwB Index Build: #2365

1.8.0 - 2023-07-13

Adjusted

  • Updated index-import to 5.8.0.1: #2319 and #2332
  • Renamed two build phases for consistency: #2328
  • Added support for /PLACEHOLDER_DEVELOPER_DIR remapping: #2331
  • The DEVELOPER_DIR regex is now restricted to the start of the line: #2337
  • Adjusted .pbxproj formatting 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_WRAPPER is now captured in bazel_env: #2357

Fixed

  • PBXProj.objectVersion is now correctly set for Xcode 14+: #2341
  • Fixed libtool version check in Xcode 15: #2359
  • Tool overrides are now unset in the in BazelDependencies target: #2358

1.7.1 - 2023-06-20

Adjusted

  • Added a usual error message when no diagnostics are parsed: #2286
  • Added support for swift_compiler_plugin targets: #2293
  • We now set --repo_env=XCODE_VERSION: #2287

Fixed

  • Fixed replacement label handling when wrapped in a macro: #2291
  • Fixed BwX Swift testing search paths: #2295
  • Fixed possible bazel build output truncation: #2282
  • Fixed indexing of Swift macros: #2292
  • Fixed Swift macros in BwX mode: #2294

1.7.0 - 2023-06-07

Adjusted

  • 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-directory is now used: #2254
  • SWIFT_INCLUDE_PATHS is no longer set in BwB mode: #2245 and #2277
  • -I, -explicit-swift-module-map-file, and -vfsoverlay are now set in OTHER_SWIFT_FLAGS: #2256
  • -F is now set in OTHER_SWIFT_FLAGS: #2258 and #2263
  • PROJECT_DIR is now used instead of CURRENT_EXECUTION_ROOT: #2259
  • $(BAZEL_OUT) is now used to reference compile params files: #2260
  • Paths are now always absolute in swift.compile.params and OTHER_SWIFT_FLAGS: #2261, #2265, #2267, and #2269
  • swiftc_stub now errors out instead of warning: #2278
  • Removed unnecessary dependencies from release archive: #2279

Fixed

  • __BAZEL_ variables ar now replaced in swift_debug_sttings.py: #2213
  • Development region is now properly set in PBXProject.knownRegions: #2228
  • Fixed tests in custom schemes when ios_unit_test.bundle_name is used: #2248
  • Fixed test_suite label 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_stub with Xcode 15: #2276
  • Fixed handling of build configuration in custom schemes: #2274

1.6.0 - 2023-05-18

New

  • test_suite targets can now be specified in xcodeproj.top_level_targets: #2184
  • ios_*_test_suite targets can now be specified in xcodeproj.top_level_targets: #2196
  • Added a bzl_library target for xcodeproj files: #2204

Adjusted

  • 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 Build script is now consistently named and structured: #2164 and #2177
  • App extensions can no longer be specified in xcodeproj.top_level_targets: #2183

Fixed

  • Fixed a target consolidation crash: #2195
  • Fixed xcodeproj.xcode_configurations not supporting Starlark build settings with bzlmod enabled: #2191
  • {resource_,}filegroups not belonging to focused targets are now properly excluded from the generated project: #2159

1.5.1 - 2023-04-26

Adjusted

Fixed

  • Fixed _write_target_ids_list regression: #2121
  • Fixed _skip_target handling of compilation_providers.merge: #2123

1.5.0 - 2023-04-25

Adjusted

Fixed

  • Fixed output base when using --config=indexbuild with the command-line API: #2027
  • Fixed create_lldbinit.sh not appending content to a new line: #2036
  • Fixed import_indexstores.sh when using swift.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

New

Adjusted

Fixed

  • 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 dump and shutdown commands: #2019
  • Fixed specs collection: #1966
  • Fixed BwB test action env variables for custom schemes without launch actions: #1955
  • Fixed BwX swift_debug_settings.py generation: #1971

1.3.3 - 2023-03-24

Adjusted

  • 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

  • Fixed linux builds: #1896
  • Fixed target focusing in less than Bazel 6: #1913
  • Illegal characters are now removed from custom scheme names: #1915
  • --output_base set on command-line is now respected: #1917

1.3.2 - 2023-03-17

Fixed

  • Fixed handling of multiline xcodeproj.{pre,post}_build values: #1892
  • Fixed visibility with bzlmod: #1895
    • You should change your visibility/package_groups to mention the @rules_xcodeproj//xcodeproj:generated package_group

1.3.1 - 2023-03-16

Adjusted

  • Moved generated generators to an external repository: #1876, #1886, and #1887
    • The .rules_xcodeproj directory 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__
  • Improved the efficency of various Stalark code: #1866, #1867, #1868, #1869, #1871, #1872, #1873, #1874, #1879, #1882, #1884, #1883, and #1885

Fixed

  • Fixed handling of -Xcc -iquote -Xcc path type 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

New

Adjusted

  • 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_xcodeproj to rules_xcodeproj in your MODULE.bazel or WORKSPACE file
    • Then run this buildifier command: 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

  • Fixed extra_files logic for merged targets when using focused targets: #1782
  • Stale files in .xcodeproj/rules_xcodeproj/bazel are now properly deleted: #1803
  • Fixed CC copts tokenization: #1811
  • Fixed bazelisk invoking in runner.sh: #1849
  • Fixed handling of large number of linker flags: #1862

1.2.0 - 2023-02-22

New

Adjusted

  • We now use the first architecture when importing indexing data if multiple are set: #1763
  • We now set the full range for SUPPORTED_PLATFORMS in normal builds: #1762
  • --cache_computed_file_digests is 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

  • 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_list in 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_directory attribute: #1723
  • Added support for rules_apple's *_build_test rules: #1730
  • Fixed compiling of objc_library targets that don't correctly set testonly: #1743
  • Fixed indexing of rules that use -vfsoverlay: #1726
  • Fixed args, envs, and xccurrentversions related generation errors when using focused targets: #1728 and #1729
  • Fixed cp -c issue with multiple volumes: #1747

1.0.0rc2 - 2023-02-01

  • dSYMs are now copied into Derived Data in BwB mode: #1626
  • Non-source *_library targets no longer generate Xcode targets (again): #1713
  • Target merging restrictions now apply for non-Swift targets as well: #1717
  • Fixed breakpoints when ~/.lldbinit-Xcode exists: #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

⚠️ Breaking Changes ⚠️

  • Removed deprecated xcodeproj.bzl: #1695
  • Added unstable API warning to public providers: #1703

Fixes and Improvements

  • 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.py creation 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_SOURCE when using ASAN: #1707
  • Fixed BwB handling of -O when 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_CPLUSPLUSFLAGS when 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 depset mutability 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

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

⚠️ Breaking Changes ⚠️

  • VFS overlays (e.g. swift.vfsoverlay or rules_ios's apple_library) are no longer supported in BwX mode: #1559

New

  • Started to add support for bzlmod: #1502

Fixes and Improvements

  • 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 .lldbinit is now created in a launch pre-action: #1532, #1533, #1534, #1535, and #1587
  • The link.params file 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-out and external directories: #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

⚠️ Breaking Changes ⚠️

  • Team ID is now always required when using xcode_provisioning_profile: #1397
  • Remove deprecated device_and_simulator rule: #1391

New

  • Added xcodeproj.xcode_minimum_version: #1463, #1464, and #1465
  • Added a --collect_specs command-line option: #1498

Fixes and Improvements

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

⚠️ Breaking Changes ⚠️

  • 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.

New

  • Added official command-line API: #1350 and #1371
  • Added support for propagating env values from *_test rules: #1275
  • Added pre_post_actions to test_action: #1333

Fixes and Improvements

0.9.0 - 2022-10-06

⚠️ Breaking Changes ⚠️

  • Moved public rules and macros to xcodeproj/defs.bzl: #1115

New

Fixes and Improvements

  • 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-file in 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 None swift.module.swiftsourceinfo: #1204
  • Fixed handling of None module.clang: #1205
  • Fixed handling of None AppleBundleInfo.bundle_id: #1211
  • Converted swiftc stub to a compiled binary: #1198, #1225, and #1227
  • Fixed --incompatible_unambiguous_label_stringification handling: #1218
  • We now apply the same env -i during 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 Dependencies checked: #1226

0.8.0 - 2022-09-15

⚠️ Breaking Changes ⚠️

  • device_and_simulator has been deprecated. Use the new top_level_target.target_environments argument instead: #965
  • xcode_provisioning_profile has moved from xcodeproj/experimental.bzl to xcodeproj/xcodeproj.bzl: #1069
  • xcodeproj.build_mode now defaults to "bazel": #1022
  • It is now an error to list non-top-level targets in top_level_targets: #1104

New

  • 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 //:xcodeproj are ignored
    • To adjust the project generation, use the newly available Bazel configs
  • 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

Fixes and Improvements

  • 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_binary targets: #1003, #1004, and #1034
  • The generator is now a universal target with a set minimum OS: #1008
  • Extracted bazel_build.sh to 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

New

  • Added {device,simulator}_only_targets attributes to device_and_simulator: #925
  • Added rules documentation: #936, #944, #964, #969, and #974

Fixes and Improvements

  • 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_repository and new_local_repository targets: #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 -D quote handing: #948
  • The ASSETCATALOG_COMPILER_APPICON_NAME build setting is now set: #932
  • Fixed Resource bundle detection: #958
  • Added no-remote to project generation: #972
  • Upgrade warnings are now disabled: #970

0.7.0 - 2022-08-05

⚠️ Breaking Changes ⚠️

  • xcodeproj's targets attribute has been renamed to top_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.

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/or unfocused_targets attributes on xcodeproj

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.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
  • 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 and swift_binary: #840 and #874
  • Moved intermediate files to $OBJROOT: #860
  • Improved indexing: #880

0.6.0 - 2022-07-13

New

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 in deps: #734

0.5.1 - 2022-07-06

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 internal bazel folder: #654
  • Added support for exported_symbols_lists: #649 and #655

Contributors

  • @brentleyjones
  • @BalestraPatrick
  • @maxwellE
  • @cgrindel
  • @luispadron

First PRs

  • @luispadron made their first contribution in #647

0.5.0 - 2022-07-01

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 for none, auto, and all: #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 named XcodeProjAutomaticTargetProcessingInfo)

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

New

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's BUILD files are now added to the Project navigator: #528

0.3.0 - 2022-05-18

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

0.2.0 - 2022-04-15

New

  • Added support for macos_unit_test,tvos_unit_test, and watchos_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 to python3: #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 of OTHER_CFLAGS: #275
  • Fixed modulemap rewriting: #279 and #284
  • Improved defines and local_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

0.1.0 - 2022-04-05

Initial release.

Footnotes

  1. Bzlmod has a different way of marking breaking changes with module.compatibility_level. We will increment both the major version and the compatibility_level in tandum.

  2. There are some APIs that have been explicitly marked as unstable, such as the XcodeProjAutomaticTargetProcessingInfo and XcodeProjInfo providers. Changes to unstable APIs do not count as breaking changes.

  3. 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.