From f4db48c23219f2f0994dc0d5cc99d6228c69660c Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Wed, 27 Mar 2013 20:34:42 +0000 Subject: Android: Enable configuring via configureapp for Windows. Change-Id: If8f27f54d4d79c3530f51edafe7f8f42d685bc47 Reviewed-by: Oswald Buddenhagen Reviewed-by: Eskil Abrahamsen Blomfeldt --- tools/configure/configureapp.cpp | 88 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 2 deletions(-) (limited to 'tools/configure/configureapp.cpp') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index bd74e08707..a1ad081d97 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -70,7 +70,8 @@ enum Platforms { WINDOWS, WINDOWS_CE, QNX, - BLACKBERRY + BLACKBERRY, + ANDROID }; std::ostream &operator<<(std::ostream &s, const QString &val) { @@ -1250,6 +1251,41 @@ void Configure::parseCmdLine() dictionary["QT_INSTALL_SETTINGS"] = configCmdLine.at(i); } + else if (configCmdLine.at(i) == "-android-ndk") { + ++i; + if (i == argCount) + break; + dictionary[ "ANDROID_NDK_ROOT" ] = configCmdLine.at(i); + } + + else if (configCmdLine.at(i) == "-android-sdk") { + ++i; + if (i == argCount) + break; + dictionary[ "ANDROID_SDK_ROOT" ] = configCmdLine.at(i); + } + + else if (configCmdLine.at(i) == "-android-ndk-platform") { + ++i; + if (i == argCount) + break; + dictionary[ "ANDROID_PLATFORM" ] = configCmdLine.at(i); + } + + else if (configCmdLine.at(i) == "-android-arch") { + ++i; + if (i == argCount) + break; + dictionary[ "ANDROID_TARGET_ARCH" ] = configCmdLine.at(i); + } + + else if (configCmdLine.at(i) == "-android-toolchain-version") { + ++i; + if (i == argCount) + break; + dictionary[ "ANDROID_NDK_TOOLCHAIN_VERSION" ] = configCmdLine.at(i); + } + else { dictionary[ "HELP" ] = "yes"; cout << "Unknown option " << configCmdLine.at(i) << endl; @@ -1603,6 +1639,14 @@ void Configure::applySpecSpecifics() } else if ((platform() == QNX) || (platform() == BLACKBERRY)) { dictionary["STACK_PROTECTOR_STRONG"] = "auto"; dictionary["SLOG2"] = "auto"; + } else if (platform() == ANDROID) { + dictionary[ "REDUCE_EXPORTS" ] = "yes"; + dictionary[ "BUILD" ] = "release"; + dictionary[ "BUILDALL" ] = "no"; + dictionary[ "LARGE_FILE" ] = "no"; + dictionary[ "ANGLE" ] = "no"; + dictionary[ "REDUCE_RELOCATIONS" ] = "yes"; + dictionary[ "QT_GETIFADDRS" ] = "no"; } } @@ -2940,7 +2984,13 @@ void Configure::detectArch() Environment::execute(command); // find the executable that was generated - QFile exe("arch.exe"); + QString arch_exe; + if (qmakespec.startsWith("android")) { + arch_exe = "libarch.so"; + } else { + arch_exe = "arch.exe"; + } + QFile exe(arch_exe); if (!exe.open(QFile::ReadOnly)) { // no Text, this is binary exe.setFileName("arch"); if (!exe.open(QFile::ReadOnly)) { @@ -3349,6 +3399,33 @@ void Configure::generateConfigfiles() tmpFile3.copy(outName); tmpFile3.close(); } + + QFile qdeviceFile(dictionary["QT_BUILD_TREE"] + "/mkspecs/qdevice.pri"); + if (qdeviceFile.open(QIODevice::WriteOnly | QIODevice::Text)) { + tmpStream.setDevice(&qdeviceFile); + QString android_platform(dictionary.contains("ANDROID_PLATFORM") + ? dictionary["ANDROID_PLATFORM"] + : QString("android-9")); + tmpStream << "android_install {" << endl; + tmpStream << " DEFAULT_ANDROID_SDK_ROOT = " << formatPath(dictionary["ANDROID_SDK_ROOT"]) << endl; + tmpStream << " DEFAULT_ANDROID_NDK_ROOT = " << formatPath(dictionary["ANDROID_NDK_ROOT"]) << endl; + tmpStream << " DEFAULT_ANDROID_PLATFORM = " << android_platform << endl; + if (QSysInfo::WordSize == 64) + tmpStream << " DEFAULT_ANDROID_NDK_HOST = windows-x86_64" << endl; + else + tmpStream << " DEFAULT_ANDROID_NDK_HOST = windows" << endl; + QString android_arch(dictionary.contains("ANDROID_TARGET_ARCH") + ? dictionary["ANDROID_TARGET_ARCH"] + : QString("armeabi-v7a")); + QString android_tc_vers(dictionary.contains("ANDROID_NDK_TOOLCHAIN_VERSION") + ? dictionary["ANDROID_NDK_TOOLCHAIN_VERSION"] + : QString("4.7")); + tmpStream << " DEFAULT_ANDROID_TARGET_ARCH = " << android_arch << endl; + tmpStream << " DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION = " << android_tc_vers << endl; + tmpStream << "}" << endl; + tmpStream.flush(); + qdeviceFile.close(); + } } #endif @@ -4153,6 +4230,8 @@ QString Configure::platformName() const return QStringLiteral("Qt for QNX"); case BLACKBERRY: return QStringLiteral("Qt for Blackberry"); + case ANDROID: + return QStringLiteral("Qt for Android"); } } @@ -4167,6 +4246,8 @@ QString Configure::qpaPlatformName() const return QStringLiteral("qnx"); case BLACKBERRY: return QStringLiteral("blackberry"); + case ANDROID: + return QStringLiteral("android"); } } @@ -4184,6 +4265,9 @@ int Configure::platform() const if (xQMakeSpec.contains("blackberry")) return BLACKBERRY; + if (xQMakeSpec.contains("android")) + return ANDROID; + return WINDOWS; } -- cgit v1.2.3