diff options
Diffstat (limited to 'vendor/gioui.org/app/runmain.go')
-rw-r--r-- | vendor/gioui.org/app/runmain.go | 30 |
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() + }) +} |