a6f1123fe5
This outputs a json file with the necessary settings from qmake so that an external build tool can easily get the settings without having to parse the entire .pro source. Used by the androiddeployqt tool. Task-number: QTBUG-32856 Change-Id: I5d3ac0ab6a0350162d06b0a0bf0c9bcbd90d8b5a Reviewed-by: Daniel Teske <daniel.teske@digia.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
192 lines
8.9 KiB
Plaintext
192 lines
8.9 KiB
Plaintext
# qmake configuration for building with android-g++
|
|
MAKEFILE_GENERATOR = UNIX
|
|
QMAKE_PLATFORM = android
|
|
QMAKE_COMPILER = gcc
|
|
|
|
CONFIG += android_install unversioned_soname android_deployment_settings
|
|
DEFINES += QT_NO_PRINTER QT_NO_PRINTDIALOG
|
|
|
|
include(../common/linux.conf)
|
|
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 = /
|
|
# 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
|
|
}
|
|
|
|
NDK_HOST = $$(ANDROID_NDK_HOST)
|
|
isEmpty(NDK_HOST): NDK_HOST = $$DEFAULT_ANDROID_NDK_HOST
|
|
|
|
ANDROID_PLATFORM = $$(ANDROID_NDK_PLATFORM)
|
|
isEmpty(ANDROID_PLATFORM): ANDROID_PLATFORM = $$DEFAULT_ANDROID_PLATFORM
|
|
|
|
ANDROID_TARGET_ARCH = $$(ANDROID_TARGET_ARCH)
|
|
isEmpty(ANDROID_TARGET_ARCH): ANDROID_TARGET_ARCH = $$DEFAULT_ANDROID_TARGET_ARCH
|
|
|
|
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, mips): NDK_TOOLCHAIN_PREFIX = mipsel-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, mips): NDK_TOOLS_PREFIX = mipsel-linux-android
|
|
else: NDK_TOOLS_PREFIX = arm-linux-androideabi
|
|
}
|
|
|
|
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, mips): ANDROID_ARCHITECTURE = mips
|
|
else: ANDROID_ARCHITECTURE = arm
|
|
|
|
!equals(NDK_TOOLCHAIN_VERSION, 4.4.3): ANDROID_CXXSTL_SUFFIX = -$$NDK_TOOLCHAIN_VERSION
|
|
|
|
NDK_TOOLCHAIN = $$NDK_TOOLCHAIN_PREFIX-$$NDK_TOOLCHAIN_VERSION
|
|
NDK_TOOLCHAIN_PATH = $$NDK_ROOT/toolchains/$$NDK_TOOLCHAIN/prebuilt/$$NDK_HOST
|
|
|
|
CONFIG += $$ANDROID_PLATFORM
|
|
ANDROID_PLATFORM_ROOT_PATH = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/
|
|
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
|
|
|
|
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
|
|
|
|
# modifications to g++.conf
|
|
QMAKE_CC = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-gcc
|
|
|
|
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
|
|
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
|
|
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, 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
|
|
|
|
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
|
|
} 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
|
|
} else { # arm
|
|
QMAKE_CFLAGS_RELEASE = -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64
|
|
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -gdwarf-2 -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64
|
|
QMAKE_CFLAGS_DEBUG = -g -gdwarf-2 -marm -O0 -fno-omit-frame-pointer
|
|
equals(ANDROID_TARGET_ARCH, armeabi): equals(NDK_TOOLCHAIN_VERSION, 4.8): \
|
|
DEFINES += QT_OS_ANDROID_GCC_48_WORKAROUND
|
|
}
|
|
|
|
QMAKE_CFLAGS_SHLIB = -fPIC
|
|
QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
|
|
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_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
|
|
QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
|
|
QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
|
|
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
|
|
QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
|
|
QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
|
|
QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
|
|
QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
|
|
QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
|
|
|
|
QMAKE_LINK = $$QMAKE_CXX
|
|
QMAKE_LINK_SHLIB = $$QMAKE_LINK
|
|
|
|
# modifications to linux.conf
|
|
QMAKE_AR = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-ar cqs
|
|
QMAKE_OBJCOPY = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-objcopy
|
|
QMAKE_NM = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-nm -P
|
|
|
|
QMAKE_STRIP =
|
|
#$$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-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_X11 =
|
|
QMAKE_LIBDIR_X11 =
|
|
QMAKE_INCDIR_OPENGL = $$ANDROID_PLATFORM_PATH/include
|
|
QMAKE_LIBDIR_OPENGL = $$ANDROID_PLATFORM_PATH/lib
|
|
|
|
equals(ANDROID_TARGET_ARCH, x86)|equals(ANDROID_TARGET_ARCH, mips): \
|
|
LIBGCC_PATH_FULL = $$system("$$QMAKE_CC -print-libgcc-file-name")
|
|
else: \
|
|
LIBGCC_PATH_FULL = $$system("$$QMAKE_CC -mthumb-interwork -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_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_PLUGIN = $$QMAKE_LFLAGS_SHLIB
|
|
QMAKE_LFLAGS_NOUNDEF = -Wl,--no-undefined
|
|
QMAKE_LFLAGS_RPATH = -Wl,-rpath=
|
|
QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link=
|
|
|
|
QMAKE_LIBS = -lgnustl_shared -lsupc++ -llog -lz -lm -ldl -lc -lgcc
|
|
QMAKE_LIBS_X11 =
|
|
QMAKE_LIBS_THREAD =
|
|
QMAKE_LIBS_EGL = -lEGL
|
|
QMAKE_LIBS_OPENGL =
|
|
QMAKE_LIBS_OPENGL_ES1 = -lGLESv1_CM
|
|
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2
|
|
|
|
!exists($$NDK_ROOT): error("You need to set the ANDROID_NDK_ROOT environment variable to point to your Android NDK.")
|
|
|
|
load(qt_config)
|