api

package
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 16, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ModeOptionName      = "mode"
	ToolchainOptionName = "toolchain"
	ModeDebug           = "debug"
	ModeRelease         = "release"
)

Variables

View Source
var BuiltInGlobalOptions = map[string]*Option{
	ModeOptionName: (&Option{}).
		SetType(OptionChoice).
		SetDefault(ModeDebug).
		SetDescription("Build mode").
		SetValues(ModeDebug, ModeRelease).
		SetGroup("Global"),
}

Functions

func ExpandGlob

func ExpandGlob(pattern string) []string

func GetModeFlags

func GetModeFlags(mode string) (cflags []string, defines []string)

func MergeGlobalOptions

func MergeGlobalOptions(allDefs map[string]map[string]*Option, toolchainList []string) (map[string]*Option, error)

Types

type BuildContext

type BuildContext struct {
	// contains filtered or unexported fields
}

func NewBuildContext

func NewBuildContext(pkgName string, cfgVals map[string]any) *BuildContext

func (*BuildContext) AddInstalls

func (ctx *BuildContext) AddInstalls(src, dest string) *BuildContext

func (*BuildContext) AddPackages

func (ctx *BuildContext) AddPackages(packages ...string) *BuildContext

func (*BuildContext) Bool

func (ctx *BuildContext) Bool(name string) bool

func (*BuildContext) GetInstallFilter

func (ctx *BuildContext) GetInstallFilter() InstallFilterFunc

func (*BuildContext) GetInstallItems

func (ctx *BuildContext) GetInstallItems() []InstallItem

func (*BuildContext) GetPackages

func (ctx *BuildContext) GetPackages() []string

func (*BuildContext) GetTargets

func (ctx *BuildContext) GetTargets() map[string]*Target

func (*BuildContext) GlobalBool

func (ctx *BuildContext) GlobalBool(name string) bool

func (*BuildContext) GlobalString

func (ctx *BuildContext) GlobalString(name string) string

func (*BuildContext) If

func (ctx *BuildContext) If(option string, then ...string) []string

func (*BuildContext) IfGlobal

func (ctx *BuildContext) IfGlobal(option string, then ...string) []string

func (*BuildContext) IfNot

func (ctx *BuildContext) IfNot(option string, then ...string) []string

func (*BuildContext) Int

func (ctx *BuildContext) Int(name string) int

func (*BuildContext) Mode

func (ctx *BuildContext) Mode() string

func (*BuildContext) PackageName

func (ctx *BuildContext) PackageName() string

func (*BuildContext) Select

func (ctx *BuildContext) Select(option string, mapping map[string]string) string

func (*BuildContext) SelectGlobal

func (ctx *BuildContext) SelectGlobal(option string, mapping map[string]string) string

func (*BuildContext) SetGlobalOptions

func (ctx *BuildContext) SetGlobalOptions(options map[string]*Option)

func (*BuildContext) SetGlobalValues

func (ctx *BuildContext) SetGlobalValues(vals map[string]any)

func (*BuildContext) SetInstallFilter

func (ctx *BuildContext) SetInstallFilter(filter InstallFilterFunc) *BuildContext

func (*BuildContext) SetOptions

func (ctx *BuildContext) SetOptions(options map[string]*Option)

func (*BuildContext) String

func (ctx *BuildContext) String(name string) string

func (*BuildContext) Target

func (ctx *BuildContext) Target(name string) *Target

func (*BuildContext) When

func (ctx *BuildContext) When(option string, value any) bool

type BuildFunc

type BuildFunc func(ctx *BuildContext)

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

func (*Builder) GetBuildFuncs

func (b *Builder) GetBuildFuncs() []BuildFunc

func (*Builder) GetConfigFuncs

func (b *Builder) GetConfigFuncs() []ConfigFunc

func (*Builder) GetInstallFuncs

func (b *Builder) GetInstallFuncs() []InstallFunc

func (*Builder) GetRequireFuncs

func (b *Builder) GetRequireFuncs() []RequireFunc

func (*Builder) OnBuild

func (b *Builder) OnBuild(fn BuildFunc)

func (*Builder) OnConfig

func (b *Builder) OnConfig(fn ConfigFunc)

func (*Builder) OnInstall

