// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build cgo

package main

import (
	"runtime"
	"testing"
)

func canInternalLink() bool {
	switch runtime.GOOS {
	case "dragonfly":
		return false
	case "linux":
		switch runtime.GOARCH {
		case "arm64", "mips64", "mips64le", "mips", "mipsle", "ppc64", "ppc64le":
			return false
		}
	}
	return true
}

func TestInternalLinkerCgoExec(t *testing.T) {
	if !canInternalLink() {
		t.Skip("skipping; internal linking is not supported")
	}
	testGoExec(t, true, false)
}

func TestExternalLinkerCgoExec(t *testing.T) {
	testGoExec(t, true, true)
}

func TestCgoLib(t *testing.T) {
	testGoLib(t, true)
}
