X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flib%2Fcomponent.cpp;h=f6ef96cf824d4a13008d7f09f63248f6953753cc;hb=d068c62aac1825a0da5619dc4ca50ce3186bc37a;hp=4fddcef79de59a9ca0ca6cf05e8a5b71ec565a79;hpb=c8e829c219c65ff8e93b6c7b66212ff0876441c5;p=builder.git diff --git a/source/lib/component.cpp b/source/lib/component.cpp index 4fddcef..f6ef96c 100644 --- a/source/lib/component.cpp +++ b/source/lib/component.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "builder.h" #include "component.h" #include "sourcepackage.h" @@ -14,12 +15,23 @@ using namespace Msp; void Component::prepare() { for(Package *r: requires) + { r->prepare(); + broken |= r->is_broken(); + } + + if(!problems.empty()) + broken = true; } void Component::create_build_info() { BuildInfo final_build_info; + string build_macro = toupper(name)+"_BUILD"; + for(char &c: build_macro) + if(!isalnum(static_cast(c))) + c = '_'; + final_build_info.defines[build_macro] = "1"; const Package::Requirements &pkg_reqs = package.get_required_packages(); Package::Requirements direct_reqs = requires; @@ -176,5 +188,8 @@ void Component::Loader::require(const string &n) void Component::Loader::source(const string &s) { - obj.sources.push_back((obj.package.get_source_directory()/s).str()); + FS::Path src_path = obj.package.get_source_directory()/s; + if(!FS::exists(src_path)) + throw IO::file_not_found(src_path.str()); + obj.sources.push_back(src_path); }