1 // SPDX-License-Identifier: Unlicense OR MIT
2 3 // +build android darwin,ios
4 5 package wm
6 7 // Android only supports non-Java programs as c-shared libraries.
8 // Unfortunately, Go does not run a program's main function in
9 // library mode. To make Gio programs simpler and uniform, we'll
10 // link to the main function here and call it from Java.
11 12 import (
13 "sync"
14 _ "unsafe" // for go:linkname
15 )
16 17 //go:linkname mainMain main.main
18 func mainMain()
19 20 var runMainOnce sync.Once
21 22 func runMain() {
23 runMainOnce.Do(func() {
24 // Indirect call, since the linker does not know the address of main when
25 // laying down this package.
26 fn := mainMain
27 fn()
28 })
29 }
30