testDWARF(t, "c-archive", true, cc, "CGO_ENABLED=1", "GOOS=darwin", "GOARCH=arm", "GOARM=7")
testDWARF(t, "c-archive", true, cc, "CGO_ENABLED=1", "GOOS=darwin", "GOARCH=arm64")
}
-
-func TestBuildFortvOS(t *testing.T) {
- testenv.MustHaveCGO(t)
- testenv.MustHaveGoBuild(t)
-
- // Only run this on darwin/amd64, where we can cross build for tvOS.
- if runtime.GOARCH != "amd64" || runtime.GOOS != "darwin" {
- t.Skip("skipping on non-darwin/amd64 platform")
- }
- if err := exec.Command("xcrun", "--help").Run(); err != nil {
- t.Skipf("error running xcrun, required for iOS cross build: %v", err)
- }
-
- sdkPath, err := exec.Command("xcrun", "--sdk", "appletvos", "--show-sdk-path").Output()
- if err != nil {
- t.Fatalf("xcrun --sdk appletvos --show-sdk-path failed: %v", err)
- }
- CC := []string{
- "clang",
- "-arch",
- "arm64",
- "-isysroot", strings.TrimSpace(string(sdkPath)),
- "-mtvos-version-min=12.0",
- "-fembed-bitcode",
- "-framework", "CoreFoundation",
- }
- lib := filepath.Join("testdata", "lib.go")
- tmpDir, err := ioutil.TempDir("", "go-link-TestBuildFortvOS")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpDir)
-
- ar := filepath.Join(tmpDir, "lib.a")
- cmd := exec.Command(testenv.GoToolPath(t), "build", "-buildmode=c-archive", "-o", ar, lib)
- cmd.Env = append(os.Environ(),
- "CGO_ENABLED=1",
- "GOOS=darwin",
- "GOARCH=arm64",
- "CC="+strings.Join(CC, " "),
- )
- if out, err := cmd.CombinedOutput(); err != nil {
- t.Fatalf("%v: %v:\n%s", cmd.Args, err, out)
- }
-
- link := exec.Command(CC[0], CC[1:]...)
- link.Args = append(link.Args, ar, filepath.Join("testdata", "main.m"))
- if out, err := link.CombinedOutput(); err != nil {
- t.Fatalf("%v: %v:\n%s", link.Args, err, out)
- }
-}
"os/exec"
"path/filepath"
"regexp"
+ "runtime"
"strings"
"testing"
)
t.Fatalf("want:\n%sgot:\n%s", want, got)
}
}
+
+func TestBuildFortvOS(t *testing.T) {
+ testenv.MustHaveCGO(t)
+ testenv.MustHaveGoBuild(t)
+
+ // Only run this on darwin/amd64, where we can cross build for tvOS.
+ if runtime.GOARCH != "amd64" || runtime.GOOS != "darwin" {
+ t.Skip("skipping on non-darwin/amd64 platform")
+ }
+ if err := exec.Command("xcrun", "--help").Run(); err != nil {
+ t.Skipf("error running xcrun, required for iOS cross build: %v", err)
+ }
+
+ sdkPath, err := exec.Command("xcrun", "--sdk", "appletvos", "--show-sdk-path").Output()
+ if err != nil {
+ t.Skip("failed to locate appletvos SDK, skipping")
+ }
+ CC := []string{
+ "clang",
+ "-arch",
+ "arm64",
+ "-isysroot", strings.TrimSpace(string(sdkPath)),
+ "-mtvos-version-min=12.0",
+ "-fembed-bitcode",
+ "-framework", "CoreFoundation",
+ }
+ lib := filepath.Join("testdata", "lib.go")
+ tmpDir, err := ioutil.TempDir("", "go-link-TestBuildFortvOS")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer os.RemoveAll(tmpDir)
+
+ ar := filepath.Join(tmpDir, "lib.a")
+ cmd := exec.Command(testenv.GoToolPath(t), "build", "-buildmode=c-archive", "-o", ar, lib)
+ cmd.Env = append(os.Environ(),
+ "CGO_ENABLED=1",
+ "GOOS=darwin",
+ "GOARCH=arm64",
+ "CC="+strings.Join(CC, " "),
+ )
+ if out, err := cmd.CombinedOutput(); err != nil {
+ t.Fatalf("%v: %v:\n%s", cmd.Args, err, out)
+ }
+
+ link := exec.Command(CC[0], CC[1:]...)
+ link.Args = append(link.Args, ar, filepath.Join("testdata", "main.m"))
+ if out, err := link.CombinedOutput(); err != nil {
+ t.Fatalf("%v: %v:\n%s", link.Args, err, out)
+ }
+}