X-Git-Url: http://git.tdb.fi/?p=builder.git;a=blobdiff_plain;f=source%2Fbootstrap%2Fbootstrap.cpp;fp=source%2Fbootstrap%2Fbootstrap.cpp;h=9374533fef01157347ef7e8586463943bc70ad83;hp=0000000000000000000000000000000000000000;hb=d7c37f4286b68bdbc0e21c1ff67328f1bdc3075a;hpb=ba5078a4334ef419aeb1949190a743a05037750c diff --git a/source/bootstrap/bootstrap.cpp b/source/bootstrap/bootstrap.cpp new file mode 100644 index 0000000..9374533 --- /dev/null +++ b/source/bootstrap/bootstrap.cpp @@ -0,0 +1,47 @@ +#include "bootstrap.h" +#include +#include +#include +#include "plugins/base/baseplugin.h" +#include "plugins/gnu/gnuplugin.h" + +using namespace std; +using namespace Msp; + +Bootstrap::Bootstrap(int argc, char **argv) +{ + string compiler; + string prefix; + + GetOpt getopt; + getopt.add_option("compiler", compiler, GetOpt::REQUIRED_ARG).set_help("Use CMD instead of gcc as compiler.", "CMD"); + getopt.add_option("prefix", prefix, GetOpt::REQUIRED_ARG).set_help("Install things to DIR.", "DIR"); + getopt(argc, argv); + + logger.enable_channel("tasks"); + builder.set_logger(&logger); + builder.load_plugins(); + + if(!prefix.empty()) + builder.set_prefix(FS::getcwd()/prefix); + + builder.load_build_file(FS::getcwd()/"builderrc"); + + builder.add_default_tools(); + if(!compiler.empty()) + builder.get_toolchain().get_tool("CXX").set_command(compiler); +} + +int Bootstrap::main() +{ + builder.load_build_file(FS::getcwd()/"Build"); + + builder.get_package_manager().get_main_package().prepare(); + builder.get_build_graph().prepare(); + + int exit_code = builder.build(); + + builder.save_caches(); + + return exit_code; +}