fastlane-plugin-xcconfig_actions 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -1
  3. data/lib/fastlane/plugin/xcconfig_actions/actions/build_settings_to_flags_action.rb +12 -11
  4. data/lib/fastlane/plugin/xcconfig_actions/actions/read_xcconfig_action.rb +25 -23
  5. data/lib/fastlane/plugin/xcconfig_actions/helper/xcconfig_actions_helper.rb +2 -3
  6. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspec.rb +15 -13
  7. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/CopyPNGFile.xcspec +113 -0
  8. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/Core Data.xcspec +289 -0
  9. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/Cpp.xcspec +63 -0
  10. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/DTrace.xcspec +87 -0
  11. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/Intents.xcspec +80 -0
  12. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/Lex.xcspec +100 -0
  13. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/MLKit.xcspec +137 -0
  14. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/Metal Compiler.xcspec +466 -0
  15. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/Metal Linker.xcspec +105 -0
  16. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/Nasm.xcspec +101 -0
  17. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/Native Build System.xcspec +53 -0
  18. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/NativeBuildSystem.xcspec +1600 -0
  19. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/OSACompile.xcspec +63 -0
  20. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/OpenCL.xcspec +158 -0
  21. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/README.md +15021 -0
  22. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/Rez.xcspec +209 -0
  23. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/Yacc.xcspec +100 -0
  24. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/CopyPNGFile.xcspec +113 -0
  25. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/Core Data.xcspec +289 -0
  26. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/Cpp.xcspec +63 -0
  27. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/DTrace.xcspec +89 -0
  28. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/Intents.xcspec +80 -0
  29. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/Lex.xcspec +100 -0
  30. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/MLKit.xcspec +137 -0
  31. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/Metal Compiler.xcspec +466 -0
  32. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/Metal Linker.xcspec +105 -0
  33. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/Nasm.xcspec +101 -0
  34. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/Native Build System.xcspec +53 -0
  35. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/NativeBuildSystem.xcspec +1615 -0
  36. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/OSACompile.xcspec +63 -0
  37. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/OpenCL.xcspec +158 -0
  38. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/README.md +15250 -0
  39. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/Rez.xcspec +209 -0
  40. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/Swift.xcspec +1 -1
  41. data/lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/Yacc.xcspec +100 -0
  42. data/lib/fastlane/plugin/xcconfig_actions/version.rb +1 -1
  43. metadata +50 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ff5347f5b29ae989604b428568e7a6f6f76a782699a2d6f0afdb1696f9d41ce
4
- data.tar.gz: ccabe7e926c527995f7d648916ff5113d510cb9099ea9d312fd49a8db3c08573
3
+ metadata.gz: 30f7b3c21a1a28602e3c0a9a731fbada3655e6afb83add108306849be0e1082b
4
+ data.tar.gz: a7c2fba226b99df76127464e12973d4ee60837ef4dc42b99ed31978fa7a2feb7
5
5
  SHA512:
6
- metadata.gz: a5cf33cdd535fe366170caafe3b6d9a46262dcf9273f14b4c3fa3cebdefd84989d60f59ee59e5e189f394186b5d98666def29db384f753f1e8c62919060dfd66
7
- data.tar.gz: 510bed17f4306c2d6aaac5c48992554846ecb19d724574a701a0244fdf32c1fd0d13c3a0baf79bb714459683ee9a643c7f1309ce51353b031185c7c40df75dc9
6
+ metadata.gz: eb2cb546352b5e76235a6892018172fe8ee0f3b2159d550ce2a8ff75b7dc365f18804a33264aa5ecc540eecadca766c7d0b54f90d9dc054c4dd60c912d5765d9
7
+ data.tar.gz: 571e8f6db522621f847d63ceaad0c4f3fe0b7e94232023dc12b71a275a96fb4a84aae291946193d9c7a5c745a25be5e35ba894df2735b3cdb3dd05c888e8e45f
data/README.md CHANGED
@@ -32,7 +32,6 @@ Things **not supported** at the moment:
32
32
 
