This repository contains rules for Bazel that can be used to generate Xcode projects

Overview

rules_xcodeproj

This repository contains rules for Bazel that can be used to generate Xcode projects.

If you run into any problems with these rules, please file an issue!

Features

  • Build Bazel targets with Xcode (not Bazel), with full support for:
    • Indexing (i.e. autocomplete, syntax highlighting, jump to definition)
    • Debugging
    • Tests (Unit and UI)
    • SwiftUI Previews

Note: Not all rules are supported yet, and the rules that are supported don't have full support yet. See the 1.0 Project for details on progress towards the 1.0 release. Here are a few of the planned high level features:

Compatibility

  • Xcode 13.2.1
  • Bazel 5.0.0 and above
  • rules_swift 0.26.0 and above
  • rules_apple 0.33.0 and above

Please refer to the release notes for a given release to see which versions it is compatible with.

Quick setup

Add the following to your WORKSPACE file to add the external repositories, replacing the version number in the url attribute with the version of the rules you wish to depend on:

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

http_archive(
    name = "com_github_buildbuddy_io_rules_xcodeproj",
    url = "https://github.com/buildbuddy-io/rules_xcodeproj/archive/refs/heads/main.tar.gz",
    strip_prefix = "rules_xcodeproj-main",
)

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()

Examples

Minimal example:

load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application")
load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
load(
    "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:xcodeproj.bzl",
    "xcodeproj",
)

swift_library(
    name = "Lib",
    srcs = glob(["**/*.swift"]),
)

ios_application(
    name = "App",
    bundle_id = "com.example.app",
    families = ["iphone", "ipad"],
    infoplists = [":Info.plist"],
    minimum_os_version = "15.0",
    deps = [":Lib"],
)

xcodeproj(
    name = "xcodeproj",
    project_name = "App",
    targets = [
        ":App",
    ],
    tags = ["manual"],
)

You can then create the Xcode project with:

bazel run //:xcodeproj

The generated project will be in the workspace at App.xcodeproj.

See the examples directory for sample setups.

