var objDir = flag.String("objdir", "", "object directory")
var gccgo = flag.Bool("gccgo", false, "generate files for use with gccgo")
-var gccgoprefix = flag.String("gccgoprefix", "go", "prefix of symbols generated by gccgo")
+var gccgoprefix = flag.String("gccgoprefix", "", "-fgo-prefix option used with gccgo")
+var gccgopkgpath = flag.String("gccgopkgpath", "", "-fgo-pkgpath option used with gccgo")
var importRuntimeCgo = flag.Bool("import_runtime_cgo", true, "import runtime/cgo in generated code")
var goarch, goos string
}
return '_'
}
- gccgoSymbolPrefix := strings.Map(clean, *gccgoprefix)
+
+ var gccgoSymbolPrefix string
+ if *gccgopkgpath != "" {
+ gccgoSymbolPrefix = strings.Map(clean, *gccgopkgpath)
+ } else {
+ if *gccgoprefix == "" && p.PackageName == "main" {
+ gccgoSymbolPrefix = "main"
+ } else {
+ prefix := strings.Map(clean, *gccgoprefix)
+ if prefix == "" {
+ prefix = "go"
+ }
+ gccgoSymbolPrefix = prefix + "." + p.PackageName
+ }
+ }
for _, exp := range p.ExpFunc {
// TODO: support functions with receivers.
// The function name.
fmt.Fprintf(cdeclBuf, " "+exp.ExpName)
- gccgoSymbol := fmt.Sprintf("%s.%s.%s", gccgoSymbolPrefix, p.PackageName, exp.Func.Name)
+ gccgoSymbol := fmt.Sprintf("%s.%s", gccgoSymbolPrefix, exp.Func.Name)
fmt.Fprintf(cdeclBuf, " (")
// Function parameters.
forFieldList(fntype.Params,