fix incorrect rule find logic (always prefer "exact" rules)

master
Daniel Kolesa 2015-11-14 01:08:27 +00:00
parent 5461815ae3
commit 3f80d998a2
2 changed files with 5 additions and 9 deletions

10
main.cc
View File

@ -282,14 +282,10 @@ struct ObState {
return error(1, "redefinition of rule '%s'", return error(1, "redefinition of rule '%s'",
target); target);
if (sub.size() < frule->sub.size()) { if (sub.size() < frule->sub.size()) {
if (!frule) *frule = sr;
frule = &sr; rlist.pop();
else {
*frule = sr;
rlist.pop();
}
} }
} } else frule = &sr;
} }
} }
return 0; return 0;

View File

@ -14,12 +14,12 @@ rule obuild $FILES [
shell $CXX $OB_CXXFLAGS -o obuild_ob $sources shell $CXX $OB_CXXFLAGS -o obuild_ob $sources
] ]
rule cubescript_ob.o [@CUBESCRIPT_PATH/cubescript.cc] [ rule %_ob.o %.cc [
echo " CXX" $target echo " CXX" $target
shell $CXX $OB_CXXFLAGS -c -o $target $source shell $CXX $OB_CXXFLAGS -c -o $target $source
] ]
rule %_ob.o %.cc [ rule cubescript_ob.o [@CUBESCRIPT_PATH/cubescript.cc] [
echo " CXX" $target echo " CXX" $target
shell $CXX $OB_CXXFLAGS -c -o $target $source shell $CXX $OB_CXXFLAGS -c -o $target $source
] ]