webkit: add genbindings support

This commit is contained in:
mappu 2024-11-26 22:31:23 +13:00
parent 96bdaffef0
commit db5fadaeb7
3 changed files with 34 additions and 0 deletions

View File

@ -34,6 +34,14 @@ func InsertTypedefs(qt6 bool) {
KnownTypedefs["QFileDevice::Permissions"] = lookupResultTypedef{pp, CppTypedef{"QFile::Permissions", parseSingleTypeString("QFlags<QFileDevice::Permission>")}} KnownTypedefs["QFileDevice::Permissions"] = lookupResultTypedef{pp, CppTypedef{"QFile::Permissions", parseSingleTypeString("QFlags<QFileDevice::Permission>")}}
KnownTypedefs["QIODevice::OpenMode"] = lookupResultTypedef{pp, CppTypedef{"QIODevice::OpenMode", parseSingleTypeString("QIODeviceBase::OpenMode")}} KnownTypedefs["QIODevice::OpenMode"] = lookupResultTypedef{pp, CppTypedef{"QIODevice::OpenMode", parseSingleTypeString("QIODeviceBase::OpenMode")}}
// Qt 5 WebKit - use of an empty enum (should be possible to support?)
KnownEnums["QWebPluginFactory::Extension"] = lookupResultEnum{"qt/webkit", CppEnum{
EnumName: "QWebPluginFactory::Extension",
UnderlyingType: CppParameter{
ParameterType: "int",
},
}}
if qt6 { if qt6 {
// Qt 6 QVariant helper types - needs investigation // Qt 6 QVariant helper types - needs investigation
KnownTypedefs["QVariantHash"] = lookupResultTypedef{"qt6", CppTypedef{"QVariantHash", parseSingleTypeString("QHash<QString,QVariant>")}} KnownTypedefs["QVariantHash"] = lookupResultTypedef{"qt6", CppTypedef{"QVariantHash", parseSingleTypeString("QHash<QString,QVariant>")}}
@ -231,6 +239,14 @@ func AllowVirtualForClass(className string) bool {
return false return false
} }
// Qt 5 QWebkit: undefined reference to typeinfo
if className == "QWebNotificationPresenter" {
return false
}
if className == "QWebHapticFeedbackPlayer" {
return false
}
return true return true
} }
@ -492,6 +508,8 @@ func AllowType(p CppParameter, isReturnType bool) error {
"QPostEventList", // Qt QCoreApplication: private headers required "QPostEventList", // Qt QCoreApplication: private headers required
"QMetaCallEvent", // .. "QMetaCallEvent", // ..
"QPostEvent", // .. "QPostEvent", // ..
"QWebFrameAdapter", // Qt 5 Webkit: Used by e.g. qwebframe.h but never defined anywhere
"QWebPageAdapter", // ...
"____last____": "____last____":
return ErrTooComplex return ErrTooComplex
} }

View File

@ -114,6 +114,21 @@ func ProcessLibraries(clangBin, outDir, extraLibsDir string) {
ClangMatchSameHeaderDefinitionOnly, ClangMatchSameHeaderDefinitionOnly,
) )
// Qt 5 QWebkit: depends on Qt5PrintSupport but only at runtime, not at
// codegen time
generate(
"qt/webkit",
[]string{
"/usr/include/x86_64-linux-gnu/qt5/QtWebKit",
"/usr/include/x86_64-linux-gnu/qt5/QtWebKitWidgets",
},
AllowAllHeaders,
clangBin,
pkgConfigCflags("Qt5WebKitWidgets"),
outDir,
ClangMatchSameHeaderDefinitionOnly,
)
// Depends on QtCore/Gui/Widgets, QPrintSupport // Depends on QtCore/Gui/Widgets, QPrintSupport
generate( generate(
"qt-restricted-extras/qscintilla", "qt-restricted-extras/qscintilla",

View File

@ -7,6 +7,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
qtmultimedia5-dev \ qtmultimedia5-dev \
qtscript5-dev \ qtscript5-dev \
libqt5svg5-dev \ libqt5svg5-dev \
libqt5webkit5-dev \
qt6-base-dev \ qt6-base-dev \
qt6-multimedia-dev \ qt6-multimedia-dev \
qt6-svg-dev \ qt6-svg-dev \