cutego/internal/utils/windows.go
2019-09-24 00:03:23 +02:00

120 lines
2.4 KiB
Go

package utils
import (
"fmt"
"os"
"path/filepath"
"runtime"
"strings"
)
func QT_MSYS2() bool {
return (os.Getenv("QT_MSYS2") == "true" || IsMsys2QtDir() || MSYSTEM() != "") && !MSYS_DOCKER()
}
func QT_MSYS2_DIR() string {
if dir, ok := os.LookupEnv("QT_MSYS2_DIR"); ok {
if QT_MSYS2_ARCH() == "amd64" {
return filepath.Join(dir, "mingw64")
}
return filepath.Join(dir, "mingw32")
}
prefix := "msys32"
if runtime.GOARCH == "amd64" {
prefix = "msys64"
}
suffix := "mingw32"
if QT_MSYS2_ARCH() == "amd64" {
suffix = "mingw64"
}
return fmt.Sprintf("%v\\%v\\%v", windowsSystemDrive(), prefix, suffix)
}
func IsMsys2QtDir() bool {
return ExistsFile(filepath.Join(os.Getenv("QT_MSYS2_DIR"), "msys2.exe"))
}
func QT_MSYS2_ARCH() string {
arch, ok := os.LookupEnv("QT_MSYS2_ARCH")
if ok {
return arch
}
if MSYSTEM() == "MINGW64" || (!ok && runtime.GOARCH == "amd64") {
return "amd64"
}
return "386"
}
func QT_MSYS2_STATIC() bool {
return os.Getenv("QT_MSYS2_STATIC") == "true"
}
func MSYSTEM() string {
return os.Getenv("MSYSTEM")
}
func MSYS_DOCKER() bool {
_, ok := os.LookupEnv("DOCKER_MACHINE_NAME")
return ok
}
func windowsSystemDrive() string {
if vol, ok := os.LookupEnv("SystemDrive"); ok {
return vol
}
if vol, ok := os.LookupEnv("SystemRoot"); ok {
return filepath.VolumeName(vol)
}
if vol, ok := os.LookupEnv("WinDir"); ok {
return filepath.VolumeName(vol)
}
return "C:"
}
func MINGWDIR() string {
if QT_MSVC() {
if GOARCH() == "386" {
return "msvc2017"
}
return "msvc2017_64"
}
if QT_VERSION_NUM() >= 5122 {
if GOARCH() == "386" {
return "mingw73_32"
}
}
return "mingw73_64"
}
func MINGWTOOLSDIR() string {
version := "mingw730_64"
if QT_VERSION_NUM() >= 5122 {
if GOARCH() == "386" {
version = "mingw730_32"
}
}
path := filepath.Join(QT_DIR(), "Tools", version, "bin")
if !ExistsDir(path) {
path = strings.Replace(path, version, "mingw530_32", -1)
}
if !ExistsDir(path) {
path = strings.Replace(path, "mingw530_32", "mingw492_32", -1)
}
return path
}
func QT_MSVC() bool {
return os.Getenv("QT_MSVC") == "true"
}
func GOVSVARSPATH() string {
if p, ok := os.LookupEnv("GOVSVARSPATH"); ok {
return p
}
bits := "64"
if GOARCH() == "386" {
bits = "32"
}
return fmt.Sprintf(`%v\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars%v.bat`, windowsSystemDrive(), bits)
}