Merge pull request #3223 from AltimitSystems/android.rake-ndk-clang
Android Task GCC support re-added
Yukihiro "Matz" Matsumoto authored 7 years ago
GitHub committed 7 years ago
12 | 12 | ~/Library/Android/ndk |
13 | 13 | } |
14 | 14 | |
15 | TOOLCHAINS = [:clang] # TODO : Add gcc support | |
15 | TOOLCHAINS = [:clang, :gcc] | |
16 | 16 | |
17 | 17 | ARCHITECTURES = %w{ |
18 | 18 | armeabi armeabi-v7a arm64-v8a |
45 | 45 | end |
46 | 46 | |
47 | 47 | def bin_gcc(command) |
48 | case toolchain | |
49 | when :gcc then bin(command) | |
50 | when :clang | |
51 | command = command.to_s | |
52 | ||
53 | command = case arch | |
54 | when /armeabi/ then 'arm-linux-androideabi-' | |
55 | when /arm64-v8a/ then 'aarch64-linux-android-' | |
56 | when /x86_64/ then 'x86_64-linux-android-' | |
57 | when /x86/ then 'i686-linux-android-' | |
58 | when /mips64/ then 'mips64el-linux-android-' | |
59 | when /mips/ then 'mipsel-linux-android-' | |
60 | end + command | |
61 | ||
62 | gcc_toolchain_path.join('bin', command).to_s | |
63 | end | |
48 | command = command.to_s | |
49 | ||
50 | command = case arch | |
51 | when /armeabi/ then 'arm-linux-androideabi-' | |
52 | when /arm64-v8a/ then 'aarch64-linux-android-' | |
53 | when /x86_64/ then 'x86_64-linux-android-' | |
54 | when /x86/ then 'i686-linux-android-' | |
55 | when /mips64/ then 'mips64el-linux-android-' | |
56 | when /mips/ then 'mipsel-linux-android-' | |
57 | end + command | |
58 | ||
59 | gcc_toolchain_path.join('bin', command).to_s | |
64 | 60 | end |
65 | 61 | |
66 | 62 | def bin(command) |
87 | 83 | |
88 | 84 | def toolchain_path |
89 | 85 | @toolchain_path ||= case toolchain |
86 | when :gcc | |
87 | gcc_toolchain_path | |
90 | 88 | when :clang |
91 | 89 | home_path.join('toolchains', 'llvm' , 'prebuilt', host_platform) |
92 | 90 | end |
189 | 187 | |
190 | 188 | def cc |
191 | 189 | case toolchain |
190 | when :gcc then bin_gcc('gcc') | |
192 | 191 | when :clang then bin('clang') |
193 | 192 | end |
194 | 193 | end |
195 | 194 | |
196 | 195 | def ar |
197 | 196 | case toolchain |
197 | when :gcc then bin_gcc('ar') | |
198 | 198 | when :clang then bin_gcc('ar') |
199 | 199 | end |
200 | 200 | end |
204 | 204 | |
205 | 205 | flags += %W(-D__android__ --sysroot="#{sysroot}") |
206 | 206 | case toolchain |
207 | when :gcc | |
208 | flags += %W(-mandroid) | |
209 | case arch | |
210 | when /armeabi-v7a/ then flags += %W(-march=armv7-a) | |
211 | when /armeabi/ then flags += %W(-march=armv5te) | |
212 | when /arm64-v8a/ then flags += %W(-march=armv8-a) | |
213 | when /x86_64/ then flags += %W(-march=x86-64) | |
214 | when /x86/ then flags += %W(-march=i686) | |
215 | when /mips64/ then flags += %W(-march=mips64) | |
216 | when /mips/ then flags += %W(-march=mips32) | |
217 | end | |
207 | 218 | when :clang |
208 | 219 | flags += %W(-gcc-toolchain "#{gcc_toolchain_path.to_s}") |
209 | 220 | case arch |