@@ -6,14 +6,15 @@ package main
6
6
7
7
import (
8
8
"fmt"
9
+ "github.com/go-python/gopy/bind"
10
+ "github.com/gonuts/commander"
11
+ "github.com/gonuts/flag"
9
12
"log"
10
13
"os"
11
14
"os/exec"
15
+ "path/filepath"
16
+ "runtime"
12
17
"strings"
13
-
14
- "github.com/go-python/gopy/bind"
15
- "github.com/gonuts/commander"
16
- "github.com/gonuts/flag"
17
18
)
18
19
19
20
func gopyMakeCmdBuild () * commander.Command {
@@ -170,28 +171,48 @@ func runBuild(mode bind.BuildMode, odir, outname, cmdstr, vm, mainstr string, sy
170
171
return err
171
172
}
172
173
cccmd := strings .TrimSpace (string (cccmdb ))
174
+ var cflags , ldflags []byte
175
+ if runtime .GOOS != "windows" {
176
+ fmt .Printf ("%v-config --cflags\n " , vm )
177
+ cmd = exec .Command (vm + "-config" , "--cflags" ) // TODO: need minor version!
178
+ cflags , err = cmd .CombinedOutput ()
179
+ if err != nil {
180
+ fmt .Printf ("cmd had error: %v output:\n %v\n " , err , string (cflags ))
181
+ return err
182
+ }
173
183
174
- fmt .Printf ("%v-config --cflags\n " , vm )
175
- cmd = exec .Command (vm + "-config" , "--cflags" ) // TODO: need minor version!
176
- cflags , err := cmd .CombinedOutput ()
177
- if err != nil {
178
- fmt .Printf ("cmd had error: %v output:\n %v\n " , err , string (cflags ))
179
- return err
184
+ fmt .Printf ("%v-config --ldflags\n " , vm )
185
+ cmd = exec .Command (vm + "-config" , "--ldflags" )
186
+ ldflags , err = cmd .CombinedOutput ()
187
+ if err != nil {
188
+ fmt .Printf ("cmd had error: %v output:\n %v\n " , err , string (ldflags ))
189
+ return err
190
+ }
180
191
}
181
-
182
- fmt .Printf ("%v-config --ldflags\n " , vm )
183
- cmd = exec .Command (vm + "-config" , "--ldflags" )
184
- ldflags , err := cmd .CombinedOutput ()
185
- if err != nil {
186
- fmt .Printf ("cmd had error: %v output:\n %v\n " , err , string (ldflags ))
187
- return err
192
+ extext := libExt
193
+ if runtime .GOOS == "windows" {
194
+ extext = ".pyd"
188
195
}
189
-
190
- modlib := "_" + outname + libExt
196
+ modlib := "_" + outname + extext
191
197
gccargs := []string {outname + ".c" , extraGccArgs , outname + "_go" + libExt , "-o" , modlib }
192
198
gccargs = append (gccargs , strings .Split (strings .TrimSpace (string (cflags )), " " )... )
193
199
gccargs = append (gccargs , strings .Split (strings .TrimSpace (string (ldflags )), " " )... )
194
- gccargs = append (gccargs , "-fPIC" , "--shared" )
200
+ gccargs = append (gccargs , "-fPIC" , "--shared" , "-Ofast" )
201
+ if ! symbols {
202
+ gccargs = append (gccargs , "-s" )
203
+ }
204
+ include , exists := os .LookupEnv ("GOPY_INCLUDE" )
205
+ if exists {
206
+ gccargs = append (gccargs , "-I" + filepath .ToSlash (include ))
207
+ }
208
+ lib , exists := os .LookupEnv ("GOPY_LIBDIR" )
209
+ if exists {
210
+ gccargs = append (gccargs , "-L" + filepath .ToSlash (lib ))
211
+ }
212
+ libname , exists := os .LookupEnv ("GOPY_PYLIB" )
213
+ if exists {
214
+ gccargs = append (gccargs , "-l" + filepath .ToSlash (libname ))
215
+ }
195
216
196
217
gccargs = func (vs []string ) []string {
197
218
o := make ([]string , 0 , len (gccargs ))
0 commit comments