diff --git a/cmd/build.go b/cmd/build.go index 699c35ce..6eeaa2c5 100644 --- a/cmd/build.go +++ b/cmd/build.go @@ -37,6 +37,7 @@ var ( buildOrRunHoverFlavor string buildOrRunDocker bool buildOrRunDebug bool + buildOrRunJitRelease bool buildOrRunRelease bool buildOrRunProfile bool buildOrRunMode build.Mode @@ -53,6 +54,7 @@ func initCompileFlags(cmd *cobra.Command) { cmd.PersistentFlags().StringVar(&buildOrRunHoverFlavor, "flavor", "", "The flavor to use, defaults to 'hover.yaml'.") cmd.PersistentFlags().BoolVar(&buildOrRunDocker, "docker", false, "Execute the go build and packaging in a docker container. The Flutter build is always run locally") cmd.PersistentFlags().BoolVar(&buildOrRunDebug, "debug", false, "Build a debug version of the app.") + cmd.PersistentFlags().BoolVar(&buildOrRunJitRelease, "jit-release", false, "Build a debug version of the app without the terminal windows on Windows.") cmd.PersistentFlags().BoolVar(&buildOrRunRelease, "release", false, "Build a release version of the app. Currently very experimental") cmd.PersistentFlags().BoolVar(&buildOrRunProfile, "profile", false, "Build a profile version of the app. Currently very experimental") cmd.PersistentFlags().BoolVar(&buildOrRunSkipFlutter, "skip-flutter", false, "Skip the flutter steps") @@ -234,6 +236,9 @@ func subcommandBuild(targetOS string, packagingTask packaging.Task, vmArguments if buildOrRunDebug { buildFlags = append(buildFlags, "--debug") } + if buildOrRunJitRelease { + buildFlags = append(buildFlags, "--jit-release") + } if buildOrRunRelease { buildFlags = append(buildFlags, "--release") } @@ -307,7 +312,7 @@ func initBuildParameters(targetOS string, defaultBuildOrRunMode build.Mode) { } numberOfBuildOrRunModeFlagsSet := 0 - for _, flag := range []bool{buildOrRunDebug, buildOrRunRelease, buildOrRunProfile} { + for _, flag := range []bool{buildOrRunDebug, buildOrRunJitRelease, buildOrRunRelease, buildOrRunProfile} { if flag { numberOfBuildOrRunModeFlagsSet++ } @@ -323,6 +328,9 @@ func initBuildParameters(targetOS string, defaultBuildOrRunMode build.Mode) { if buildOrRunDebug { buildOrRunMode = build.DebugMode } + if buildOrRunJitRelease { + buildOrRunMode = build.JitReleaseMode + } if buildOrRunRelease { buildOrRunMode = build.ReleaseMode } @@ -358,6 +366,7 @@ func validateBuildParameters(targetOS string) { } } else { log.Errorf("AOT builds currently only work on their host OS") + log.Errorf("Use the JIT release mode using the `--jit-release` flag instead") os.Exit(1) } } diff --git a/internal/build/mode.go b/internal/build/mode.go index bb6a9d3b..2a2e3c95 100644 --- a/internal/build/mode.go +++ b/internal/build/mode.go @@ -10,6 +10,12 @@ var DebugMode = Mode{ IsAot: false, } +// JitReleaseMode is the same debug build, but disables the terminal windows on Windows +var JitReleaseMode = Mode{ + Name: "debug_unopt", + IsAot: false, +} + var ReleaseMode = Mode{ Name: "release", IsAot: true,