func (b *Builder) OnInstall(fn InstallFunc)

func (*Builder) OnRequire

func (b *Builder) OnRequire(fn RequireFunc)

type ConfigContext

type ConfigContext struct {
	// contains filtered or unexported fields
}

func NewConfigContext

func NewConfigContext(pkgName string) *ConfigContext

func (*ConfigContext) Bool

func (ctx *ConfigContext) Bool(name string) bool

func (*ConfigContext) GetOptions

func (ctx *ConfigContext) GetOptions() map[string]*Option

func (*ConfigContext) GlobalMode

func (ctx *ConfigContext) GlobalMode() *Option

func (*ConfigContext) GlobalOption

func (ctx *ConfigContext) GlobalOption(name string) *Option

func (*ConfigContext) Int

func (ctx *ConfigContext) Int(name string) int

func (*ConfigContext) Option

func (ctx *ConfigContext) Option(name string) *Option

func (*ConfigContext) PackageName

func (ctx *ConfigContext) PackageName() string

func (*ConfigContext) SetConfigValue

func (ctx *ConfigContext) SetConfigValue(name string, val any)

func (*ConfigContext) String

func (ctx *ConfigContext) String(name string) string

type ConfigFunc

type ConfigFunc func(ctx *ConfigContext)

type InstallContext

type InstallContext struct {
	// contains filtered or unexported fields
}

func NewInstallContext

func NewInstallContext(pkgName string, cfgVals map[string]any) *InstallContext

func (*InstallContext) AddInstalls

func (ctx *InstallContext) AddInstalls(src, dest string)

func (*InstallContext) Bool

func (ctx *InstallContext) Bool(name string) bool

func (*InstallContext) GetInstallFilter

func (ctx *InstallContext) GetInstallFilter() InstallFilterFunc

func (*InstallContext) GetInstallItems

func (ctx *InstallContext) GetInstallItems() []InstallItem

func (*InstallContext) GlobalBool

func (ctx *InstallContext) GlobalBool(name string) bool

func (*InstallContext) GlobalString

func (ctx *InstallContext) GlobalString(name string) string

func (*InstallContext) Mode

func (ctx *InstallContext) Mode() string

func (*InstallContext) PackageName

func (ctx *InstallContext) PackageName() string

func (*InstallContext) Prefix

func (ctx *InstallContext) Prefix() string

func (*InstallContext) PrefixSet

func (ctx *InstallContext) PrefixSet() bool

func (*InstallContext) SetGlobalOptions

func (ctx *InstallContext) SetGlobalOptions(options map[string]*Option)

func (*InstallContext) SetGlobalValues

func (ctx *InstallContext) SetGlobalValues(vals map[string]any)

func (*InstallContext) SetInstallFilter

func (ctx *InstallContext) SetInstallFilter(filter InstallFilterFunc)

func (*InstallContext) SetOptions

func (ctx *InstallContext) SetOptions(options map[string]*Option)

func (*InstallContext) SetPrefix

func (ctx *InstallContext) SetPrefix(prefix string)

func (*InstallContext) String

func (ctx *InstallContext) String(name string) string

type InstallFilterFunc

type InstallFilterFunc func(path string, isTargetOutput bool) bool

type InstallFunc

type InstallFunc func(ctx *InstallContext)

type InstallItem

type InstallItem struct {
	Src  string
	Dest string
}

type InstalledPackage

type InstalledPackage struct {
	Name       string
	Version    string
	InstallDir string
	IncludeDir string
	LibDir     string
	BinDir     string
	Libs       []string
	Deps       []string
}

func NewInstalledPackage

func NewInstalledPackage(name, version, installDir string, libs []string) *InstalledPackage

type OnDemandInstaller added in v0.0.8

type OnDemandInstaller interface {
	EnsureInstalled(name string) *InstalledPackage
}

type Option

type Option struct {
	// contains filtered or unexported fields
}

func (*Option) Default

func (o *Option) Default() any

func (*Option) Description

func (o *Option) Description() string

func (*Option) Group

func (o *Option) Group() string

func (*Option) IsGlobal

func (o *Option) IsGlobal() bool

func (*Option) Name

func (o *Option) Name() string

func (*Option) SetDefault

func (o *Option) SetDefault(v any) *Option

