]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1] cgo: add -gccgopkgpath option to match gccgo -fgo-pkgpath
authorIan Lance Taylor <iant@golang.org>
Fri, 21 Sep 2012 19:54:09 +0000 (05:54 +1000)
committerIan Lance Taylor <iant@golang.org>
Fri, 21 Sep 2012 19:54:09 +0000 (05:54 +1000)
««« backport 06e3a4c30dfb
cgo: add -gccgopkgpath option to match gccgo -fgo-pkgpath

R=golang-dev, r, iant
CC=golang-dev
https://golang.org/cl/6416056

»»»

src/cmd/cgo/main.go
src/cmd/cgo/out.go

index 60165961a1fca2dd0586367f32e98fdb9c29b0c0..05389bb6968ee7ceca387a32c3cdc8996f1c418b 100644 (file)
@@ -144,7 +144,8 @@ var cdefs = flag.Bool("cdefs", false, "for bootstrap: write C definitions for C
 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
 
index 5dfc16a0200881ae7fd545d4b7f8e3c571b5680f..7eee67175400904740ddf2ff69208c84788aa194 100644 (file)
@@ -656,7 +656,21 @@ func (p *Package) writeGccgoExports(fgo2, fc, fm *os.File) {
                }
                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.
@@ -694,7 +708,7 @@ func (p *Package) writeGccgoExports(fgo2, fc, fm *os.File) {
 
                // 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,