cocoapods 0.22.3 → 0.23.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +54 -0
- data/lib/cocoapods.rb +0 -3
- data/lib/cocoapods/command/podfile_info.rb +13 -11
- data/lib/cocoapods/command/push.rb +2 -2
- data/lib/cocoapods/command/repo.rb +2 -2
- data/lib/cocoapods/command/setup.rb +25 -0
- data/lib/cocoapods/command/spec.rb +86 -58
- data/lib/cocoapods/config.rb +9 -2
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/copy_resources_script.rb +9 -5
- data/lib/cocoapods/generator/xcconfig.rb +5 -117
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +42 -6
- data/lib/cocoapods/generator/xcconfig/private_pod_xcconfig.rb +28 -6
- data/lib/cocoapods/generator/xcconfig/public_pod_xcconfig.rb +25 -3
- data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +124 -0
- data/lib/cocoapods/installer.rb +3 -20
- data/lib/cocoapods/installer/file_references_installer.rb +49 -17
- data/lib/cocoapods/installer/pod_source_installer.rb +28 -4
- data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +6 -2
- data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +33 -4
- data/lib/cocoapods/project.rb +55 -22
- data/lib/cocoapods/sandbox/file_accessor.rb +42 -8
- data/lib/cocoapods/user_interface.rb +1 -0
- metadata +153 -182
@@ -70,7 +70,7 @@ module Pod
|
|
70
70
|
def script
|
71
71
|
script = install_resources_function
|
72
72
|
resources.each do |resource|
|
73
|
-
script +=
|
73
|
+
script += %Q[install_resource "#{resource}"\n]
|
74
74
|
end
|
75
75
|
script += RSYNC_CALL
|
76
76
|
script
|
@@ -102,12 +102,16 @@ install_resource()
|
|
102
102
|
cp -fpR "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
103
103
|
;;
|
104
104
|
*.xcdatamodel)
|
105
|
-
echo xcrun momc
|
106
|
-
xcrun momc
|
105
|
+
echo "xcrun momc \\"${PODS_ROOT}/$1\\" \\"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\\""
|
106
|
+
xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom"
|
107
107
|
;;
|
108
108
|
*.xcdatamodeld)
|
109
|
-
echo
|
110
|
-
xcrun momc
|
109
|
+
echo "xcrun momc \\"${PODS_ROOT}/$1\\" \\"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\\""
|
110
|
+
xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd"
|
111
|
+
;;
|
112
|
+
/*)
|
113
|
+
echo "$1"
|
114
|
+
echo "$1" >> "$RESOURCES_TO_COPY"
|
111
115
|
;;
|
112
116
|
*)
|
113
117
|
echo "${PODS_ROOT}/$1"
|
@@ -5,124 +5,12 @@ module Pod
|
|
5
5
|
# for each Pod and for each Pod target definition. The aggregates the
|
6
6
|
# configurations of the Pods and define target specific settings.
|
7
7
|
#
|
8
|
-
|
8
|
+
module XCConfig
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
# @param [Target] target @see target
|
15
|
-
#
|
16
|
-
def initialize(target)
|
17
|
-
@target = target
|
18
|
-
end
|
19
|
-
|
20
|
-
# @return [Sandbox] the sandbox of this target.
|
21
|
-
#
|
22
|
-
def sandbox
|
23
|
-
target.sandbox
|
24
|
-
end
|
25
|
-
|
26
|
-
# @return [Xcodeproj::Config] The generated xcconfig.
|
27
|
-
#
|
28
|
-
attr_reader :xcconfig
|
29
|
-
|
30
|
-
# Generates and saves the xcconfig to the given path.
|
31
|
-
#
|
32
|
-
# @param [Pathname] path
|
33
|
-
# the path where the prefix header should be stored.
|
34
|
-
#
|
35
|
-
# @return [void]
|
36
|
-
#
|
37
|
-
def save_as(path)
|
38
|
-
generate.save_as(path)
|
39
|
-
end
|
40
|
-
|
41
|
-
#-----------------------------------------------------------------------#
|
42
|
-
|
43
|
-
# @!group Private helpers.
|
44
|
-
|
45
|
-
private
|
46
|
-
|
47
|
-
# @return [String] the default linker flags. `-ObjC` is always included
|
48
|
-
# while `-fobjc-arc` is included only if requested in the
|
49
|
-
# Podfile.
|
50
|
-
#
|
51
|
-
def default_ld_flags
|
52
|
-
ld_flags = '-ObjC'
|
53
|
-
if target.target_definition.podfile.set_arc_compatibility_flag? and
|
54
|
-
target.spec_consumers.any? { |consumer| consumer.requires_arc? }
|
55
|
-
ld_flags << ' -fobjc-arc'
|
56
|
-
end
|
57
|
-
ld_flags
|
58
|
-
end
|
59
|
-
|
60
|
-
# Converts an array of strings to a single string where the each string
|
61
|
-
# is surrounded by double quotes and separated by a space. Used to
|
62
|
-
# represent strings in a xcconfig file.
|
63
|
-
#
|
64
|
-
# @param [Array<String>] strings
|
65
|
-
# a list of strings.
|
66
|
-
#
|
67
|
-
# @return [String] the resulting string.
|
68
|
-
#
|
69
|
-
def quote(strings)
|
70
|
-
strings.sort.map { |s| %W|"#{s}"| }.join(" ")
|
71
|
-
end
|
72
|
-
|
73
|
-
# Configures the given Xcconfig according to the build settings of the
|
74
|
-
# given Specification.
|
75
|
-
#
|
76
|
-
# @param [Specification::Consumer] consumer
|
77
|
-
# The consumer of the specification.
|
78
|
-
#
|
79
|
-
# @param [Xcodeproj::Config] xcconfig
|
80
|
-
# The xcconfig to edit.
|
81
|
-
#
|
82
|
-
def add_spec_build_settings_to_xcconfig(consumer, xcconfig)
|
83
|
-
xcconfig.merge!(consumer.xcconfig)
|
84
|
-
xcconfig.libraries.merge(consumer.libraries)
|
85
|
-
xcconfig.frameworks.merge(consumer.frameworks)
|
86
|
-
xcconfig.weak_frameworks.merge(consumer.weak_frameworks)
|
87
|
-
add_developers_frameworks_if_needed(consumer, xcconfig)
|
88
|
-
end
|
89
|
-
|
90
|
-
# @return [Array<String>] The search paths for the developer frameworks.
|
91
|
-
#
|
92
|
-
# @todo Inheritance should be properly handled in Xcconfigs.
|
93
|
-
#
|
94
|
-
DEVELOPER_FRAMEWORKS_SEARCH_PATHS = [
|
95
|
-
'$(inherited)',
|
96
|
-
'"$(SDKROOT)/Developer/Library/Frameworks"',
|
97
|
-
'"$(DEVELOPER_LIBRARY_DIR)/Frameworks"'
|
98
|
-
]
|
99
|
-
|
100
|
-
# Adds the search paths of the developer frameworks to the specification
|
101
|
-
# if needed. This is done because the `SenTestingKit` requires them and
|
102
|
-
# adding them to each specification which requires it is repetitive and
|
103
|
-
# error prone.
|
104
|
-
#
|
105
|
-
# @param [Specification::Consumer] consumer
|
106
|
-
# The consumer of the specification.
|
107
|
-
#
|
108
|
-
# @param [Xcodeproj::Config] xcconfig
|
109
|
-
# The xcconfig to edit.
|
110
|
-
#
|
111
|
-
# @return [void]
|
112
|
-
#
|
113
|
-
def add_developers_frameworks_if_needed(consumer, xcconfig)
|
114
|
-
if xcconfig.frameworks.include?('SenTestingKit')
|
115
|
-
search_paths = xcconfig.attributes['FRAMEWORK_SEARCH_PATHS'] ||= ''
|
116
|
-
DEVELOPER_FRAMEWORKS_SEARCH_PATHS.each do |search_path|
|
117
|
-
unless search_paths.include?(search_path)
|
118
|
-
search_paths << ' ' unless search_paths.empty?
|
119
|
-
search_paths << search_path
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
#-----------------------------------------------------------------------#
|
10
|
+
autoload :AggregateXCConfig, 'cocoapods/generator/xcconfig/aggregate_xcconfig'
|
11
|
+
autoload :PublicPodXCConfig, 'cocoapods/generator/xcconfig/public_pod_xcconfig'
|
12
|
+
autoload :PrivatePodXCConfig, 'cocoapods/generator/xcconfig/private_pod_xcconfig'
|
13
|
+
autoload :XCConfigHelper, 'cocoapods/generator/xcconfig/xcconfig_helper'
|
126
14
|
|
127
15
|
end
|
128
16
|
end
|
@@ -1,9 +1,35 @@
|
|
1
1
|
module Pod
|
2
2
|
module Generator
|
3
|
+
module XCConfig
|
3
4
|
|
4
5
|
# Generates the xcconfigs for the aggregate targets.
|
5
6
|
#
|
6
|
-
class AggregateXCConfig
|
7
|
+
class AggregateXCConfig
|
8
|
+
|
9
|
+
# @return [Target] the target represented by this xcconfig.
|
10
|
+
#
|
11
|
+
attr_reader :target
|
12
|
+
|
13
|
+
# @param [Target] target @see target
|
14
|
+
#
|
15
|
+
def initialize(target)
|
16
|
+
@target = target
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [Xcodeproj::Config] The generated xcconfig.
|
20
|
+
#
|
21
|
+
attr_reader :xcconfig
|
22
|
+
|
23
|
+
# Generates and saves the xcconfig to the given path.
|
24
|
+
#
|
25
|
+
# @param [Pathname] path
|
26
|
+
# the path where the prefix header should be stored.
|
27
|
+
#
|
28
|
+
# @return [void]
|
29
|
+
#
|
30
|
+
def save_as(path)
|
31
|
+
generate.save_as(path)
|
32
|
+
end
|
7
33
|
|
8
34
|
# Generates the xcconfig.
|
9
35
|
#
|
@@ -12,19 +38,28 @@ module Pod
|
|
12
38
|
# Each namespaced configuration value is merged into the Pod
|
13
39
|
# xcconfig file.
|
14
40
|
#
|
41
|
+
# @todo This doesn't include the specs xcconfigs anymore and now the
|
42
|
+
# logic is duplicated.
|
43
|
+
#
|
15
44
|
# @return [Xcodeproj::Config]
|
16
45
|
#
|
17
46
|
def generate
|
18
47
|
@xcconfig = Xcodeproj::Config.new({
|
19
|
-
'OTHER_LDFLAGS'
|
20
|
-
'HEADER_SEARCH_PATHS'
|
21
|
-
'PODS_ROOT'
|
48
|
+
'OTHER_LDFLAGS' => XCConfigHelper.default_ld_flags(target),
|
49
|
+
'HEADER_SEARCH_PATHS' => XCConfigHelper.quote(target.sandbox.public_headers.search_paths),
|
50
|
+
'PODS_ROOT' => target.relative_pods_root,
|
22
51
|
'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) COCOAPODS=1',
|
23
52
|
})
|
24
53
|
|
25
54
|
target.pod_targets.each do |pod_target|
|
26
|
-
pod_target.
|
27
|
-
add_spec_build_settings_to_xcconfig(
|
55
|
+
pod_target.file_accessors.each do |file_accessor|
|
56
|
+
XCConfigHelper.add_spec_build_settings_to_xcconfig(file_accessor.spec_consumer, @xcconfig)
|
57
|
+
file_accessor.vendored_frameworks.each do |vendored_framework|
|
58
|
+
XCConfigHelper.add_framework_build_settings(vendored_framework, @xcconfig, target.sandbox.root)
|
59
|
+
end
|
60
|
+
file_accessor.vendored_libraries.each do |vendored_library|
|
61
|
+
XCConfigHelper.add_library_build_settings(vendored_library, @xcconfig, target.sandbox.root)
|
62
|
+
end
|
28
63
|
end
|
29
64
|
end
|
30
65
|
|
@@ -42,3 +77,4 @@ module Pod
|
|
42
77
|
end
|
43
78
|
end
|
44
79
|
end
|
80
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Pod
|
2
2
|
module Generator
|
3
|
+
module XCConfig
|
3
4
|
|
4
5
|
# Generates the private xcconfigs for the pod targets.
|
5
6
|
#
|
@@ -7,7 +8,11 @@ module Pod
|
|
7
8
|
# values of the public namespaced xcconfig with the default private
|
8
9
|
# configuration values required by CocoaPods.
|
9
10
|
#
|
10
|
-
class PrivatePodXCConfig
|
11
|
+
class PrivatePodXCConfig
|
12
|
+
|
13
|
+
# @return [Target] the target represented by this xcconfig.
|
14
|
+
#
|
15
|
+
attr_reader :target
|
11
16
|
|
12
17
|
# @return [Xcodeproj::Config] The public xcconfig which this one will
|
13
18
|
# use.
|
@@ -18,21 +23,37 @@ module Pod
|
|
18
23
|
# @param [Xcodeproj::Config] public_xcconfig @see public_xcconfig
|
19
24
|
#
|
20
25
|
def initialize(target, public_xcconfig)
|
21
|
-
|
26
|
+
@target = target
|
22
27
|
@public_xcconfig = public_xcconfig
|
23
28
|
end
|
24
29
|
|
30
|
+
# @return [Xcodeproj::Config] The generated xcconfig.
|
31
|
+
#
|
32
|
+
attr_reader :xcconfig
|
33
|
+
|
34
|
+
# Generates and saves the xcconfig to the given path.
|
35
|
+
#
|
36
|
+
# @param [Pathname] path
|
37
|
+
# the path where the prefix header should be stored.
|
38
|
+
#
|
39
|
+
# @return [void]
|
40
|
+
#
|
41
|
+
def save_as(path)
|
42
|
+
generate.save_as(path)
|
43
|
+
end
|
44
|
+
|
25
45
|
# Generates the xcconfig.
|
26
46
|
#
|
27
47
|
# @return [Xcodeproj::Config]
|
28
48
|
#
|
29
49
|
def generate
|
50
|
+
search_pahts = target.build_headers.search_paths.concat(target.sandbox.public_headers.search_paths)
|
30
51
|
config = {
|
31
|
-
'OTHER_LDFLAGS'
|
32
|
-
'PODS_ROOT'
|
33
|
-
'HEADER_SEARCH_PATHS'
|
52
|
+
'OTHER_LDFLAGS' => XCConfigHelper.default_ld_flags(target),
|
53
|
+
'PODS_ROOT' => '${SRCROOT}',
|
54
|
+
'HEADER_SEARCH_PATHS' => XCConfigHelper.quote(search_pahts),
|
34
55
|
'GCC_PREPROCESSOR_DEFINITIONS' => 'COCOAPODS=1',
|
35
|
-
# 'USE_HEADERMAP'
|
56
|
+
# 'USE_HEADERMAP' => 'NO'
|
36
57
|
}
|
37
58
|
|
38
59
|
xcconfig_hash = add_xcconfig_namespaced_keys(public_xcconfig.to_hash, config, target.xcconfig_prefix)
|
@@ -93,3 +114,4 @@ module Pod
|
|
93
114
|
end
|
94
115
|
end
|
95
116
|
end
|
117
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Pod
|
2
2
|
module Generator
|
3
|
+
module XCConfig
|
3
4
|
|
4
5
|
# Generates the public xcconfigs for the pod targets.
|
5
6
|
#
|
@@ -8,7 +9,21 @@ module Pod
|
|
8
9
|
# xcconfig includes the standard podspec defined values including
|
9
10
|
# libraries, frameworks, weak frameworks and xcconfig overrides.
|
10
11
|
#
|
11
|
-
class PublicPodXCConfig
|
12
|
+
class PublicPodXCConfig
|
13
|
+
|
14
|
+
# @return [Target] the target represented by this xcconfig.
|
15
|
+
#
|
16
|
+
attr_reader :target
|
17
|
+
|
18
|
+
# @param [Target] target @see target
|
19
|
+
#
|
20
|
+
def initialize(target)
|
21
|
+
@target = target
|
22
|
+
end
|
23
|
+
|
24
|
+
# @return [Xcodeproj::Config] The generated xcconfig.
|
25
|
+
#
|
26
|
+
attr_reader :xcconfig
|
12
27
|
|
13
28
|
# Generates and saves the xcconfig to the given path.
|
14
29
|
#
|
@@ -27,8 +42,14 @@ module Pod
|
|
27
42
|
#
|
28
43
|
def generate
|
29
44
|
@xcconfig = Xcodeproj::Config.new
|
30
|
-
target.
|
31
|
-
add_spec_build_settings_to_xcconfig(
|
45
|
+
target.file_accessors.each do |file_accessor|
|
46
|
+
XCConfigHelper.add_spec_build_settings_to_xcconfig(file_accessor.spec_consumer, @xcconfig)
|
47
|
+
file_accessor.vendored_frameworks.each do |vendored_framework|
|
48
|
+
XCConfigHelper.add_framework_build_settings(vendored_framework, @xcconfig, target.sandbox.root)
|
49
|
+
end
|
50
|
+
file_accessor.vendored_libraries.each do |vendored_library|
|
51
|
+
XCConfigHelper.add_library_build_settings(vendored_library, @xcconfig, target.sandbox.root)
|
52
|
+
end
|
32
53
|
end
|
33
54
|
@xcconfig
|
34
55
|
end
|
@@ -38,3 +59,4 @@ module Pod
|
|
38
59
|
end
|
39
60
|
end
|
40
61
|
end
|
62
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
module Pod
|
2
|
+
module Generator
|
3
|
+
module XCConfig
|
4
|
+
|
5
|
+
# Stores the shared logic of the classes of the XCConfig module.
|
6
|
+
#
|
7
|
+
module XCConfigHelper
|
8
|
+
|
9
|
+
# Converts an array of strings to a single string where the each string
|
10
|
+
# is surrounded by double quotes and separated by a space. Used to
|
11
|
+
# represent strings in a xcconfig file.
|
12
|
+
#
|
13
|
+
# @param [Array<String>] strings
|
14
|
+
# a list of strings.
|
15
|
+
#
|
16
|
+
# @return [String] the resulting string.
|
17
|
+
#
|
18
|
+
def self.quote(strings)
|
19
|
+
strings.sort.map { |s| %W|"#{s}"| }.join(" ")
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [String] the default linker flags. `-ObjC` is always included
|
23
|
+
# while `-fobjc-arc` is included only if requested in the
|
24
|
+
# Podfile.
|
25
|
+
#
|
26
|
+
def self.default_ld_flags(target)
|
27
|
+
ld_flags = '-ObjC'
|
28
|
+
if target.target_definition.podfile.set_arc_compatibility_flag? and
|
29
|
+
target.spec_consumers.any? { |consumer| consumer.requires_arc? }
|
30
|
+
ld_flags << ' -fobjc-arc'
|
31
|
+
end
|
32
|
+
ld_flags
|
33
|
+
end
|
34
|
+
|
35
|
+
# Configures the given Xcconfig according to the build settings of the
|
36
|
+
# given Specification.
|
37
|
+
#
|
38
|
+
# @param [Specification::Consumer] consumer
|
39
|
+
# The consumer of the specification.
|
40
|
+
#
|
41
|
+
# @param [Xcodeproj::Config] xcconfig
|
42
|
+
# The xcconfig to edit.
|
43
|
+
#
|
44
|
+
def self.add_spec_build_settings_to_xcconfig(consumer, xcconfig)
|
45
|
+
xcconfig.merge!(consumer.xcconfig)
|
46
|
+
xcconfig.libraries.merge(consumer.libraries)
|
47
|
+
xcconfig.frameworks.merge(consumer.frameworks)
|
48
|
+
xcconfig.weak_frameworks.merge(consumer.weak_frameworks)
|
49
|
+
add_developers_frameworks_if_needed(xcconfig)
|
50
|
+
end
|
51
|
+
|
52
|
+
# Configures the given Xcconfig with the the build settings for the given
|
53
|
+
# framework path.
|
54
|
+
#
|
55
|
+
# @param [Pathanme] framework_path
|
56
|
+
# The path of the framework.
|
57
|
+
#
|
58
|
+
# @param [Xcodeproj::Config] xcconfig
|
59
|
+
# The xcconfig to edit.
|
60
|
+
#
|
61
|
+
def self.add_framework_build_settings(framework_path, xcconfig, sandbox_root)
|
62
|
+
name = File.basename(framework_path, ".framework")
|
63
|
+
dirname = File.dirname(framework_path).sub(sandbox_root.to_s, '$(PODS_ROOT)')
|
64
|
+
build_settings = {
|
65
|
+
'OTHER_LDFLAGS' => "-framework #{name}",
|
66
|
+
'FRAMEWORK_SEARCH_PATHS' => quote([dirname])
|
67
|
+
}
|
68
|
+
xcconfig.merge!(build_settings)
|
69
|
+
end
|
70
|
+
|
71
|
+
# Configures the given Xcconfig with the the build settings for the given
|
72
|
+
# framework path.
|
73
|
+
#
|
74
|
+
# @param [Pathanme] framework_path
|
75
|
+
# The path of the framework.
|
76
|
+
#
|
77
|
+
# @param [Xcodeproj::Config] xcconfig
|
78
|
+
# The xcconfig to edit.
|
79
|
+
#
|
80
|
+
def self.add_library_build_settings(library_path, xcconfig, sandbox_root)
|
81
|
+
name = File.basename(library_path, ".a").sub(/\Alib/, '')
|
82
|
+
dirname = File.dirname(library_path).sub(sandbox_root.to_s, '$(PODS_ROOT)')
|
83
|
+
build_settings = {
|
84
|
+
'OTHER_LDFLAGS' => "-l#{name}",
|
85
|
+
'LIBRARY_SEARCH_PATHS' => quote([dirname])
|
86
|
+
}
|
87
|
+
xcconfig.merge!(build_settings)
|
88
|
+
end
|
89
|
+
|
90
|
+
# @return [Array<String>] The search paths for the developer frameworks.
|
91
|
+
#
|
92
|
+
DEVELOPER_FRAMEWORKS_SEARCH_PATHS = [
|
93
|
+
'$(inherited)',
|
94
|
+
'"$(SDKROOT)/Developer/Library/Frameworks"',
|
95
|
+
'"$(DEVELOPER_LIBRARY_DIR)/Frameworks"'
|
96
|
+
]
|
97
|
+
|
98
|
+
# Adds the search paths of the developer frameworks to the specification
|
99
|
+
# if needed. This is done because the `SenTestingKit` requires them and
|
100
|
+
# adding them to each specification which requires it is repetitive and
|
101
|
+
# error prone.
|
102
|
+
#
|
103
|
+
# @param [Xcodeproj::Config] xcconfig
|
104
|
+
# The xcconfig to edit.
|
105
|
+
#
|
106
|
+
# @return [void]
|
107
|
+
#
|
108
|
+
def self.add_developers_frameworks_if_needed(xcconfig)
|
109
|
+
if xcconfig.frameworks.include?('SenTestingKit')
|
110
|
+
search_paths = xcconfig.attributes['FRAMEWORK_SEARCH_PATHS'] ||= ''
|
111
|
+
DEVELOPER_FRAMEWORKS_SEARCH_PATHS.each do |search_path|
|
112
|
+
unless search_paths.include?(search_path)
|
113
|
+
search_paths << ' ' unless search_paths.empty?
|
114
|
+
search_paths << search_path
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
#---------------------------------------------------------------------#
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|