I think golang package is a great stuff for encapsulation.It may be better 
if I can use that in cgo.
* c/objective-c function can include any .h file in the GOPATH with "the 
full path way" like golang import.
* c/objective-c function can call other c/objective-c function in another 
golang package in cgo.

Here is the patch base on go1.7 that can achieve above two functional.
```diff
diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go
index 3c0b994..0a035fc 100644
--- a/src/cmd/go/build.go
+++ b/src/cmd/go/build.go
@@ -3168,6 +3168,13 @@ func (b *builder) cgo(p *Package, cgoExe, obj 
string, pcCFLAGS, pcLDFLAGS, cgofi
                cgoCFLAGS = append([]string{"-fsanitize=memory"}, 
cgoCFLAGS...)
                cgoLDFLAGS = append([]string{"-fsanitize=memory"}, 
cgoLDFLAGS...)
        }
+       gopathEnv:=os.Getenv("GOPATH")
+       if gopathEnv!=""{
+               for _,gopath:=range filepath.SplitList(gopathEnv){
+                       cgoCPPFLAGS = append(cgoCPPFLAGS,"-I",gopath)
+                       cgoLDFLAGS = append(cgoLDFLAGS,"-I",gopath)
+               }
+       }
 
        // Allows including _cgo_export.h from .[ch] files in the package.
        cgoCPPFLAGS = append(cgoCPPFLAGS, "-I", obj)
@@ -3348,7 +3355,7 @@ func (b *builder) cgo(p *Package, cgoExe, obj string, 
pcCFLAGS, pcLDFLAGS, cgofi
        if pie { // we need to use -pie for Linux/ARM to get accurate 
imported sym
                cgoLDFLAGS = append(cgoLDFLAGS, "-pie")
        }
-       if err := b.gccld(p, dynobj, cgoLDFLAGS, linkobj); err != nil {
+       if err := b.gccld(p, dynobj, 
append(cgoLDFLAGS,"-flat_namespace","-Wl,-undefined,warning"), linkobj); 
err != nil {
                return nil, nil, err
        }
        if pie { // but we don't need -pie for normal cgo programs
```

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to