X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ffiletarget.h;h=976590f4b67d15a96da867e046d4e9ac62fa3354;hb=69cd5cc73f466181420711fb907979de58687a4c;hp=982b8cb6abce166751d05cd4f5c4b82021503d56;hpb=a40db37e1e681d397d4bfc6c893e15945c533b72;p=builder.git diff --git a/source/filetarget.h b/source/filetarget.h index 982b8cb..976590f 100644 --- a/source/filetarget.h +++ b/source/filetarget.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of builder -Copyright © 2009 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #ifndef FILETARGET_H_ #define FILETARGET_H_ @@ -19,12 +12,43 @@ class FileTarget: public Target { protected: Msp::FS::Path path; + Msp::Time::TimeStamp mtime; unsigned size; + Msp::FS::Path install_location; + std::string install_filename; + bool nested_build_sig; + bool arch_in_build_sig; + + FileTarget(Builder &, const Msp::FS::Path &); + FileTarget(Builder &, const SourcePackage &, const Msp::FS::Path &); +private: + void init(const SourcePackage *); + void stat(); + static std::string generate_name(Builder &, const SourcePackage *, const Msp::FS::Path &); - FileTarget(Builder &, const Package *, const Msp::FS::Path &); public: const Msp::FS::Path &get_path() const { return path; } + const Msp::Time::TimeStamp &get_mtime() const { return mtime; } unsigned get_size() const { return size; } + + bool is_installable() const { return !install_location.empty(); } + const Msp::FS::Path &get_install_location() const { return install_location; } + const std::string &get_install_filename() const { return install_filename; } + + /// Changes the mtime of the target to the current time. + void touch(); + +protected: + virtual void check_rebuild(); + + virtual std::string create_build_signature() const; + + virtual void build(Task &); + + virtual void build_finished(bool); + +public: + virtual void clean(); }; #endif