linux-android.conf 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. MAKEFILE_GENERATOR = UNIX
  2. QMAKE_INCREMENTAL_STYLE = sublib
  3. QMAKE_PLATFORM += android
  4. include(linux.conf)
  5. include(gcc-base-unix.conf)
  6. DEFINES += QT_NO_PRINTER QT_NO_PRINTDIALOG
  7. QT_QPA_DEFAULT_PLATFORM = minimal
  8. NDK_ROOT = $$(ANDROID_NDK_ROOT)
  9. isEmpty(NDK_ROOT): error("$ANDROID_NDK_ROOT is empty, please set it to something like ~/android/ndk-r7c")
  10. NDK_HOST = $$(ANDROID_NDK_HOST)
  11. isEmpty(NDK_HOST): error("$ANDROID_NDK_HOST is empty, please set it to something like linux-x86 or darwin-x86")
  12. ANDROID_PLATFORM = $$(ANDROID_NDK_PLATFORM)
  13. isEmpty(ANDROID_PLATFORM): ANDROID_PLATFORM = android-5
  14. NDK_TOOLCHAIN_VERSION = $$(ANDROID_NDK_TOOLCHAIN_VERSION)
  15. isEmpty(NDK_TOOLCHAIN_VERSION): NDK_TOOLCHAIN_VERSION = 4.4.3
  16. !contains(NDK_TOOLCHAIN_VERSION, 4.4.3): ANDROID_CXXSTL_SUFFIX = -$$NDK_TOOLCHAIN_VERSION
  17. NDK_TOOLCHAIN = $$ANDROID_NDK_TOOLCHAIN_PREFIX-$$NDK_TOOLCHAIN_VERSION
  18. NDK_TOOLCHAIN_PATH = $$NDK_ROOT/toolchains/$$NDK_TOOLCHAIN/prebuilt/$$NDK_HOST
  19. CONFIG += $$ANDROID_PLATFORM $$ANDROID_TARGET_ARCH
  20. ANDROID_PLATFORM_ROOT_PATH = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/
  21. ANDROID_PLATFORM_PATH = $$ANDROID_PLATFORM_ROOT_PATH/usr
  22. # used to compile platform plugins for android-4 and android-5
  23. QMAKE_ANDROID_PLATFORM_INCDIR = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/usr/include
  24. QMAKE_ANDROID_PLATFORM_LIBDIR = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/usr/lib
  25. ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl$$ANDROID_CXXSTL_SUFFIX/gnu-libstdc++/libs/$$ANDROID_TARGET_ARCH
  26. ANDROID_SOURCES_CXX_STL_INCDIR = $$NDK_ROOT/sources/cxx-stl$$ANDROID_CXXSTL_SUFFIX/gnu-libstdc++/include $$ANDROID_SOURCES_CXX_STL_LIBDIR/include
  27. # modifications to g++.conf
  28. QMAKE_CC = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-gcc
  29. QMAKE_CFLAGS_WARN_ON = -Wall -Wextra
  30. QMAKE_CFLAGS_WARN_OFF = -Wno-psabi
  31. QMAKE_CFLAGS_SHLIB = -fPIC
  32. QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
  33. QMAKE_CFLAGS_THREAD = -D_REENTRANT
  34. QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
  35. QMAKE_CXX = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-g++
  36. QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
  37. QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
  38. QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
  39. QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
  40. QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
  41. QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
  42. QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
  43. QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
  44. QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
  45. QMAKE_LINK = $$QMAKE_CXX
  46. QMAKE_LINK_SHLIB = $$QMAKE_LINK
  47. # modifications to linux.conf
  48. QMAKE_AR = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-ar cqs
  49. QMAKE_OBJCOPY = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-objcopy
  50. QMAKE_NM = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-nm -P
  51. QMAKE_STRIP = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-strip
  52. QMAKE_RANLIB = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-ranlib
  53. QMAKE_INCDIR = $$ANDROID_PLATFORM_PATH/include $$ANDROID_SOURCES_CXX_STL_INCDIR
  54. QMAKE_LIBDIR = $$ANDROID_SOURCES_CXX_STL_LIBDIR $$ANDROID_PLATFORM_PATH/lib
  55. QMAKE_INCDIR_X11 =
  56. QMAKE_LIBDIR_X11 =
  57. QMAKE_INCDIR_OPENGL =
  58. QMAKE_INCDIR_OPENGL_ES2 =
  59. QMAKE_LIBDIR_OPENGL_ES2 =
  60. contains(ANDROID_TARGET_ARCH, x86): LIBGCC_PATH_FULL = $$system($$QMAKE_CC -print-libgcc-file-name)
  61. else: LIBGCC_PATH_FULL = $$system($$QMAKE_CC -mthumb-interwork -print-libgcc-file-name)
  62. QMAKE_LINK = $$QMAKE_CXX
  63. QMAKE_LINK_SHLIB = $$QMAKE_CXX
  64. QMAKE_LFLAGS = --sysroot=$$ANDROID_PLATFORM_ROOT_PATH -L$$dirname(LIBGCC_PATH_FULL) -Wl,-rpath-link=$$ANDROID_PLATFORM_PATH/lib
  65. QMAKE_LFLAGS_APP =
  66. QMAKE_LFLAGS_SHLIB = -Wl,--no-undefined -Wl,-z,noexecstack -shared
  67. contains(NDK_ROOT, ".*r[56].*") {
  68. !contains(ANDROID_PLATFORM, ".*android-[458].*") {
  69. message("Your NDK-version is out-dated. A work-around is enabled. Consider updating your NDK (workarounds are required until r6(a))")
  70. QMAKE_LFLAGS_SHLIB += $$ANDROID_PLATFORM_PATH/lib/crtbegin_so.o $$ANDROID_PLATFORM_PATH/lib/crtend_so.o
  71. }
  72. }
  73. QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
  74. QMAKE_LFLAGS_SONAME =
  75. QMAKE_LFLAGS_NOUNDEF = -Wl,--no-undefined
  76. QMAKE_LFLAGS_RPATH = -Wl,-rpath=
  77. # TODO: -lgnustl_static was -lstdc++, but that leads to undefined reference to
  78. # std::__throw_bad_alloc during configure.
  79. QMAKE_LIBS = -lsupc++ -llog -lz -lm -ldl -lc -lgcc -lgnustl_static
  80. QMAKE_LIBS_X11 =
  81. QMAKE_LIBS_X11SM =
  82. QMAKE_LIBS_QT_THREAD =
  83. QMAKE_LIBS_QT_OPENGL =
  84. QMAKE_LIBS_QTOPIA =
  85. QMAKE_LIBS_THREAD =
  86. QMAKE_LIBS_OPENGL =
  87. QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $$QMAKE_LIBS
  88. load(qt_config)