Skip to content

Releases: MobileNativeFoundation/rules_xcodeproj

0.7.0: Improved Performance, Custom Schemes, and Focused Projects

05 Aug 14:59
0.7.0
7b61d03
Compare
Choose a tag to compare

What’s Changed

⚠️ 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

Full Changelog: 0.6.0...0.7.0

Contributors

Workspace Snippet

Please use the release asset (release.tar.gz) from your Bazel WORKSPACE instead of GitHub's source asset to reduce download size and improve reproducibility.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "com_github_buildbuddy_io_rules_xcodeproj",
    sha256 = "a647ad9ee6664a78377cf5707331966b6788be09d1fea48045a61bc450c8f1b1",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.7.0/release.tar.gz",
)

load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
    "xcodeproj_rules_dependencies",
)

xcodeproj_rules_dependencies()

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:extras.bzl",
    "swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()

load(
    "@build_bazel_apple_support//lib:repositories.bzl",
    "apple_support_dependencies",
)

apple_support_dependencies()

0.6.0: Embedded Targets

13 Jul 15:31
0.6.0
957a336
Compare
Choose a tag to compare

What’s Changed

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

Full Changelog: 0.5.1...0.6.0

Contributors

Workspace Snippet

Please use the release asset (release.tar.gz) from your Bazel WORKSPACE instead of GitHub's source asset to reduce download size and improve reproducibility.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "com_github_buildbuddy_io_rules_xcodeproj",
    sha256 = "0d53b6154c1296e5ac7885978b3b6430dcb88648c324e934f639e1f955184f41",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.6.0/release.tar.gz",
)

load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
    "xcodeproj_rules_dependencies",
)

xcodeproj_rules_dependencies()

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:extras.bzl",
    "swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()

load(
    "@build_bazel_apple_support//lib:repositories.bzl",
    "apple_support_dependencies",
)

apple_support_dependencies()

0.5.1: --ld-path, exported_symbols_lists, and simple BwB projects

06 Jul 17:13
0.5.1
a93aabc
Compare
Choose a tag to compare

What’s Changed

A small bug fix/improvements release:

  • SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD is now only set for iOS targets: #635
  • Fixed --ld-path path processing: #639
  • Fixed handing of targets with precompiled outputs as sources: #644
  • Fixed some missing PCM header search paths: #645
  • Fixed simple Build with Bazel project generation: #650 and #652
  • Fixed accidental inclusion of BUILD file in internal bazel folder: #654
  • Added support for exported_symbols_lists: #649 and #655

Full Changelog: 0.5.0...0.5.1

Contributors

First PRs

Workspace Snippet

Please use the release asset (release.tar.gz) from your Bazel WORKSPACE instead of GitHub's source asset to reduce download size and improve reproducibility.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "com_github_buildbuddy_io_rules_xcodeproj",
    sha256 = "6f382ee8151352c01c8900b1098eeb49172aac087120327b930c31c3c2e9b8ff",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.5.1/release.tar.gz",
)

load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
    "xcodeproj_rules_dependencies",
)

xcodeproj_rules_dependencies()

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:extras.bzl",
    "swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()

load(
    "@build_bazel_apple_support//lib:repositories.bzl",
    "apple_support_dependencies",
)

apple_support_dependencies()

0.5.0: Improved rules support

01 Jul 13:35
0.5.0
5710480
Compare
Choose a tag to compare

What’s Changed

New

  • Unknown rules are generically handled better
    • For Bazel targets that can't be made into Xcode targets, we let Bazel build them and copy out the required outputs: #575, #578, #590, #591
    • Bazel features needed by Build with Bazel are now enabled for Build with Xcode as well: #576
    • The Build with Bazel custom lldbinit is used when Building with Xcode as well, to enable debugging of the copied swiftmodules: #581
    • Various other fixes: #558, #598
  • Added support for the codesignopts attribute: #593
  • Added support for swift_import: #597
  • Added support for the alwayslink attribute: #607, #608
  • Finalized support for apple_{dynamic,static}_{framework,xcframework}_import: #609, #610, #625, #628
  • Added xcodeproj.scheme_autogeneration_mode with support 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)

Full Changelog: 0.4.2...0.5.0

Contributors

Workspace Snippet

