--- /dev/null
+#ifndef BINARY_H_
+#define BINARY_H_
+
+#include "buildinfo.h"
+#include "filetarget.h"
+
+class Component;
+class ObjectFile;
+
+/**
+Produces a binary file, which may be either a standalone executable or a shared
+library.
+*/
+class Binary: public FileTarget
+{
+private:
+ BuildInfo static_binfo;
+
+protected:
+ std::vector<ObjectFile *> objects;
+
+ Binary(Builder &b, const Msp::FS::Path &p): FileTarget(b, p) { }
+ Binary(Builder &, const Component &, const std::string &, const std::vector<ObjectFile *> &);
+
+public:
+ void collect_build_info(BuildInfo &) const override;
+
+protected:
+ void find_dependencies() override;
+private:
+ void find_dependencies(Target *, std::vector<Target *> &, std::vector<Target *> &, std::vector<std::string> &);
+};
+
+#endif