doc.go raw

   1  // SPDX-License-Identifier: Apache-2.0
   2  // SPDX-FileCopyrightText: 2022 The Ebitengine Authors
   3  
   4  //go:build !cgo && (darwin || freebsd || linux || netbsd)
   5  
   6  // Package fakecgo implements the Cgo runtime (runtime/cgo) entirely in Go.
   7  // This allows code that calls into C to function properly when CGO_ENABLED=0.
   8  //
   9  // # Goals
  10  //
  11  // fakecgo attempts to replicate the same naming structure as in the runtime.
  12  // For example, functions that have the prefix "gcc_*" are named "go_*".
  13  // This makes it easier to port other GOOSs and GOARCHs as well as to keep
  14  // it in sync with runtime/cgo.
  15  //
  16  // # Support
  17  //
  18  // Currently, fakecgo only supports macOS on amd64 & arm64. It also cannot
  19  // be used with -buildmode=c-archive because that requires special initialization
  20  // that fakecgo does not implement at the moment.
  21  //
  22  // # Usage
  23  //
  24  // Using fakecgo is easy just import _ "github.com/ebitengine/purego" and then
  25  // set the environment variable CGO_ENABLED=0.
  26  // The recommended usage for fakecgo is to prefer using runtime/cgo if possible
  27  // but if cross-compiling or fast build times are important fakecgo is available.
  28  // Purego will pick which ever Cgo runtime is available and prefer the one that
  29  // comes with Go (runtime/cgo).
  30  package fakecgo
  31  
  32  //go:generate go run gen.go
  33