diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/mhmake/src/fileinfo.h | 7 | ||||
-rw-r--r-- | tools/mhmake/src/rule.cpp | 11 | ||||
-rw-r--r-- | tools/mhmake/src/rule.h | 1 | ||||
-rw-r--r-- | tools/mhmake/src/util.h | 2 |
4 files changed, 19 insertions, 2 deletions
diff --git a/tools/mhmake/src/fileinfo.h b/tools/mhmake/src/fileinfo.h index 16ca414e2..6c9800f38 100644 --- a/tools/mhmake/src/fileinfo.h +++ b/tools/mhmake/src/fileinfo.h @@ -351,9 +351,14 @@ public: {
return (m_BuildStatus&2)==2;
}
- void SetBuilding(void)
+ void SetBuilding(bool Others=true)
{
m_BuildStatus|=2;
+ /* Check if there are targets build by the rule attached to this target, if so set them also to building */
+ if (Others && m_pRule)
+ {
+ m_pRule->SetTargetsIsBuilding(this);
+ }
}
void ClearBuilding(void)
{
diff --git a/tools/mhmake/src/rule.cpp b/tools/mhmake/src/rule.cpp index f9485b560..aa2ce1a13 100644 --- a/tools/mhmake/src/rule.cpp +++ b/tools/mhmake/src/rule.cpp @@ -193,6 +193,17 @@ void rule::SetTargetsIsBuild(uint32 Md5_32) It++;
}
}
+///////////////////////////////////////////////////////////////////////////////
+void rule::SetTargetsIsBuilding(const fileinfo *pSrc)
+{
+ vector< fileinfo* >::iterator It=m_Targets.begin();
+ while (It!=m_Targets.end())
+ {
+ if ((*It)!=pSrc)
+ (*It)->SetBuilding(false);
+ It++;
+ }
+}
#ifdef _DEBUG
diff --git a/tools/mhmake/src/rule.h b/tools/mhmake/src/rule.h index c8235a8bc..bfc00bb15 100644 --- a/tools/mhmake/src/rule.h +++ b/tools/mhmake/src/rule.h @@ -72,6 +72,7 @@ public: m_Targets.push_back(pTarget);
}
void SetTargetsIsBuild(uint32 Md5_32);
+ void SetTargetsIsBuilding(const fileinfo *pSrc);
};
class IMPLICITRULE
diff --git a/tools/mhmake/src/util.h b/tools/mhmake/src/util.h index 1d3cfbb66..f29b9cbcf 100644 --- a/tools/mhmake/src/util.h +++ b/tools/mhmake/src/util.h @@ -50,7 +50,7 @@ #define PLATFORM "linux"
#endif
-#define MHMAKEVER "2.0.4"
+#define MHMAKEVER "2.0.5"
class makecommand
{
|