aboutsummaryrefslogtreecommitdiffstats
path: root/PySide
diff options
context:
space:
mode:
authorChristian Tismer <ctismer@gmail.com>2015-07-15 00:37:47 +0200
committerChristian Tismer <ctismer@gmail.com>2015-07-15 00:37:47 +0200
commit0375c7d1f3866c64fb3fa3624e65183ec3720d61 (patch)
treedcf14d0be6a78c351ad03f2464b73d05c20a07e4 /PySide
parent80cdde788a70ef878b23c2e7d59f8d55fe90577c (diff)
make QtWebKit compile. See Note!!
Note: This is a bad example of a Qt5 bug that must be reported. QtWebKit is not consequent in naming its variables, which causes real problems. QtWebkit_FOUND, but QtWebKit_INCLUDE_DIRS watch the case of the 'kK'
Diffstat (limited to 'PySide')
-rw-r--r--PySide/QtWebKit/CMakeLists.txt110
-rw-r--r--PySide/global.h.in3
2 files changed, 75 insertions, 38 deletions
diff --git a/PySide/QtWebKit/CMakeLists.txt b/PySide/QtWebKit/CMakeLists.txt
index 74d89f8c2..8447afe8d 100644
--- a/PySide/QtWebKit/CMakeLists.txt
+++ b/PySide/QtWebKit/CMakeLists.txt
@@ -1,65 +1,101 @@
project(QtWebKit)
-if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
- set (QtWebKit_46_SRC )
-else ()
- set(QtWebKit_46_SRC
- ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebelement_wrapper.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebelementcollection_wrapper.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebinspector_wrapper.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_errorpageextensionoption_wrapper.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_errorpageextensionreturn_wrapper.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qgraphicswebview_wrapper.cpp
- )
-endif ()
-
set(QtWebKit_SRC
-${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qtwebkit_module_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebdatabase_wrapper.cpp
-${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebframe_wrapper.cpp
+### use of undeclared identifier 'SBK_QWEBFRAME_IDX' ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebelement_wrapper.cpp
+### we probably need to create 'webkitwidgets' for this to work!
+${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebelementcollection_wrapper.cpp
+${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebhistory_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebhistoryinterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebhistoryitem_wrapper.cpp
-${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebhistory_wrapper.cpp
-${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebhittestresult_wrapper.cpp
-${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_wrapper.cpp
-${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_choosemultiplefilesextensionoption_wrapper.cpp
-${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_choosemultiplefilesextensionreturn_wrapper.cpp
-${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_extensionoption_wrapper.cpp
-${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_extensionreturn_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpluginfactory_mimetype_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpluginfactory_plugin_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpluginfactory_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebsecurityorigin_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebsettings_wrapper.cpp
-${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebview_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/webcore_wrapper.cpp
-${QtWebKit_46_SRC}
+# this file is always needed
+${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qtwebkit_module_wrapper.cpp
)
-set(QtWebKit_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtNetwork_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
-set(QtWebkit_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebkit/
- ${QT_INCLUDE_DIR}
- ${QT_QTCORE_INCLUDE_DIR}
- ${QT_QTGUI_INCLUDE_DIR}
- ${QT_QTNETWORK_INCLUDE_DIR}
- ${QT_QTWEBKIT_INCLUDE_DIR}
+set(prev_shiboken_binary ${SHIBOKEN_BINARY})
+string(REPLACE ";" " " QtWebKit_SRC_escape "${QtWebKit_SRC}")
+file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/fake_shiboken.sh"
+ "
+echo \"$*\"
+${prev_shiboken_binary} $*
+python3 ${CMAKE_CURRENT_BINARY_DIR}/filter_init.py ${QtWebKit_SRC_escape}
+ ")
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/filter_init.py"
+ "#! env python
+import sys, os, re, pprint
+pprint.pprint(sys.argv)
+nset = set()
+for fname in sys.argv[1:]:
+ name = os.path.splitext(os.path.basename(fname))[0]
+ print(name)
+ if name.endswith('module_wrapper'):
+ fn = fname
+ else:
+ name = name.split('_wrapper')
+ assert name[1] == ''
+ nset.add(name[0])
+print(fn)
+with open(fn) as f:
+ lines = f.readlines()
+removals = set()
+for idx, line in enumerate(lines):
+ res = re.search(' init_(\\w+)', line)
+ if res and res.group(1).lower() not in nset:
+ removals.add(res.group(1))
+ lines[idx] = '//' + line
+with open(fn, 'w') as f:
+ f.writelines(lines)
+removals = sorted(list(removals))
+print('Removals:', removals)
+")
+file(COPY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/fake_shiboken.sh
+ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
+ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
+ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+
+set(SHIBOKEN_BINARY "${CMAKE_CURRENT_BINARY_DIR}/fake_shiboken.sh")
+
+# fake these variables for qt5
+set(QtWebKit_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+set(QtWebKit_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit)
+
+make_path(QtWebKit_typesystem_path ${QtCore_SOURCE_DIR} ${QtGui_SOURCE_DIR} ${QtWidgets_SOURCE_DIR} ${QtNetwork_SOURCE_DIR}
+ ${QtCore_BINARY_DIR} ${QtGui_BINARY_DIR} ${QtWidgets_BINARY_DIR} ${QtNetwork_BINARY_DIR}
+ ${QtWebKit_SOURCE_DIR})
+
+set(QtWebKit_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/
+ ${Qt5Core_INCLUDE_DIRS}
+ ${Qt5Gui_INCLUDE_DIRS}
+ ${Qt5Widgets_INCLUDE_DIRS}
+ ${Qt5Network_INCLUDE_DIRS}
+ ${Qt5WebKit_INCLUDE_DIRS}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore/
${QtGui_BINARY_DIR}/PySide/QtGui/
+ ${QtWidgets_BINARY_DIR}/PySide/QtWidgets/
${QtNetwork_BINARY_DIR}/PySide/QtNetwork/ )
set(QtWebKit_libraries pyside
${SHIBOKEN_PYTHON_LIBRARIES}
${SHIBOKEN_LIBRARY}
- ${QT_QTWEBKIT_LIBRARY}
- ${QT_QTNETWORK_LIBRARY}
- ${QT_QTGUI_LIBRARY})
-set(QtWebKit_deps QtGui QtNetwork)
+ ${Qt5Webkit_LIBRARIES}
+ ${Qt5Network_LIBRARIES}
+ ${Qt5Widgets_LIBRARIES}
+ ${Qt5Gui_LIBRARIES}
+ ${Qt5Core_LIBRARIES}
+ )
+set(QtWebKit_deps QtWidgets QtNetwork)
create_pyside_module(QtWebKit
- QtWebkit_include_dirs
+ QtWebKit_include_dirs
QtWebKit_libraries
QtWebKit_deps
QtWebKit_typesystem_path
diff --git a/PySide/global.h.in b/PySide/global.h.in
index 136c91f76..8cdb6bcfd 100644
--- a/PySide/global.h.in
+++ b/PySide/global.h.in
@@ -420,7 +420,8 @@ namespace QtPrivate {
QT_END_NAMESPACE
-#if @Qt5WebKit_FOUND@
+#if @Qt5Webkit_FOUND@
+// Danger! The macro above has a lower case 'k', the includes are with upper 'K'!
# include <QtWebKit/QtWebKit>
#endif