aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/testdata/script/cgo_path_space.txt
blob: 3ae8dce3dc240c24135fa1ad4747f9a883ceee91 (plain)
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
# Check that if the PATH directory containing the C compiler has a space,
# we can still use that compiler with cgo.
# Verifies #43808.
[!cgo] skip

# Set CC explicitly to something that requires a PATH lookup.
# Normally, the default is gcc or clang, but if CC was set during make.bash,
# that becomes the default.
[exec:clang] env CC=clang
[exec:gcc] env CC=gcc
[!exec:clang] [!exec:gcc] skip 'Unknown C compiler'

[!windows] chmod 0755 $WORK/'program files'/clang
[!windows] chmod 0755 $WORK/'program files'/gcc
[!windows] env PATH=$WORK/'program files':$PATH
[windows] env PATH=$WORK\'program files';%PATH%

! exists $WORK/log.txt
! go build -x
exists $WORK/log.txt
rm $WORK/log.txt

# TODO(#41400, #43078): when CC is set explicitly, it should be allowed to
# contain spaces separating arguments, and it should be possible to quote
# arguments with spaces (including the path), as in CGO_CFLAGS and other
# variables. For now, this doesn't work.
[!windows] env CC=$WORK/'program files'/gcc
[windows] env CC=$WORK\'program files'\gcc.bat
! go build -x
! exists $WORK/log.txt

-- go.mod --
module m

-- m.go --
package m

// #define X 1
import "C"

-- $WORK/program files/gcc --
#!/bin/sh

echo ok >$WORK/log.txt
-- $WORK/program files/clang --
#!/bin/sh

echo ok >$WORK/log.txt
-- $WORK/program files/gcc.bat --
echo ok >%WORK%\log.txt
-- $WORK/program files/clang.bat --
echo ok >%WORK%\log.txt