#ifndef OBJECTFILE_H_
#define OBJECTFILE_H_
-#include "target.h"
+#include "filetarget.h"
-class Component;
class SourceFile;
-class ObjectFile: public Target
+/**
+Object files are compiled from source files.
+*/
+class ObjectFile: public FileTarget
{
+private:
+ SourceFile &source;
+ bool used_in_shlib;
+
public:
ObjectFile(Builder &, const Component &, SourceFile &);
- const char *get_type() const { return "ObjectFile"; }
- void find_depends() { }
- Action *build();
private:
- const Component ∁
-
- static std::string generate_target_name(const Component &, const std::string &);
+ static Msp::FS::Path generate_target_path(const Component &, const Msp::FS::Path &);
+
+public:
+ virtual const char *get_type() const { 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; }
+
+ virtual void collect_build_info(BuildInfo &) const;
+
+private:
+ virtual void find_dependencies();
+
+ void find_dependencies(FileTarget *);
};
#endif