func (*Option) SetDescription

func (o *Option) SetDescription(desc string) *Option

func (*Option) SetGlobal

func (o *Option) SetGlobal() *Option

func (*Option) SetGroup

func (o *Option) SetGroup(group string) *Option

func (*Option) SetShowIf

func (o *Option) SetShowIf(fn func(ctx *ConfigContext) bool) *Option

func (*Option) SetType

func (o *Option) SetType(t OptionType) *Option

func (*Option) SetValues

func (o *Option) SetValues(vals ...string) *Option

func (*Option) ShowIf

func (o *Option) ShowIf() func(ctx *ConfigContext) bool

func (*Option) Type

func (o *Option) Type() OptionType

func (*Option) Values

func (o *Option) Values() []string

type OptionType

type OptionType int
const (
	OptionBool OptionType = iota
	OptionString
	OptionInt
	OptionChoice
)

func (OptionType) String

func (t OptionType) String() string

type Package

type Package struct {
	// contains filtered or unexported fields
}

func NewPackage

func NewPackage() *Package

func (*Package) AddVersion

func (p *Package) AddVersion(version, ref string) *Package

func (*Package) Build

func (p *Package) Build(fn PackageBuildFunc) *Package

func (*Package) DeclarePackages added in v0.0.8

func (p *Package) DeclarePackages(packages ...string) *Package

func (*Package) Description

func (p *Package) Description() string

func (*Package) GetBuildFunc

func (p *Package) GetBuildFunc() PackageBuildFunc

func (*Package) GetDeclaredPackages added in v0.0.8

func (p *Package) GetDeclaredPackages() []string

func (*Package) GetOptions

func (p *Package) GetOptions() map[string]*Option

func (*Package) GetRef

func (p *Package) GetRef(version string) string

func (*Package) GetRequireContext

func (p *Package) GetRequireContext() *PackageRequireContext

func (*Package) Git

func (p *Package) Git() string

func (*Package) Homepage

func (p *Package) Homepage() string

func (*Package) Libs

func (p *Package) Libs() []string

func (*Package) License

func (p *Package) License() string

func (*Package) OnRequire

func (p *Package) OnRequire(fn func(ctx *PackageRequireContext)) *Package

func (*Package) Option

func (p *Package) Option(name string) *Option

func (*Package) SetDescription

func (p *Package) SetDescription(desc string) *Package

func (*Package) SetGit

func (p *Package) SetGit(url string) *Package

func (*Package) SetHomepage

func (p *Package) SetHomepage(url string) *Package

func (*Package) SetLibs

func (p *Package) SetLibs(libs ...string) *Package

func (*Package) SetLicense

func (p *Package) SetLicense(license string) *Package

func (*Package) Versions

func (p *Package) Versions() map[string]string

type PackageBuildFunc

type PackageBuildFunc func(ctx *PackageContext)

type PackageContext

type PackageContext struct {
	// contains filtered or unexported fields
}

func NewPackageContext

func NewPackageContext(pkgName, version string, tc *Toolchain, cfgVals map[string]any) *PackageContext

func (*PackageContext) AR

func (ctx *PackageContext) AR() string

func (*PackageContext) Bool

func (ctx *PackageContext) Bool(name string) bool

func (*PackageContext) BoolStr

func (ctx *PackageContext) BoolStr(name string) string

func (*PackageContext) Build

func (ctx *PackageContext) Build(t *Target) error

func (*PackageContext) BuildDir

func (ctx *PackageContext) BuildDir() string

func (*PackageContext) CC

func (ctx *PackageContext) CC() string

func (*PackageContext) CFlags

func (ctx *PackageContext) CFlags() string

func (*PackageContext) CMakeBuild

func (ctx *PackageContext) CMakeBuild(args ...string) error

func (*PackageContext) CMakeConfigure

func (ctx *PackageContext) CMakeConfigure(extraArgs ...string) error

func (*PackageContext) CMakeInstall

func (ctx *PackageContext) CMakeInstall() error

func (*PackageContext) CXX

func (ctx *PackageContext) CXX() string

func (*PackageContext) CXXFlags

func (ctx *PackageContext) CXXFlags() string

func (*PackageContext) Configure

func (ctx *PackageContext) Configure(extraArgs ...string) error