Comments
  • Bug: Bazel didn't generate the correct files

    Bug: Bazel didn't generate the correct files

    Describe the bug

    I'm getting this error:

    Bazel didn't generate the correct files (it should have generated outputs for output group "bc //App:App applebin_ios-ios_x86_64-dbg-ST-223d7abe647f", but the timestamp for "/redacted/execroot/main/bazel-out/ios_x86_64-dbg/bin//xcodeproj.generator-bc __App:App applebin_ios-ios_x86_64-dbg-ST-223d7abe647f.filelist" was from before the build). Please regenerate the project to fix this. If your bazel version is less than 5.2, you may need to bazel clean and/or bazel shutdown to work around a bug in project generation. If you are still getting this error after all of that, please file a bug report here: https://github.com/buildbuddy-io/rules_xcodeproj/issues/new?template=bug.md.

    Versions

    • Bazel: 6.0.0-pre.20220804.3
    • rules_xcodeproj: https://github.com/buildbuddy-io/rules_xcodeproj/commit/f95830d20cbee5fb30ccca95db1574cc10844548
    • rules_apple: https://github.com/bazelbuild/rules_apple/commit/c1ed1f377258403f333f76d0003389477d363214
    • rules_swift: https://github.com/bazelbuild/rules_swift/commit/4ab0e56cc8aa6a0375ce15f5c10aaebf91c582e4

    Additional context

    Here is the diff between the original configuration and the configuration built in the generated project.

    @@ -1,5 +1,5 @@
    -BuildConfigurationValue 7780922449e23c987f56de6c5b2c6b69b752f30de65927d9eb8fe90334c5f408:
    -Skyframe Key: BuildConfigurationKey[7780922449e23c987f56de6c5b2c6b69b752f30de65927d9eb8fe90334c5f408]
    +BuildConfigurationValue 83f18cf99fb91b4b51b5992b056b003c1dd3dd2fcde937c293962fd93942c855:
    +Skyframe Key: BuildConfigurationKey[83f18cf99fb91b4b51b5992b056b003c1dd3dd2fcde937c293962fd93942c855]
     Fragments: com.google.devtools.build.lib.analysis.PlatformConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions], com.google.devtools.build.lib.analysis.ShellConfiguration: [com.google.devtools.build.lib.analysis.ShellConfiguration$Options], com.google.devtools.build.lib.analysis.test.CoverageConfiguration: [com.google.devtools.build.lib.analysis.config.CoreOptions,com.google.devtools.build.lib.analysis.test.CoverageConfiguration$CoverageOptions], com.google.devtools.build.lib.analysis.test.TestConfiguration: [com.google.devtools.build.lib.analysis.test.TestConfiguration$TestOptions], com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvConfiguration: [com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider$StrictActionEnvOptions], com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration: [com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration$Options,com.google.devtools.build.lib.rules.python.PythonOptions], com.google.devtools.build.lib.rules.android.AndroidConfiguration: [com.google.devtools.build.lib.rules.android.AndroidConfiguration$Options], com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration: [com.google.devtools.build.lib.rules.android.AndroidLocalTestConfiguration$Options], com.google.devtools.build.lib.rules.android.BazelAndroidConfiguration: [com.google.devtools.build.lib.rules.android.BazelAndroidConfiguration$Options], com.google.devtools.build.lib.rules.apple.AppleConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions], com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration: [com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions], com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration: [com.google.devtools.build.lib.rules.config.ConfigFeatureFlagOptions], com.google.devtools.build.lib.rules.cpp.CppConfiguration: [com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions,com.google.devtools.build.lib.rules.cpp.CppOptions], com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration: [com.google.devtools.build.lib.rules.genquery.GenQueryConfiguration$GenQueryOptions], com.google.devtools.build.lib.rules.java.JavaConfiguration: [com.google.devtools.build.lib.analysis.PlatformOptions,com.google.devtools.build.lib.rules.java.JavaOptions], com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration: [com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions], com.google.devtools.build.lib.rules.objc.ObjcConfiguration: [com.google.devtools.build.lib.rules.cpp.CppOptions,com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions], com.google.devtools.build.lib.rules.proto.ProtoConfiguration: [com.google.devtools.build.lib.rules.proto.ProtoConfiguration$Options], com.google.devtools.build.lib.rules.python.PythonConfiguration: [com.google.devtools.build.lib.rules.python.PythonOptions],
     FragmentOptions com.google.devtools.build.lib.analysis.PlatformOptions {
       experimental_add_exec_constraints_to_targets: []
    @@ -20,7 +20,7 @@
     }
     FragmentOptions com.google.devtools.build.lib.analysis.config.CoreOptions {
       action_env: [PATH=/bin:/usr/bin]
    -  affected by starlark transition: [//command_line_option:apple configuration distinguisher, //command_line_option:ios_minimum_os, //command_line_option:platforms]
    +  affected by starlark transition: []
       allow_analysis_failures: false
       analysis_testing_deps_limit: 2000
       archived_tree_artifact_mnemonics_filter: -(?:(?>.*))
    @@ -53,7 +53,7 @@
       experimental_skip_runfiles_manifests: false
       experimental_skyframe_native_filesets: true
       experimental_strict_fileset_output: false
    -  features: [swift.cacheable_swiftmodules, swift.use_global_module_cache, swift.index_while_building, swift.disable_system_index, swift.opt_uses_wmo, swift.vfsoverlay, swift.debug_prefix_map, apple.swizzle_absolute_xcttestsourcelocation, oso_prefix_is_pwd, relative_ast_path, swift.debug_prefix_map]
    +  features: [swift.cacheable_swiftmodules, swift.use_global_module_cache, swift.index_while_building, swift.disable_system_index, swift.opt_uses_wmo, swift.vfsoverlay, swift.debug_prefix_map, apple.swizzle_absolute_xcttestsourcelocation, oso_prefix_is_pwd, relative_ast_path, apple.swizzle_absolute_xcttestsourcelocation, oso_prefix_is_pwd, relative_ast_path, swift.cacheable_swiftmodules]
       flag_alias: []
       host_action_env: []
       host_compilation_mode: opt
    @@ -161,7 +161,7 @@
       merge_android_manifest_permissions: false
     }
     FragmentOptions com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions {
    -  apple configuration distinguisher: APPLEBIN_IOS
    +  apple configuration distinguisher: UNKNOWN
       apple_bitcode: []
       apple_compiler: null
       apple_crosstool_top: @bazel_tools//tools/cpp:toolchain
    @@ -177,7 +177,7 @@
       host_macos_minimum_os: null
       incompatible_enable_apple_toolchain_resolution: false
       ios_cpu: x86_64
    -  ios_minimum_os: 14.0
    +  ios_minimum_os: null
       ios_multi_cpus: []
       ios_sdk_version: null
       macos_cpus: []
    @@ -303,7 +303,7 @@
       experimental_enable_jspecify: true
       experimental_fix_deps_tool: add_dep
       experimental_import_deps_checking: OFF
    -  experimental_inmemory_jdeps_files: true
    +  experimental_inmemory_jdeps_files: false
       experimental_java_classpath: JAVABUILDER
       experimental_java_header_input_pruning: false
       experimental_limit_android_lint_to_android_constrained_java: false
    
    bug 
    opened by thii 17
  • Nest output base inside of

    Nest output base inside of "outer" output path

    This is to make sure that the analysis cache stays as hot as possible. This should bring the consistency of BwB performance more in line with BwX.

    We currently don't set a different output base for each of the different configs (e.g. SwiftUI Preview, asan, etc.), as some generated build inputs (e.g. Info.plists) currently can't be found that way. This means that switching between SwiftUI Previews and normal builds, or having builds that have different sanitizers set, will clear at least some of the analysis cache.

    opened by brentleyjones 15
  • Feature Request: Set runtime env vars for tests

    Feature Request: Set runtime env vars for tests

    Test targets can use the env attribute to supply environment variables for tests at runtime; however, these variables are not propagated when running the test target in BwB.

    One potential solution is creating an env attribute on custom schemes for the test action similar to what we've done with the launch_action attributes. This would allow us to share the env var dict in the BUILD file with the test target and custom scheme.

    Tasks

    • [x] #940
    • [x] #942
    • [x] Fix Expand Variables Based On setting when specifying test env vars/args
      • [x] #951
      • [x] #956
    • [x] Propagate env variables from XXX_unit_test. (Request)
    feature request 
    opened by sebastianv1 15
  • Feature Request: Provide a means for clients to define custom Xcode schemes

    Feature Request: Provide a means for clients to define custom Xcode schemes

    Today, rules_xcodeproj generates an Xcode scheme for each target. It would be useful for clients to be able to define and configure the Xcode schemes as one can do in the Xcode user interface.

    Suggested Features

    • Specify a custom name
    • Specify the targets to build in each scheme.
    • Identify the test targets in the build list and use them as the testables.
    • Specify the launch target.

    Tasks

    • [x] #592
    • [x] #612
    • [x] #626
    • [x] #630
    • [x] #637
    • [x] #646
    • [x] #662
    • [x] #664
    • [x] #656
    • [x] #733
    • [x] Generate custom Xcode schemes.
      • [x] #748
      • [x] #801
      • [x] #807
      • [x] #803
      • [x] #808
      • [x] #809
      • [x] #844
      • [x] Remove or adjust top-level target logic: top-level inference, isTopLevel logic
        • [x] #846
        • [x] #855
        • [x] #859
        • [x] #865
        • [x] #867
      • [x] Update "best" host logic selection in XCSchemeInfo.TargetInfo when the best host is not a top-level target. (see GH573 comment)
        • [x] #889
        • [x] #890
      • [x] Update buildFor logic
        • [x] #896
        • [x] #899
        • [x] #901
        • [x] #905
        • [x] #909
    • [x] Migrate Hashable implementation for XCScheme.BuidableReference to tuist/XcodeProj.
      • [x] tuist/XcodeProj#712
      • [x] #912
    • [x] #913

    Deferred Items

    • Be sure that typos in any of the labels specified in the schemes are checked for validity. Slack thread
      • It turns out that Label() does not validate that a label is valid (i.e., exists).
      • @brentleyjones and I discussed some options for other ways to validate the existence of a label. Namely, we could add an attribute to the _xcodeproj rule that references all of the labels that are specified in the schemes. The downside to this approach is that it may cause analysis of the specified targets using the default (i.e., incorrect) configuration. Also, if a failure occurs, it could be confusing to understand what is causing the error (e.g., xcodeproj vs the scheme definition).
      • In short, we are punting on this for now.
    • #857
    feature request 
    opened by cgrindel 15
  • Ensure app icons for targets in BwB projects appear in schemes user interface

    Ensure app icons for targets in BwB projects appear in schemes user interface

    Related to #949.

    • Move application icon functions to app_icons.bzl.
    • Add app_icons.get_info() to retrieve application icon information for a target.
    • Implement rudimentary logic for finding a default application icon.
    opened by cgrindel 12
  • Use actual paths for BAZEL_OUT and BAZEL_EXTERNAL

    Use actual paths for BAZEL_OUT and BAZEL_EXTERNAL

    Progress towards #202. Fixes #261. Fixes #858.

    This partially reverts 0e6427003f150d9e0f36bc56402f9aea082e9602.

    Making this change has numerous benefits:

    • Xcode will now index targets that solely consist of generated or external files
    • Generated and external sources no longer show up twice in code completion
    • There is no longer a difference between "bazel-out" and "gen_dir" in the codebase, greatly simplifying that logic
    • Project generation is faster as it doesn't have to invoke xcodebuild to determine $OBJROOT
    • Makes progress towards moveable .xcodeproj bundles
    opened by brentleyjones 12
  • Feature Request: Allow per-`xcodeproj` Bazel configuration

    Feature Request: Allow per-`xcodeproj` Bazel configuration

    In some cases it is useful to specify the configuration only for building from Xcode. It would be useful to have something like this:

    xcodeproj(
        name = "xcodeproj",
        project_name = "App",
        bazel_build_config = "rules_xcodeproj"
    ...
    )
    

    And if this argument is specified, it will be passed to all calls to bazel. For example for the build call in BazelDependencies: bazel build --config=rules_xcodeproj ...

    Note: Now we can achieve the same behavior by setting a custom bazel_path to the wrapper script, which will add the config as a parameter. But this is not really convenient.

    feature request 
    opened by CognitiveDisson 12
  • Bug: `ENABLE_TESTING_SEARCH_PATHS` build setting not set when `testonly = True`

    Bug: `ENABLE_TESTING_SEARCH_PATHS` build setting not set when `testonly = True`

    Xcode provides ENABLE_TESTING_SEARCH_PATHS which will include Developer/Library/Frameworks to the builds search paths, so developers can use XCTest libraries in non-test targets.

    Currently rules_swift sets that for everything, while Xcode makes it disabled-by-default.

    bug good first issue 
    opened by erikkerber 12
  • Convert swiftc stub to a compiled binary

    Convert swiftc stub to a compiled binary

    • Rewrite swiftc stub in Swift
    • Remove JSON parsing logic, and derive .d file paths based on output file map paths. This is less future-proof, but it significantly speeds up the Swift stub compiling.

    This improves the Swift stub compiling by approximately 3x.

    Test Plan:

    1. Generate a project in BwB
    2. Run:
    for i in {1..10}; do
      xcodebuild -project MyProject.xcodeproj \
        -scheme MyScheme \
        -showBuildTimingSummary \
        -derivedDataPath `mktemp -d` \
        2>&1 \
        | tail -n 18 \
        | grep CompileSwiftSources \
        | awk '{ print $5 }'
    done
    

    Results:

    • Before:
    174.125
    172.03
    178.563
    181.431
    180.348
    173.165
    183.058
    157.426
    179.693
    157.81
    
    • After:
    66.839
    64.218
    70.396
    69.951
    70.189
    72.057
    65.311
    70.277
    66.009
    65.146
    

    Things I've tried but didn't see (much) improvements:

    • Keep the Python implementation but remove the JSON parsing part
    • Rewrite in Swift but keep the JSON parsing part
    • Rewrite in C++ (with or without JSON parsing) (https://github.com/buildbuddy-io/rules_xcodeproj/pull/1197)

    This will require refactoring of the generator - since it currently installs integration files by copying the whole integration directory instead of each file, it can't copy generated files. In this patch, I just add a new argument to take the swiftc-stub path for now.

    opened by thii 11
  • Bug: Unable to omit build_for when creating build_target

    Bug: Unable to omit build_for when creating build_target

    Describe the bug

    build_for defaults to None in xcode_scheme.build_target. This None value isn't converted into a default build_for value, resulting in a Codable error during generation:

    ERROR: Internal precondition failure:
    At codingPath [customXcodeSchemes, Index 0, buildAction, targets, Index 0, buildFor]: Cannot get keyed decoding container -- found null value instead.
    

    Reproduction steps

    1. Create a custom scheme with a build target, omitting build_for:
            build_action = xcode_schemes.build_action([
                xcode_schemes.build_target(
                    "//Foo:Bar
                ),
            ]),
    

    This passes loading and analysis, but fails at project generation

    Expected behavior

    Either:

    • build_for defaults its values, per model_test.bzl
    • A Starlark error is observed

    Versions

    • Bazel: 5.3
    • rules_xcodeproj: 739b8bb0
    • rules_apple:
    • rules_swift:

    Additional context

    bug 
    opened by erikkerber 10
  • Merge `Target.platform`

    Merge `Target.platform`

    The library being merged into a top level target might have a different minimum os version. Now that 1ab36b4c6814faa73849c71e9d02a20181c13336 has landed, we need to account for the differences.

    opened by brentleyjones 10
  • Bug: Breakpoints aren't resolved in iOS extensions in BwB mode

    Bug: Breakpoints aren't resolved in iOS extensions in BwB mode

    Describe the bug

    When building with Bazel (BwB), breakpoints set in iOS extensions aren't resolved.

    Reproduction steps

    I reproduced this in the examples/integration project as well as an internal project with various extensions (Widget and iMessage at least). You should be able to reproduce this by changing this line to bazel and running bazelisk run //:xcodeproj-sim_arm64 inside examples/integration. I set a breakpoint at MessagesViewController:6 along with a print("") statement. When running the app in the Simulator, the breakpoint turns unresolved but the print statement works (meaning the app launched successfully).

    Expected behavior

    Breakpoints should be resolved correctly and debugger should stop at breakpoints.

    Versions

    • Bazel: 6.0.0
    • rules_xcodeproj: 0c953d33d64a96ab61a7dfed546bbba6db9362df
    • rules_apple: 2.0.0
    • rules_swift: 1.5.0

    Additional context

    As a more visual description, this is what the breakpoints look like after launching the iMessage app in the example project.

    Screenshot 2023-01-04 at 10 49 57 PM bug 
    opened by BalestraPatrick 0
  • Feature Request: Support `Arguments Passed On Launch` in `ios_unit_test`

    Feature Request: Support `Arguments Passed On Launch` in `ios_unit_test`

    Currently in bazel test it is possible to set something like args = ["--command_line_args=-AppleLanguages,(en)"], in order to pass Arguments Passed On Launch for test scheme. Expected Output would be: -AppleLanguages (en) (space separated)

    It would be very useful to have same feature in rules_xcodeproj in order to achieve something like:

    image

    Regarding --command_line_args, it is from here.

    feature request 
    opened by rasberik 2
  • Add support for bzlmod

    Add support for bzlmod

    This PR adds initial support for bzlmod. I still have to test it with an example project, but the basic infrastructure should be ready.

    bzlmod is only really ready to be used starting in Bazel 6.0. For this reason, the MODULE.bazel depends on rules_apple 2.0.0, which is also the release that requires Bazel 6. I will need to first check the newest version of rules_apple and rules_swift into the Bazel Central Registry, and then we can proceed testing the rules_xcodeproj integration.

    opened by BalestraPatrick 5
  • Feature Request: Possibility to profile the app in BwB mode

    Feature Request: Possibility to profile the app in BwB mode

    Right now when generating Xcode project (with --apple_generate_dsym and --output_groups=+dsyms options) the .dSYM file is not placed in DerivedData/<Project>/Build/Products/Debug-iphoneos directory. This causes stack trace not being symbolicated when profiling the app on device.

    Would be nice to have profiling functionality working in BwB mode. Thank you!

    feature request BwB 
    opened by aleksandergrzyb 0
Releases(0.11.0)
  • 0.11.0(Dec 20, 2022)

    What's Changed

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

    • Upgraded index-import to 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 XcodeProjInfo providers 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_cache is now set in xcodeproj.bazelrc: #1442
    • Fixed excessively long filelist paths: #1458
    • Fixed debugging when using BwtB: #1461
    • Fixed lldb error when module is None: #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 AppleResourceInfo provider: #1492
    • Renamed an internal argument to improve compatibility with bazel wrappers: #1497

    Full Changelog: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.10.2...0.11.0

    Contributors

    • @brentleyjones
    • @BalestraPatrick

    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 = "2533b977ac8540a30323fde7fdb6ca49219edd21d3753b69d43f39c576b11a88",
        url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.11.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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(167.94 KB)
    release.tar.gz.sha256(118 bytes)
  • 0.10.2(Nov 1, 2022)

    What's Changed

    • 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 notes for more details of what is in the 0.10.0 release.

    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 = "b4e71c7740bb8cfa4bc0b91c0f18ac512debcc111ebe471280e24f579a3b0782",
        url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.10.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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(169.74 KB)
    release.tar.gz.sha256(118 bytes)
  • 0.10.1(Oct 28, 2022)

    What's Changed

    • Fixed some BwX linker bugs

    See the 0.10.0 release notes for more details of what is in the 0.10.0 release.

    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 = "598449ff3a08972227363a55d22b54707468ecf4370ff56662f9d6026f72c7a7",
        url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.10.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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(169.05 KB)
    release.tar.gz.sha256(118 bytes)
  • 0.10.0(Oct 28, 2022)

    What's Changed

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

    • 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_path for merged targets: #1245
    • Changed PROJECT_DIR to 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 rsync exclude 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-dir to filtered swiftcopts: #1316
    • Fixed target dependency to merged target: #1315
    • Added support for mixed language modules: #1317, #1318, #1319, and #1328
    • Fixed test_action.diagnostics propagation: #1321
    • Removed extra bazel info calls: #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 clean from 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

    Full Changelog: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.9.0...0.10.0

    Contributors

    • @brentleyjones
    • @chiragramani
    • @maxwellE
    • @erikkerber
    • @sebastianv1

    First PRs

    • @sebastianv1 made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/1333

    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 = "2f9638b7bae45c0ba6f53a66788a0ec17db6455f4db4df6abaf07017ee9a9419",
        url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.10.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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(169.04 KB)
    release.tar.gz.sha256(118 bytes)
  • 0.9.0(Oct 6, 2022)

    What's Changed

    ⚠️ Breaking Changes ⚠️

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

    New

    • 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_targets convenience function: #1207 and #1219

    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

    Full Changelog: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.8.0...0.9.0

    Contributors

    • @brentleyjones
    • @chiragramani
    • @thii
    • @erikkerber
    • @maxwellE
    • @ra1028

    First PRs

    • @thii made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/1112
    • @ra1028 made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/1129

    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 = "564381b33261ba29e3c8f505de82fc398452700b605d785ce3e4b9dd6c73b623",
        url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.9.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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(163.49 KB)
    release.tar.gz.sha256(118 bytes)
  • 0.8.0(Sep 15, 2022)

    What's Changed

    ⚠️ 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: https://github.com/buildbuddy-io/rules_xcodeproj/pull/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

    Full Changelog: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.7.1...0.8.0

    Contributors

    • @brentleyjones
    • @maxwellE
    • @BalestraPatrick
    • @chiragramani

    First PRs

    • @chiragramani made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/1047

    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 = "663bf83d8725f39694125d790eacd373e4c063bf80be4e6b5daa0a5dbe74df1f",
        url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.8.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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(154.42 KB)
    release.tar.gz.sha256(118 bytes)
  • 0.7.1(Aug 25, 2022)

    What's Changed

    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

    Full Changelog: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.7.0...0.7.1

    Contributors

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

    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 = "1dd8e60ccb457536960d37ad77109c941060d8bc1e6c8b318c7a54ac7cec1b68",
        url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.7.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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(136.66 KB)
    release.tar.gz.sha256(118 bytes)
  • 0.7.0(Aug 5, 2022)

    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: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.6.0...0.7.0

    Contributors

    • @brentleyjones
    • @cgrindel
    • @pennig
    • @BalestraPatrick

    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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(130.05 KB)
    release.tar.gz.sha256(108 bytes)
  • 0.6.0(Jul 13, 2022)

    What's Changed

    New

    • Added support for Watch Apps: #657, #661, #666, #660, #665, and #718
    • Added support for App Extensions: #689, #687, #699, #701, #720, #634, and #723
    • Added support for iMessage Apps: #728, #729
    • Added support for App Clips: #731 and #732
    • Added support for the launchdplists attribute: #684
    • Added support for the executable_name attribute: #721

    Fixes and Improvements

    • Various fixes for unmerged top-level targets: #669, #673, #674, #725, #726
    • Improved linker flag handling: #670
    • Removed invalid target merges warning: #671
    • Fixed formatting of some build settings: #717 and #719
    • Fixed handling of $location()/$rootpath() in copts: #722
    • Fixed handling of apple_resource_bundle in deps: #734

    Full Changelog: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.5.1...0.6.0

    Contributors

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

    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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(106.91 KB)
    release.tar.gz.sha256(108 bytes)
  • 0.5.1(Jul 6, 2022)

    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: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.5.0...0.5.1

    Contributors

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

    First PRs

    • @luispadron made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/647

    Workspace Snippet

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

    load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
    
    http_archive(
        name = "com_github_buildbuddy_io_rules_xcodeproj",
        sha256 = "6f382ee8151352c01c8900b1098eeb49172aac087120327b930c31c3c2e9b8ff",
        url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.5.1/release.tar.gz",
    )
    
    load(
        "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
        "xcodeproj_rules_dependencies",
    )
    
    xcodeproj_rules_dependencies()
    
    load(
        "@build_bazel_rules_apple//apple:repositories.bzl",
        "apple_rules_dependencies",
    )
    
    apple_rules_dependencies()
    
    load(
        "@build_bazel_rules_swift//swift:repositories.bzl",
        "swift_rules_dependencies",
    )
    
    swift_rules_dependencies()
    
    load(
        "@build_bazel_rules_swift//swift:extras.bzl",
        "swift_rules_extra_dependencies",
    )
    
    swift_rules_extra_dependencies()
    
    load(
        "@build_bazel_apple_support//lib:repositories.bzl",
        "apple_support_dependencies",
    )
    
    apple_support_dependencies()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(99.64 KB)
    release.tar.gz.sha256(108 bytes)
  • 0.5.0(Jul 1, 2022)

    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: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.4.2...0.5.0

    Contributors

    • @brentleyjones
    • @BalestraPatrick
    • @cgrindel
    • @jpsim
    • @maxwellE

    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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(97.01 KB)
    release.tar.gz.sha256(108 bytes)
  • 0.4.2(Jun 13, 2022)

    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: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.4.1...0.4.2

    Contributors

    • @brentleyjones
    • @BalestraPatrick
    • @jpsim
    • @keith
    • @maxwellE

    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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(92.57 KB)
    release.tar.gz.sha256(108 bytes)
  • 0.4.1(Jun 10, 2022)

    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: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.4.0...0.4.1

    Contributors

    • @brentleyjones
    • @BalestraPatrick
    • @jpsim
    • @erikkerber

    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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(92.30 KB)
    release.tar.gz.sha256(108 bytes)
  • 0.4.0(Jun 10, 2022)

    What's Changed

    New

    • Added experimental support for single targets to support both the Simulator and device destinations with the device_and_simulator rule: #457, #465, #466, #472, #473, #474, #477, #480, #490, #488, #491, #492, #496, #498, #503, #507, #511, #521 and more
    • Added experimental support for improved code signing settings with the xcode_provisioning_profile rule: #523 and #525

    Fixes and Improvements

    • More file extensions are now treated as header files: #468
    • Non-header files are now filtered out from the Compile Source phase: #469
    • Fixed swiftmodule copying during Index Build: #471
    • Multiplatform targets now consolidate down to a single target in Xcode: #484, #493
    • Improved scheme XML generation: #486, #494, #495
    • Fixed a bug with module.compilation_context handling: #489
    • Fixed possible output map collisions: #500
    • Improved handling of generated files BazelDependencies: #508, #510, and #509
    • Improved code signing support when using local_provisioning_profile: #505, #506, and #522
    • Improved SwiftUI Previews support when Building with Bazel: #512, #513, #514, #516, #518, #519
    • -g is now filtered from PCM compilation: #518
    • Fixed Building with Bazel in Xcode 14.0.0 Beta 1: #520
    • Fixed running UI tests when Building with Bazel: #526
    • xcodeproj's BUILD files are now added to the Project navigator: #528

    Full Changelog: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.3.0...0.4.0

    Contributors

    • @brentleyjones
    • @cgrindel
    • @BalestraPatrick
    • @jpsim
    • @maxwellE
    • @erikkerber

    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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(92.13 KB)
    release.tar.gz.sha256(108 bytes)
  • 0.3.0(May 18, 2022)

    What's Changed

    New

    • Added initial support for Building with Bazel: https://github.com/buildbuddy-io/rules_xcodeproj/pull/313, https://github.com/buildbuddy-io/rules_xcodeproj/pull/316, https://github.com/buildbuddy-io/rules_xcodeproj/pull/350, https://github.com/buildbuddy-io/rules_xcodeproj/pull/359, https://github.com/buildbuddy-io/rules_xcodeproj/pull/362, https://github.com/buildbuddy-io/rules_xcodeproj/pull/384, https://github.com/buildbuddy-io/rules_xcodeproj/pull/389, https://github.com/buildbuddy-io/rules_xcodeproj/pull/394, https://github.com/buildbuddy-io/rules_xcodeproj/pull/396, https://github.com/buildbuddy-io/rules_xcodeproj/pull/401, https://github.com/buildbuddy-io/rules_xcodeproj/pull/404, https://github.com/buildbuddy-io/rules_xcodeproj/pull/405, https://github.com/buildbuddy-io/rules_xcodeproj/pull/408, https://github.com/buildbuddy-io/rules_xcodeproj/pull/407, https://github.com/buildbuddy-io/rules_xcodeproj/pull/420, https://github.com/buildbuddy-io/rules_xcodeproj/pull/422, https://github.com/buildbuddy-io/rules_xcodeproj/pull/423, https://github.com/buildbuddy-io/rules_xcodeproj/pull/425, https://github.com/buildbuddy-io/rules_xcodeproj/pull/426, https://github.com/buildbuddy-io/rules_xcodeproj/pull/440, https://github.com/buildbuddy-io/rules_xcodeproj/pull/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! :warning:
    • Added support for cc_library.includes: https://github.com/buildbuddy-io/rules_xcodeproj/pull/310 and https://github.com/buildbuddy-io/rules_xcodeproj/pull/325
    • Added support for swift_library.private_deps: https://github.com/buildbuddy-io/rules_xcodeproj/pull/342
    • Added support for objc_import: https://github.com/buildbuddy-io/rules_xcodeproj/pull/347
    • Schemes are now generated instead of letting Xcode generate them: https://github.com/buildbuddy-io/rules_xcodeproj/pull/361, https://github.com/buildbuddy-io/rules_xcodeproj/pull/397, and https://github.com/buildbuddy-io/rules_xcodeproj/pull/385
    • Added support for code signing entitlements: https://github.com/buildbuddy-io/rules_xcodeproj/pull/367
    • Added support for objc_library.sdk_dylibs: https://github.com/buildbuddy-io/rules_xcodeproj/pull/372
    • Added support for Core Data model files: https://github.com/buildbuddy-io/rules_xcodeproj/pull/288

    Fixes and Improvements

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

    Full Changelog: https://github.com/buildbuddy-io/rules_xcodeproj/compare/0.2.0...0.3.0

    Contributors

    • @brentleyjones
    • @cgrindel
    • @BalestraPatrick
    • @jpsim
    • @maxwellE
    • @erikkerber

    First PRs

    • @maxwellE made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/335
    • @erikkerber made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/377

    Workspace Snippet

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

    load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
    
    http_archive(
        name = "com_github_buildbuddy_io_rules_xcodeproj",
        sha256 = "5a902801e2337fc14faeb2613d70202f2dd4755bba3d94ba068c1f622edba89e",
        url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.3.0/release.tar.gz",
    )
    
    load(
        "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
        "xcodeproj_rules_dependencies",
    )
    
    xcodeproj_rules_dependencies()
    
    load(
        "@build_bazel_rules_apple//apple:repositories.bzl",
        "apple_rules_dependencies",
    )
    
    apple_rules_dependencies()
    
    load(
        "@build_bazel_rules_swift//swift:repositories.bzl",
        "swift_rules_dependencies",
    )
    
    swift_rules_dependencies()
    
    load(
        "@build_bazel_rules_swift//swift:extras.bzl",
        "swift_rules_extra_dependencies",
    )
    
    swift_rules_extra_dependencies()
    
    load(
        "@build_bazel_apple_support//lib:repositories.bzl",
        "apple_support_dependencies",
    )
    
    apple_support_dependencies()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(77.67 KB)
    release.tar.gz.sha256(108 bytes)
  • 0.2.0(Apr 15, 2022)

    What's Changed

    New

    • Added support for macos_unit_test,tvos_unit_test, and watchos_unit_test: https://github.com/buildbuddy-io/rules_xcodeproj/pull/267, https://github.com/buildbuddy-io/rules_xcodeproj/pull/282, and https://github.com/buildbuddy-io/rules_xcodeproj/pull/286
    • Added support for -application-extension: https://github.com/buildbuddy-io/rules_xcodeproj/pull/287
    • Added support for the pch attribute: https://github.com/buildbuddy-io/rules_xcodeproj/pull/280
    • BUILD files are now included in Xcode's Project navigator: https://github.com/buildbuddy-io/rules_xcodeproj/pull/301

    Fixes and Improvements

    • Fixed build errors when no targets produced modulemap files: https://github.com/buildbuddy-io/rules_xcodeproj/pull/251
    • The ARCHS build setting is now set: https://github.com/buildbuddy-io/rules_xcodeproj/pull/249
    • Fixed PRODUCT_MODULE_NAME calculation: https://github.com/buildbuddy-io/rules_xcodeproj/pull/253
    • Fixed UIDeviceFamily Info.plist warning: https://github.com/buildbuddy-io/rules_xcodeproj/pull/260
    • Fixed various framework linking issues: https://github.com/buildbuddy-io/rules_xcodeproj/pull/259, https://github.com/buildbuddy-io/rules_xcodeproj/pull/258, https://github.com/buildbuddy-io/rules_xcodeproj/pull/277, and https://github.com/buildbuddy-io/rules_xcodeproj/pull/278
    • Converted last use of python to python3: https://github.com/buildbuddy-io/rules_xcodeproj/pull/254
    • Fixed file permissions of copied generated files: https://github.com/buildbuddy-io/rules_xcodeproj/pull/255
    • We now list sources in the same order that Bazel sees them: https://github.com/buildbuddy-io/rules_xcodeproj/pull/265
    • Fixed function name typo in warning message: https://github.com/buildbuddy-io/rules_xcodeproj/pull/274
    • Fixed PCM compilation by setting GCC_PREPROCESSOR_DEFINITIONS instead of OTHER_CFLAGS: https://github.com/buildbuddy-io/rules_xcodeproj/pull/275
    • Fixed modulemap rewriting: https://github.com/buildbuddy-io/rules_xcodeproj/pull/279 and https://github.com/buildbuddy-io/rules_xcodeproj/pull/284
    • Improved defines and local_defines detection: https://github.com/buildbuddy-io/rules_xcodeproj/pull/276
    • Fixed resource collection for targets that are included via deps: https://github.com/buildbuddy-io/rules_xcodeproj/pull/263
    • The SUPPORTED_PLATFORMS build setting is now set: https://github.com/buildbuddy-io/rules_xcodeproj/pull/289
    • Fixed Swift copt set PCM header search paths: https://github.com/buildbuddy-io/rules_xcodeproj/pull/291
    • Improved Indexing: https://github.com/buildbuddy-io/rules_xcodeproj/pull/292 and https://github.com/buildbuddy-io/rules_xcodeproj/pull/294
    • Improved initial project generation experience: https://github.com/buildbuddy-io/rules_xcodeproj/pull/297 and https://github.com/buildbuddy-io/rules_xcodeproj/pull/298

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

    Contributors

    • @brentleyjones
    • @cgrindel
    • @BalestraPatrick
    • @erikkerber
    • @a2
    • @jpsim

    First PRs

    • @BalestraPatrick made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/254
    • @a2 made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/274
    • @jpsim made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/301

    Workspace Snippet

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

    load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
    
    http_archive(
        name = "com_github_buildbuddy_io_rules_xcodeproj",
        sha256 = "3a45e9e20bfb36c306ccc51407b97ff7d320c597d3c1c533cbdee9e66cff5cda",
        url = "https://github.com/buildbuddy-io/rules_xcodeproj/releases/download/0.2.0/release.tar.gz",
    )
    
    load(
        "@com_github_buildbuddy_io_rules_xcodeproj//xcodeproj:repositories.bzl",
        "xcodeproj_rules_dependencies",
    )
    
    xcodeproj_rules_dependencies()
    
    load(
        "@build_bazel_rules_apple//apple:repositories.bzl",
        "apple_rules_dependencies",
    )
    
    apple_rules_dependencies()
    
    load(
        "@build_bazel_rules_swift//swift:repositories.bzl",
        "swift_rules_dependencies",
    )
    
    swift_rules_dependencies()
    
    load(
        "@build_bazel_rules_swift//swift:extras.bzl",
        "swift_rules_extra_dependencies",
    )
    
    swift_rules_extra_dependencies()
    
    load(
        "@build_bazel_apple_support//lib:repositories.bzl",
        "apple_support_dependencies",
    )
    
    apple_support_dependencies()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(58.43 KB)
    release.tar.gz.sha256(108 bytes)
  • 0.1.0(Apr 5, 2022)

    What's Changed

    Initial release.

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

    New Contributors

    • @cgrindel made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/123
    • @pennig made their first contribution in https://github.com/buildbuddy-io/rules_xcodeproj/pull/203

    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()
    
    Source code(tar.gz)
    Source code(zip)
    release.tar.gz(54.67 KB)
    release.tar.gz.sha256(108 bytes)
Owner
BuildBuddy
BuildBuddy manages Bazel for you, so you can focus on building your product.
BuildBuddy
An executable that can be called from a Run Script Build Phase that makes comments such as // TODO: or // SERIOUS: appear in Xcode's Issue Navigator giving them project-wide visibility.

XcodeIssueGenerator An executable that can be called from a Run Script Build Phase that makes comments such as // TODO: or // SERIOUS: appear in Xcode

Wunderman Thompson Apps 143 Oct 11, 2022
Generate a constants file by grabbing identifiers from storyboards in a project.

sbconstants Generate a constants file by grabbing identifiers from storyboards in a project. Installation $ gem install sbconstants Usage For automate

paul.s 310 Sep 9, 2022
Strong typed, autocompleted resources like images, fonts and segues in Swift projects

R.swift Get strong typed, autocompleted resources like images, fonts and segues in Swift projects Why use this? It makes your code that uses resources

Mathijs Kadijk 8.9k Jan 6, 2023
Automatically build and rebuild Xcode image catalogs for app icons, universal images, and more

Better asset workflow for iOS developers. Generate Xcode image catalogs for iOS / OSX app icons, universal images, and more.

Dotan J. Nahum 822 Dec 21, 2022
Xcode storyboards diff and merge tool.

StoryboardMerge Storyboard diff and merge tool which: compares and merges two storyboard files, provides an automatic merge-facility, The storyboardin

null 238 Sep 12, 2022
Xcode .appiconset generator for Adobe Illustrator.

Creating AppIcon sets from Adobe Illustrator This repo is rewrited from original repo https://github.com/CaryChamplin/CreatingIconsFromAI. Just genera

gitmerge 73 Nov 9, 2020
Script to support easily using Xcode Asset Catalog in Swift.

Misen Misen is a script to support using Xcode Asset Catalog in Swift. Features Misen scans sub-directories in the specified Asset Catalog and creates

Kazunobu Tasaka 123 Jun 29, 2022
A git plugin for real-world xcode versioning workflow.

git-xcp The most simplest, safe, and fully automatic git plugin for versioning workflow of real-world xcode projects. Current working or draft content

gitmerge 11 Dec 29, 2019
An Xcode plug-in to format your code using SwiftLint.

SwiftLintXcode An Xcode plug-in to format your code using SwiftLint. Runs swiftlint autocorrect --path CURRENT_FILE before *.swift file is saved. IMPO

Yuya Tanaka 348 Sep 18, 2022
An Xcode Plugin to convert Objective-C to Swift

XCSwiftr Convert Objective-C code into Swift from within Xcode. This plugin uses the Java applet of objc2swift to do the conversion. Noticed that the

Ignacio Romero Zurbuchen 338 Nov 29, 2022
Xcode-compatible build tool.

xcbuild xcbuild is an Xcode-compatible build tool with the goal of providing faster builds, better documentation of the build process and running on m

Meta Archive 2k Dec 11, 2022
ViewMonitor can measure view positions with accuracy.

What's ViewMonitor ViewMonitor can measure view positions with accuracy. This library is to check design sheet from native app. behave like this. UIVi

Daisuke Yamashita 728 Sep 26, 2022
OysterKit is a framework that provides a native Swift scanning, lexical analysis, and parsing capabilities. In addition it provides a language that can be used to rapidly define the rules used by OysterKit called STLR

OysterKit A Swift Framework for Tokenizing, Parsing, and Interpreting Languages OysterKit enables native Swift scanning, lexical analysis, and parsing

Swift Studies 178 Sep 16, 2022
This repository contains 🎨 My Xcode theme that I use. It is compatible with all versions of Xcode.

DRL Xcodetheme Installation Automatic (via script) ./install.sh which will install the file in Xcode FontAndColorThemes directory. Restart Xcode Go t

durul dalkanat 19 Oct 21, 2022
iOS helper library that contains commonly used code in Uptech iOS projects

iOS helper library that contains commonly used code in Uptech iOS projects.

Uptech 1 Apr 1, 2022
A command-line tool to generate a JSON-list of all used SPM-dependencies of an Xcode-project.

SwiftPackageList A command-line tool to generate a JSON-list of all used SPM-dependencies of an Xcode-project. This includes all the Package.resolved

Felix Herrmann 14 Jan 8, 2023
Simulates cellular automata patterns according to rules of Wolfram Alpha.

Cellular Automata App Simulates cellular automata patterns according to rules of Wolfram Alpha. What can I do with this? This app is designed with the

Natalie 0 Jan 15, 2022
TextFormation - Rules system for live typing completions

TextFormation TextFormation is simple rule system that can be used to implement

Chime 33 Dec 8, 2022
Input Validation Done Right. A Swift DSL for Validating User Input using Allow/Deny Rules

Valid Input Validation Done Right. Have you ever struggled with a website with strange password requirements. Especially those crazy weird ones where

Mathias Quintero 37 Nov 3, 2022
This repository contains a detailed sample app that implements VIPER architecture in iOS using libraries and frameworks like Alamofire, AlamofireImage, PKHUD, CoreData etc.

iOS Viper Architecture: Sample App This repository contains a detailed sample app that implements VIPER architecture using libraries and frameworks li

MindOrks 653 Jan 2, 2023