fastlane-plugin-xcconfig_actions 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>