func (*PackageContext) CopyDir

func (ctx *PackageContext) CopyDir(src, dest string) error

func (*PackageContext) CopyFile

func (ctx *PackageContext) CopyFile(src, dest string) error

func (*PackageContext) CrossTarget

func (ctx *PackageContext) CrossTarget() string

func (*PackageContext) Dep

func (ctx *PackageContext) Dep(name string) *InstalledPackage

func (*PackageContext) Deps

func (ctx *PackageContext) Deps() map[string]*InstalledPackage

func (*PackageContext) Env

func (ctx *PackageContext) Env() map[string]string

func (*PackageContext) GetTargets

func (ctx *PackageContext) GetTargets() map[string]*Target

func (*PackageContext) If

func (ctx *PackageContext) If(option string, then ...string) []string

func (*PackageContext) IfNot

func (ctx *PackageContext) IfNot(option string, then ...string) []string

func (*PackageContext) InstallDir

func (ctx *PackageContext) InstallDir() string

func (*PackageContext) Int

func (ctx *PackageContext) Int(name string) int

func (*PackageContext) LDFlags

func (ctx *PackageContext) LDFlags() string

func (*PackageContext) Make

func (ctx *PackageContext) Make(args ...string) error

func (*PackageContext) MkdirAll

func (ctx *PackageContext) MkdirAll(path string) error

func (*PackageContext) Run

func (ctx *PackageContext) Run(name string, args ...string) error

func (*PackageContext) RunIn

func (ctx *PackageContext) RunIn(dir, name string, args ...string) error

func (*PackageContext) RunWithEnv

func (ctx *PackageContext) RunWithEnv(env map[string]string, name string, args ...string) error

func (*PackageContext) Select

func (ctx *PackageContext) Select(option string, mapping map[string]string) string

func (*PackageContext) SetBuildFunc

func (ctx *PackageContext) SetBuildFunc(fn func(*Target) error)

func (*PackageContext) SetDeps

func (ctx *PackageContext) SetDeps(deps map[string]*InstalledPackage)

func (*PackageContext) SetDirs

func (ctx *PackageContext) SetDirs(sourceDir, buildDir, installDir string)

func (*PackageContext) SetInstaller added in v0.0.8

func (ctx *PackageContext) SetInstaller(installer OnDemandInstaller)

func (*PackageContext) SetOptions

func (ctx *PackageContext) SetOptions(options map[string]*Option)

func (*PackageContext) SourceDir

func (ctx *PackageContext) SourceDir() string

func (*PackageContext) String

func (ctx *PackageContext) String(name string) string

func (*PackageContext) SysRoot

func (ctx *PackageContext) SysRoot() string

func (*PackageContext) Target

func (ctx *PackageContext) Target(name string) *Target

type PackageRequireContext

type PackageRequireContext struct {
	// contains filtered or unexported fields
}

func NewPackageRequireContext

func NewPackageRequireContext() *PackageRequireContext

func (*PackageRequireContext) AddRequires

func (ctx *PackageRequireContext) AddRequires(deps ...string)

func (*PackageRequireContext) GetRequires

func (ctx *PackageRequireContext) GetRequires() []RequireInfo

type RequireContext

type RequireContext struct {
	// contains filtered or unexported fields
}

func NewRequireContext

func NewRequireContext() *RequireContext

func (*RequireContext) AddRequires

func (ctx *RequireContext) AddRequires(deps ...string)

func (*RequireContext) GetRequires

func (ctx *RequireContext) GetRequires() []RequireInfo

type RequireFunc

type RequireFunc func(ctx *RequireContext)

type RequireInfo

type RequireInfo struct {
	Name       string
	Constraint string
}

type Target

type Target struct {
	// contains filtered or unexported fields
}

func (*Target) AddCFlags

func (t *Target) AddCFlags(flags ...any) *Target

func (*Target) AddCxxFlags

func (t *Target) AddCxxFlags(flags ...any) *Target

func (*Target) AddDefines

func (t *Target) AddDefines(defines ...any) *Target

func (*Target) AddDeps

func (t *Target) AddDeps(targets ...string) *Target

func (*Target) AddFiles

func (t *Target) AddFiles(files ...any) *Target

func (*Target) AddIncludes

