]> git.tdb.fi Git - builder.git/blobdiff - source/lib/objectfile.h
Rearrange sources into subdirectories
[builder.git] / source / lib / objectfile.h
diff --git a/source/lib/objectfile.h b/source/lib/objectfile.h
new file mode 100644 (file)
index 0000000..9e3ff90
--- /dev/null
@@ -0,0 +1,37 @@
+#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