From 3f80d998a2ce1951b4f9e13dc8ff23a7a4eedbe6 Mon Sep 17 00:00:00 2001 From: q66 Date: Sat, 14 Nov 2015 01:08:27 +0000 Subject: [PATCH] fix incorrect rule find logic (always prefer "exact" rules) --- main.cc | 10 +++------- obuild.cfg | 4 ++-- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/main.cc b/main.cc index 1a6581e..02ec270 100644 --- a/main.cc +++ b/main.cc @@ -282,14 +282,10 @@ struct ObState { return error(1, "redefinition of rule '%s'", target); if (sub.size() < frule->sub.size()) { - if (!frule) - frule = &sr; - else { - *frule = sr; - rlist.pop(); - } + *frule = sr; + rlist.pop(); } - } + } else frule = &sr; } } return 0; diff --git a/obuild.cfg b/obuild.cfg index e5432cb..43875e3 100644 --- a/obuild.cfg +++ b/obuild.cfg @@ -14,12 +14,12 @@ rule obuild $FILES [ shell $CXX $OB_CXXFLAGS -o obuild_ob $sources ] -rule cubescript_ob.o [@CUBESCRIPT_PATH/cubescript.cc] [ +rule %_ob.o %.cc [ echo " CXX" $target shell $CXX $OB_CXXFLAGS -c -o $target $source ] -rule %_ob.o %.cc [ +rule cubescript_ob.o [@CUBESCRIPT_PATH/cubescript.cc] [ echo " CXX" $target shell $CXX $OB_CXXFLAGS -c -o $target $source ]