aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2019-03-07 20:36:03 +0100
committerDmitry Vyukov <dvyukov@google.com>2019-03-07 20:37:43 +0100
commit4b69c3cbaccd51b7ea719e7bd756d680e825988d (patch)
treef73f4504fccb75ef084a9f311fd21cc627f8f38c /sys
parent5fb683f0dacad8149e6702cac650c81474fbfcf7 (diff)
pkg/runtest: make tests pass on freebsd
The problem is stupid: <endian.h> should be included as <sys/endian.h> on freebsd. Pass actual host OS to executor build as HOSTGOOS and use it to figure out how we should include this header.
Diffstat (limited to 'sys')
-rw-r--r--sys/targets/targets.go10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/targets/targets.go b/sys/targets/targets.go
index 4f569a778..37737f16e 100644
--- a/sys/targets/targets.go
+++ b/sys/targets/targets.go
@@ -383,6 +383,13 @@ func init() {
for _, target := range List["test"] {
target.CCompiler = List[goos][runtime.GOARCH].CCompiler
target.CPP = List[goos][runtime.GOARCH].CPP
+ target.BuildOS = goos
+ if runtime.GOOS == "freebsd" && runtime.GOARCH == "amd64" && target.PtrSize == 4 {
+ // -m32 alone does not work on freebsd with gcc.
+ // TODO(dvyukov): consider switching to clang on freebsd instead.
+ target.CFlags = append(target.CFlags, "-B/usr/lib32")
+ target.CrossCFlags = append(target.CrossCFlags, "-B/usr/lib32")
+ }
}
}
@@ -410,9 +417,6 @@ func initTarget(target *Target, OS, arch string) {
if target.BuildOS == "" {
target.BuildOS = OS
}
- if OS == "test" {
- target.BuildOS = "linux"
- }
if runtime.GOOS != target.BuildOS {
// Spoil native binaries if they are not usable, so that nobody tries to use them later.
target.CCompiler = fmt.Sprintf("cant-build-%v-on-%v", target.OS, runtime.GOOS)