From 795d0737fed40d88a7801b451b7750ba90802345 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Thu, 8 Nov 2012 22:47:23 +0000 Subject: Fixed a few condition issues, and the install script is a little better, I think. --- default.bld | 5 ++++- src/buildparser.cpp | 19 ++++++++++++------- src/buildparser.h | 1 + support/vim/syntax/build.vim | 4 ++-- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/default.bld b/default.bld index cfe448e..4c71725 100644 --- a/default.bld +++ b/default.bld @@ -126,9 +126,12 @@ target PREFIX + "/bin/build" { display "install"; tag "install"; - requires "build"; profile "build" { + if !exists("build") then + { + build: "build"; + } execute("install -T -s build ${OUTPUT}"); } } diff --git a/src/buildparser.cpp b/src/buildparser.cpp index f5c3132..cf98090 100644 --- a/src/buildparser.cpp +++ b/src/buildparser.cpp @@ -1,6 +1,7 @@ #include "buildparser.h" #include "ast.h" #include "build.yy.h" +#include "conditionplugger.h" #include "bu/sio.h" using Bu::sio; @@ -9,6 +10,9 @@ BuildParser::BuildParser( Ast &rAst ) : xAst( rAst ) { lIncludePaths.append("./"); + StrList lConds = ConditionPlugger::getInstance().getPluginList(); + for( StrList::iterator i = lConds.begin(); i; i++ ) + hConds.insert( *i, true ); } BuildParser::~BuildParser() @@ -54,13 +58,14 @@ bool BuildParser::isKeyword( const Bu::String &sStr ) bool BuildParser::isCond( const Bu::String &sStr ) { - if( sStr == "filetime" ) - return true; - if( sStr == "always" ) - return true; - if( sStr == "never" ) - return true; - return false; + try + { + return hConds.get( sStr ); + } + catch(...) + { + return false; + } } void BuildParser::include( const Bu::String &sStr, void *scanner, YYLTYPE *loc ) diff --git a/src/buildparser.h b/src/buildparser.h index 7e6e348..53e2a50 100644 --- a/src/buildparser.h +++ b/src/buildparser.h @@ -31,6 +31,7 @@ private: Bu::Stack sFilename; Bu::Stack sLocation; StrList lIncludePaths; + Bu::Hash hConds; }; typedef void * yyscan_t; diff --git a/support/vim/syntax/build.vim b/support/vim/syntax/build.vim index 04d1f90..631db10 100644 --- a/support/vim/syntax/build.vim +++ b/support/vim/syntax/build.vim @@ -14,11 +14,11 @@ endif " Keywords syn keyword Conditional if then else syn keyword Loop for do in -syn keyword Logic not and or +syn keyword Logic and or syn keyword Statement include set unset function target input condition requires rule profile auto config display type default cache global value return output allow action warning error notice local continue break all export tag range open close read write syn keyword Todo TODO FIXME XXX syn keyword Type int string bool float version -syn keyword Constant null true false file never always important normal hidden autogenerated filetime +syn keyword Constant null true false file never always important normal hidden autogenerated fileTime fileExists syn keyword Builtins files dirs matches replace regex execute unlink exists getMakeDeps toString targets fileName dirName unique syn match TargetProcess /[a-zA-Z_][a-zA-Z0-9_]*:/he=e-1 -- cgit v1.2.3