L2OBNAFRGGVOZKKGJWERQNBHQOU4ILZY6Y7WVQKS42DC5OYSCJ7AC
template <typename... Args>
std::function<rule(std::string)>
bind(std::function<rule(std::string, Args...)> x, Args... y) {
return std::bind(x, std::placeholders::_1, y...);
}
std::function<rule(std::string, rules &)>
both(std::function<rule(std::string, rules &)> a,
std::function<rule(std::string, rules &)> b) {
return [&](std::string a2, rules &b2) -> rule {
auto c = a(a2, b2);
auto d = b(a2, b2);
return [&](rules &e,ruleData f) -> std::string {
c(e,f);
d(e,f);
return a2;
};
;
};
}
std::function<rule(std::string)>
both(std::function<rule(std::string)> a,
std::function<rule(std::string)> b) {
return [&](std::string a2) -> rule {
auto c = a(a2);
auto d = b(a2);
return [&](rules &e,ruleData f) -> std::string {
c(e,f);
d(e,f);
return a2;
};
;
};
}
makes, "env", std::string("REALTARGET=") + p.realPath, std::string("SUBTARGET=") + p.realPath.substr(makes.length()), std::string("SELFEXE=/proc/") + std::to_string(getpid()) + "/exe");
makes, "env", std::string("REALTARGET=") + p.realPath,
std::string("SUBTARGET=") + p.realPath.substr(makes.length()),
std::string("SELFEXE=/proc/") + std::to_string(getpid()) + "/exe");
rule make(std::string makes,std::vector<std::string> scriptTargets){
return run(makes,cmd("sh","-c","make -C \"$1\" $SUBTARGET","--",makes),scriptTargets);
rule make(std::string makes, std::vector<std::string> scriptTargets) {
return run(makes, cmd("sh", "-c", "make -C \"$1\" $SUBTARGET", "--", makes),
scriptTargets);
rule redo(std::string makes,std::vector<std::string> scriptTargets){
return run(makes,cmd("sh","-c","redo-ifchange -C \"$1\" $SUBTARGET","--",makes),scriptTargets);
rule redo(std::string makes, std::vector<std::string> scriptTargets) {
return run(makes,
cmd("sh", "-c", "redo-ifchange -C \"$1\" $SUBTARGET", "--", makes),
scriptTargets);
rule pijul_clone(std::string makes,std::string patchRemote){
return run(makes,cmd("pijul","clone",patchRemote,makes));
rule pijul_clone(std::string makes, std::string patchRemote) {
return run(makes, cmd("pijul", "clone", patchRemote, makes));
}
rule subrepo_internal(std::string makes){
return run(makes, cmd("sh","-c","cc -I$CXXBUILDPATH BUILD.cpp -o BUILD;BDIR=\"$(pwd)\" ./BUILD //$SUBTARGET","--"));
rule pijul_repo(std::string makes,std::string patchRemote){
return both(bind(pijul_clone,patchRemote),subrepo_internal)(makes);
}
rule git_clone(std::string makes, std::string remote) {
return run(makes, cmd("git", "clone", remote, makes));
}
rule git_repo(std::string makes,std::string remote){
return both(bind(git_clone,remote),subrepo_internal)(makes);
}