Skip to content

Commit c7d1ce7

Browse files
committed
Add build tags to all generated files
Allow to build this package with older Go versions which don't know about certain GOOS/GOARCH combinations. Fixes #26
1 parent 7a5cfaa commit c7d1ce7

24 files changed

+89
-8
lines changed

mksysconf.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ import (
1313
"io/ioutil"
1414
"os"
1515
"os/exec"
16+
"regexp"
1617
"runtime"
1718
)
1819

19-
func gensysconf(in, out string) error {
20+
func gensysconf(in, out, goos, goarch string) error {
2021
if _, err := os.Stat(in); err != nil {
2122
if os.IsNotExist(err) {
2223
return nil
@@ -32,31 +33,42 @@ func gensysconf(in, out string) error {
3233
fmt.Fprintln(os.Stderr, string(b))
3334
return err
3435
}
36+
37+
goBuild, build := goos, goos
38+
if goarch != "" {
39+
goBuild = fmt.Sprintf("%s && %s", goos, goarch)
40+
build = fmt.Sprintf("%s,%s", goos, goarch)
41+
}
42+
43+
r := fmt.Sprintf(`$1
44+
45+
//go:build %s
46+
// +build %s`, goBuild, build)
47+
cgoCommandRegex := regexp.MustCompile(`(cgo -godefs .*)`)
48+
b = cgoCommandRegex.ReplaceAll(b, []byte(r))
49+
3550
b, err = format.Source(b)
3651
if err != nil {
3752
return err
3853
}
39-
if err := ioutil.WriteFile(out, b, 0644); err != nil {
40-
return err
41-
}
42-
return nil
54+
return ioutil.WriteFile(out, b, 0644)
4355
}
4456

4557
func main() {
46-
goos := runtime.GOOS
58+
goos, goarch := runtime.GOOS, runtime.GOARCH
4759
if goos == "illumos" {
4860
goos = "solaris"
4961
}
5062
defs := fmt.Sprintf("sysconf_defs_%s.go", goos)
51-
if err := gensysconf(defs, "z"+defs); err != nil {
63+
if err := gensysconf(defs, "z"+defs, goos, ""); err != nil {
5264
fmt.Fprintln(os.Stderr, err)
5365
os.Exit(1)
5466
}
5567

5668
vals := fmt.Sprintf("sysconf_values_%s.go", runtime.GOOS)
5769
// sysconf variable values are GOARCH-specific, thus write per GOARCH
5870
zvals := fmt.Sprintf("zsysconf_values_%s_%s.go", runtime.GOOS, runtime.GOARCH)
59-
if err := gensysconf(vals, zvals); err != nil {
71+
if err := gensysconf(vals, zvals, goos, goarch); err != nil {
6072
fmt.Fprintln(os.Stderr, err)
6173
os.Exit(1)
6274
}

zsysconf_defs_darwin.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zsysconf_defs_dragonfly.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zsysconf_defs_freebsd.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zsysconf_defs_linux.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zsysconf_defs_netbsd.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
// Created by cgo -godefs - DO NOT EDIT
22
// cgo -godefs sysconf_defs_netbsd.go
33

4+
//go:build netbsd
5+
// +build netbsd
6+
47
package sysconf
58

69
const (

zsysconf_defs_openbsd.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
// Created by cgo -godefs - DO NOT EDIT
22
// cgo -godefs sysconf_defs_openbsd.go
33

4+
//go:build openbsd
5+
// +build openbsd
6+
47
package sysconf
58

69
const (

zsysconf_defs_solaris.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zsysconf_values_freebsd_386.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

zsysconf_values_freebsd_amd64.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)