mirror of
https://github.com/mappu/miqt.git
synced 2025-04-01 11:20:23 +00:00
358 lines
6.9 KiB
Go
Executable File
358 lines
6.9 KiB
Go
Executable File
package main
|
|
|
|
import (
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
const Qt5Root = "/opt/Qt/5.15.2/gcc_64/include/"
|
|
const Qt6Root = "/opt/Qt/6.2.4/gcc_64/include/"
|
|
|
|
func ProcessLibraries(clangBin, outDir, extraLibsDir string) {
|
|
|
|
AllowAllHeaders := func(string) bool { return true }
|
|
|
|
flushKnownTypes()
|
|
InsertTypedefs(false)
|
|
|
|
generate(
|
|
"qt",
|
|
[]string{
|
|
Qt5Root + "QtCore",
|
|
Qt5Root + "QtCore",
|
|
Qt5Root + "QtGui",
|
|
Qt5Root + "QtWidgets",
|
|
},
|
|
func(fullpath string) bool {
|
|
// Block cbor and generate it separately
|
|
fname := filepath.Base(fullpath)
|
|
if strings.HasPrefix(fname, "qcbor") {
|
|
return false
|
|
}
|
|
|
|
return Widgets_AllowHeader(fullpath)
|
|
},
|
|
clangBin,
|
|
pkgConfigCflags("Qt5Widgets"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
generate(
|
|
"qt/cbor",
|
|
[]string{
|
|
Qt5Root + "QtCore",
|
|
},
|
|
func(fullpath string) bool {
|
|
// Only include the same json, xml, cbor files excluded above
|
|
fname := filepath.Base(fullpath)
|
|
return strings.HasPrefix(fname, "qcbor")
|
|
},
|
|
clangBin,
|
|
pkgConfigCflags("Qt5Core"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
generate(
|
|
"qt/printsupport",
|
|
[]string{
|
|
Qt5Root + "QtPrintSupport",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
pkgConfigCflags("Qt5PrintSupport"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
generate(
|
|
"qt/svg",
|
|
[]string{
|
|
Qt5Root + "QtSvg",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
pkgConfigCflags("Qt5Svg"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
generate(
|
|
"qt/network",
|
|
[]string{
|
|
Qt5Root + "QtNetwork",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
pkgConfigCflags("Qt5Network"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
generate(
|
|
"qt/multimedia",
|
|
[]string{
|
|
// Theoretically, QtMultimediaWidgets and QtMultimedia are different
|
|
// packages, but QtMultimedia qcamera.h has a dependency on qvideowidget.
|
|
// Bind them together since our base /qt/ package is Widgets anyway.
|
|
Qt5Root + "QtMultimedia",
|
|
Qt5Root + "QtMultimediaWidgets",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
pkgConfigCflags("Qt5MultimediaWidgets"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
generate(
|
|
"qt/script",
|
|
[]string{
|
|
Qt5Root + "QtScript",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
pkgConfigCflags("Qt5Script"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Qt 5 QWebkit: depends on Qt5PrintSupport but only at runtime, not at
|
|
// codegen time
|
|
generate(
|
|
"qt/webkit",
|
|
[]string{
|
|
Qt5Root + "QtWebKit",
|
|
Qt5Root + "QtWebKitWidgets",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
pkgConfigCflags("Qt5WebKitWidgets"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Qt 5 QWebChannel
|
|
generate(
|
|
"qt/webchannel",
|
|
[]string{
|
|
Qt5Root + "QtWebChannel",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
pkgConfigCflags("Qt5WebChannel"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Qt 5 QWebEngine
|
|
generate(
|
|
"qt/webengine",
|
|
[]string{
|
|
Qt5Root + "QtWebEngine",
|
|
Qt5Root + "QtWebEngineCore",
|
|
Qt5Root + "QtWebEngineWidgets",
|
|
},
|
|
|
|
func(fullpath string) bool {
|
|
baseName := filepath.Base(fullpath)
|
|
if baseName == "qquickwebengineprofile.h" || baseName == "qquickwebenginescript.h" {
|
|
return false
|
|
}
|
|
return true
|
|
},
|
|
clangBin,
|
|
pkgConfigCflags("Qt5WebEngineWidgets"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Depends on QtCore/Gui/Widgets, QPrintSupport
|
|
generate(
|
|
"qt-restricted-extras/qscintilla",
|
|
[]string{
|
|
Qt5Root + "Qsci",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
pkgConfigCflags("Qt5PrintSupport"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Depends on QtCore/Gui/Widgets
|
|
generate(
|
|
"qt-extras/scintillaedit",
|
|
[]string{
|
|
filepath.Join(extraLibsDir, "scintilla/qt/ScintillaEdit/ScintillaEdit.h"),
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
"--std=c++1z "+pkgConfigCflags("ScintillaEdit"),
|
|
outDir,
|
|
(&clangMatchUnderPath{filepath.Join(extraLibsDir, "scintilla")}).Match,
|
|
)
|
|
|
|
// FLUSH all known typedefs / ...
|
|
|
|
flushKnownTypes()
|
|
InsertTypedefs(true)
|
|
|
|
// Qt 6
|
|
generate(
|
|
"qt6",
|
|
[]string{
|
|
Qt6Root + "QtCore",
|
|
Qt6Root + "QtGui",
|
|
Qt6Root + "QtWidgets",
|
|
},
|
|
func(fullpath string) bool {
|
|
// Block cbor and generate it separately
|
|
fname := filepath.Base(fullpath)
|
|
if strings.HasPrefix(fname, "qcbor") {
|
|
return false
|
|
}
|
|
|
|
return Widgets_AllowHeader(fullpath)
|
|
},
|
|
clangBin,
|
|
"--std=c++17 "+pkgConfigCflags("Qt6Widgets"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
generate(
|
|
"qt6/cbor",
|
|
[]string{
|
|
Qt6Root + "QtCore",
|
|
},
|
|
func(fullpath string) bool {
|
|
// Only include the same json, xml, cbor files excluded above
|
|
fname := filepath.Base(fullpath)
|
|
return strings.HasPrefix(fname, "qcbor")
|
|
},
|
|
clangBin,
|
|
"--std=c++20 "+pkgConfigCflags("Qt6Core"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Qt 6 QtPrintSupport
|
|
generate(
|
|
"qt6/printsupport",
|
|
[]string{
|
|
Qt6Root + "QtPrintSupport",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
"--std=c++17 "+pkgConfigCflags("Qt6PrintSupport"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Qt 6 SVG
|
|
generate(
|
|
"qt6/svg",
|
|
[]string{
|
|
Qt6Root + "QtSvg",
|
|
Qt6Root + "QtSvgWidgets",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
"--std=c++17 "+pkgConfigCflags("Qt6SvgWidgets"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Qt 6 QtNetwork
|
|
generate(
|
|
"qt6/network",
|
|
[]string{
|
|
Qt6Root + "QtNetwork",
|
|
},
|
|
func(fullpath string) bool {
|
|
fname := filepath.Base(fullpath)
|
|
return fname != "qtnetwork-config.h"
|
|
},
|
|
clangBin,
|
|
"--std=c++17 "+pkgConfigCflags("Qt6Network"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Qt 6 QtMultimedia
|
|
generate(
|
|
"qt6/multimedia",
|
|
[]string{
|
|
Qt6Root + "QtMultimedia",
|
|
Qt6Root + "QtMultimediaWidgets",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
"--std=c++17 "+pkgConfigCflags("Qt6MultimediaWidgets"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Qt 6 Spatial Audio (on Debian this is a dependency of Qt6Multimedia)
|
|
generate(
|
|
"qt6/spatialaudio",
|
|
[]string{
|
|
Qt6Root + "QtSpatialAudio",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
"--std=c++17 "+pkgConfigCflags("Qt6SpatialAudio"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Qt 6 QWebChannel
|
|
generate(
|
|
"qt6/webchannel",
|
|
[]string{
|
|
Qt6Root + "QtWebChannel",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
"--std=c++17 "+pkgConfigCflags("Qt6WebChannel"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Qt 6 QWebEngine
|
|
generate(
|
|
"qt6/webengine",
|
|
[]string{
|
|
Qt6Root + "QtWebEngineCore",
|
|
Qt6Root + "QtWebEngineWidgets",
|
|
},
|
|
func(fullpath string) bool {
|
|
baseName := filepath.Base(fullpath)
|
|
if baseName == "qtwebenginewidgets-config.h" {
|
|
return false
|
|
}
|
|
return true
|
|
},
|
|
clangBin,
|
|
"--std=c++17 "+pkgConfigCflags("Qt6WebEngineWidgets"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
|
|
// Qt 6 QScintilla
|
|
// Depends on QtCore/Gui/Widgets, QPrintSupport
|
|
generate(
|
|
"qt-restricted-extras/qscintilla6",
|
|
[]string{
|
|
Qt6Root + "Qsci",
|
|
},
|
|
AllowAllHeaders,
|
|
clangBin,
|
|
"--std=c++17 "+pkgConfigCflags("Qt6PrintSupport"),
|
|
outDir,
|
|
ClangMatchSameHeaderDefinitionOnly,
|
|
)
|
|
}
|