//===- zdefaultcc.go - default compiler locations -------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file provides default locations for cc, cxx and llgo.
//
//===----------------------------------------------------------------------===//

package main

import (
	"path/filepath"
	"os"
	"os/exec"
)

var defaultGCCGO, defaultCC, defaultCXX string

func getInstPrefix() (string, error) {
	path, err := exec.LookPath(os.Args[0])
	if err != nil {
		return "", err
	}

	path, err = filepath.EvalSymlinks(path)
	if err != nil {
		return "", err
	}

	prefix := filepath.Join(path, "..", "..")
	return prefix, nil
}

func init() {
	prefix, err := getInstPrefix()
	if err != nil {
		panic(err.Error())
	}

	defaultCC = filepath.Join(prefix, "bin", "clang")
	defaultCXX = filepath.Join(prefix, "bin", "clang++")
	defaultGCCGO = filepath.Join(prefix, "bin", "llgo")
	toolDir = filepath.Join(prefix, "lib", "go", "llgo-@LLGO_VERSION@")

	gccgoName = os.Getenv("GCCGO")
	if gccgoName == "" {
		gccgoName = defaultGCCGO
	}
	gccgoBin, _ = exec.LookPath(gccgoName)
}
