diff --git a/cmd/internal/flags/flags.go b/cmd/internal/flags/flags.go index c61927c3..830bcebb 100644 --- a/cmd/internal/flags/flags.go +++ b/cmd/internal/flags/flags.go @@ -21,6 +21,7 @@ var AbiMode int var CheckLinkArgs bool var CheckLLFiles bool var GenLLFiles bool +var ForceEspClang bool func AddBuildFlags(fs *flag.FlagSet) { fs.BoolVar(&Verbose, "v", false, "Verbose mode") @@ -32,6 +33,7 @@ func AddBuildFlags(fs *flag.FlagSet) { fs.BoolVar(&CheckLinkArgs, "check-linkargs", false, "check link args valid") fs.BoolVar(&CheckLLFiles, "check-llfiles", false, "check .ll files valid") fs.BoolVar(&GenLLFiles, "gen-llfiles", false, "generate .ll files for pkg export") + fs.BoolVar(&ForceEspClang, "force-espclang", false, "force to use esp-clang") } } @@ -56,5 +58,6 @@ func UpdateConfig(conf *build.Config) { conf.CheckLinkArgs = CheckLinkArgs conf.CheckLLFiles = CheckLLFiles conf.GenLL = GenLLFiles + conf.ForceEspClang = ForceEspClang } } diff --git a/internal/build/build.go b/internal/build/build.go index d12c1ebf..2b296cb7 100644 --- a/internal/build/build.go +++ b/internal/build/build.go @@ -86,6 +86,7 @@ type Config struct { GenLL bool // generate pkg .ll files CheckLLFiles bool // check .ll files valid CheckLinkArgs bool // check linkargs valid + ForceEspClang bool // force to use esp-clang Tags string GlobalNames map[string][]string // pkg => names GlobalDatas map[string]string // pkg.name => data @@ -159,7 +160,7 @@ func Do(args []string, conf *Config) ([]Package, error) { conf.Goarch = runtime.GOARCH } // Handle crosscompile configuration first to set correct GOOS/GOARCH - forceEspClang := conf.Target != "" + forceEspClang := conf.ForceEspClang || conf.Target != "" export, err := crosscompile.Use(conf.Goos, conf.Goarch, conf.Target, IsWasiThreadsEnabled(), forceEspClang) if err != nil { return nil, fmt.Errorf("failed to setup crosscompile: %w", err)