func (t *Target) AddIncludes(dirs ...any) *Target

func (*Target) AddLdFlags

func (t *Target) AddLdFlags(flags ...any) *Target
func (t *Target) AddLinks(libs ...any) *Target

func (*Target) AddPackages

func (t *Target) AddPackages(packages ...string) *Target

func (*Target) AddPublicIncludes

func (t *Target) AddPublicIncludes(dirs ...any) *Target

func (*Target) CFlags

func (t *Target) CFlags() []string

func (*Target) CxxFlags

func (t *Target) CxxFlags() []string

func (*Target) Defines

func (t *Target) Defines() []string

func (*Target) Deps

func (t *Target) Deps() []string

func (*Target) Files

func (t *Target) Files() []string

func (*Target) Includes

func (t *Target) Includes() []string

func (*Target) InstallDir

func (t *Target) InstallDir() string

func (*Target) IsDefault

func (t *Target) IsDefault() bool

func (*Target) Kind

func (t *Target) Kind() TargetKind

func (*Target) Languages

func (t *Target) Languages() []string

func (*Target) LdFlags

func (t *Target) LdFlags() []string
func (t *Target) Links() []string

func (*Target) Name

func (t *Target) Name() string

func (*Target) NoInstall

func (t *Target) NoInstall() bool

func (*Target) Packages

func (t *Target) Packages() []string

func (*Target) PublicIncludes

func (t *Target) PublicIncludes() []string

func (*Target) RemoveCFlags

func (t *Target) RemoveCFlags(flags ...string) *Target

func (*Target) RemoveCxxFlags

func (t *Target) RemoveCxxFlags(flags ...string) *Target

func (*Target) RemoveDefines

func (t *Target) RemoveDefines(defines ...string) *Target

func (*Target) RemoveDeps

func (t *Target) RemoveDeps(targets ...string) *Target

func (*Target) RemoveIncludes

func (t *Target) RemoveIncludes(dirs ...string) *Target

func (*Target) RemoveLdFlags

func (t *Target) RemoveLdFlags(flags ...string) *Target
func (t *Target) RemoveLinks(libs ...string) *Target

func (*Target) RemovePublicIncludes

func (t *Target) RemovePublicIncludes(dirs ...string) *Target

func (*Target) SetDefault

func (t *Target) SetDefault(isDefault bool) *Target

func (*Target) SetInstall

func (t *Target) SetInstall(install bool) *Target

func (*Target) SetInstallDir

func (t *Target) SetInstallDir(dir string) *Target

func (*Target) SetKind

func (t *Target) SetKind(kind TargetKind) *Target

func (*Target) SetLanguages

func (t *Target) SetLanguages(langs ...string) *Target

type TargetKind

type TargetKind string
const (
	TargetBinary TargetKind = "binary"
	TargetStatic TargetKind = "static"
	TargetShared TargetKind = "shared"
	TargetObject TargetKind = "object"
)

type Toolchain

type Toolchain struct {
	Target   string
	CC       string
	CXX      string
	LD       string
	AR       string
	CFlags   string
	CXXFlags string
	LDFlags  string
	SysRoot  string
}

func NewToolchain

func NewToolchain() *Toolchain

func (*Toolchain) Env

func (t *Toolchain) Env() map[string]string

func (*Toolchain) SetAR

func (t *Toolchain) SetAR(ar string) *Toolchain

func (*Toolchain) SetCC

func (t *Toolchain) SetCC(cc string) *Toolchain

func (*Toolchain) SetCFlags

func (t *Toolchain) SetCFlags(flags string) *Toolchain

func (*Toolchain) SetCXX

func (t *Toolchain) SetCXX(cxx string) *Toolchain

func (*Toolchain) SetCXXFlags

func (t *Toolchain) SetCXXFlags(flags string) *Toolchain

func (*Toolchain) SetLD

func (t *Toolchain) SetLD(ld string) *Toolchain

func (*Toolchain) SetLDFlags

func (t *Toolchain) SetLDFlags(flags string) *Toolchain

func (*Toolchain) SetSysRoot

func (t *Toolchain) SetSysRoot(sysroot string) *Toolchain

func (*Toolchain) SetTarget

func (t *Toolchain) SetTarget(target string) *Toolchain

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL