return nil, err
}
- if len(dirInfo.cgoFiles) == 0 && len(dirInfo.cFiles) > 0 {
- // When using cgo, .c files are compiled with gcc. Without cgo,
- // they may be intended for 6c. Just error out for now.
- return nil, os.ErrorString("C files found in non-cgo package")
- }
-
cgoFiles := dirInfo.cgoFiles
isCgo := make(map[string]bool, len(cgoFiles))
for _, file := range cgoFiles {
isCgo[file] = true
}
- cgoOFiles := make([]string, 0, len(dirInfo.cFiles))
- for _, file := range dirInfo.cFiles {
+ goFiles := make([]string, 0, len(dirInfo.goFiles))
+ for _, file := range dirInfo.goFiles {
if !safeName(file) {
return nil, os.ErrorString("unsafe name: " + file)
}
- cgoOFiles = append(cgoOFiles, file[:len(file)-2]+".o")
+ if !isCgo[file] {
+ goFiles = append(goFiles, file)
+ }
}
- goFiles := make([]string, 0, len(dirInfo.goFiles))
- for _, file := range dirInfo.goFiles {
+ oFiles := make([]string, 0, len(dirInfo.cFiles)+len(dirInfo.sFiles))
+ cgoOFiles := make([]string, 0, len(dirInfo.cFiles))
+ for _, file := range dirInfo.cFiles {
if !safeName(file) {
return nil, os.ErrorString("unsafe name: " + file)
}
- if !isCgo[file] {
- goFiles = append(goFiles, file)
+ // When cgo is in use, C files are compiled with gcc,
+ // otherwise they're compiled with gc.
+ if len(cgoFiles) > 0 {
+ cgoOFiles = append(cgoOFiles, file[:len(file)-2]+".o")
+ } else {
+ oFiles = append(oFiles, file[:len(file)-2]+".$O")
}
}
- oFiles := make([]string, 0, len(dirInfo.sFiles))
for _, file := range dirInfo.sFiles {
if !safeName(file) {
return nil, os.ErrorString("unsafe name: " + file)