]> git.tdb.fi Git - builder.git/blobdiff - plugins/base/baseplugin.cpp
Convert builtin tools into a plugin
[builder.git] / plugins / base / baseplugin.cpp
diff --git a/plugins/base/baseplugin.cpp b/plugins/base/baseplugin.cpp
new file mode 100644 (file)
index 0000000..3646d10
--- /dev/null
@@ -0,0 +1,39 @@
+#include <msp/builder/builder.h>
+#include <msp/builder/tool.h>
+#include "builtinplugin.h"
+#include "builtintools.h"
+#include "compilecommandsjson.h"
+#include "pkgconfigfile.h"
+#include "vcxprojectfile.h"
+#include "vssolutionfile.h"
+
+void BuiltinPlugin::add_tools(Toolchain &toolchain, const Architecture &) const
+{
+       toolchain.add_toolchain(new BuiltinTools(builder));
+}
+
+void BuiltinPlugin::create_targets(SourcePackage &spkg) const
+{
+       const Architecture &native_arch = builder.get_native_arch();
+
+       if(!spkg.get_exported_build_info().libs.empty() && native_arch.get_system()=="linux")
+       {
+               PkgConfigFile *pc = new PkgConfigFile(builder, spkg);
+               builder.get_build_graph().get_target("install")->add_dependency(*builder.get_toolchain().get_tool("CP").create_target(*pc));
+       }
+
+       if(native_arch.get_system()=="windows")
+       {
+               new VcxProjectFile(builder, spkg);
+               new VsSolutionFile(builder, spkg);
+       }
+
+       new CompileCommandsJson(builder, spkg);
+}
+
+
+extern "C"
+Plugin *create_plugin(Builder &builder)
+{
+       return new BuiltinPlugin(builder);
+}