diff --git a/tools/divcc.cpp b/tools/divcc.cpp index 13955d921b968bebcebb8241a6089e51d86cbe0c..beef9d6c5b1ea7458a95be54ad091a989c7019a5 100644 --- a/tools/divcc.cpp +++ b/tools/divcc.cpp @@ -1,4 +1,5 @@ #include <divine/cc/cc1.hpp> +#include <divine/cc/filetype.hpp> #include <divine/cc/options.hpp> #include <divine/rt/dios-cc.hpp> #include <divine/rt/runtime.hpp> @@ -287,7 +288,11 @@ int main( int argc, char **argv ) , "-isystem", joinPath( includeDir, "libunwind/include" ) , "-isystem", includeDir } ); - if ( po.files.size() > 1 && po.outputFile != "" + // count files, i.e. not libraries + auto num_files = std::count_if( po.files.begin(), po.files.end(), + []( cc::FileEntry f ){ return f.is< cc::File >(); } ); + + if ( num_files > 1 && po.outputFile != "" && ( po.preprocessOnly || po.toObjectOnly ) ) { std::cerr << "Cannot specify -o with multiple files" << std::endl;