diff options
author | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2016-12-27 02:29:54 +0100 |
---|---|---|
committer | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2016-12-27 02:43:59 +0100 |
commit | 8cac2c3e3a61b64b9a9855dec413239bcec7f9d2 (patch) | |
tree | 6240cdabaa0352f08d62bbfa6de7c53f5a3f1063 /src/blogc-make/rules.h | |
parent | 7bf68b0b617fb3ffa86f38fe06a49786883037f4 (diff) | |
download | blogc-8cac2c3e3a61b64b9a9855dec413239bcec7f9d2.tar.gz blogc-8cac2c3e3a61b64b9a9855dec413239bcec7f9d2.tar.bz2 blogc-8cac2c3e3a61b64b9a9855dec413239bcec7f9d2.zip |
make: implemented a build tool for blogc
so, this is basically what happens when you don't have anything better
to do in the christmas weekend. most of this code was written in the
last 2 or 3 days.
i'd like to thank the chivas brothers, the weather and my psychological
problems for this achievement.
on a serious note, this tool still needs a man page, more tests, and the
aws lambda function should be adapted to use it instead of (or together
with) make/busybox.
also, while talking about aws lambda, this tool can be nicely embedded
into the blogc binary, to produce a single "small" static binary for
usage in lambda ;)
Diffstat (limited to 'src/blogc-make/rules.h')
-rw-r--r-- | src/blogc-make/rules.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/blogc-make/rules.h b/src/blogc-make/rules.h new file mode 100644 index 0000000..b39e7be --- /dev/null +++ b/src/blogc-make/rules.h @@ -0,0 +1,35 @@ +/* + * blogc: A blog compiler. + * Copyright (C) 2016 Rafael G. Martins <rafael@rafaelmartins.eng.br> + * + * This program can be distributed under the terms of the BSD License. + * See the file LICENSE. + */ + +#ifndef _MAKE_RULES_H +#define _MAKE_RULES_H + +#include <stdbool.h> +#include "ctx.h" +#include "../common/utils.h" + +typedef bc_slist_t* (*bm_rule_outputlist_func_t) (bm_ctx_t *ctx); +typedef int (*bm_rule_exec_func_t) (bm_ctx_t *ctx, bc_slist_t *outputs, + bool verbose); + +typedef struct { + const char *name; + const char *help; + bm_rule_outputlist_func_t outputlist_func; + bm_rule_exec_func_t exec_func; + bool generate_files; +} bm_rule_t; + +int bm_rule_executor(bm_ctx_t *ctx, bc_slist_t *rule_list, bool verbose); +int bm_rule_execute(bm_ctx_t *ctx, const bm_rule_t *rule, bool verbose); +bool bm_rule_need_rebuild(bc_slist_t *sources, bm_filectx_t *settings, + bm_filectx_t *template, bm_filectx_t *output, bool only_first_source); +bc_slist_t* bm_rule_list_built_files(bm_ctx_t *ctx); +void bm_rule_print_help(void); + +#endif /* _MAKE_RULES_H */ |