forked from therecipe/qt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
linux.go
132 lines (118 loc) · 2.82 KB
/
linux.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package utils
import (
"fmt"
"os"
"os/exec"
"path/filepath"
"runtime"
"strings"
)
func QT_PKG_CONFIG() bool {
return os.Getenv("QT_PKG_CONFIG") == "true"
}
func QT_DOC_DIR() string {
if dir, ok := os.LookupEnv("QT_DOC_DIR"); ok {
return filepath.Clean(dir)
}
switch QT_DISTRO() {
case "arch":
return "/usr/share/doc/qt"
case "fedora":
return "/usr/share/doc/qt5"
case "suse":
return "/usr/share/doc/packages/qt5"
case "ubuntu":
return "/usr/share/qt5/doc"
case "gentoo":
return "/usr/share/doc/qt-" + QT_VERSION()
case "darwin":
return ""
case "freebsd":
return "/usr/local/share/doc/qt5"
default:
Log.Error("failed to detect the Linux distro")
return ""
}
}
func QT_MISC_DIR() string {
if dir, ok := os.LookupEnv("QT_MISC_DIR"); ok {
return filepath.Clean(dir)
}
if QT_DISTRO() == "arch" {
return filepath.Join(strings.TrimSpace(RunCmd(exec.Command("pkg-config", "--variable=libdir", "Qt5Core"), "utils.PKG_CONFIG_libDir")), "qt")
}
//fedora, suse, ubuntu, gentoo, darwin
return strings.TrimSuffix(strings.TrimSpace(RunCmd(exec.Command("pkg-config", "--variable=host_bins", "Qt5Core"), "utils.PKG_CONFIG_hostBins")), "/bin")
}
func QT_DISTRO() string {
if distro, ok := os.LookupEnv("QT_DISTRO"); ok {
return distro
}
if runtime.GOOS == "darwin" || runtime.GOOS == "freebsd" {
return runtime.GOOS
}
if _, err := exec.LookPath("pacman"); err == nil {
return "arch"
}
if _, err := exec.LookPath("yum"); err == nil {
return "fedora"
}
if _, err := exec.LookPath("zypper"); err == nil {
return "suse"
}
if _, err := exec.LookPath("apt-get"); err == nil {
return "ubuntu"
}
if _, err := exec.LookPath("emerge"); err == nil {
return "gentoo"
}
Log.Error("failed to detect the Linux distro")
return ""
}
func QT_MXE_ARCH() string {
if arch := os.Getenv("QT_MXE_ARCH"); arch == "amd64" {
return arch
}
return "386"
}
func QT_MXE_STATIC() bool {
return os.Getenv("QT_MXE_STATIC") == "true"
}
func QT_MXE_TRIPLET() string {
prefix := "i686"
if QT_MXE_ARCH() == "amd64" {
prefix = "x86_64"
}
suffix := "shared"
if QT_MXE_STATIC() {
suffix = "static"
}
return fmt.Sprintf("%v-w64-mingw32.%v", prefix, suffix)
}
func QT_MXE_DIR() string {
if dir, ok := os.LookupEnv("QT_MXE_DIR"); ok {
return filepath.Clean(dir)
}
return filepath.Join("/usr", "lib", "mxe")
}
func QT_MXE_BIN(tool string) string {
return filepath.Join(QT_MXE_DIR(), "usr", "bin", fmt.Sprintf("%v-%v", QT_MXE_TRIPLET(), tool))
}
func QT_MXE() bool {
return os.Getenv("QT_MXE") == "true"
}
func QT_UBPORTS() bool {
return os.Getenv("QT_UBPORTS") == "true"
}
func QT_UBPORTS_ARCH() string {
if arch := os.Getenv("QT_UBPORTS_ARCH"); arch == "amd64" {
return arch
}
return "arm"
}
func QT_UBPORTS_VERSION() string {
if rel := os.Getenv("QT_UBPORTS_VERSION"); rel == "xenial" {
return rel
}
return "vivid"
}