build: Add option to enable PIE build mode

This commit is contained in:
Alexander Neumann 2018-05-11 09:50:10 +02:00
parent 580f90d745
commit fcfa6f0355
1 changed files with 7 additions and 0 deletions

View File

@ -70,6 +70,7 @@ var (
keepGopath bool keepGopath bool
runTests bool runTests bool
enableCGO bool enableCGO bool
enablePIE bool
) )
// specialDir returns true if the file begins with a special character ('.' or '_'). // specialDir returns true if the file begins with a special character ('.' or '_').
@ -225,6 +226,7 @@ func showUsage(output io.Writer) {
fmt.Fprintf(output, " -T --test run tests\n") fmt.Fprintf(output, " -T --test run tests\n")
fmt.Fprintf(output, " -o --output set output file name\n") fmt.Fprintf(output, " -o --output set output file name\n")
fmt.Fprintf(output, " --enable-cgo use CGO to link against libc\n") fmt.Fprintf(output, " --enable-cgo use CGO to link against libc\n")
fmt.Fprintf(output, " --enable-pie use PIE buildmode\n")
fmt.Fprintf(output, " --goos value set GOOS for cross-compilation\n") fmt.Fprintf(output, " --goos value set GOOS for cross-compilation\n")
fmt.Fprintf(output, " --goarch value set GOARCH for cross-compilation\n") fmt.Fprintf(output, " --goarch value set GOARCH for cross-compilation\n")
fmt.Fprintf(output, " --goarm value set GOARM for cross-compilation\n") fmt.Fprintf(output, " --goarm value set GOARM for cross-compilation\n")
@ -265,6 +267,9 @@ func build(cwd string, ver GoVersion, goos, goarch, goarm, gopath string, args .
a = append(a, "-asmflags", fmt.Sprintf("-trimpath=%s", gopath)) a = append(a, "-asmflags", fmt.Sprintf("-trimpath=%s", gopath))
a = append(a, "-gcflags", fmt.Sprintf("-trimpath=%s", gopath)) a = append(a, "-gcflags", fmt.Sprintf("-trimpath=%s", gopath))
} }
if enablePIE {
a = append(a, "-buildmode=pie")
}
a = append(a, args...) a = append(a, args...)
cmd := exec.Command("go", a...) cmd := exec.Command("go", a...)
@ -486,6 +491,8 @@ func main() {
runTests = true runTests = true
case "--enable-cgo": case "--enable-cgo":
enableCGO = true enableCGO = true
case "--enable-pie":
enablePIE = true
case "--goos": case "--goos":
skipNext = true skipNext = true
targetGOOS = params[i+1] targetGOOS = params[i+1]