From 220a6c5c759278fcf9b80a1ce3f90608d1f407a9 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 21 Aug 2018 13:55:51 +0200 Subject: First fixes for Windows - Clean the paths - Make g++ specific options depending on compiler - ifdef out dlopen of the Python libraries - Do not use protected hack Change-Id: I979ed9362e55481a1452c0d7a6e8eba2355c6df4 Reviewed-by: hjk --- plugins/pythonextensions/pyside2.pri | 9 ++++++--- plugins/pythonextensions/pythonextensions.pro | 2 ++ plugins/pythonextensions/pyutil.cpp | 6 +++++- plugins/pythonextensions/qtcreator.pri | 4 ++-- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/plugins/pythonextensions/pyside2.pri b/plugins/pythonextensions/pyside2.pri index 3e6cc23..62acd30 100644 --- a/plugins/pythonextensions/pyside2.pri +++ b/plugins/pythonextensions/pyside2.pri @@ -3,6 +3,7 @@ PYSIDE_CONFIG = ../../tools/pyside2_config.py PYSIDE2 = $$system($$PYTHON $$PYSIDE_CONFIG --pyside2) +PYSIDE2 = $$clean_path($$PYSIDE2) isEmpty(PYSIDE2): error(Unable to locate the PySide2 package location) PYTHON_INCLUDE = $$system($$PYTHON $$PYSIDE_CONFIG --python-include) @@ -37,6 +38,8 @@ LIBS += -ldl # Suppress non-relevant warnings from # Shiboken generated code -QMAKE_CXXFLAGS += \ - -Wno-missing-field-initializers \ - -Wno-unused-parameter +*g++* { + QMAKE_CXXFLAGS += \ + -Wno-missing-field-initializers \ + -Wno-unused-parameter +} diff --git a/plugins/pythonextensions/pythonextensions.pro b/plugins/pythonextensions/pythonextensions.pro index 26db752..eb24db6 100644 --- a/plugins/pythonextensions/pythonextensions.pro +++ b/plugins/pythonextensions/pythonextensions.pro @@ -45,6 +45,8 @@ SHIBOKEN_OPTIONS = --generator-set=shiboken --enable-parent-ctor-heuristic \ --enable-pyside-extensions --enable-return-value-heuristic --use-isnull-as-nb_nonzero \ $$QT_INCLUDEPATHS -I$$PWD -T$$PWD -T$$PYSIDE2/typesystems --output-directory=$$OUT_PWD +win32: SHIBOKEN_OPTIONS += --avoid-protected-hack + ## Prepare the shiboken tool QT_TOOL.shiboken.binary = $$system_path($$PYSIDE2/shiboken2) qtPrepareTool(SHIBOKEN, shiboken) diff --git a/plugins/pythonextensions/pyutil.cpp b/plugins/pythonextensions/pyutil.cpp index 56f7c03..8f2728f 100644 --- a/plugins/pythonextensions/pyutil.cpp +++ b/plugins/pythonextensions/pyutil.cpp @@ -25,7 +25,9 @@ #include "pyutil.h" -#include // dlopen +#ifdef Q_OS_UNIX +# include // dlopen +#endif #include #include @@ -94,12 +96,14 @@ State init() // Python's shared libraries don't work properly if included from other // shared libraries. See https://mail.python.org/pipermail/new-bugs-announce/2008-November/003322.html +#ifdef Q_OS_UNIX #if PY_MAJOR_VERSION >= 3 std::string version = "libpython"+std::to_string(PY_MAJOR_VERSION)+"."+std::to_string(PY_MINOR_VERSION)+"m.so"; #else std::string version = "libpython"+std::to_string(PY_MAJOR_VERSION)+"."+std::to_string(PY_MINOR_VERSION)+".so"; #endif dlopen(version.c_str(), RTLD_LAZY | RTLD_GLOBAL); +#endif Py_Initialize(); qAddPostRoutine(cleanup); diff --git a/plugins/pythonextensions/qtcreator.pri b/plugins/pythonextensions/qtcreator.pri index cb58e20..499fda2 100644 --- a/plugins/pythonextensions/qtcreator.pri +++ b/plugins/pythonextensions/qtcreator.pri @@ -3,11 +3,11 @@ ## Either set the IDE_SOURCE_TREE when running qmake, ## or set the QTC_SOURCE environment variable, to override the default setting -isEmpty(IDE_SOURCE_TREE): IDE_SOURCE_TREE = $$(QTC_SOURCE) +isEmpty(IDE_SOURCE_TREE): IDE_SOURCE_TREE = $$clean_path($$(QTC_SOURCE)) ## Either set the IDE_BUILD_TREE when running qmake, ## or set the QTC_BUILD environment variable, to override the default setting -isEmpty(IDE_BUILD_TREE): IDE_BUILD_TREE = $$(QTC_BUILD) +isEmpty(IDE_BUILD_TREE): IDE_BUILD_TREE = $$clean_path($$(QTC_BUILD)) # KEEP this line and DON'T edit it! # (if you NEED to change it, have a look at tools/build.py) -- cgit v1.2.3