| // Copyright 2015 Google Inc. All rights reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| syntax = "proto2"; |
| |
| package build.xcode; |
| option java_outer_classname = "XcodeGenProtos"; |
| option java_package = "com.google.devtools.build.xcode.xcodegen.proto"; |
| |
| // Protos named "*Control" are protos that can be used to tell Xcodegen what to |
| // do. |
| |
| // Contains all information needed to pass to Xcodegen for it to generate a |
| // project file. |
| message Control { |
| // Relative path to the project.pbxproj file. This value is used to construct |
| // relative paths in the xcodeproj file, as well as to specify where to write |
| // the resulting project file. |
| optional string pbxproj = 1; |
| |
| // The targets to generate. |
| repeated TargetControl target = 2; |
| |
| // Project-level build settings. These are shared with every target, unless |
| // an individual target overrides any of them. |
| repeated XcodeprojBuildSetting build_setting = 3; |
| } |
| |
| // Information about dependency on a separate target. |
| message DependencyControl { |
| // Label of the target in the project file that is depended upon. |
| optional string target_label = 1; |
| |
| // Set to true if this dependency is that of a xctest target on its TEST_HOST. |
| // Considered 'false' if omitted. |
| optional bool test_host = 2; |
| } |
| |
| // Contains information specific to a single target in the project file. |
| // Next ID: 23 |
| message TargetControl { |
| // A short name for the target that need not be unique. For instance, for |
| // binary targets this corresponds to the product name. |
| optional string name = 1; |
| |
| // Relative paths to source files to compile. Each source file is added to |
| // the sources build phase of the target, so any file accepted by Xcode is |
| // valid. |
| repeated string source_file = 2; |
| |
| // Identical to source_file, but only Objective-C[++] source files are |
| // valid. These sources are compiled without ARC. |
| repeated string non_arc_source_file = 6; |
| |
| // Relative paths to support files, such as BUILD, header, and non-compiled |
| // source files. These are included in the project so they can be opened in |
| // the project explorer view, but are not compiled into object files. |
| repeated string support_file = 3; |
| |
| // Dependencies this target has on other targets. |
| repeated DependencyControl dependency = 4; |
| |
| // (Used for objc_binary and objc_bundle_library targets) path to the |
| // -Info.plist file for the application. |
| optional string infoplist = 5; |
| |
| // Label corresponding to the target. This is needed to determine a |
| // unique name for the target in the project. This is similar to the name |
| // field, but is globally unique and may be long. |
| optional string label = 7; |
| |
| // Additional flags to pass to the [objective] c[++] compiler. |
| repeated string copt = 8; |
| |
| // Additional flags to pass to the linker. |
| repeated string linkopt = 22; |
| |
| // Paths to *.xcassets directories to include in the target as asset |
| // catalogs. For all targets, this causes the .xcassets directory to be |
| // included in the Project Navigator. For targets that can include them (e.g. |
| // objc_binary), this causes them to be included in the resources build |
| // phase. |
| repeated string xcassets_dir = 9; |
| |
| // Miscellaneous build settings. Each setting is applied to all build |
| // configurations. |
| repeated XcodeprojBuildSetting build_setting = 10; |
| |
| // Paths to strings or xib files. Xcodegen will determine automatically if |
| // they are localized (i.e. are in a directory named *.lproj) or not. |
| // TODO(bazel-team): Introduce a more powerful resource file protobuf, a |
| // list of which can be used to specify all resources. |
| repeated string general_resource_file = 11; |
| |
| // SDK frameworks to link with this target. This should be every framework |
| // required by the targets in the transitive dependency tree. Xcodegen does |
| // not find these transitive dependencies automatically; they must be added |
| // to this repeated field. |
| repeated string sdk_framework = 12; |
| |
| // Paths to non-SDK frameworks to link with this target, relative to the |
| // same path as every other path in the control file. This should be every |
| // framework required by the targets in the transitive dependency tree. |
| repeated string framework = 21; |
| |
| // Path to all .xcdatamodel directories required. All directories inside |
| // a .xcdatamodeld directory are grouped into XCVersionGroups by the path of |
| // the .xcdatamodeld directory. |
| repeated string xcdatamodel = 13; |
| |
| // Path to all .a libraries to link with this target. When used on static |
| // library targets, the library is not actually linked, but it will appear |
| // in the Xcode Project Navigator. These are considered to be pre-built |
| // libraries. In other words, they are NOT built by Xcode as a dependency |
| // before this target is built. |
| repeated string imported_library = 14; |
| |
| // Path to directories to include as user header search paths. These are non- |
| // recursive. These should be specified here rather than in the build_setting |
| // field because the build_setting field requires paths to be specified |
| // relative to the container of the .xcodeproj directory, while this |
| // attribute is relative to the same path as every other path in the control |
| // file. These paths correspond to the "-iquote" arguments passed to the |
| // compiler. |
| repeated string user_header_search_path = 15; |
| |
| // Path to directories to include as header search paths. These are non- |
| // recursive. These should be specified here rather than in the build_setting |
| // field because the build_setting field requires paths to be specified |
| // relative to the container of the .xcodeproj directory, while this |
| // attribute is relative to the same path as every other path in the control |
| // file. These paths correspond to the "-I" arguments passed to the |
| // compiler. |
| repeated string header_search_path = 16; |
| |
| // GCC_PREFIX_HEADER path. Needs to be be specified here rather than in the |
| // build_setting field because the build_setting field requires paths to be |
| // specified relative to the container of the .xcodeproj directory, while |
| // this attribute is relative to the same path as every other path in the |
| // control file. |
| optional string pch_path = 20; |
| |
| // Path to .bundle directories this target depends on. For static library |
| // targets, this only causes the bundle to appear in the Project Navigator. |
| // For application target, this also causes the bundle to be linked with the |
| // application. |
| repeated string bundle_import = 17; |
| |
| // The product type, for instance "com.apple.product-type.bundle". If |
| // omitted, the presence of the infoplist field indicates the type: |
| // has infoplist: "com.apple.product-type.application" |
| // does not have infoplist: "com.apple.product-type.library.static" |
| optional string product_type = 18; |
| |
| // SDK .dylib files to link with this target. Each name should not include the |
| // the path or the .dylib extension, e.g. "libz" to link in |
| // "SDKROOT/usr/lib/libz.dylib". For all targets, this causes the library to |
| // appear in the Project Navigator. For binary targets, this causes the |
| // library to be linked with the final binary. |
| repeated string sdk_dylib = 19; |
| } |
| |
| // Represents the mapping of a build setting recognized by Xcode project files, |
| // for instance ASSETCATALOG_COMPILER_APPICON_NAME. |
| message XcodeprojBuildSetting { |
| optional string name = 1; |
| optional string value = 2; |
| } |