33
33
  - Conditional variable assignment, such as `FOO[sdk=macosx*] = 1`
34
34
  - Use of `<DEVELOPER_DIR>` in include paths
35
- - Use of curly braces in variable references, e.g. `${VAR}`
36
35
 
37
36
  The build settings are also saved as a dictionary under `SharedValues::XCCONFIG_ACTIONS_BUILD_SETTINGS` key in current `lane_context`.
38
37
 
@@ -55,6 +54,9 @@ The result is a dictionary with following keys:
55
54
 
56
55
  References:
57
56
 
57
+ - [Xcode 10.1 Build Settings](lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.1/README.md)
58
+ - [Xcode 10.2 Build Settings](lib/fastlane/plugin/xcconfig_actions/helper/xcspecs/10.2/README.md)
59
+
58
60
  - [Xcode Build Settings](https://help.apple.com/xcode/mac/10.2/#/itcaec37c2a6)
59
61
  - [LLVM Clang Command Line Options](https://clang.llvm.org/docs/ClangCommandLineReference.html)
60
62
  - [LLVM Clang Diagnostics](https://clang.llvm.org/docs/DiagnosticsReference.html)
@@ -65,10 +67,14 @@ References:
65
67
  #### Known Issues
66
68
 
67
69
  Flags like `-sdk iphoneos` and `-isysroot iphoneos` may not be suitable for all uses, so may have to remove them from all flags.
70
+ These settings only get generated if you add `SDKROOT = iphoneos` to your xcconfigs.
68
71
 
69
72
  The flag like `-std=gnu++14` is added to `compiler_flags` but it's not applicable for Objective-C code.
70
73
  Most tools have differentiation between C flags (C and Objective-C) and Cxx flags (C++/Objective-C++).
71
74
 
75
+ Flags like `CLANG_ENABLE_CODE_COVERAGE` and `ENABLE_TESTABILITY` will have no effect unless `CLANG_COVERAGE_MAPPING = $(CLANG_ENABLE_CODE_COVERAGE)` and `SWIFT_ENABLE_TESTABILITY = $(ENABLE_TESTABILITY)` are explicitly added to xcconfigs.
76
+ This has to be fixed in the future.
77
+
72
78
  ### validate_xcconfig
73
79
 
74
80
  Validate xcconfig using set of very opinionated rules:
@@ -17,9 +17,10 @@ module Fastlane
17
17
  UI.user_error!("Missing build settings input") unless build_settings
18
18
  xcode = params[:xcode]
19
19
 
20
- clang_spec = load_tool_spec("Clang*", xcode: xcode)
21
- swift_spec = load_tool_spec("Swift*", xcode: xcode)
22
- linker_spec = load_tool_spec("Ld*", xcode: xcode)
20
+ # TODO: Add support for com.apple.compilers.llvm.clang.1_0.analyzer tool.
21
+ clang_spec = load_complete_spec("Clang*", xcode: xcode)
22
+ swift_spec = load_complete_spec("Swift*", xcode: xcode)
23
+ linker_spec = load_complete_spec("Ld*", xcode: xcode)
23
24
 
24
25
  clang_mapping = clang_spec.map_build_settings(build_settings)
25
26
  swift_mapping = swift_spec.map_build_settings(build_settings)
@@ -49,18 +50,18 @@ module Fastlane
49
50
  # @!group Xcspecs
50
51
  ###
51
52
 
52
- def self.load_tool_spec(tool, xcode:)
53
- core_spec_path = ActionHelper.find_xcspec("CoreBuildSystem*", xcode: xcode)
54
- standard_spec = Xcspec.new(core_spec_path, id: "com.apple.buildsettings.standard")
55
- core_spec = Xcspec.new(core_spec_path, id: "com.apple.build-system.core")
56
-
53
+ def self.load_complete_spec(name, xcode:)
57
54
  Xcspec.new(
58
- ActionHelper.find_xcspec(tool, xcode: xcode),
59
- standard_spec: standard_spec,
60
- core_spec: core_spec
55
+ ActionHelper.find_xcspec(name, xcode: xcode),
56
+ core_build_system_spec: load_spec("CoreBuildSystem*", xcode: xcode)
61
57
  )
62
58
  end
63
59
 
60
+ def self.load_spec(name, xcode:)
61
+ spec_path = ActionHelper.find_xcspec(name, xcode: xcode)
62
+ Xcspec.new(spec_path)
63
+ end
64
+
64
65
  ###
65
66
  # @!group Info and Options
66
67
  ###
@@ -17,24 +17,7 @@ module Fastlane
17
17
 
18
18
  config = read_config(path)
19
19
 
20
- unless params[:no_resolve]
21
- parent_config = read_config(parent)
22
-
23
- parent_config["SRCROOT"] = srcroot
24
- parent_config["TARGET_NAME"] = target_name if target_name
25
-
26
- if Helper::XcconfigActionsHelper.command_exist?("xcodebuild")
27
- # Set value of XCODE_VERSION_MAJOR not available when reading xcconfigs directly.
28
- xcode_version = `xcodebuild -version | head -n1 | cut -d' ' -f2 | xargs`.strip
29
- xcode_version_major_padded = xcode_version.split(".").first.rjust(2, "0") + "00"
30
- parent_config["XCODE_VERSION_MAJOR"] = xcode_version_major_padded
31
- end
32
-
33
- resolved_parent_config = resolve_config(parent_config)
34
- resolved_config = resolve_config(config, parent: resolved_parent_config)
35
-
36
- config = resolved_parent_config.merge(resolved_config)
37
- end
20
+ config = resolve(config, parent, srcroot, target_name) if params[:resolve]
38
21
 
39
22
  Actions.lane_context[SharedValues::XCCONFIG_ACTIONS_BUILD_SETTINGS] = config
40
23
 
@@ -49,6 +32,26 @@ module Fastlane
49
32
  # @!group Implementation
50
33
  ###
51
34
 
35
+ # Resolve config using parent information.
36
+ def self.resolve(config, parent, srcroot, target_name)
37
+ parent_config = read_config(parent)
38
+
39
+ parent_config["SRCROOT"] = srcroot
40
+ parent_config["TARGET_NAME"] = target_name if target_name
41
+
42
+ if Helper::XcconfigActionsHelper.command_exist?("xcodebuild")
43
+ # Set value of XCODE_VERSION_MAJOR not available when reading xcconfigs directly.
44
+ xcode_version = `xcodebuild -version | head -n1 | cut -d' ' -f2 | xargs`.strip
45
+ xcode_version_major_padded = xcode_version.split(".").first.rjust(2, "0") + "00"
46
+ parent_config["XCODE_VERSION_MAJOR"] = xcode_version_major_padded
47
+ end
48
+
49
+ resolved_parent_config = resolve_config(parent_config)
50
+ resolved_config = resolve_config(config, parent: resolved_parent_config)
51
+
52
+ resolved_parent_config.merge(resolved_config)
53
+ end
54
+
52
55
  # Read xcconfig value as a hash.
53
56
  #
54
57
  # @param [String] filename Xcconfig path.
@@ -174,11 +177,10 @@ module Fastlane
174
177
  verify_block: proc do |value|
175
178
  UI.user_error!("Couldn't find parent xcconfig at path: '#{value}'") if value && !File.exist?(value)
176
179
  end),
177
- FastlaneCore::ConfigItem.new(key: :no_resolve,
178
- env_name: "XCCONFIG_ACTIONS_READ_NO_RESOLVE",
179
- description: "Do not resolve variables in xcconfigs and read 'as is'",
180
- default_value: false,
181
- optional: true,
180
+ FastlaneCore::ConfigItem.new(key: :resolve,
181
+ env_name: "XCCONFIG_ACTIONS_READ_RESOLVE",
182
+ description: "Resolve variables in xcconfigs",
183
+ default_value: true,
182
184
  type: Boolean),
183
185
  FastlaneCore::ConfigItem.new(key: :srcroot,
184
186
  env_name: "XCCONFIG_ACTIONS_READ_SRCROOT",
@@ -44,12 +44,11 @@ module Fastlane
44
44
  end
45
45
 
46
46
  def self.find_xcspec(name, xcode:)
47
- search_path = File.exist?(xcode) ? File.join(xcode, "Contents/Plugins") : File.join(File.dirname(__FILE__), "xcspecs", xcode)
48
- UI.user_error!("Can't find app path of xcspecs folder for xcode: #{xcode}") unless File.exist?(search_path)
47
+ search_path = File.exist?(xcode) ? File.join(xcode, "Contents/{Plugins,Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications}") : File.join(File.dirname(__FILE__), "xcspecs", xcode)
49
48
 
50
49
  query = File.join(search_path, "**", name + ".xcspec")
51
50
  xcspec = Dir[query].first
52
- UI.user_error!("Can't find xcspec with name: #{name}") unless File.exist?(xcspec)
51
+ UI.user_error!("Can't find xcspec with name: #{name}") unless xcspec && File.exist?(xcspec)
53
52
  xcspec
54
53
  end
55
54
  end
@@ -33,19 +33,18 @@ module Fastlane
33
33
  # @!group Initialization
34
34
  ###
35
35
 
36
- attr_reader :tool
36
+ attr_reader :path, :options
37
37
 
38
- def initialize(path, id: nil, standard_spec: nil, core_spec: nil)
38
+ def initialize(path, core_build_system_spec: nil)
39
39
  UI.user_error!("No such file: #{path}") unless path && File.exist?(path)
40
40
 
41
- @plist = Xcspec.load_plist(path)
42
- @tool = find_tool(id)
41
+ @path = path
43
42
 
44
- all_tools = [@tool]
45
- all_tools << standard_spec.tool if standard_spec
46
- all_tools << core_spec.tool if core_spec
43
+ plist = Xcspec.load_plist(path)
44
+ tools = plist.kind_of?(Array) ? plist : [plist]
47
45
 
48
- @all_options = all_tools.flat_map { |t| t["Options"] }
46
+ @options = tools.flat_map { |t| t["Options"] || t["Properties"] }.compact
47
+ @options += core_build_system_spec.options if core_build_system_spec
49
48
  end
50
49
 
51
50
  def self.load_plist(path)
@@ -66,9 +65,12 @@ module Fastlane
66
65
  Nokogiri::PList(File.open(xml_plist))
67
66
  end
68
67
 
69
- def find_tool(id)
70
- return @plist unless @plist.kind_of?(Array)
71
- id ? @plist.find { |t| t["Identifier"] == id } : @plist.first
68
+ ###
69
+ # @!group Helpers
70
+ ###
71
+
72
+ def find_option(name)
73
+ @options.find { |o| o["Name"] == name }
72
74
  end
73
75
 
74
76
  ###
@@ -78,7 +80,7 @@ module Fastlane
78
80
  def map_build_settings(build_settings)
79
81
  # Build settings provided for mapping will not include all possible build settings.
80
82
  # Add default values for missing build settings.
81
- missing_build_settings = @all_options.reduce({}) do |memo, opt|
83
+ missing_build_settings = @options.reduce({}) do |memo, opt|
82
84
  name = opt["Name"]
83
85
  build_settings.key?(name) ? memo : memo.merge({ name => opt["DefaultValue"] })
84
86
  end
@@ -92,7 +94,7 @@ module Fastlane
92
94
  end
93
95
 
94
96
  def map_build_setting_value(name, value, build_settings)
95
- option = @tool["Options"].find { |o| o["Name"] == name }
97
+ option = find_option(name)
96
98
  return nil unless option
97
99
 
98
100
  map_option(option, value, build_settings)
@@ -0,0 +1,113 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <array>
5
+ <dict>
6
+ <key>CommandLine</key>
7
+ <string>copypng [options] $(IPHONE_OPTIMIZE_OPTIONS) [input] [output]</string>
8
+ <key>CommandOutputParser</key>
9
+ <array>
10
+ <array>
11
+ <string>()()(^.*caught libpng error.*)</string>
12
+ <string>emit-error</string>
13
+ </array>
14
+ <array>
15
+ <string>()()(^Could not find file:.*)</string>
16
+ <string>emit-error</string>
17
+ </array>
18
+ <array>
19
+ <string>()()(^[^:]+: [^:]+: No such file or directory)</string>
20
+ <string>emit-error</string>
21
+ </array>
22
+ <array>
23
+ <string>()()(^[^:]+: [^:]+: Permission denied)</string>
24
+ <string>emit-error</string>
25
+ </array>
26
+ <array>
27
+ <string>()()(^[^:]+: [^:]+: Is a directory)</string>
28
+ <string>emit-error</string>
29
+ </array>
30
+ </array>
31
+ <key>Description</key>
32
+ <string>Copies a .png file resource, optionally compressing it.</string>
33
+ <key>EnvironmentVariables</key>
34
+ <dict>
35
+ <key>DEVELOPER_DIR</key>
36
+ <string>$(DEVELOPER_DIR)</string>
37
+ <key>SDKROOT</key>
38
+ <string>$(SDKROOT)</string>
39
+ <key>TOOLCHAINS</key>
40
+ <string>$(TOOLCHAINS)</string>
41
+ </dict>
42
+ <key>ExecDescription</key>
43
+ <string>Copy $(InputFile)</string>
44
+ <key>Identifier</key>
45
+ <string>com.apple.build-tasks.copy-png-file</string>
46
+ <key>InputFileTypes</key>
47
+ <array>
48
+ <string>image.png</string>
49
+ </array>
50
+ <key>Name</key>
51
+ <string>Compress PNG Files</string>
52
+ <key>Options</key>
53
+ <array>
54
+ <dict>
55
+ <key>Category</key>
56
+ <string>Packaging</string>
57
+ <key>CommandLineArgs</key>
58
+ <dict>
59
+ <key>NO</key>
60
+ <array/>
61
+ <key>YES</key>
62
+ <array>
63
+ <string>-compress</string>
64
+ </array>
65
+ </dict>
66
+ <key>DefaultValue</key>
67
+ <string>YES</string>
68
+ <key>Description</key>
69
+ <string>If enabled, PNG resource files are compressed as they are copied.</string>
70
+ <key>DisplayName</key>
71
+ <string>Compress PNG Files</string>
72
+ <key>Name</key>
73
+ <string>COMPRESS_PNG_FILES</string>
74
+ <key>Type</key>
75
+ <string>Boolean</string>
76
+ </dict>
77
+ <dict>
78
+ <key>Category</key>
79
+ <string>Packaging</string>
80
+ <key>CommandLineArgs</key>
81
+ <dict>
82
+ <key>NO</key>
83
+ <array/>
84
+ <key>YES</key>
85
+ <array>
86
+ <string>-strip-PNG-text</string>
87
+ </array>
88
+ </dict>
89
+ <key>DefaultValue</key>
90
+ <string>YES</string>
91
+ <key>Description</key>
92
+ <string>Metadata in the form of text chunks in PNG files will be removed to reduce their footprint on disk.</string>
93
+ <key>DisplayName</key>
94
+ <string>Remove Text Metadata From PNG Files</string>
95
+ <key>Name</key>
96
+ <string>STRIP_PNG_TEXT</string>
97
+ <key>Type</key>
98
+ <string>Boolean</string>
99
+ </dict>
100
+ </array>
101
+ <key>OutputPath</key>
102
+ <string>$(ProductResourcesDir)/$(InputFileName)</string>
103
+ <key>ProgressDescription</key>
104
+ <string>Copying $(CommandProgressByType) files</string>
105
+ <key>RuleName</key>
106
+ <string>CopyPNGFile $(ProductResourcesDir)/$(InputFileName) $(InputFileRelativePath)</string>
107
+ <key>SynthesizeBuildRule</key>
108
+ <string>Yes</string>
109
+ <key>Type</key>
110
+ <string>Compiler</string>
111
+ </dict>
112
+ </array>
113
+ </plist>
@@ -0,0 +1,289 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <array>
5
+ <dict>
6
+ <key>Class</key>
7
+ <string>XCCompilerSpecificationDataModel</string>
8
+ <key>CommandLine</key>
9
+ <string>momc [options] $(InputFile) $(ProductResourcesDir)/</string>
10
+ <key>CommandOutputParser</key>
11
+ <array>
12
+ <array>
13
+ <string>^([^:]*):([^:]*): warning: (.*)$</string>
14
+ <string>emit-warning</string>
15
+ </array>
16
+ <array>
17
+ <string>^([^:]*):([^:]*): error: (.*)$</string>
18
+ <string>emit-error</string>
19
+ </array>
20
+ </array>
21
+ <key>DeeplyStatInputDirectories</key>
22
+ <string>Yes</string>
23
+ <key>Description</key>
24
+ <string>MOMC: compiler of data model .xcdatamodeld/.xcdatamodel into .momd/.mom</string>
25
+ <key>ExecDescription</key>
26
+ <string>Compile data model $(InputFile)</string>
27
+ <key>Identifier</key>
28
+ <string>com.apple.compilers.model.coredata</string>
29
+ <key>InputFileTypes</key>
30
+ <array>
31
+ <string>wrapper.xcdatamodeld</string>
32
+ <string>wrapper.xcdatamodel</string>
33
+ </array>
34
+ <key>IsArchitectureNeutral</key>
35
+ <string>Yes</string>
36
+ <key>MessageCategoryInfoOptions</key>
37
+ <array>
38
+ <string>--print-diagnostic-categories</string>
39
+ <string>destination</string>
40
+ <string>source</string>
41
+ </array>
42
+ <key>Name</key>
43
+ <string>Data Model Compiler (MOMC)</string>
44
+ <key>Options</key>
45
+ <array>
46
+ <dict>
47
+ <key>DefaultValue</key>
48
+ <string>$(MOMC_OUTPUT_SUFFIX_$(InputFileSuffix))</string>
49
+ <key>Name</key>
50
+ <string>MOMC_OUTPUT_SUFFIX</string>
51
+ <key>Type</key>
52
+ <string>String</string>
53
+ </dict>
54
+ <dict>
55
+ <key>DefaultValue</key>
56
+ <string>.momd</string>
57
+ <key>Name</key>
58
+ <string>MOMC_OUTPUT_SUFFIX_.xcdatamodeld</string>
59
+ <key>Type</key>
60
+ <string>String</string>
61
+ </dict>
62
+ <dict>
63
+ <key>DefaultValue</key>
64
+ <string>.mom</string>
65
+ <key>Name</key>
66
+ <string>MOMC_OUTPUT_SUFFIX_.xcdatamodel</string>
67
+ <key>Type</key>
68
+ <string>String</string>
69
+ </dict>
70
+ <dict>
71
+ <key>CommandLineFlag</key>
72
+ <string>--sdkroot</string>
73
+ <key>DefaultValue</key>
74
+ <string>$(SDKROOT)</string>
75
+ <key>Name</key>
76
+ <string>SDKROOT</string>
77
+ <key>Type</key>
78
+ <string>String</string>
79
+ </dict>
80
+ <dict>
81
+ <key>CommandLineFlag</key>
82
+ <string>--$(PLATFORM_NAME)-deployment-target</string>
83
+ <key>DefaultValue</key>
84
+ <string>$($(DEPLOYMENT_TARGET_SETTING_NAME))</string>
85
+ <key>Name</key>
86
+ <string>DEPLOYMENT_TARGET</string>
87
+ <key>Type</key>
88
+ <string>String</string>
89
+ </dict>
90
+ <dict>
91
+ <key>Category</key>
92
+ <string>Warnings</string>
93
+ <key>CommandLineFlag</key>
94
+ <string>--no-warnings</string>
95
+ <key>DefaultValue</key>
96
+ <string>NO</string>
97
+ <key>Name</key>
98
+ <string>MOMC_NO_WARNINGS</string>
99
+ <key>Type</key>
100
+ <string>Boolean</string>
101
+ </dict>
102
+ <dict>
103
+ <key>Category</key>
104
+ <string>Warnings</string>
105
+ <key>CommandLineFlag</key>
106
+ <string>--no-inverse-relationship-warnings</string>
107
+ <key>DefaultValue</key>
108
+ <string>NO</string>
109
+ <key>Name</key>
110
+ <string>MOMC_NO_INVERSE_RELATIONSHIP_WARNINGS</string>
111
+ <key>Type</key>
112
+ <string>Boolean</string>
113
+ </dict>
114
+ <dict>
115
+ <key>Category</key>
116
+ <string>Warnings</string>
117
+ <key>CommandLineFlag</key>
118
+ <string>--no-max-property-count-warnings</string>
119
+ <key>DefaultValue</key>
120
+ <string>NO</string>
121
+ <key>Name</key>
122
+ <string>MOMC_NO_MAX_PROPERTY_COUNT_WARNINGS</string>
123
+ <key>Type</key>
124
+ <string>Boolean</string>
125
+ </dict>
126
+ <dict>
127
+ <key>Category</key>
128
+ <string>Warnings</string>
129
+ <key>CommandLineFlag</key>
130
+ <string>--no-delete-rule-warnings</string>
131
+ <key>DefaultValue</key>
132
+ <string>NO</string>
133
+ <key>Name</key>
134
+ <string>MOMC_NO_DELETE_RULE_WARNINGS</string>
135
+ <key>Type</key>
136
+ <string>Boolean</string>
137
+ </dict>
138
+ <dict>
139
+ <key>Category</key>
140
+ <string>Warnings</string>
141
+ <key>CommandLineFlag</key>
142
+ <string>--suppress-inverse-transient-error</string>
143
+ <key>DefaultValue</key>
144
+ <string>NO</string>
145
+ <key>Name</key>
146
+ <string>MOMC_SUPPRESS_INVERSE_TRANSIENT_ERROR</string>
147
+ <key>Type</key>
148
+ <string>Boolean</string>
149
+ </dict>
150
+ <dict>
151
+ <key>CommandLineFlag</key>
152
+ <string>--module</string>
153
+ <key>DefaultValue</key>
154
+ <string>$(PRODUCT_MODULE_NAME)</string>
155
+ <key>Name</key>
156
+ <string>MOMC_MODULE</string>
157
+ <key>Type</key>
158
+ <string>String</string>
159
+ </dict>
160
+ <dict>
161
+ <key>CommandLinePrefixFlag</key>
162
+ <string></string>
163
+ <key>DefaultValue</key>
164
+ <string></string>
165
+ <key>Name</key>
166
+ <string>build_file_compiler_flags</string>
167
+ <key>Type</key>
168
+ <string>StringList</string>
169
+ </dict>
170
+ </array>
171
+ <key>Outputs</key>
172
+ <array>
173
+ <string>$(ProductResourcesDir)/$(InputFileBase)$(MOMC_OUTPUT_SUFFIX)</string>
174
+ </array>
175
+ <key>ProgressDescription</key>
176
+ <string>Compiling $(CommandProgressByType) data models</string>
177
+ <key>RuleName</key>
178
+ <string>DataModelCompile $(ProductResourcesDir)/ $(InputFile)</string>
179
+ <key>SynthesizeBuildRule</key>
180
+ <string>Yes</string>
181
+ <key>Type</key>
182
+ <string>Compiler</string>
183
+ </dict>
184
+ <dict>
185
+ <key>CommandLine</key>
186
+ <string>mapc [options] $(InputFile) $(ProductResourcesDir)/$(InputFileBase).cdm</string>
187
+ <key>CommandOutputParser</key>
188
+ <array>
189
+ <array>
190
+ <string>^([^:]*):([^:]*)warning: (.*)$</string>
191
+ <string>emit-warning</string>
192
+ </array>
193
+ <array>
194
+ <string>^([^:]*):([^:]*)error: (.*)$</string>
195
+ <string>emit-error</string>
196
+ </array>
197
+ </array>
198
+ <key>DeeplyStatInputDirectories</key>
199
+ <string>Yes</string>
200
+ <key>Description</key>
201
+ <string>MAPC: compiler of mapping model files .xcmappingmodel into .cdm</string>
202
+ <key>ExecDescription</key>
203
+ <string>Compile mapping model $(InputFile)</string>
204
+ <key>Identifier</key>
205
+ <string>com.apple.compilers.model.coredatamapping</string>
206
+ <key>InputFileTypes</key>
207
+ <array>
208
+ <string>wrapper.xcmappingmodel</string>
209
+ </array>
210
+ <key>IsArchitectureNeutral</key>
211
+ <string>Yes</string>
212
+ <key>MessageCategoryInfoOptions</key>
213
+ <array>
214
+ <string>--print-diagnostic-categories</string>
215
+ <string>source</string>
216
+ <string>destination</string>
217
+ </array>
218
+ <key>Name</key>
219
+ <string>Core Data Mapping Model Compiler (MAPC)</string>
220
+ <key>Options</key>
221
+ <array>
222
+ <dict>
223
+ <key>Category</key>
224
+ <string>Warnings</string>
225
+ <key>CommandLineFlag</key>
226
+ <string>--mapc-no-warnings</string>
227
+ <key>DefaultValue</key>
228
+ <string>NO</string>
229
+ <key>Name</key>
230
+ <string>MAPC_NO_WARNINGS</string>
231
+ <key>Type</key>
232
+ <string>Boolean</string>
233
+ </dict>
234
+ <dict>
235
+ <key>CommandLineFlag</key>
236
+ <string>--sdkroot</string>
237
+ <key>DefaultValue</key>
238
+ <string>$(SDKROOT)</string>
239
+ <key>Name</key>
240
+ <string>SDKROOT</string>
241
+ <key>Type</key>
242
+ <string>String</string>
243
+ </dict>
244
+ <dict>
245
+ <key>CommandLineFlag</key>
246
+ <string>--$(PLATFORM_NAME)-deployment-target</string>
247
+ <key>DefaultValue</key>
248
+ <string>$($(DEPLOYMENT_TARGET_SETTING_NAME))</string>
249
+ <key>Name</key>
250
+ <string>DEPLOYMENT_TARGET</string>
251
+ <key>Type</key>
252
+ <string>String</string>
253
+ </dict>
254
+ <dict>
255
+ <key>CommandLinePrefixFlag</key>
256
+ <string></string>
257
+ <key>DefaultValue</key>
258
+ <string></string>
259
+ <key>Name</key>
260
+ <string>build_file_compiler_flags</string>
261
+ <key>Type</key>
262
+ <string>StringList</string>
263
+ </dict>
264
+ <dict>
265
+ <key>CommandLineFlag</key>
266
+ <string>--module</string>
267
+ <key>DefaultValue</key>
268
+ <string>$(PRODUCT_MODULE_NAME)</string>
269
+ <key>Name</key>
270
+ <string>MAPC_MODULE</string>
271
+ <key>Type</key>
272
+ <string>String</string>
273
+ </dict>
274
+ </array>
275
+ <key>Outputs</key>
276
+ <array>
277
+ <string>$(ProductResourcesDir)/$(InputFileBase).cdm</string>
278
+ </array>
279
+ <key>ProgressDescription</key>
280
+ <string>Compiling $(CommandProgressByType) mapping models</string>
281
+ <key>RuleName</key>
282
+ <string>MappingModelCompile $(ProductResourcesDir)/$(InputFileBase).cdm $(InputFile)</string>
283
+ <key>SynthesizeBuildRule</key>
284
+ <string>Yes</string>
285
+ <key>Type</key>
286
+ <string>Compiler</string>
287
+ </dict>
288
+ </array>
289
+ </plist>