aboutsummaryrefslogtreecommitdiff
path: root/tools/mhmake
diff options
context:
space:
mode:
Diffstat (limited to 'tools/mhmake')
-rw-r--r--tools/mhmake/src/fileinfo.h7
-rw-r--r--tools/mhmake/src/rule.cpp11
-rw-r--r--tools/mhmake/src/rule.h1
-rw-r--r--tools/mhmake/src/util.h2
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
{