Module: AndroidPlatform

Defined in:
lib/mundler/platforms/android.rb

Class Method Summary collapse

Class Method Details

.cc_and_linker(options) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/mundler/platforms/android.rb', line 34

def self.cc_and_linker(options)
  build = ""
  if options[:cc]
    build += "  conf.cc do |cc|\n"
    build += "    cc.command = #{options[:cc][:command].inspect}\n" if options[:cc][:command]
    build += "    cc.flags << #{options[:cc][:flags].inspect}\n" if options[:cc][:flags]
    build += "  end\n\n"
  end

  if options[:linker]
    build += "  conf.linker do |linker|\n"
    build += "    linker.command = #{options[:linker][:command].inspect}\n" if options[:linker][:command]
    build += "    linker.flags << #{options[:linker][:flags].inspect}\n" if options[:linker][:flags]
    build += "  end\n\n"
  end

  build
end

.config(options, build_config) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/mundler/platforms/android.rb', line 2

def self.config(options, build_config)
  valid_archs = [:"arm64-v8a", :armeabi, :"armeabi-v7a"]
  options[:archs] ||= valid_archs

  options[:archs].map do |arch|
    unless valid_archs.include?(arch)
      raise "Invalid architecture #{arch}. Valid values: #{valid_archs}"
    end

    <<~BUILD
      MRuby::CrossBuild.new("android__#{arch}") do |conf|
        params = {
          :arch => #{arch.inspect},
          :platform => 'android-24',
          :toolchain => :clang,
        }

        if #{arch.inspect} == :"armeabi-v7a"
          params[:mfpu] = "neon"
          params[:mfloat_abi] = "hard"
        end

        toolchain :android, params

      #{cc_and_linker(options[:options])}
        #{build_config.gemboxes}
        #{build_config.gems(:android)}
      end
    BUILD
  end.join("\n")
end