Merge pull request #5 from desertbit/qtmodules

add support for dynamic qt modules
This commit is contained in:
Roland Singer 2020-02-28 20:23:39 +01:00 committed by GitHub
commit 41bb83f6f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 19 additions and 10 deletions

View File

@ -49,6 +49,7 @@ func init() {
f.String("b", "build-dir", "./build", "build directorty") f.String("b", "build-dir", "./build", "build directorty")
f.String("d", "dest-dir", "./", "destination directorty") f.String("d", "dest-dir", "./", "destination directorty")
f.String("t", "tags", "", "go build tags") f.String("t", "tags", "", "go build tags")
f.String("m", "qt-modules", "", "comma separated list of qt modules added to the project")
}, },
Run: runBuild, Run: runBuild,
} }
@ -70,6 +71,7 @@ func runBuild(c *grumble.Context) error {
c.Flags.String("source-dir"), c.Flags.String("source-dir"),
c.Flags.String("build-dir"), c.Flags.String("build-dir"),
c.Flags.String("dest-dir"), c.Flags.String("dest-dir"),
c.Flags.String("qt-modules"),
c.Flags.Bool("clean"), c.Flags.Bool("clean"),
c.Flags.Bool("no-strip"), c.Flags.Bool("no-strip"),
c.Flags.Bool("debug"), c.Flags.Bool("debug"),
@ -90,6 +92,7 @@ func runBuildDocker(c *grumble.Context) error {
c.Flags.String("source-dir"), c.Flags.String("source-dir"),
c.Flags.String("build-dir"), c.Flags.String("build-dir"),
c.Flags.String("dest-dir"), c.Flags.String("dest-dir"),
c.Flags.String("qt-modules"),
c.Flags.Bool("clean"), c.Flags.Bool("clean"),
c.Flags.Bool("no-strip"), c.Flags.Bool("no-strip"),
c.Flags.Bool("debug"), c.Flags.Bool("debug"),

View File

@ -40,13 +40,16 @@ const (
PostHookName = "GML_BUILD_POST_HOOKS" PostHookName = "GML_BUILD_POST_HOOKS"
) )
func Build(sourceDir, buildDir, destDir string, clean, noStrip, debugBuild, race bool, tags string) (err error) { func Build(sourceDir, buildDir, destDir, qtModules string, clean, noStrip, debugBuild, race bool, tags string) (err error) {
// Force no strip if this is a debug build. // Force no strip if this is a debug build.
if debugBuild { if debugBuild {
noStrip = true noStrip = true
} }
ctx, err := newContext(sourceDir, buildDir, destDir, clean, debugBuild) // Convert the comma separated qt modules list to a whitespace separated one.
qtModules = strings.Join(strings.Split(qtModules, ","), " ")
ctx, err := newContext(sourceDir, buildDir, destDir, qtModules, clean, debugBuild)
if err != nil { if err != nil {
return return
} }

View File

@ -52,6 +52,8 @@ type Context struct {
BuildDir string BuildDir string
DestDir string DestDir string
QTModules string
GmlBindingDir string GmlBindingDir string
GmlBindingHeadersDir string GmlBindingHeadersDir string
GmlBindingSourcesDir string GmlBindingSourcesDir string
@ -71,7 +73,7 @@ type Context struct {
DebugBuild bool DebugBuild bool
} }
func newContext(sourceDir, buildDir, destDir string, clean bool, debugBuild bool) (ctx *Context, err error) { func newContext(sourceDir, buildDir, destDir, qtModules string, clean bool, debugBuild bool) (ctx *Context, err error) {
// Get absolute paths. // Get absolute paths.
sourceDir, err = filepath.Abs(sourceDir) sourceDir, err = filepath.Abs(sourceDir)
if err != nil { if err != nil {
@ -92,6 +94,7 @@ func newContext(sourceDir, buildDir, destDir string, clean bool, debugBuild bool
SourceDir: sourceDir, SourceDir: sourceDir,
BuildDir: buildDir, BuildDir: buildDir,
DestDir: destDir, DestDir: destDir,
QTModules: qtModules,
QMLDir: filepath.Join(sourceDir, qmlDir), QMLDir: filepath.Join(sourceDir, qmlDir),
QMLResDir: filepath.Join(sourceDir, qmlResDir), QMLResDir: filepath.Join(sourceDir, qmlResDir),
QMLResFile: filepath.Join(sourceDir, qmlResFile), QMLResFile: filepath.Join(sourceDir, qmlResFile),
@ -121,7 +124,6 @@ func newContext(sourceDir, buildDir, destDir string, clean bool, debugBuild bool
if err != nil { if err != nil {
return return
} }
} }
err = ctx.cleanupDirs() err = ctx.cleanupDirs()

View File

@ -51,7 +51,7 @@ func prepareQtProject(ctx *Context) (err error) {
} }
const qtProData = ` const qtProData = `
QT += core qml quick QT += core qml quick {{ .QTModules }}
TEMPLATE = lib TEMPLATE = lib

View File

@ -60,7 +60,7 @@ func Containers() []string {
func Build( func Build(
container string, container string,
sourceDir, buildDir, destDir string, sourceDir, buildDir, destDir, qtModules string,
clean, noStrip, debugBuild, race, customContainer bool, clean, noStrip, debugBuild, race, customContainer bool,
tags string, tags string,
) (err error) { ) (err error) {
@ -90,7 +90,7 @@ func Build(
utils.PrintColorln("> docker build: " + container) utils.PrintColorln("> docker build: " + container)
user, err := user.Current() usr, err := user.Current()
if err != nil { if err != nil {
return return
} }
@ -103,8 +103,8 @@ func Build(
args := []string{ args := []string{
"run", "--rm", "-i" + ttyArg, "run", "--rm", "-i" + ttyArg,
"-e", "UID=" + user.Uid, "-e", "UID=" + usr.Uid,
"-e", "GID=" + user.Gid, "-e", "GID=" + usr.Gid,
"-e", "GOBIN=/work/bin", "-e", "GOBIN=/work/bin",
"-e", "GOPATH=/work/go", "-e", "GOPATH=/work/go",
"-e", "GOCACHE=/work/build/go-cache", "-e", "GOCACHE=/work/build/go-cache",
@ -124,7 +124,8 @@ func Build(
args = append(args, "build", args = append(args, "build",
"--source-dir", "/work/"+ctx.BinName, "--source-dir", "/work/"+ctx.BinName,
"--build-dir", "/work/build/gml-build", "--build-dir", "/work/build/gml-build",
"--dest-dir", "/work/bin") "--dest-dir", "/work/bin",
"--qt-modules", qtModules)
if clean { if clean {
args = append(args, "--clean") args = append(args, "--clean")