gl: provide dummy impl when cgo is disabled

The dummy implementation doesn't do anything (at runtime), but it does
compile (when CGO_ENABLED=0), which e.g. unbreaks some build bots.

The work_other.go file is new, faking what's in work.go.

The changes to the other (existing) files simply re-order the
GOOS-related build constraints to be in a consistent order (alphabetical
order), the same as the existing order in work.go.

Fixes golang/go#32837

Change-Id: I19a196d4307b9ebc2f770fe41e1aec717a699288
Reviewed-on: https://go-review.googlesource.com/c/mobile/+/185017
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/gl/gendebug.go b/gl/gendebug.go
index 842fede..625b626 100644
--- a/gl/gendebug.go
+++ b/gl/gendebug.go
@@ -884,7 +884,7 @@
 // Code generated from gl.go using go generate. DO NOT EDIT.
 // See doc.go for details.
 
-// +build linux darwin windows openbsd
+// +build darwin linux openbsd windows
 // +build gldebug
 
 package gl
diff --git a/gl/gl.go b/gl/gl.go
index bc67a90..95f7468 100644
--- a/gl/gl.go
+++ b/gl/gl.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build linux darwin windows openbsd
+// +build darwin linux openbsd windows
 // +build !gldebug
 
 package gl
diff --git a/gl/gldebug.go b/gl/gldebug.go
index a5ab1b5..1639c1b 100644
--- a/gl/gldebug.go
+++ b/gl/gldebug.go
@@ -5,7 +5,7 @@
 // Code generated from gl.go using go generate. DO NOT EDIT.
 // See doc.go for details.
 
-// +build linux darwin windows openbsd
+// +build darwin linux openbsd windows
 // +build gldebug
 
 package gl
diff --git a/gl/types_debug.go b/gl/types_debug.go
index f5a888e..60c0afc 100644
--- a/gl/types_debug.go
+++ b/gl/types_debug.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build linux darwin windows openbsd
+// +build darwin linux openbsd windows
 // +build gldebug
 
 package gl
diff --git a/gl/types_prod.go b/gl/types_prod.go
index 716116e..91c50f8 100644
--- a/gl/types_prod.go
+++ b/gl/types_prod.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build linux darwin windows openbsd
+// +build darwin linux openbsd windows
 // +build !gldebug
 
 package gl
diff --git a/gl/work_other.go b/gl/work_other.go
new file mode 100644
index 0000000..b0f22fd
--- /dev/null
+++ b/gl/work_other.go
@@ -0,0 +1,36 @@
+// Copyright 2019 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 !darwin,!linux,!openbsd
+// +build !windows
+
+package gl
+
+// This file contains stub implementations of what the other work*.go files
+// provide. These stubs don't do anything, other than compile (e.g. when cgo is
+// disabled).
+
+type context struct{}
+
+func (*context) enqueue(c call) uintptr {
+	panic("unimplemented; GOOS/CGO combination not supported")
+}
+
+func (*context) cString(str string) (uintptr, func()) {
+	panic("unimplemented; GOOS/CGO combination not supported")
+}
+
+func (*context) cStringPtr(str string) (uintptr, func()) {
+	panic("unimplemented; GOOS/CGO combination not supported")
+}
+
+type context3 = context
+
+func NewContext() (Context, Worker) {
+	panic("unimplemented; GOOS/CGO combination not supported")
+}
+
+func Version() string {
+	panic("unimplemented; GOOS/CGO combination not supported")
+}