fcb78b5000
Android 5 doesn't extract the files from libs folder unless they are prefixed with "lib". This patch sets a proper name for the plugin which will make gdb happy and it will also avoid any name clashes. If we rename the plugins when we copy them, gdb won't find them, therefore it can't load their symbols. On Android all the libs are in a single folder, so to make sure we don't have any name clashes, we are prefixing the plugin name with it's relative path to qt folder (we replace / with _). Fixes: QTBUG-78616 Change-Id: I7e0e67d65448532769d69f46b1856c029e2cf5cb Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
105 lines
3.3 KiB
Plaintext
105 lines
3.3 KiB
Plaintext
#
|
|
# W A R N I N G
|
|
# -------------
|
|
#
|
|
# This file is not part of the Qt API. It exists purely as an
|
|
# implementation detail. It may change from version to version
|
|
# without notice, or even be removed.
|
|
#
|
|
# We mean it.
|
|
#
|
|
|
|
load(qt_build_paths)
|
|
|
|
isEmpty(PLUGIN_TYPE): error("PLUGIN_TYPE (plugins/ subdirectory) needs to be defined.")
|
|
|
|
TEMPLATE = lib
|
|
CONFIG += plugin
|
|
DESTDIR = $$MODULE_BASE_OUTDIR/plugins/$$PLUGIN_TYPE
|
|
|
|
win32:CONFIG(shared, static|shared) {
|
|
# Embed a VERSIONINFO resource into the plugin's DLL.
|
|
isEmpty(VERSION): VERSION = $$QT_VERSION
|
|
CONFIG += skip_target_version_ext
|
|
}
|
|
|
|
tool_plugin {
|
|
!build_pass:qtConfig(debug_and_release): CONFIG += release
|
|
} else:if(win32|mac):!macx-xcode {
|
|
qtConfig(debug_and_release): CONFIG += debug_and_release
|
|
qtConfig(build_all): CONFIG += build_all
|
|
}
|
|
|
|
CONFIG += relative_qt_rpath # Qt's plugins should be relocatable
|
|
|
|
# Qt libraries should only use Application Extension safe APIs
|
|
darwin:!no_app_extension_api_only: CONFIG += app_extension_api_only
|
|
|
|
isEmpty(MODULE): MODULE = $$basename(TARGET)
|
|
|
|
CONFIG(static, static|shared)|prefix_build {
|
|
mod_work_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules
|
|
force_independent: \
|
|
mod_inst_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst
|
|
else: \
|
|
mod_inst_pfx = $$mod_work_pfx
|
|
MODULE_PRI = $$mod_inst_pfx/qt_plugin_$${MODULE}.pri
|
|
MODULE_FWD_PRI = $$mod_work_pfx/qt_plugin_$${MODULE}.pri
|
|
|
|
!build_pass {
|
|
qt_plugin_deps = $$QT $$QT_PRIVATE
|
|
qt_plugin_deps ~= s,-private$,_private,g
|
|
|
|
MODULE_PRI_CONT = \
|
|
"QT_PLUGIN.$${MODULE}.TYPE = $$PLUGIN_TYPE" \
|
|
"QT_PLUGIN.$${MODULE}.EXTENDS =$$join(PLUGIN_EXTENDS, " ", " ")" \
|
|
"QT_PLUGIN.$${MODULE}.DEPENDS = $$qt_plugin_deps" \
|
|
"QT_PLUGIN.$${MODULE}.CLASS_NAME = $$PLUGIN_CLASS_NAME" \
|
|
"QT_PLUGINS += $$MODULE"
|
|
write_file($$MODULE_PRI, MODULE_PRI_CONT)|error()
|
|
MODULE_PRI_FILES = $$MODULE_PRI
|
|
|
|
force_independent {
|
|
|
|
# Create a forwarding module .pri file
|
|
MODULE_FWD_PRI_CONT = \
|
|
"QT_PLUGIN.$${MODULE}.PATH = $$MODULE_BASE_OUTDIR/plugins" \
|
|
"include($$MODULE_PRI)"
|
|
write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error()
|
|
touch($$MODULE_FWD_PRI, $$MODULE_PRI)
|
|
MODULE_PRI_FILES += $$MODULE_FWD_PRI
|
|
|
|
}
|
|
|
|
# Then, inject the new module into the current cache state
|
|
!contains(QMAKE_INTERNAL_INCLUDED_FILES, $$MODULE_FWD_PRI): \ # before the actual include()!
|
|
cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, MODULE_PRI_FILES)
|
|
include($$MODULE_FWD_PRI)
|
|
for(var, $$list(TYPE EXTENDS CLASS_NAME PATH)): \
|
|
defined(QT_PLUGIN.$${MODULE}.$$var, var): \
|
|
cache(QT_PLUGIN.$${MODULE}.$$var, transient)
|
|
cache(QT_PLUGINS, transient)
|
|
}
|
|
|
|
CONFIG(static, static|shared) {
|
|
pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules
|
|
pritarget.files = $$MODULE_PRI
|
|
INSTALLS += pritarget
|
|
}
|
|
}
|
|
|
|
target.path = $$[QT_INSTALL_PLUGINS]/$$PLUGIN_TYPE
|
|
INSTALLS += target
|
|
|
|
qt_libinfix_plugins: TARGET = $$TARGET$$QT_LIBINFIX
|
|
TARGET = $$qt5LibraryTarget($$TARGET, "plugins/$$PLUGIN_TYPE/")
|
|
|
|
CONFIG += create_cmake
|
|
|
|
DEFINES *= QT_DEPRECATED_WARNINGS
|
|
|
|
load(qt_targets)
|
|
load(qt_common)
|
|
|
|
QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
|