diff options
| author | ruki <[email protected]> | 2019-04-18 22:59:52 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-04-18 11:59:18 +0800 |
| commit | 69b9445166ac215b6c40970895d6b8600a55846d (patch) | |
| tree | 9eb771d61865e579ae0e454ec16c5688f40bab7d | |
| parent | fe7395793bf186b54c6ccb777b9086a9e2b5d2e9 (diff) | |
improve qt rule for android
| -rw-r--r-- | xmake/modules/detect/sdks/find_qt.lua | 10 | ||||
| -rw-r--r-- | xmake/platforms/android/load.lua | 50 | ||||
| -rw-r--r-- | xmake/platforms/android/xmake.lua | 2 | ||||
| -rw-r--r-- | xmake/rules/qt/load.lua | 6 |
4 files changed, 48 insertions, 20 deletions
diff --git a/xmake/modules/detect/sdks/find_qt.lua b/xmake/modules/detect/sdks/find_qt.lua index 6f7b901b2..885198575 100644 --- a/xmake/modules/detect/sdks/find_qt.lua +++ b/xmake/modules/detect/sdks/find_qt.lua @@ -46,7 +46,15 @@ function _find_sdkdir(sdkdir, sdkver) elseif is_plat("mingw") then table.insert(subdirs, path.join(sdkver or "*", is_arch("x86_64") and "mingw*_64" or "mingw*_32", "bin")) elseif is_plat("android") then - table.insert(subdirs, path.join(sdkver or "*", "android_*", "bin")) + local subdir = "android_*" + if is_arch("arm64-v8a") then + subdir = "android_arm64_v8a" + elseif is_arch("armv7-a") then + subdir = "android_armv7" + elseif is_arch("i386") then + subdir = "android_x86" + end + table.insert(subdirs, path.join(sdkver or "*", subdir, "bin")) end table.insert(subdirs, path.join(sdkver or "*", "*", "bin")) table.insert(subdirs, path.join("*", "bin")) diff --git a/xmake/platforms/android/load.lua b/xmake/platforms/android/load.lua index b7ac74856..94212458c 100644 --- a/xmake/platforms/android/load.lua +++ b/xmake/platforms/android/load.lua @@ -85,6 +85,19 @@ function main(platform) local ndk_sdkver = config.get("ndk_sdkver") if ndk and ndk_sdkver then + -- the sysroot archs + local sysroot_archs = + { + ["armv5te"] = "arch-arm" + , ["armv7-a"] = "arch-arm" + , ["arm64-v8a"] = "arch-arm64" + , i386 = "arch-x86" + , x86_64 = "arch-x86_64" + , mips = "arch-mips" + , mips64 = "arch-mips64" + } + local sysroot_arch = sysroot_archs[arch] + -- add sysroot -- -- @see https://android.googlesource.com/platform/ndk/+/master/docs/UnifiedHeaders.md @@ -111,8 +124,10 @@ function main(platform) ["armv5te"] = "arm-linux-androideabi" , ["armv7-a"] = "arm-linux-androideabi" , ["arm64-v8a"] = "aarch64-linux-android" - , ["i386"] = "i686-linux-android" - , ["x86_64"] = "x86_64-linux-android" + , i386 = "i686-linux-android" + , x86_64 = "x86_64-linux-android" + , mips = "mips-linux-android" + , mips64 = "mips64-linux-android" } platform:add("cxflags", "-D__ANDROID_API__=" .. ndk_sdkver) platform:add("asflags", "-D__ANDROID_API__=" .. ndk_sdkver) @@ -123,22 +138,15 @@ function main(platform) platform:add("cxxflags","-isystem " .. path.join(ndk_sysroot_be_r14, "usr", "include", triples[arch])) platform:add("asflags", "-isystem " .. path.join(ndk_sysroot_be_r14, "usr", "include", triples[arch])) else - if arch:startswith("arm64") then - platform:add("cflags", format("--sysroot=%s/arch-arm64", ndk_sdkdir)) - platform:add("cxxflags", format("--sysroot=%s/arch-arm64", ndk_sdkdir)) - platform:add("asflags", format("--sysroot=%s/arch-arm64", ndk_sdkdir)) - else - platform:add("cflags", format("--sysroot=%s/arch-arm", ndk_sdkdir)) - platform:add("cxxflags", format("--sysroot=%s/arch-arm", ndk_sdkdir)) - platform:add("asflags", format("--sysroot=%s/arch-arm", ndk_sdkdir)) + if sysroot_arch then + platform:add("cflags", format("--sysroot=%s/%s", ndk_sdkdir, sysroot_arch)) + platform:add("cxxflags", format("--sysroot=%s/%s", ndk_sdkdir, sysroot_arch)) + platform:add("asflags", format("--sysroot=%s/%s", ndk_sdkdir, sysroot_arch)) end end - if arch:startswith("arm64") then - platform:add("ldflags", format("--sysroot=%s/arch-arm64", ndk_sdkdir)) - platform:add("shflags", format("--sysroot=%s/arch-arm64", ndk_sdkdir)) - else - platform:add("ldflags", format("--sysroot=%s/arch-arm", ndk_sdkdir)) - platform:add("shflags", format("--sysroot=%s/arch-arm", ndk_sdkdir)) + if sysroot_arch then + platform:add("ldflags", format("--sysroot=%s/%s", ndk_sdkdir, sysroot_arch)) + platform:add("shflags", format("--sysroot=%s/%s", ndk_sdkdir, sysroot_arch)) end -- add "-fPIE -pie" to ldflags @@ -160,6 +168,10 @@ function main(platform) ["armv5te"] = "armeabi" , ["armv7-a"] = "armeabi-v7a" , ["arm64-v8a"] = "arm64-v8a" + , i386 = "x86" + , x86_64 = "x86_64" + , mips = "mips" + , mips64 = "mips64" } -- add search directories for c++ stl @@ -194,7 +206,7 @@ function main(platform) end -- init targets for rust - local targets = + local targets_rust = { ["armv5te"] = "arm-linux-androideabi" , ["armv7-a"] = "arm-linux-androideabi" @@ -202,7 +214,9 @@ function main(platform) } -- init flags for rust - platform:add("rcflags", "--target=" .. targets[arch]) + if targets_rust[arch] then + platform:add("rcflags", "--target=" .. targets_rust[arch]) + end platform:add("rc-shflags", "-C link-args=\"" .. (table.concat(platform:get("shflags"), " "):gsub("%-march=.-%s", "") .. "\"")) platform:add("rc-ldflags", "-C link-args=\"" .. (table.concat(platform:get("ldflags"), " "):gsub("%-march=.-%s", "") .. "\"")) local sh = config.get("sh") diff --git a/xmake/platforms/android/xmake.lua b/xmake/platforms/android/xmake.lua index 9a031340f..a4985a3eb 100644 --- a/xmake/platforms/android/xmake.lua +++ b/xmake/platforms/android/xmake.lua @@ -28,7 +28,7 @@ platform("android") set_hosts("macosx", "linux", "windows") -- set archs - set_archs("armv5te", "armv7-a", "arm64-v8a", "mips") + set_archs("armv5te", "armv7-a", "arm64-v8a", "mips", "mips64", "i386", "x86_64") -- set formats set_formats {static = "lib$(name).a", object = "$(name).o", shared = "lib$(name).so", symbol = "$(name).sym"} diff --git a/xmake/rules/qt/load.lua b/xmake/rules/qt/load.lua index e449a7c69..47abfabfd 100644 --- a/xmake/rules/qt/load.lua +++ b/xmake/rules/qt/load.lua @@ -197,6 +197,12 @@ function main(target, opt) target:add("includedirs", path.join(qt.sdkdir, "mkspecs/win32-g++")) target:add("linkdirs", qt.linkdirs) target:add("links", "mingw32") + elseif is_plat("android") then + target:set("frameworks", nil) + target:add("includedirs", path.join(qt.sdkdir, "include")) + target:add("includedirs", path.join(qt.sdkdir, "mkspecs/android-clang")) + target:add("rpathdirs", qt.linkdirs) + target:add("linkdirs", qt.linkdirs) end -- add some static third-party links if exists |
