github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/cmd/go/zdefaultcc.go.in (about)

     1  //===- zdefaultcc.go - default compiler locations -------------------------===//
     2  //
     3  // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
     4  // See https://llvm.org/LICENSE.txt for license information.
     5  // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
     6  //
     7  //===----------------------------------------------------------------------===//
     8  //
     9  // This file provides default locations for cc, cxx and llgo.
    10  //
    11  //===----------------------------------------------------------------------===//
    12  
    13  package main
    14  
    15  import (
    16  	"path/filepath"
    17  	"os"
    18  	"os/exec"
    19  )
    20  
    21  var defaultGCCGO, defaultCC, defaultCXX string
    22  
    23  func getInstPrefix() (string, error) {
    24  	path, err := exec.LookPath(os.Args[0])
    25  	if err != nil {
    26  		return "", err
    27  	}
    28  
    29  	path, err = filepath.EvalSymlinks(path)
    30  	if err != nil {
    31  		return "", err
    32  	}
    33  
    34  	prefix := filepath.Join(path, "..", "..")
    35  	return prefix, nil
    36  }
    37  
    38  func init() {
    39  	prefix, err := getInstPrefix()
    40  	if err != nil {
    41  		panic(err.Error())
    42  	}
    43  
    44  	defaultCC = filepath.Join(prefix, "bin", "clang")
    45  	defaultCXX = filepath.Join(prefix, "bin", "clang++")
    46  	defaultGCCGO = filepath.Join(prefix, "bin", "llgo")
    47  	toolDir = filepath.Join(prefix, "lib", "go", "llgo-@LLGO_VERSION@")
    48  
    49  	gccgoName = os.Getenv("GCCGO")
    50  	if gccgoName == "" {
    51  		gccgoName = defaultGCCGO
    52  	}
    53  	gccgoBin, _ = exec.LookPath(gccgoName)
    54  }