blob: 0c1f5732e04da35f04b008b69a2ec8d657038f9a [file] [log] [blame]
// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build ignore
// The arhost binary is a wrapper for llvm-ar, designed to be called by
// cmd/link. The -extar flag is not enough because llvm-ar and ar don't
// use the same flags.
//
// It is useful when the standard ar is broken, such as on self-hosted
// iOS.
package main
import (
"os"
"os/exec"
)
func main() {
args := os.Args[1:]
// cmd/link invokes ar with -q -c -s. Replace with
// just q.
for i := len(args) - 1; i >= 0; i-- {
switch args[i] {
case "-q":
args[i] = "q"
case "-c", "-s":
args = append(args[:i], args[i+1:]...)
}
}
cmd := exec.Command("llvm-ar", args...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
if err, ok := err.(*exec.ExitError); ok {
os.Exit(err.ExitCode())
}
os.Exit(1)
}
os.Exit(0)
}