53 void call(std::vector<std::string>) {
72 void call(std::vector<std::string>) {
74 std::string(
" by WolodiaM"));
88 void call(std::vector<std::string>) {
98 void call(std::vector<std::string>) {
108 void call(std::vector<std::string>) {
118 void call(std::vector<std::string>) {
197 Registry::tasks.push_back_check(task->
self_name(), task);
198 }
catch (std::exception& e) {
204 Registry::task_executed.push_back(task->
self_name(),
false);
208 auto check = Registry::task_executed.get_ptr(name);
210 if (check != NULL && check->data ==
false) {
212 auto mod = Registry::tasks.get_ptr(name);
214 for (std::string s : mod->data->self_required()) {
215 Registry::CallTask(s, args);
218 mod->data->call(args);
229 Registry::targets.push_back_check(target->
get_id(), target);
230 }
catch (std::exception& e) {
237 Registry::target_executed.push_back(target->
get_id(),
false);
243 auto check = Registry::target_executed.get_ptr(name);
244 if (check != NULL && check->data ==
false) {
246 auto elem = Registry::targets.get_ptr(name);
255 auto elem = Registry::targets.get_ptr(name);
264 return Registry::targets;
268 Registry::RegisterTask(func);
271 Registry::keywords.push_back_check(key, func->
self_name());
272 }
catch (std::exception& e) {
278 return Registry::keywords;
294 for (
unsigned int i = 0; i < Registry::targets.size(); i++) {
295 auto elem = Registry::targets.at(i);
296 auto check = Registry::target_executed.get_ptr(elem.key);
297 if (check != NULL && check->data ==
false) {
299 auto ptr = elem.data;
301 if (ptr->get_id() != std::string(
"cbuild_rebuild_build_script")) {
302 ptr->load_project_deps(path);
303 ptr->call(args, force);
318 auto elem = Registry::generators.get_ptr(
id);
326 Registry::generators.push_back_check(
id, gen);
327 }
catch (std::exception& e) {
332 std::vector<std::string> ret;
334 ret.push_back(gen.key);
339 std::vector<std::string> ret;
341 ret.push_back(tg.key);
346 std::vector<std::string> ret;
348 ret.push_back(ts.key);
#define CBUILD_COMPILATION_DATE
#define CBUILD_VERSION_STR
#define CBUILD_COPY_CACHE_DIR
tmp dir in cache dir
#define CBUILD_SCRIPTS_DIR
Scripts dir of CBuild.
#define CBUILD_CACHE_DIR
Cache directory of CBuild.
#define CBUILD_COMPILATION_TIME
#define CBUILD_COMPILER_VERSION
Data about CBuild compilation.
#define CBUILD_BUILD_DIR
Build directory of CBuild.
Help print routine for CBuild.
Generator for compile_command.json.
void post_link() override
After linking.
void call(std::vector< std::string >)
Executed on task call.
void call(std::vector< std::string >)
Executed on task call.
void call(std::vector< std::string >)
Executed on task call.
void call(std::vector< std::string >)
Executed on task call.
Task, can be runned from shell or code.
std::string self_name()
Return task name.
void call(std::vector< std::string >)
Executed on task call.
Generates compile_commands.json.
Generate Makefile from task/target, works as command logger.
Simple map implementation with some stack operation added.
g++ toolchain implementation
Base class for generator of some output from command sequence.
Custom implementation of map datatype.
CBuild::TaskList tasklist
void SetVersionHandler(void(*handler)())
Set handler to add output to --version
lib::map< std::string, CBuild::generator_base * > generators
std::vector< std::string > GetToolchainsList()
Get list of registered toolchains.
CBuild::Toolchain * GetToolchain(std::string name, bool force=false)
Get the registered toolchain.
void RegisterTask(CBuild::Task *task)
Register new task.
void CallTask(std::string name, std::vector< std::string > args)
Run tasks.
void SetRebuildName(std::string _name)
Set the rebuilt CBuild executable name.
void AddLinkArg(std::string arg)
Add linker arg for CBuild rebuild.
lib::map< std::string, std::string > GetKeywordsList()
Get list of all user registered keywords.
lib::map< std::string, bool > task_executed
lib::map< std::string, CBuild::Toolchain * > GetTargets()
Get list of all targets.
lib::map< std::string, CBuild::Task * > tasks
void RegisterGenerator(CBuild::generator_base *gen, std::string id)
Register generator for id.
CBuild::Toolchain * GetRebuildTarget()
Get target used for rebuild of CBuild script.
lib::map< std::string, std::string > keywords
void init()
Internal init.
std::vector< std::string > GetGeneratorsList()
Get list of registered generators.
CBuild::generator_base * GetGenerator(std::string id)
Get generator for specified id.
lib::map< std::string, CBuild::Toolchain * > targets
void AddCompileArg(std::string arg)
Add compiler argument for CBuild rebuild.
CBuild::GeneratorList generatorlist
void RegisterKeyword(std::string key, CBuild::Task *func)
Register new keyord for parsing, ! Dangerous, owerwriting existing keywords can lead to undefined beh...
CBuild::makefile_out makefileo
std::vector< std::string > GetTasksList()
Get list of registered tasks.
CBuild::CBuildRebuildScript rebuild_script
lib::map< std::string, bool > target_executed
void RegisterTarget(CBuild::Toolchain *target)
Register new target for build.
void ToolchainAll(bool force, std::string path, std::vector< std::string > *args)
Call and execute all toolchains.
CBuild::ToolchainList toolchainlist
bool exists(std::string path)
Check if file exists.
bool create(std::vector< std::string > paths, CBuild::fs::type what)
Create element.
@ DIRECTORY
Standard directory.
Filebuffer for CBuild ecosystem.
void print(std::string msg, color fg=CBuild::WHITE)
Print colored text to STDOUT.
ARG_TYPE(*)(lib::map< std::string, std::string > *, char **, int, int, CBuild::RType *) handler
Handler for specific argument.
int system(std::string cmd)
Call stdlib system() and print cmd to shell.
void print_full(std::string msg, color fg=CBuild::WHITE)
Print colored text to STDOUT if verbose flag is set.
Custom print that support color codes.
Command for compile_commands.json.