From 83a3da4456a6bd7405abbbf5c9d2aec6c8f180cb Mon Sep 17 00:00:00 2001 From: crimsonwoods Date: Wed, 15 Feb 2017 00:36:02 +0900 Subject: Set default linker 'flags' and 'flags_before_libraries'. --- tasks/toolchains/android.rake | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/tasks/toolchains/android.rake b/tasks/toolchains/android.rake index 0cc60a7a3..0800055c8 100644 --- a/tasks/toolchains/android.rake +++ b/tasks/toolchains/android.rake @@ -232,6 +232,34 @@ Set ANDROID_PLATFORM environment variable or set :platform parameter flags end + def ldflags + flags = [] + + flags += %W(--sysroot="#{sysroot}") + + flags + end + + def ldflags_before_libraries + flags = [] + + case toolchain + when :clang + flags += %W(-gcc-toolchain "#{gcc_toolchain_path.to_s}") + case arch + when /armeabi-v7a/ then flags += %W(-target armv7-none-linux-androideabi) + when /armeabi/ then flags += %W(-target armv5te-none-linux-androideabi) + when /arm64-v8a/ then flags += %W(-target aarch64-none-linux-android) + when /x86_64/ then flags += %W(-target x86_64-none-linux-android) + when /x86/ then flags += %W(-target i686-none-linux-android) + when /mips64/ then flags += %W(-target mips64el-none-linux-android) + when /mips/ then flags += %W(-target mipsel-none-linux-android) + end + end + flags += %W(-no-canonical-prefixes) + + flags + end end MRuby::Toolchain.new(:android) do |conf, params| @@ -246,5 +274,6 @@ MRuby::Toolchain.new(:android) do |conf, params| conf.archiver.command = android.ar conf.linker.command = android.cc - conf.linker.flags = [] + conf.linker.flags = android.ldflags + conf.linker.flags_before_libraries = android.ldflags_before_libraries end -- cgit v1.2.3 From 838fa69aa318bba76542cea9abcdb9738c6f202f Mon Sep 17 00:00:00 2001 From: crimsonwoods Date: Wed, 15 Feb 2017 00:51:10 +0900 Subject: Add '-Wl,--fix-cortex-a8' linker option for 'armeabi-v7a' architecture. --- tasks/toolchains/android.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/toolchains/android.rake b/tasks/toolchains/android.rake index 0800055c8..eb6c7c2ce 100644 --- a/tasks/toolchains/android.rake +++ b/tasks/toolchains/android.rake @@ -247,7 +247,7 @@ Set ANDROID_PLATFORM environment variable or set :platform parameter when :clang flags += %W(-gcc-toolchain "#{gcc_toolchain_path.to_s}") case arch - when /armeabi-v7a/ then flags += %W(-target armv7-none-linux-androideabi) + when /armeabi-v7a/ then flags += %W(-target armv7-none-linux-androideabi -Wl,--fix-cortex-a8) when /armeabi/ then flags += %W(-target armv5te-none-linux-androideabi) when /arm64-v8a/ then flags += %W(-target aarch64-none-linux-android) when /x86_64/ then flags += %W(-target x86_64-none-linux-android) -- cgit v1.2.3 From a6b1e964a3cb4cc0e09d4ecc89e4fee682f8446c Mon Sep 17 00:00:00 2001 From: crimsonwoods Date: Wed, 15 Feb 2017 02:36:37 +0900 Subject: Modify default cflags. --- tasks/toolchains/android.rake | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/tasks/toolchains/android.rake b/tasks/toolchains/android.rake index eb6c7c2ce..7759a3f9c 100644 --- a/tasks/toolchains/android.rake +++ b/tasks/toolchains/android.rake @@ -203,31 +203,33 @@ Set ANDROID_PLATFORM environment variable or set :platform parameter def cflags flags = [] - flags += %W(-D__android__ --sysroot="#{sysroot}") + flags += %W(-MMD -MP) + flags += %W(-D__android__ -DANDROID --sysroot="#{sysroot}") case toolchain when :gcc - flags += %W(-mandroid) case arch - when /armeabi-v7a/ then flags += %W(-march=armv7-a) - when /armeabi/ then flags += %W(-march=armv5te) - when /arm64-v8a/ then flags += %W(-march=armv8-a) + when /armeabi-v7a/ then flags += %W(-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -fpic) + when /armeabi/ then flags += %W(-march=armv5te -mtune=xscale -msoft-float -fpic) + when /arm64-v8a/ then flags += %W(-march=armv8-a -fpic) when /x86_64/ then flags += %W(-march=x86-64) when /x86/ then flags += %W(-march=i686) - when /mips64/ then flags += %W(-march=mips64) - when /mips/ then flags += %W(-march=mips32) + when /mips64/ then flags += %W(-march=mips64r6 -fmessage-length=0 -fpic) + when /mips/ then flags += %W(-march=mips32 -fmessage-length=0 -fpic) end when :clang flags += %W(-gcc-toolchain "#{gcc_toolchain_path.to_s}") case arch - when /armeabi-v7a/ then flags += %W(-target armv7-none-linux-androideabi) - when /armeabi/ then flags += %W(-target armv5te-none-linux-androideabi) - when /arm64-v8a/ then flags += %W(-target aarch64-none-linux-android) - when /x86_64/ then flags += %W(-target x86_64-none-linux-android) - when /x86/ then flags += %W(-target i686-none-linux-android) - when /mips64/ then flags += %W(-target mips64el-none-linux-android) - when /mips/ then flags += %W(-target mipsel-none-linux-android) + when /armeabi-v7a/ then flags += %W(-target armv7-none-linux-androideabi -fpic) + when /armeabi/ then flags += %W(-target armv5te-none-linux-androideabi -fpic) + when /arm64-v8a/ then flags += %W(-target aarch64-none-linux-android -fpic) + when /x86_64/ then flags += %W(-target x86_64-none-linux-android -fPIC) + when /x86/ then flags += %W(-target i686-none-linux-android -fPIC) + when /mips64/ then flags += %W(-target mips64el-none-linux-android -fmessage-length=0 -fpic) + when /mips/ then flags += %W(-target mipsel-none-linux-android -fmessage-length=0 -fpic) end + flags += %W(-Wno-invalid-command-line-argument -Wno-unused-command-line-argument) end + flags += %W(-ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes) flags end -- cgit v1.2.3 From 5395dbfb3a1f424c6adc37b7d73d9def37e9e227 Mon Sep 17 00:00:00 2001 From: crimsonwoods Date: Wed, 15 Feb 2017 03:10:16 +0900 Subject: Add new two build config files. --- examples/targets/build_config_android_arm64-v8a.rb | 26 ++++++++++++++++++++++ examples/targets/build_config_android_armeabi.rb | 26 ++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 examples/targets/build_config_android_arm64-v8a.rb create mode 100644 examples/targets/build_config_android_armeabi.rb diff --git a/examples/targets/build_config_android_arm64-v8a.rb b/examples/targets/build_config_android_arm64-v8a.rb new file mode 100644 index 000000000..6188c13ec --- /dev/null +++ b/examples/targets/build_config_android_arm64-v8a.rb @@ -0,0 +1,26 @@ +MRuby::Build.new do |conf| + + # Gets set by the VS command prompts. + if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR'] + toolchain :visualcpp + else + toolchain :gcc + end + + enable_debug + + # include the default GEMs + conf.gembox 'default' +end + +# Requires Android NDK r13 or later. +MRuby::CrossBuild.new('android-arm64-v8a') do |conf| + params = { + :arch => 'arm64-v8a', + :platform => 'android-24', + :toolchain => :clang, + } + toolchain :android, params + + conf.gembox 'default' +end diff --git a/examples/targets/build_config_android_armeabi.rb b/examples/targets/build_config_android_armeabi.rb new file mode 100644 index 000000000..b7eb33a92 --- /dev/null +++ b/examples/targets/build_config_android_armeabi.rb @@ -0,0 +1,26 @@ +MRuby::Build.new do |conf| + + # Gets set by the VS command prompts. + if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR'] + toolchain :visualcpp + else + toolchain :gcc + end + + enable_debug + + # include the default GEMs + conf.gembox 'default' +end + +# Requires Android NDK r13 or later. +MRuby::CrossBuild.new('android-armeabi') do |conf| + params = { + :arch => 'armeabi', + :platform => 'android-24', + :toolchain => :clang, + } + toolchain :android, params + + conf.gembox 'default' +end -- cgit v1.2.3