module battery.backend.builder

Code Map

module battery.backend.builder;


class Builder
{
public:
	alias ArgsKind = ArgsGenerator.Kind;


public:
	mDrv: Driver;
	mega: uni.Target;
	ins: uni.Instance;
	voltaPrint: string;
	voltaBin: uni.Target;


public:
	this(drv: Driver) { }
	fn build(config: Configuration, boot: Configuration, libs: Lib[], exes: Exe[], verbose: bool) { }
	fn processProject(gen: ArgsGenerator, b: Project) Store { }
	fn processLibrary(gen: ArgsGenerator, lib: Lib) Store { }
	fn processExe(gen: ArgsGenerator, exe: Exe) Store { }
	fn makeTargetVoltLibraryGeneric(gen: ArgsGenerator, lib: Lib, name: string, flags: ArgsKind) uni.Target { }
	fn makeTargetVoltLibraryBc(gen: ArgsGenerator, lib: Lib) uni.Target { }
	fn makeTargetVoltLibraryAr(gen: ArgsGenerator, lib: Lib) uni.Target { }
	fn makeTargetVoltLibraryO(gen: ArgsGenerator, lib: Lib) uni.Target { }
	fn makeTargetExeGeneric(gen: ArgsGenerator, exe: Exe, name: string, flags: ArgsKind) uni.Target { }
	fn makeTargetExeBc(gen: ArgsGenerator, exe: Exe) uni.Target { }
	fn makeTargetExeAr(gen: ArgsGenerator, exe: Exe) uni.Target { }
	fn makeTargetExeO(gen: ArgsGenerator, exe: Exe) uni.Target { }
	fn makeTargetExe(gen: ArgsGenerator, exe: Exe) uni.Target { }
	fn makeTargetC(gen: ArgsGenerator, src: string) uni.Target { }
	fn makeTargetS(gen: ArgsGenerator, src: string) uni.Target { }
	fn makeTargetAsm(gen: ArgsGenerator, src: string) uni.Target { }
	fn makeHelperBitcodeToObj(gen: ArgsGenerator, bc: uni.Target) uni.Target { }
	fn makeTargetVolted(gen: ArgsGenerator, exe: Exe) uni.Target { }


protected:
	//! Store of objects each Lib/Exe produces.
	mStore: Store[string];
	mGen: ArgsGenerator;
}

class Store
{
public:
	bcs: uni.Target[];
	objs: uni.Target[];


public:
	this() { }
}