Please use the release asset (release.tar.gz) from your Bazel WORKSPACE instead of GitHub's source asset to reduce download size and improve reproducibility.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "com_github_buildbuddy_io_rules_xcodeproj",
    sha256 = "728cb6089ad2f4c4de2003ce23462be662bfdd250a8735dc590e61fb7401e7d2",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.5.0/release.tar.gz",
)

load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
    "xcodeproj_rules_dependencies",
)

xcodeproj_rules_dependencies()

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:extras.bzl",
    "swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()

load(
    "@build_bazel_apple_support//lib:repositories.bzl",
    "apple_support_dependencies",
)

apple_support_dependencies()

0.4.2: Info.plist is back and indexing improvements

13 Jun 18:13
0.4.2
6849ec3
Compare
Choose a tag to compare

What’s Changed

A small bug fix/improvement release:

  • Improved indexing: #534, #536, #537, #544, #545
  • Added back the Info.plist display for Built with Bazel device builds: #541
  • Stopped including intermediate generated files: #542

Full Changelog: 0.4.1...0.4.2

Contributors

Workspace Snippet

Please use the release asset (release.tar.gz) from your Bazel WORKSPACE instead of GitHub's source asset to reduce download size and improve reproducibility.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "com_github_buildbuddy_io_rules_xcodeproj",
    sha256 = "c35896feb752df214f0f79cdb3b78404662ca7d710a7069f18b81158c1f442e2",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.4.2/release.tar.gz",
)

load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
    "xcodeproj_rules_dependencies",
)

xcodeproj_rules_dependencies()

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:extras.bzl",
    "swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()

load(
    "@build_bazel_apple_support//lib:repositories.bzl",
    "apple_support_dependencies",
)

apple_support_dependencies()

0.4.1: Debugging and device installation bug fixes

10 Jun 19:44
0.4.1
ea3eacd
Compare
Choose a tag to compare

What’s Changed

A small bug fix release:

  • Fixed debugging before indexing bazel-out has been created: #529
  • Fixed reinstalls of Built with Bazel apps to device: #531

Full Changelog: 0.4.0...0.4.1

Contributors

Workspace Snippet

Please use the release asset (release.tar.gz) from your Bazel WORKSPACE instead of GitHub's source asset to reduce download size and improve reproducibility.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "com_github_buildbuddy_io_rules_xcodeproj",
    sha256 = "7f617ea9f353567d6443f071391d29e0e365fae4b4c9ef2f7514437a9a3ea9e5",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.4.1/release.tar.gz",
)

load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
    "xcodeproj_rules_dependencies",
)

xcodeproj_rules_dependencies()

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:extras.bzl",
    "swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()

load(
    "@build_bazel_apple_support//lib:repositories.bzl",
    "apple_support_dependencies",
)

apple_support_dependencies()

0.4.0: Improved Simulator and device support

10 Jun 15:19
0.4.0
0131478
Compare
Choose a tag to compare

What’s Changed

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

Full Changelog: 0.3.0...0.4.0

Contributors

Workspace Snippet

Please use the release asset (release.tar.gz) from your Bazel WORKSPACE instead of GitHub's source asset to reduce download size and improve reproducibility.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "com_github_buildbuddy_io_rules_xcodeproj",
    sha256 = "c6be5570ee76c2d427767ea8484b4f0193492bedfdf7dee0fbb735b8d4d37b9d",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.4.0/release.tar.gz",
)

load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
    "xcodeproj_rules_dependencies",
)

xcodeproj_rules_dependencies()

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:extras.bzl",
    "swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()

load(
    "@build_bazel_apple_support//lib:repositories.bzl",
    "apple_support_dependencies",
)

apple_support_dependencies()

0.3.0: Initial Build with Bazel

18 May 18:02
0.3.0
7176284
Compare
Choose a tag to compare

What’s Changed

New

  • Added initial support for Building with Bazel: #313, #316, #350, #359, #362, #384, #389, #394, #396, #401, #404, #405, #408, #407, #420, #422, #423, #425, #426, #440, #446, and more
    • ⚠️ Support for Building with Bazel is still very rough, and has a bit more to go in order to reach our high level goals. Also, in Bazel versions that still have this bug, the rapidly changing nature of the support (which will involve more transitions changes) can make it annoying to use this mode. With that said, we would appreciate all the feedback we can get from early testers! ⚠️
  • Added support for cc_library.includes: #310 and #325
  • Added support for swift_library.private_deps: #342
  • Added support for objc_import: #347
  • Schemes are now generated instead of letting Xcode generate them: #361, #397, and #385
  • Added support for code signing entitlements: #367
  • Added support for objc_library.sdk_dylibs: #372
  • Added support for Core Data model files: #288

Fixes and Improvements

  • Fixed explosive memory use of inefficient _process_dependencies(): #307
  • Fixed projects failing to build after being moved: #319
  • Improved indexing: #329 and #330
  • Improved handling of projects without Bazel generated files: #331, #332, #337, and #381
  • Improved handling of Bazel outputs: #333, #353, #430, #431, and #434
  • Various linking improvements: #340, #345, #348, #365, #409
  • Improved handling of frameworks: #346 and #444
  • Objective-C is now used instead of Swift for the compile stub: #369
  • A work around for an Xcode debugging crash related to DYLD_LIBRARY_PATH is now used: #373
  • Various changes to ensure that --incompatible_disallow_empty_glob is supported
  • Removed color ansi codes from bazel output within Xcode: #410
  • Info.plist patching warning is now silenced: #411
  • dbg compilation mode is used when building insides Xcode: #413
  • Fixed default GCC_OPTIMIZATION_LEVEL: #412
  • Fixed -debug-prefix-map handling: #416
  • Improved disambiguation of targets with names that only differ by case: #424
  • Improved filtering of input files: #442

Full Changelog: 0.2.0...0.3.0

Contributors

First PRs

Workspace Snippet

Please use the release asset (release.tar.gz) from your Bazel WORKSPACE instead of GitHub's source asset to reduce download size and improve reproducibility.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "com_github_buildbuddy_io_rules_xcodeproj",
    sha256 = "5a902801e2337fc14faeb2613d70202f2dd4755bba3d94ba068c1f622edba89e",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.3.0/release.tar.gz",
)

load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
    "xcodeproj_rules_dependencies",
)

xcodeproj_rules_dependencies()

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:extras.bzl",
    "swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()

load(
    "@build_bazel_apple_support//lib:repositories.bzl",
    "apple_support_dependencies",
)

apple_support_dependencies()

0.2.0: Build with Xcode improvements

15 Apr 18:39
0.2.0
c5f70a4
Compare
Choose a tag to compare

What’s Changed

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

Full Changelog: 0.1.0...0.2.0

Contributors

First PRs

Workspace Snippet

Please use the release asset (release.tar.gz) from your Bazel WORKSPACE instead of GitHub's source asset to reduce download size and improve reproducibility.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "com_github_buildbuddy_io_rules_xcodeproj",
    sha256 = "3a45e9e20bfb36c306ccc51407b97ff7d320c597d3c1c533cbdee9e66cff5cda",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.2.0/release.tar.gz",
)

load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
    "xcodeproj_rules_dependencies",
)

xcodeproj_rules_dependencies()

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:extras.bzl",
    "swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()

load(
    "@build_bazel_apple_support//lib:repositories.bzl",
    "apple_support_dependencies",
)

apple_support_dependencies()

0.1.0: Initial Build with Xcode

05 Apr 15:25
0.1.0
6b36c86
Compare
Choose a tag to compare

What’s Changed

Initial release.

Full Changelog: https://github.com/buildbuddy-io/rules_xcodeproj/commits/0.1.0

New Contributors

Special Thanks

Thank you @BalestraPatrick at @spotify and @erikkerber at @slackhq for helping test the ruleset on some real codebases ❤️.

Thank you @tylerwilliams for the many, many code reviews 🤗.

Workspace Snippet

Please use the release asset (release.tar.gz) from your Bazel WORKSPACE instead of GitHub's source asset to reduce download size and improve reproducibility.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "com_github_buildbuddy_io_rules_xcodeproj",
    sha256 = "e82b24c55e479905383d1567d7617a14d1995638bf78b468218f7a44c176ce15",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.1.0/release.tar.gz",
)

load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
    "xcodeproj_rules_dependencies",
)

xcodeproj_rules_dependencies()

load(
    "@build_bazel_rules_apple//apple:repositories.bzl",
    "apple_rules_dependencies",
)

apple_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:repositories.bzl",
    "swift_rules_dependencies",
)

swift_rules_dependencies()

load(
    "@build_bazel_rules_swift//swift:extras.bzl",
    "swift_rules_extra_dependencies",
)

swift_rules_extra_dependencies()

load(
    "@build_bazel_apple_support//lib:repositories.bzl",
    "apple_support_dependencies",
)

apple_support_dependencies()