X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ffiletarget.h;h=da165d0d39d1ebed128c83c0d31ce4f2a184139c;hb=40ab4f61eaf7fc14fc6d1c2ea5eecee21882893a;hp=32092d0db05efd1bc428489684597db474215c9e;hpb=6026d07fec5132c04fa94d61cef2fd59cffeb4b8;p=builder.git diff --git a/source/filetarget.h b/source/filetarget.h index 32092d0..da165d0 100644 --- a/source/filetarget.h +++ b/source/filetarget.h @@ -13,23 +13,42 @@ class FileTarget: public Target protected: Msp::FS::Path path; Msp::Time::TimeStamp mtime; - unsigned size; + unsigned size = 0; + Msp::FS::Path install_location; + std::string install_filename; + bool nested_build_sig = false; + bool arch_in_build_sig = false; + + FileTarget(Builder &b, const Msp::FS::Path &a): FileTarget(b, 0, a) { } + FileTarget(Builder &b, const SourcePackage &p, const Msp::FS::Path &a): FileTarget(b, &p, a) { } +private: + FileTarget(Builder &, const SourcePackage *, const Msp::FS::Path &); + 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; } - /** - Changes the mtime of the target to the current time. - */ + 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(); -private: - static std::string generate_name(const Package *, const Msp::FS::Path &); + void check_rebuild() override; + + virtual std::string create_build_signature() const; + + void build(Task &) override; + + void build_finished(bool) override; + +public: + void clean() override; }; #endif