diff options
author | marha <marha@users.sourceforge.net> | 2011-03-04 11:26:33 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-03-04 11:26:33 +0000 |
commit | dbe1b719f8037dda23279b8bc7d8200578415e15 (patch) | |
tree | 258cd8fc316da25de3df00dc36e00a1f54f0e125 /tools/mhmake/src/util.h | |
parent | d2bdfe9f8d895ac64619f7bc2f7443ce886146e9 (diff) | |
download | vcxsrv-dbe1b719f8037dda23279b8bc7d8200578415e15.tar.gz vcxsrv-dbe1b719f8037dda23279b8bc7d8200578415e15.tar.bz2 vcxsrv-dbe1b719f8037dda23279b8bc7d8200578415e15.zip |
Implement eval sort warning functions (see gnu make manual for description)
Solved errors in if and foreach implementations
Removed message and reparse function (use info and eval instead)
$n can be used to add new line
define can be used to specify multi-line macros
Solved error in argument expansion in call function
Diffstat (limited to 'tools/mhmake/src/util.h')
-rw-r--r-- | tools/mhmake/src/util.h | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/tools/mhmake/src/util.h b/tools/mhmake/src/util.h index f789584a1..68cb032d7 100644 --- a/tools/mhmake/src/util.h +++ b/tools/mhmake/src/util.h @@ -50,7 +50,7 @@ #define PLATFORM "linux"
#endif
-#define MHMAKEVER "2.4.5"
+#define MHMAKEVER "3.0.0"
class makecommand
{
@@ -139,6 +139,46 @@ inline const char *NextCharItem(const char *pTmp,string &Output,char Char) }
///////////////////////////////////////////////////////////////////////////////
+inline const char *SkipMakeExpr(const char *pMacro)
+{
+#ifdef _DEBUG
+ const char *pMacroIn=pMacro;
+#endif
+ char Char=*pMacro++;
+ char EndChar;
+ if (Char=='(')
+ EndChar=')';
+ else if (Char=='{')
+ EndChar='}';
+ else
+ return pMacro;
+ Char=*pMacro++;
+ while (Char!=EndChar)
+ {
+ if (Char=='$')
+ {
+ pMacro=SkipMakeExpr(pMacro);
+ } else if (Char=='(')
+ {
+ pMacro=SkipMakeExpr(pMacro-1);
+ }
+#ifdef _DEBUG
+ if (!*pMacro)
+ throw(string(1,EndChar)+" not found in "+pMacroIn);
+#endif
+ Char=*pMacro++;
+ }
+ return pMacro;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+inline size_t SkipMakeExpr(const string &Expr,size_t i)
+{
+ const char *pTmp=Expr.c_str();
+ return SkipMakeExpr(pTmp+i)-pTmp;
+}
+
+///////////////////////////////////////////////////////////////////////////////
string Substitute(const string &ToSubst,const string &SrcStr,const string &ToStr);
@@ -170,7 +210,7 @@ struct loadedmakefile : public refbase map<string,string> m_CommandLineVars;
vector<string> m_CommandLineTargets;
- refptr<mhmakefileparser> m_pParser;
+ refptr<mhmakefileparser> m_pMakefileParser;
loadedmakefile(const fileinfo *pDir, vector<string> &Args,const string &Makefile=g_EmptyString);
|