5a04101de6
Qt Creator needs to parse the qmake.conf in order to get the architecture for this Qt build when the Qt build is added. At this point it does not know that it's reading an android project, so it can't set the right environment variables. By moving the error to the bottom, we let Creator parse the whole file before getting an error, so that it can detect the options it needs to define the Qt version. Change-Id: I119523cb21e330dc5e957a6992476c4c3d4ab7b5 Reviewed-by: Daniel Teske <daniel.teske@digia.com>
192 lines
8.8 KiB
Plaintext
192 lines
8.8 KiB
Plaintext
# qmake configuration for building with android-g++
|
|
MAKEFILE_GENERATOR = UNIX
|
|
QMAKE_PLATFORM = android
|
|
QMAKE_COMPILER = gcc
|
|
|
|
CONFIG += android_install unversioned_soname
|
|
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)
|