mirror of
https://github.com/mappu/miqt.git
synced 2025-02-01 19:10:21 +00:00
genbindings/main: move library list into a config file
This commit is contained in:
parent
5bc79ad0bb
commit
ceb58fc26e
@ -31,5 +31,5 @@ It's tested to work on with Debian 12 / Qt 5.15 / Clang 14 / GCC 12.
|
|||||||
|
|
||||||
You should check the following configuration:
|
You should check the following configuration:
|
||||||
|
|
||||||
- `main.go`: Input directories containing Qt headers
|
- `config-libraries.go`: Input directories containing Qt headers
|
||||||
- `exceptions.go`: Check everything
|
- `config-allowlist.go`: Check everything
|
||||||
|
90
cmd/genbindings/config-libraries.go
Normal file
90
cmd/genbindings/config-libraries.go
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ProcessLibraries(clangBin, outDir, extraLibsDir string) {
|
||||||
|
|
||||||
|
flushKnownTypes()
|
||||||
|
InsertTypedefs(false)
|
||||||
|
|
||||||
|
generate(
|
||||||
|
"qt",
|
||||||
|
[]string{
|
||||||
|
"/usr/include/x86_64-linux-gnu/qt5/QtCore",
|
||||||
|
"/usr/include/x86_64-linux-gnu/qt5/QtGui",
|
||||||
|
"/usr/include/x86_64-linux-gnu/qt5/QtWidgets",
|
||||||
|
},
|
||||||
|
clangBin,
|
||||||
|
pkgConfigCflags("Qt5Widgets"),
|
||||||
|
outDir,
|
||||||
|
ClangMatchSameHeaderDefinitionOnly,
|
||||||
|
)
|
||||||
|
|
||||||
|
generate(
|
||||||
|
"qt/qprintsupport",
|
||||||
|
[]string{
|
||||||
|
"/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport",
|
||||||
|
},
|
||||||
|
clangBin,
|
||||||
|
pkgConfigCflags("Qt5PrintSupport"),
|
||||||
|
outDir,
|
||||||
|
ClangMatchSameHeaderDefinitionOnly,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Depends on QtCore/Gui/Widgets, QPrintSupport
|
||||||
|
generate(
|
||||||
|
"qt-restricted-extras/qscintilla",
|
||||||
|
[]string{
|
||||||
|
"/usr/include/x86_64-linux-gnu/qt5/Qsci",
|
||||||
|
},
|
||||||
|
clangBin,
|
||||||
|
pkgConfigCflags("Qt5PrintSupport"),
|
||||||
|
outDir,
|
||||||
|
ClangMatchSameHeaderDefinitionOnly,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Depends on QtCore/Gui/Widgets
|
||||||
|
generate(
|
||||||
|
"qt-extras/scintillaedit",
|
||||||
|
[]string{
|
||||||
|
filepath.Join(extraLibsDir, "scintilla/qt/ScintillaEdit/ScintillaEdit.h"),
|
||||||
|
},
|
||||||
|
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{
|
||||||
|
"/usr/include/x86_64-linux-gnu/qt6/QtCore",
|
||||||
|
"/usr/include/x86_64-linux-gnu/qt6/QtGui",
|
||||||
|
"/usr/include/x86_64-linux-gnu/qt6/QtWidgets",
|
||||||
|
},
|
||||||
|
clangBin,
|
||||||
|
"--std=c++17 "+pkgConfigCflags("Qt6Widgets"),
|
||||||
|
outDir,
|
||||||
|
ClangMatchSameHeaderDefinitionOnly,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Qt 6 QtPrintSupport
|
||||||
|
generate(
|
||||||
|
"qt6/qprintsupport",
|
||||||
|
[]string{
|
||||||
|
"/usr/include/x86_64-linux-gnu/qt6/QtPrintSupport",
|
||||||
|
},
|
||||||
|
clangBin,
|
||||||
|
"--std=c++17 "+pkgConfigCflags("Qt6PrintSupport"),
|
||||||
|
outDir,
|
||||||
|
ClangMatchSameHeaderDefinitionOnly,
|
||||||
|
)
|
||||||
|
}
|
@ -92,97 +92,7 @@ func pkgConfigCflags(packageName string) string {
|
|||||||
return string(stdout)
|
return string(stdout)
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func generate(packageName string, srcDirs []string, clangBin, cflagsCombined, outDir string, matcher ClangMatcher) {
|
||||||
clang := flag.String("clang", "clang", "Custom path to clang")
|
|
||||||
outDir := flag.String("outdir", "../../", "Output directory for generated gen_** files")
|
|
||||||
extraLibsDir := flag.String("extralibs", "/usr/local/src/", "Base directory to find extra library checkouts")
|
|
||||||
|
|
||||||
flag.Parse()
|
|
||||||
|
|
||||||
flushKnownTypes()
|
|
||||||
InsertTypedefs(false)
|
|
||||||
|
|
||||||
generate(
|
|
||||||
"qt",
|
|
||||||
[]string{
|
|
||||||
"/usr/include/x86_64-linux-gnu/qt5/QtCore",
|
|
||||||
"/usr/include/x86_64-linux-gnu/qt5/QtGui",
|
|
||||||
"/usr/include/x86_64-linux-gnu/qt5/QtWidgets",
|
|
||||||
},
|
|
||||||
*clang,
|
|
||||||
strings.Fields(pkgConfigCflags("Qt5Widgets")),
|
|
||||||
*outDir,
|
|
||||||
ClangMatchSameHeaderDefinitionOnly,
|
|
||||||
)
|
|
||||||
|
|
||||||
generate(
|
|
||||||
"qt/qprintsupport",
|
|
||||||
[]string{
|
|
||||||
"/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport",
|
|
||||||
},
|
|
||||||
*clang,
|
|
||||||
strings.Fields(pkgConfigCflags("Qt5PrintSupport")),
|
|
||||||
*outDir,
|
|
||||||
ClangMatchSameHeaderDefinitionOnly,
|
|
||||||
)
|
|
||||||
|
|
||||||
// Depends on QtCore/Gui/Widgets, QPrintSupport
|
|
||||||
generate(
|
|
||||||
"qt-restricted-extras/qscintilla",
|
|
||||||
[]string{
|
|
||||||
"/usr/include/x86_64-linux-gnu/qt5/Qsci",
|
|
||||||
},
|
|
||||||
*clang,
|
|
||||||
strings.Fields(pkgConfigCflags("Qt5PrintSupport")),
|
|
||||||
*outDir,
|
|
||||||
ClangMatchSameHeaderDefinitionOnly,
|
|
||||||
)
|
|
||||||
|
|
||||||
// Depends on QtCore/Gui/Widgets
|
|
||||||
generate(
|
|
||||||
"qt-extras/scintillaedit",
|
|
||||||
[]string{
|
|
||||||
filepath.Join(*extraLibsDir, "scintilla/qt/ScintillaEdit/ScintillaEdit.h"),
|
|
||||||
},
|
|
||||||
*clang,
|
|
||||||
strings.Fields("--std=c++1z "+pkgConfigCflags("ScintillaEdit")),
|
|
||||||
*outDir,
|
|
||||||
(&clangMatchUnderPath{filepath.Join(*extraLibsDir, "scintilla")}).Match,
|
|
||||||
)
|
|
||||||
|
|
||||||
// FLUSH all known typedefs / ...
|
|
||||||
|
|
||||||
flushKnownTypes()
|
|
||||||
InsertTypedefs(true)
|
|
||||||
|
|
||||||
// Qt 6
|
|
||||||
generate(
|
|
||||||
"qt6",
|
|
||||||
[]string{
|
|
||||||
"/usr/include/x86_64-linux-gnu/qt6/QtCore",
|
|
||||||
"/usr/include/x86_64-linux-gnu/qt6/QtGui",
|
|
||||||
"/usr/include/x86_64-linux-gnu/qt6/QtWidgets",
|
|
||||||
},
|
|
||||||
*clang,
|
|
||||||
strings.Fields("--std=c++17 "+pkgConfigCflags("Qt6Widgets")),
|
|
||||||
*outDir,
|
|
||||||
ClangMatchSameHeaderDefinitionOnly,
|
|
||||||
)
|
|
||||||
|
|
||||||
// Qt 6 QtPrintSupport
|
|
||||||
generate(
|
|
||||||
"qt6/qprintsupport",
|
|
||||||
[]string{
|
|
||||||
"/usr/include/x86_64-linux-gnu/qt6/QtPrintSupport",
|
|
||||||
},
|
|
||||||
*clang,
|
|
||||||
strings.Fields("--std=c++17 "+pkgConfigCflags("Qt6PrintSupport")),
|
|
||||||
*outDir,
|
|
||||||
ClangMatchSameHeaderDefinitionOnly,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func generate(packageName string, srcDirs []string, clangBin string, cflags []string, outDir string, matcher ClangMatcher) {
|
|
||||||
|
|
||||||
var includeFiles []string
|
var includeFiles []string
|
||||||
for _, srcDir := range srcDirs {
|
for _, srcDir := range srcDirs {
|
||||||
@ -195,6 +105,8 @@ func generate(packageName string, srcDirs []string, clangBin string, cflags []st
|
|||||||
|
|
||||||
log.Printf("Found %d header files to process.", len(includeFiles))
|
log.Printf("Found %d header files to process.", len(includeFiles))
|
||||||
|
|
||||||
|
cflags := strings.Fields(cflagsCombined)
|
||||||
|
|
||||||
outDir = filepath.Join(outDir, packageName)
|
outDir = filepath.Join(outDir, packageName)
|
||||||
|
|
||||||
cleanGeneratedFilesInDir(outDir)
|
cleanGeneratedFilesInDir(outDir)
|
||||||
@ -396,3 +308,13 @@ func generateClangCaches(includeFiles []string, clangBin string, cflags []string
|
|||||||
close(clangChan)
|
close(clangChan)
|
||||||
clangWg.Wait()
|
clangWg.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
clang := flag.String("clang", "clang", "Custom path to clang")
|
||||||
|
outDir := flag.String("outdir", "../../", "Output directory for generated gen_** files")
|
||||||
|
extraLibsDir := flag.String("extralibs", "/usr/local/src/", "Base directory to find extra library checkouts")
|
||||||
|
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
ProcessLibraries(*clang, *outDir, *extraLibsDir)
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user