diff options
Diffstat (limited to 'mkspecs/android-g++')
-rw-r--r-- | mkspecs/android-g++/qmake.conf | 90 | ||||
-rw-r--r-- | mkspecs/android-g++/qplatformdefs.h | 19 |
2 files changed, 56 insertions, 53 deletions
diff --git a/mkspecs/android-g++/qmake.conf b/mkspecs/android-g++/qmake.conf index 7c425bdef0..fc14eeae5a 100644 --- a/mkspecs/android-g++/qmake.conf +++ b/mkspecs/android-g++/qmake.conf @@ -10,30 +10,6 @@ include(../common/gcc-base-unix.conf) load(device_config) -# Passing in -win32 to qmake (from NQTC) causes this condition to pass, however -# qmake complains that -win32 is deprecated; should find another way, Q_OS_WIN -# should really be all QMAKE_HOST.os needs to depend on? -contains(QMAKE_HOST.os,Windows) { - # Not having sh.exe in your path causes this condition to pass - # To build Android Qt on Windows, this block must not be evaluated. - isEmpty(QMAKE_SH) { - # Override values from previously loaded shell-unix.conf - # (via unix.conf, via linux.conf). - include(../common/shell-win32.conf) - QMAKE_DEL_TREE = rmdir /s /q - QMAKE_INSTALL_FILE = copy /y - QMAKE_INSTALL_PROGRAM = copy /y - } else { - MINGW_IN_SHELL = 1 - QMAKE_DIR_SEP = / - QMAKE_DIRLIST_SEP = : - # Because install's ability to set permissions is not relevant on Windows, - # and git's msys does not provide it to start with. - QMAKE_INSTALL_FILE = cp -f - QMAKE_INSTALL_PROGRAM = cp -f - } -} - NDK_ROOT = $$(ANDROID_NDK_ROOT) !exists($$NDK_ROOT) { NDK_ROOT = $$DEFAULT_ANDROID_NDK_ROOT @@ -51,14 +27,20 @@ isEmpty(ANDROID_TARGET_ARCH): ANDROID_TARGET_ARCH = $$DEFAULT_ANDROID_TARGET_ARC NDK_TOOLCHAIN_PREFIX = $$(ANDROID_NDK_TOOLCHAIN_PREFIX) isEmpty(NDK_TOOLCHAIN_PREFIX) { equals(ANDROID_TARGET_ARCH, x86): NDK_TOOLCHAIN_PREFIX = x86 + else: equals(ANDROID_TARGET_ARCH, x86_64): NDK_TOOLCHAIN_PREFIX = x86_64 else: equals(ANDROID_TARGET_ARCH, mips): NDK_TOOLCHAIN_PREFIX = mipsel-linux-android + else: equals(ANDROID_TARGET_ARCH, mips64): NDK_TOOLCHAIN_PREFIX = mips64el-linux-android + else: equals(ANDROID_TARGET_ARCH, arm64-v8a): NDK_TOOLCHAIN_PREFIX = aarch64-linux-android else: NDK_TOOLCHAIN_PREFIX = arm-linux-androideabi } NDK_TOOLS_PREFIX = $$(ANDROID_NDK_TOOLS_PREFIX) isEmpty(NDK_TOOLS_PREFIX) { equals(ANDROID_TARGET_ARCH, x86): NDK_TOOLS_PREFIX = i686-linux-android + else: equals(ANDROID_TARGET_ARCH, x86_64): NDK_TOOLS_PREFIX = x86_64-linux-android else: equals(ANDROID_TARGET_ARCH, mips): NDK_TOOLS_PREFIX = mipsel-linux-android + else: equals(ANDROID_TARGET_ARCH, mips64): NDK_TOOLS_PREFIX = mips64el-linux-android + else: equals(ANDROID_TARGET_ARCH, arm64-v8a): NDK_TOOLS_PREFIX = aarch64-linux-android else: NDK_TOOLS_PREFIX = arm-linux-androideabi } @@ -66,7 +48,10 @@ NDK_TOOLCHAIN_VERSION = $$(ANDROID_NDK_TOOLCHAIN_VERSION) isEmpty(NDK_TOOLCHAIN_VERSION): NDK_TOOLCHAIN_VERSION = $$DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION equals(ANDROID_TARGET_ARCH, x86): ANDROID_ARCHITECTURE = x86 +else: equals(ANDROID_TARGET_ARCH, x86_64): ANDROID_ARCHITECTURE = x86_64 else: equals(ANDROID_TARGET_ARCH, mips): ANDROID_ARCHITECTURE = mips +else: equals(ANDROID_TARGET_ARCH, mips64): ANDROID_ARCHITECTURE = mips64 +else: equals(ANDROID_TARGET_ARCH, arm64-v8a): ANDROID_ARCHITECTURE = arm64 else: ANDROID_ARCHITECTURE = arm !equals(NDK_TOOLCHAIN_VERSION, 4.4.3): ANDROID_CXXSTL_SUFFIX = -$$NDK_TOOLCHAIN_VERSION @@ -92,12 +77,15 @@ ANDROID_PLATFORM_ROOT_PATH = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$AND ANDROID_PLATFORM_PATH = $$ANDROID_PLATFORM_ROOT_PATH/usr # used to compile platform plugins for android-4 and android-5 -QMAKE_ANDROID_PLATFORM_INCDIR = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/usr/include -QMAKE_ANDROID_PLATFORM_LIBDIR = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/usr/lib +QMAKE_ANDROID_PLATFORM_INCDIR = $$ANDROID_PLATFORM_PATH/include +QMAKE_ANDROID_PLATFORM_LIBDIR = $$ANDROID_PLATFORM_PATH/lib ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl/gnu-libstdc++/$$NDK_TOOLCHAIN_VERSION/libs/$$ANDROID_TARGET_ARCH ANDROID_SOURCES_CXX_STL_INCDIR = $$NDK_ROOT/sources/cxx-stl/gnu-libstdc++/$$NDK_TOOLCHAIN_VERSION/include $$ANDROID_SOURCES_CXX_STL_LIBDIR/include +equals(ANDROID_TARGET_ARCH, x86_64)|equals(ANDROID_TARGET_ARCH, mips64): \ + QMAKE_ANDROID_PLATFORM_LIBDIR = $${QMAKE_ANDROID_PLATFORM_LIBDIR}64 + # modifications to g++.conf QMAKE_CC = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-gcc @@ -105,25 +93,43 @@ equals(ANDROID_TARGET_ARCH, armeabi-v7a): \ QMAKE_CFLAGS = -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,--noexecstack -fno-builtin-memmove else: equals(ANDROID_TARGET_ARCH, armeabi): \ QMAKE_CFLAGS = -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,--noexecstack -fno-builtin-memmove +else: equals(ANDROID_TARGET_ARCH, arm64-v8a): \ + QMAKE_CFLAGS = -ffunction-sections -funwind-tables -fstack-protector -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 -DANDROID -Wa,--noexecstack else: equals(ANDROID_TARGET_ARCH, x86): \ QMAKE_CFLAGS = -ffunction-sections -funwind-tables -O2 -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 -DANDROID -Wa,--noexecstack +else: equals(ANDROID_TARGET_ARCH, x86_64): \ + QMAKE_CFLAGS = -ffunction-sections -funwind-tables -fstack-protector -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 -DANDROID -Wa,--noexecstack else: equals(ANDROID_TARGET_ARCH, mips): \ QMAKE_CFLAGS = -fno-strict-aliasing -finline-functions -ffunction-sections -funwind-tables -fmessage-length=0 -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers -O2 -fomit-frame-pointer -funswitch-loops -finline-limit=300 -DANDROID -Wa,--noexecstack +else: equals(ANDROID_TARGET_ARCH, mips64): \ + QMAKE_CFLAGS = -fno-strict-aliasing -finline-functions -ffunction-sections -funwind-tables -fmessage-length=0 -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers -fomit-frame-pointer -funswitch-loops -finline-limit=300 -DANDROID -Werror -Wa,--noexecstack QMAKE_CFLAGS_WARN_ON = -Wall -Wno-psabi -W QMAKE_CFLAGS_WARN_OFF = -Wno-psabi equals(ANDROID_TARGET_ARCH, x86) { QMAKE_CFLAGS_RELEASE = -O2 - QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -gdwarf-2 -O2 - QMAKE_CFLAGS_DEBUG = -g -gdwarf-2 + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -O2 + QMAKE_CFLAGS_DEBUG = -g +} else: equals(ANDROID_TARGET_ARCH, x86_64) { + QMAKE_CFLAGS_RELEASE = -O2 + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -O2 + QMAKE_CFLAGS_DEBUG = -g } else: equals(ANDROID_TARGET_ARCH, mips) { QMAKE_CFLAGS_RELEASE = -O2 - QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -gdwarf-2 -O2 - QMAKE_CFLAGS_DEBUG = -g -gdwarf-2 -fno-omit-frame-pointer + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -O2 + QMAKE_CFLAGS_DEBUG = -g -fno-omit-frame-pointer +} else: equals(ANDROID_TARGET_ARCH, mips64) { + QMAKE_CFLAGS_RELEASE = -O2 + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -O2 + QMAKE_CFLAGS_DEBUG = -g -fno-omit-frame-pointer +} else: equals(ANDROID_TARGET_ARCH, arm64-v8a) { + QMAKE_CFLAGS_RELEASE = -O2 + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -O2 + QMAKE_CFLAGS_DEBUG = -g -fno-omit-frame-pointer } else { # arm QMAKE_CFLAGS_RELEASE = -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 - QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -gdwarf-2 -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 - QMAKE_CFLAGS_DEBUG = -g -gdwarf-2 -marm -O0 -fno-omit-frame-pointer + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 + QMAKE_CFLAGS_DEBUG = -g -marm -O0 -fno-omit-frame-pointer equals(ANDROID_TARGET_ARCH, armeabi):if(equals(NDK_TOOLCHAIN_VERSION, 4.8)|equals(NDK_TOOLCHAIN_VERSION, 4.9)) { DEFINES += QT_OS_ANDROID_GCC_48_WORKAROUND } else { @@ -138,7 +144,7 @@ QMAKE_CFLAGS_THREAD = -D_REENTRANT QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden QMAKE_CXX = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-g++ -QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -std=gnu++0x +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -std=c++11 QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE @@ -162,31 +168,31 @@ QMAKE_STRIP = QMAKE_RANLIB = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-ranlib -QMAKE_INCDIR = $$ANDROID_SOURCES_CXX_STL_INCDIR $$ANDROID_PLATFORM_PATH/include -QMAKE_LIBDIR = $$ANDROID_SOURCES_CXX_STL_LIBDIR $$ANDROID_PLATFORM_PATH/lib $$LIBGCC_PATH +QMAKE_INCDIR = $$ANDROID_SOURCES_CXX_STL_INCDIR $$QMAKE_ANDROID_PLATFORM_INCDIR +QMAKE_LIBDIR = $$ANDROID_SOURCES_CXX_STL_LIBDIR $$QMAKE_ANDROID_PLATFORM_LIBDIR $$LIBGCC_PATH QMAKE_INCDIR_X11 = QMAKE_LIBDIR_X11 = -QMAKE_INCDIR_OPENGL = $$ANDROID_PLATFORM_PATH/include -QMAKE_LIBDIR_OPENGL = $$ANDROID_PLATFORM_PATH/lib +QMAKE_INCDIR_OPENGL = $$QMAKE_ANDROID_PLATFORM_INCDIR +QMAKE_LIBDIR_OPENGL = $$QMAKE_ANDROID_PLATFORM_LIBDIR -equals(ANDROID_TARGET_ARCH, x86)|equals(ANDROID_TARGET_ARCH, mips): \ - LIBGCC_PATH_FULL = $$system("$$QMAKE_CC -print-libgcc-file-name") -else: \ +equals(ANDROID_TARGET_ARCH, armeabi)|equals(ANDROID_TARGET_ARCH, armeabi-v7a): \ LIBGCC_PATH_FULL = $$system("$$QMAKE_CC -mthumb-interwork -print-libgcc-file-name") +else: \ + LIBGCC_PATH_FULL = $$system("$$QMAKE_CC -print-libgcc-file-name") LIBGCC_PATH = $$dirname(LIBGCC_PATH_FULL) QMAKE_LINK = $$QMAKE_CXX QMAKE_LINK_SHLIB = $$QMAKE_CXX QMAKE_LFLAGS = --sysroot=$$ANDROID_PLATFORM_ROOT_PATH -QMAKE_RPATHLINK = $$ANDROID_PLATFORM_PATH/lib +QMAKE_RPATHLINK = $$QMAKE_ANDROID_PLATFORM_LIBDIR QMAKE_LFLAGS_APP = -Wl,--no-undefined -Wl,-z,noexecstack -shared QMAKE_LFLAGS_SHLIB = -Wl,--no-undefined -Wl,-z,noexecstack -shared contains(NDK_ROOT, ".*r6")|contains(NDK_ROOT, ".*r5.*") { !equals(ANDROID_PLATFORM, android-4):!equals(ANDROID_PLATFORM, android-5):!equals(ANDROID_PLATFORM, android-8) { warning("Your NDK version is outdated. A workaround is enabled. Consider updating your NDK (workarounds are required until r6(a))") - QMAKE_LFLAGS_SHLIB += $$ANDROID_PLATFORM_PATH/lib/crtbegin_so.o $$ANDROID_PLATFORM_PATH/lib/crtend_so.o + QMAKE_LFLAGS_SHLIB += $$QMAKE_ANDROID_PLATFORM_LIBDIR/crtbegin_so.o $$QMAKE_ANDROID_PLATFORM_LIBDIR/crtend_so.o } } diff --git a/mkspecs/android-g++/qplatformdefs.h b/mkspecs/android-g++/qplatformdefs.h index ba821532e2..9d3820fa27 100644 --- a/mkspecs/android-g++/qplatformdefs.h +++ b/mkspecs/android-g++/qplatformdefs.h @@ -1,7 +1,7 @@ /**************************************************************************** ** -** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ ** ** This file is part of the qmake spec of the Qt Toolkit. ** @@ -10,9 +10,9 @@ ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser @@ -23,8 +23,8 @@ ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** $QT_END_LICENSE$ @@ -63,6 +63,7 @@ #include <sys/ioctl.h> #include <sys/ipc.h> #include <sys/time.h> +#include <sys/socket.h> #include <sys/stat.h> #include <sys/wait.h> @@ -165,11 +166,7 @@ #define QT_SIGNAL_ARGS int #define QT_SIGNAL_IGNORE SIG_IGN -#if defined(__GLIBC__) && (__GLIBC__ >= 2) #define QT_SOCKLEN_T socklen_t -#else -#define QT_SOCKLEN_T int -#endif #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) #define QT_SNPRINTF ::snprintf |