// 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.

//go: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)
}
