--- /dev/null
+#ifndef OBJECTFILE_H_
+#define OBJECTFILE_H_
+
+#include "filetarget.h"
+
+class SourceFile;
+
+/**
+Object files are compiled from source files.
+*/
+class ObjectFile: public FileTarget
+{
+private:
+ SourceFile &source;
+ bool used_in_shlib = false;
+
+public:
+ ObjectFile(Builder &, const Component &, SourceFile &);
+private:
+ static Msp::FS::Path generate_target_path(const Component &, const Msp::FS::Path &);
+
+public:
+ const char *get_type() const override { return "ObjectFile"; }
+ SourceFile &get_source() const { return source; }
+
+ void set_used_in_shared_library(bool);
+ bool is_used_in_shared_library() const { return used_in_shlib; }
+
+ void collect_build_info(BuildInfo &) const override;
+
+private:
+ void find_dependencies() override;
+
+ void find_dependencies(FileTarget &, std::vector<FileTarget *> &);
+};
+
+#endif