aboutsummaryrefslogtreecommitdiff
path: root/vendor/gioui.org/app/runmain.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gioui.org/app/runmain.go')
-rw-r--r--vendor/gioui.org/app/runmain.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/vendor/gioui.org/app/runmain.go b/vendor/gioui.org/app/runmain.go
new file mode 100644
index 0000000..a1c1e3d
--- /dev/null
+++ b/vendor/gioui.org/app/runmain.go
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: Unlicense OR MIT
+
+//go:build android || (darwin && ios)
+// +build android darwin,ios
+
+package app
+
+// Android only supports non-Java programs as c-shared libraries.
+// Unfortunately, Go does not run a program's main function in
+// library mode. To make Gio programs simpler and uniform, we'll
+// link to the main function here and call it from Java.
+
+import (
+ "sync"
+ _ "unsafe" // for go:linkname
+)
+
+//go:linkname mainMain main.main
+func mainMain()
+
+var runMainOnce sync.Once
+
+func runMain() {
+ runMainOnce.Do(func() {
+ // Indirect call, since the linker does not know the address of main when
+ // laying down this package.
+ fn := mainMain
+ fn()
+ })
+}