@@ -6,6 +6,9 @@ for l in $(xx-info env); do
66 export " ${l?} "
77done
88
9+ : " ${XX_GO_PREFER_C_COMPILER=clang} "
10+ : " ${XX_ZIG_TRIPLE=unknown-unknown-none} "
11+
912export GOOS=" ${TARGETOS} "
1013export GOARCH=" ${TARGETARCH} "
1114
@@ -24,6 +27,28 @@ case "$TARGETARCH" in
2427 ;;
2528 esac
2629 fi
30+ if [ " $XX_LIBC " = " musl" ]; then
31+ XX_ZIG_TRIPLE=" x86_64-linux-musl"
32+ else
33+ XX_ZIG_TRIPLE=" x86_64-linux-gnu"
34+ fi
35+ if [ " $TARGETOS " = " darwin" ]; then
36+ XX_ZIG_TRIPLE=" x86_64-macos-none"
37+ elif [ " $TARGETOS " = " windows" ]; then
38+ XX_ZIG_TRIPLE=" x86_64-windows-gnu"
39+ fi
40+ ;;
41+ " arm64" )
42+ if [ " $XX_LIBC " = " musl" ]; then
43+ XX_ZIG_TRIPLE=" aarch64-linux-musl"
44+ else
45+ XX_ZIG_TRIPLE=" aarch64-linux-gnu"
46+ fi
47+ if [ " $TARGETOS " = " darwin" ]; then
48+ XX_ZIG_TRIPLE=" aarch64-macos-none"
49+ elif [ " $TARGETOS " = " windows" ]; then
50+ XX_ZIG_TRIPLE=" aarch64-windows-gnu"
51+ fi
2752 ;;
2853 " arm" )
2954 if [ -z " $GOARM " ]; then
@@ -39,6 +64,94 @@ case "$TARGETARCH" in
3964 ;;
4065 esac
4166 fi
67+ if [ " $XX_LIBC " = " musl" ]; then
68+ XX_ZIG_TRIPLE=" arm-linux-musleabihf"
69+ else
70+ XX_ZIG_TRIPLE=" arm-linux-gnueabihf"
71+ fi
72+ if [ " $TARGETVARIANT " = " v6" ]; then
73+ if [ " $XX_LIBC " = " musl" ]; then
74+ XX_ZIG_TRIPLE=" arm-linux-musleabi"
75+ else
76+ XX_ZIG_TRIPLE=" arm-linux-gnueabi"
77+ fi
78+ fi
79+ if [ " $TARGETVARIANT " = " v5" ]; then
80+ if [ " $XX_LIBC " = " musl" ]; then
81+ XX_ZIG_TRIPLE=" arm-linux-musleabi"
82+ else
83+ XX_ZIG_TRIPLE=" arm-linux-gnueabi"
84+ fi
85+ fi
86+ if [ " $TARGETOS " = " windows" ]; then
87+ XX_ZIG_TRIPLE=" arm-windows-gnu"
88+ fi
89+ ;;
90+ " riscv64" )
91+ if [ " $XX_LIBC " = " musl" ]; then
92+ XX_ZIG_TRIPLE=" riscv64-linux-musl"
93+ else
94+ XX_ZIG_TRIPLE=" riscv64-linux-gnu"
95+ fi
96+ ;;
97+ " ppc64le" )
98+ if [ " $XX_LIBC " = " musl" ]; then
99+ XX_ZIG_TRIPLE=" powerpc64le-linux-musl"
100+ else
101+ XX_ZIG_TRIPLE=" powerpc64le-linux-gnu"
102+ fi
103+ ;;
104+ " s390x" )
105+ if [ " $XX_LIBC " = " musl" ]; then
106+ XX_ZIG_TRIPLE=" s390x-linux-musl"
107+ else
108+ XX_ZIG_TRIPLE=" s390x-linux-gnu"
109+ fi
110+ ;;
111+ " loong64" )
112+ if [ " $XX_LIBC " = " musl" ]; then
113+ XX_ZIG_TRIPLE=" loongarch64-linux-musl"
114+ else
115+ XX_ZIG_TRIPLE=" loongarch64-linux-gnu"
116+ fi
117+ ;;
118+ " 386" )
119+ if [ " $XX_LIBC " = " musl" ]; then
120+ XX_ZIG_TRIPLE=" x86-linux-musl"
121+ else
122+ XX_ZIG_TRIPLE=" x86-linux-gnu"
123+ fi
124+ if [ " $TARGETOS " = " windows" ]; then
125+ XX_ZIG_TRIPLE=" x86-windows-gnu"
126+ fi
127+ ;;
128+ " mips" )
129+ if [ " $XX_LIBC " = " musl" ]; then
130+ XX_ZIG_TRIPLE=" mips-linux-musl"
131+ else
132+ XX_ZIG_TRIPLE=" mips-linux-gnueabi"
133+ fi
134+ ;;
135+ " mipsle" )
136+ if [ " $XX_LIBC " = " musl" ]; then
137+ XX_ZIG_TRIPLE=" mipsel-linux-musl"
138+ else
139+ XX_ZIG_TRIPLE=" mipsel-linux-gnueabi"
140+ fi
141+ ;;
142+ " mips64" )
143+ if [ " $XX_LIBC " = " musl" ]; then
144+ XX_ZIG_TRIPLE=" mips64-linux-musl"
145+ else
146+ XX_ZIG_TRIPLE=" mips64-linux-gnuabi64"
147+ fi
148+ ;;
149+ " mips64le" )
150+ if [ " $XX_LIBC " = " musl" ]; then
151+ XX_ZIG_TRIPLE=" mips64el-linux-musl"
152+ else
153+ XX_ZIG_TRIPLE=" mips64el-linux-gnuabi64"
154+ fi
42155 ;;
43156esac
44157
@@ -76,26 +189,33 @@ if command -v "$XX_TRIPLE-g++" >/dev/null 2>/dev/null; then
76189 cxx_set=1
77190fi
78191
79- if command -v clang > /dev/null 2> /dev/null; then
80- triple=$( xx-clang --print-target-triple || true)
81- if [ -n " $triple " ]; then
82- export CC=" $triple -clang"
83- export CXX=" $triple -clang++"
192+ if [ " $XX_GO_PREFER_C_COMPILER " = " clang" ]; then
193+ if command -v clang > /dev/null 2> /dev/null; then
194+ triple=$( xx-clang --print-target-triple || true)
195+ if [ -n " $triple " ]; then
196+ export CC=" $triple -clang"
197+ export CXX=" $triple -clang++"
198+ c_set=1
199+ cxx_set=1
200+ fi
201+ fi
202+ if command -v " $XX_TRIPLE -ar" > /dev/null 2> /dev/null; then
203+ export AR=" $XX_TRIPLE -ar"
204+ ar_set=1
205+ fi
206+ if command -v " $XX_TRIPLE -pkg-config" > /dev/null 2> /dev/null; then
207+ export PKG_CONFIG=" $XX_TRIPLE -pkg-config"
208+ pkgconfig_set=1
209+ fi
210+ elif [ " $XX_GO_PREFER_C_COMPILER " = " zig" ]; then
211+ if command -v " zig" > /dev/null 2> /dev/null; then
212+ export CC=" zig cc -target $XX_ZIG_TRIPLE "
84213 c_set=1
214+ export CXX=" zig c++ -target $XX_ZIG_TRIPLE "
85215 cxx_set=1
86216 fi
87217fi
88218
89- if command -v " $XX_TRIPLE -ar" > /dev/null 2> /dev/null; then
90- export AR=" $XX_TRIPLE -ar"
91- ar_set=1
92- fi
93-
94- if command -v " $XX_TRIPLE -pkg-config" > /dev/null 2> /dev/null; then
95- export PKG_CONFIG=" $XX_TRIPLE -pkg-config"
96- pkgconfig_set=1
97- fi
98-
99219if [ -z " $GOBIN " ] && [ -n " $GOPATH " ] && [ -n " $GOARCH " ] && [ -n " $GOOS " ]; then
100220 export PATH=" ${GOPATH} /bin/${GOOS} _${GOARCH} :${PATH} "
101221fi
0 commit comments