Class: Xcodeproj::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/swordfish/hmap/xcconfig.rb,
lib/swordfish/native/target_architectures.rb
more...

Instance Method Summary collapse

Instance Method Details

#remove_attr_with_key(key) ⇒ Object

[View source]

5
6
7
8
9
# File 'lib/swordfish/hmap/xcconfig.rb', line 5

def remove_attr_with_key(key)
  unless key == nil
    @attributes.delete(key)
  end
end

#remove_header_search_path(prebuilt_hmap_target_names = nil) ⇒ Object

[View source]

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/swordfish/hmap/xcconfig.rb', line 10

def remove_header_search_path(prebuilt_hmap_target_names=nil)
  header_search_paths = @attributes['HEADER_SEARCH_PATHS']
  if header_search_paths
    new_paths = Array.new
    header_search_paths.split(' ').each do |p|
      unless search_path_should_be_deleted?(p, prebuilt_hmap_target_names)
        new_paths << p
      end
    end
    if new_paths.size > 0
      @attributes['HEADER_SEARCH_PATHS'] = new_paths.join(' ')
    else
      remove_attr_with_key('HEADER_SEARCH_PATHS')
    end
  end
  remove_system_option_in_other_cflags(prebuilt_hmap_target_names)
end

#remove_system_option_in_other_cflags(prebuilt_hmap_target_names = nil) ⇒ Object

[View source]

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/swordfish/hmap/xcconfig.rb', line 39

def remove_system_option_in_other_cflags(prebuilt_hmap_target_names=nil)
  # ----------------------------------------------
  # -I<dir>, --include-directory <arg>, --include-directory=<arg>
  # Add directory to include search path. For C++ inputs, if there are multiple -I options,
  # these directories are searched in the order they are given before the standard system directories are searched.
  # If the same directory is in the SYSTEM include search paths, for example if also specified with -isystem, the -I option will be ignored
  #
  # -isystem<directory>
  # Add directory to SYSTEM include search path
  # ----------------------------------------------
  flags = @attributes['OTHER_CFLAGS']
  if flags
    new_flags = ''
    is_isystem_flag = false
    flags.split(' ').each do |substr|
      append_str = substr
      # Previous flag is `isystem`
      if is_isystem_flag
        is_isystem_flag = false
        if search_path_should_be_deleted?(append_str, prebuilt_hmap_target_names)
          next
        else
          # recover
          append_str = "-isystem #{append_str}"
        end
      end

      if append_str == '-isystem'
        is_isystem_flag = true
        next
      end

      if new_flags.length > 0
        new_flags += ' '
      end
      new_flags += append_str
    end

    if new_flags.length > 0
      @attributes['OTHER_CFLAGS'] = new_flags
    else
      remove_attr_with_key('OTHER_CFLAGS')
    end
  end
end

#reset_header_search_with_relative_hmap_path(hmap_path, prebuilt_hmap_target_names = nil) ⇒ Object

[View source]

84
85
86
87
88
89
90
91
92
93
94
# File 'lib/swordfish/hmap/xcconfig.rb', line 84

def reset_header_search_with_relative_hmap_path(hmap_path, prebuilt_hmap_target_names=nil)
  # Delete associate search paths
  remove_header_search_path(prebuilt_hmap_target_names)
  # Add hmap file to search path
  new_paths = Array["${PODS_ROOT}/#{hmap_path}"]
  header_search_paths = @attributes['HEADER_SEARCH_PATHS']
  if header_search_paths
    new_paths.concat(header_search_paths.split(' '))
  end
  @attributes['HEADER_SEARCH_PATHS'] = new_paths.join(' ')
end

#search_path_should_be_deleted?(search_path, prebuilt_hmap_target_names = nil) ⇒ Boolean

Returns:

  • (Boolean)
[View source]

27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/swordfish/hmap/xcconfig.rb', line 27

def search_path_should_be_deleted?(search_path, prebuilt_hmap_target_names=nil)
  # Check if the path should be deleted from search list
  # 1. It must be at the ${PODS_ROOT} directory
  # 2. It has generated hmap
  ret = false
  if search_path.include?('${PODS_ROOT}/Headers')
    if prebuilt_hmap_target_names
       ret = prebuilt_hmap_target_names.select { |name| search_path.include?(name) }.empty? == false
    end
  end
  ret
end

#set_archs_arm64Object

[View source]

50
51
52
# File 'lib/swordfish/native/target_architectures.rb', line 50

def set_archs_arm64
  @attributes['ARCHS'] = 'arm64'
end

#set_archs_defaultObject

[View source]

46
47
48
# File 'lib/swordfish/native/target_architectures.rb', line 46

def set_archs_default
  remove_attr_with_key('ARCHS')
end

#set_use_hmap(use = false) ⇒ Object

[View source]

95
96
97
# File 'lib/swordfish/hmap/xcconfig.rb', line 95

def set_use_hmap(use=false)
  @attributes['USE_HEADERMAP'] = (use ? 'YES' : 'NO')
end