aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd/dist
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/dist')
-rw-r--r--cmd/dist/main.go37
1 files changed, 33 insertions, 4 deletions
diff --git a/cmd/dist/main.go b/cmd/dist/main.go
index 1034f282..40a0583c 100644
--- a/cmd/dist/main.go
+++ b/cmd/dist/main.go
@@ -4,6 +4,7 @@ package main
import (
"archive/tar"
+ "bytes"
"compress/gzip"
"context"
"crypto/sha512"
@@ -57,6 +58,7 @@ func main() {
verbose := os.Getenv("VERBOSE") != ""
runTests := os.Getenv("HAKUREI_DIST_MAKE") == ""
race := os.Getenv("HAKUREI_RACE") != ""
+ dynamic := os.Getenv("HAKUREI_DYNAMIC") != ""
version = getenv("HAKUREI_VERSION", strings.TrimSpace(version))
prefix := getenv("PREFIX", "/usr/local")
destdir := getenv("DESTDIR", "dist")
@@ -69,6 +71,12 @@ func main() {
version += "-race"
}
+ if err := os.Setenv("CC", "clang"); err != nil {
+ log.Fatal(err)
+ } else if err = os.Setenv("CXX", "clang++"); err != nil {
+ log.Fatal(err)
+ }
+
if err := os.MkdirAll(destdir, 0755); err != nil {
log.Fatal(err)
}
@@ -94,15 +102,36 @@ func main() {
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)
defer cancel()
+ const stubFlag = "-buildvcs=false"
verboseFlag := "-v"
if !verbose {
- verboseFlag = "-buildvcs=false"
+ verboseFlag = stubFlag
}
raceFlag := "-race"
if !race {
- raceFlag = "-buildvcs=false"
+ raceFlag = stubFlag
+ }
+
+ ldflagsStatic := " -extldflags=-static"
+ if dynamic {
+ cmd := exec.CommandContext(ctx, "llvm-config", "--host-target")
+ cmd.Stderr = os.Stderr
+ var p []byte
+ p, err = cmd.Output()
+ if err != nil {
+ log.Fatal(err)
+ }
+ p = bytes.TrimSpace(p)
+ _, abi, ok := strings.CutLast(string(p), "-")
+ if !ok {
+ log.Fatalf("invalid target %q", string(p))
+ }
+ version += "-" + abi
+
+ log.Println("WARNING: dynamic linking is not supported")
+ ldflagsStatic = ""
}
log.Printf("Building hakurei %s for %s/%s.", version, runtime.GOOS, runtime.GOARCH)
@@ -112,7 +141,7 @@ func main() {
"-trimpath",
verboseFlag, raceFlag, "-o", s,
"-ldflags=-s -w "+
- "-buildid= -linkmode external -extldflags=-static "+
+ "-buildid= -linkmode external"+ldflagsStatic+" "+
"-X hakurei.app/internal/info.buildVersion="+version+" "+
"-X hakurei.app/internal/info.hakureiPath="+prefix+"/bin/hakurei "+
"-X hakurei.app/internal/info.hsuPath="+prefix+"/bin/hsu",
@@ -136,7 +165,7 @@ func main() {
log.Println("##### Testing Hakurei.")
mustRun(
ctx, nil, "go", "test", raceFlag,
- "-ldflags=-buildid= -linkmode external -extldflags=-static",
+ "-ldflags=-buildid= -linkmode external"+ldflagsStatic,
"./...",
)
log.Println()