X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdatatransform.cpp;h=e45c80a69085f4e68d51dffc8005476d7ecf206c;hb=41fdd69eb3f7c28ba91be3699d89ba1c2328cfdf;hp=67b892ede81de5f8ce1fda4db26dfff666870a35;hpb=d334fc1d04b7f83c7a2e9f16439fec884f4de471;p=builder.git diff --git a/source/datatransform.cpp b/source/datatransform.cpp index 67b892e..e45c80a 100644 --- a/source/datatransform.cpp +++ b/source/datatransform.cpp @@ -28,15 +28,23 @@ void DataTransform::find_dependencies() else { builder.get_logger().log("files", format("Reading imports from %s", path.str())); - - list dir_files = list_files(FS::dirname(path)); IO::File in(path.str()); DataFile::Parser parser(in, path.str()); + + list dir_files; while(!in.eof()) { DataFile::Statement st = parser.parse(); if(st.keyword=="for_each") { + // There's bound to be at least one file: the transform itself + if(dir_files.empty()) + { + FS::Path dir = FS::dirname(path); + builder.get_logger().log("files", format("Traversing %s", dir.str())); + dir_files = list_files(dir); + } + for(DataFile::Statement::Arguments::const_iterator i=st.args.begin(); i!=st.args.end(); ++i) { Regex re(i->get()); @@ -56,8 +64,8 @@ void DataTransform::find_dependencies() { FS::Path file_path = FS::dirname(path)/ *i; if(Target *tgt = builder.get_vfs().get_target(file_path)) - add_dependency(*tgt); + add_transitive_dependency(*tgt); else - add_dependency(*new File(builder, *package, file_path)); + add_transitive_dependency(*new File(builder, *package, file_path)); } }