mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-29 19:52:24 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			116 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2018 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.
 | |
| 
 | |
| package sys
 | |
| 
 | |
| // RaceDetectorSupported reports whether goos/goarch supports the race
 | |
| // detector. There is a copy of this function in cmd/dist/test.go.
 | |
| // Race detector only supports 48-bit VMA on arm64. But it will always
 | |
| // return true for arm64, because we don't have VMA size information during
 | |
| // the compile time.
 | |
| func RaceDetectorSupported(goos, goarch string) bool {
 | |
| 	switch goos {
 | |
| 	case "linux":
 | |
| 		return goarch == "amd64" || goarch == "ppc64le" || goarch == "arm64"
 | |
| 	case "darwin", "freebsd", "netbsd", "windows":
 | |
| 		return goarch == "amd64"
 | |
| 	default:
 | |
| 		return false
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // MSanSupported reports whether goos/goarch supports the memory
 | |
| // sanitizer option. There is a copy of this function in cmd/dist/test.go.
 | |
| func MSanSupported(goos, goarch string) bool {
 | |
| 	switch goos {
 | |
| 	case "linux":
 | |
| 		return goarch == "amd64" || goarch == "arm64"
 | |
| 	default:
 | |
| 		return false
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // MustLinkExternal reports whether goos/goarch requires external linking.
 | |
| func MustLinkExternal(goos, goarch string) bool {
 | |
| 	switch goos {
 | |
| 	case "android":
 | |
| 		if goarch != "arm64" {
 | |
| 			return true
 | |
| 		}
 | |
| 	case "darwin":
 | |
| 		if goarch == "arm64" {
 | |
| 			return true
 | |
| 		}
 | |
| 	}
 | |
| 	return false
 | |
| }
 | |
| 
 | |
| // BuildModeSupported reports whether goos/goarch supports the given build mode
 | |
| // using the given compiler.
 | |
| func BuildModeSupported(compiler, buildmode, goos, goarch string) bool {
 | |
| 	if compiler == "gccgo" {
 | |
| 		return true
 | |
| 	}
 | |
| 
 | |
| 	platform := goos + "/" + goarch
 | |
| 
 | |
| 	switch buildmode {
 | |
| 	case "archive":
 | |
| 		return true
 | |
| 
 | |
| 	case "c-archive":
 | |
| 		// TODO(bcmills): This seems dubious.
 | |
| 		// Do we really support c-archive mode on js/wasm‽
 | |
| 		return platform != "linux/ppc64"
 | |
| 
 | |
| 	case "c-shared":
 | |
| 		switch platform {
 | |
| 		case "linux/amd64", "linux/arm", "linux/arm64", "linux/386", "linux/ppc64le", "linux/s390x",
 | |
| 			"android/amd64", "android/arm", "android/arm64", "android/386",
 | |
| 			"freebsd/amd64",
 | |
| 			"darwin/amd64",
 | |
| 			"windows/amd64", "windows/386":
 | |
| 			return true
 | |
| 		}
 | |
| 		return false
 | |
| 
 | |
| 	case "default":
 | |
| 		return true
 | |
| 
 | |
| 	case "exe":
 | |
| 		return true
 | |
| 
 | |
| 	case "pie":
 | |
| 		switch platform {
 | |
| 		case "linux/386", "linux/amd64", "linux/arm", "linux/arm64", "linux/ppc64le", "linux/s390x",
 | |
| 			"android/amd64", "android/arm", "android/arm64", "android/386",
 | |
| 			"freebsd/amd64",
 | |
| 			"darwin/amd64",
 | |
| 			"aix/ppc64",
 | |
| 			"windows/386", "windows/amd64", "windows/arm":
 | |
| 			return true
 | |
| 		}
 | |
| 		return false
 | |
| 
 | |
| 	case "shared":
 | |
| 		switch platform {
 | |
| 		case "linux/386", "linux/amd64", "linux/arm", "linux/arm64", "linux/ppc64le", "linux/s390x":
 | |
| 			return true
 | |
| 		}
 | |
| 		return false
 | |
| 
 | |
| 	case "plugin":
 | |
| 		switch platform {
 | |
| 		case "linux/amd64", "linux/arm", "linux/arm64", "linux/386", "linux/s390x", "linux/ppc64le",
 | |
| 			"android/amd64", "android/arm", "android/arm64", "android/386",
 | |
| 			"darwin/amd64",
 | |
| 			"freebsd/amd64":
 | |
| 			return true
 | |
| 		}
 | |
| 		return false
 | |
| 
 | |
| 	default:
 | |
| 		return false
 | |
| 	}
 | |
| }
 |