1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-12 05:14:10 +02:00

Fixed dep-of-dep checks

This commit is contained in:
Brian Fiete 2020-05-12 06:44:09 -07:00
parent 962ebba6e9
commit 0a7e0e01e6
3 changed files with 83 additions and 81 deletions

View file

@ -58,6 +58,9 @@ namespace IDE
if (trigger == .Never) if (trigger == .Never)
return .NoCommands; return .NoCommands;
List<Project> depProjectList = scope .();
gApp.GetDependentProjectList(project, depProjectList);
if ((trigger == .IfFilesChanged) && (!project.mForceCustomCommands)) if ((trigger == .IfFilesChanged) && (!project.mForceCustomCommands))
{ {
int64 highestDateTime = 0; int64 highestDateTime = 0;
@ -66,7 +69,7 @@ namespace IDE
bool forceRebuild = false; bool forceRebuild = false;
for (var depName in project.mDependencies) for (var depName in depProjectList)
{ {
var depProject = gApp.mWorkspace.FindProject(depName.mProjectName); var depProject = gApp.mWorkspace.FindProject(depName.mProjectName);
if (depProject != null) if (depProject != null)
@ -341,15 +344,7 @@ namespace IDE
gApp.GetDependentProjectList(project, depProjectList); gApp.GetDependentProjectList(project, depProjectList);
if (depProjectList.Count > 0) if (depProjectList.Count > 0)
{ {
for (var dep in project.mDependencies) for (var depProject in depProjectList)
{
var depProject = gApp.mWorkspace.FindProject(dep.mProjectName);
if (depProject == null)
{
gApp.OutputLine("Failed to locate dependent library: {0}", dep.mProjectName);
return false;
}
else
{ {
/*if (depProject.mNeedsTargetRebuild) /*if (depProject.mNeedsTargetRebuild)
project.mNeedsTargetRebuild = true;*/ project.mNeedsTargetRebuild = true;*/
@ -368,7 +363,6 @@ namespace IDE
} }
} }
/*String depLibTargetPath = scope String(); /*String depLibTargetPath = scope String();
ResolveConfigString(depProject, depOptions, "$(TargetPath)", error, depLibTargetPath); ResolveConfigString(depProject, depOptions, "$(TargetPath)", error, depLibTargetPath);
IDEUtils.FixFilePath(depLibTargetPath); IDEUtils.FixFilePath(depLibTargetPath);
@ -382,7 +376,6 @@ namespace IDE
linkLine.Append(" ");*/ linkLine.Append(" ");*/
} }
} }
}
#if BF_PLATFORM_WINDOWS #if BF_PLATFORM_WINDOWS
String gccExePath = "c:/mingw/bin/g++.exe"; String gccExePath = "c:/mingw/bin/g++.exe";
@ -645,15 +638,7 @@ namespace IDE
gApp.GetDependentProjectList(project, depProjectList); gApp.GetDependentProjectList(project, depProjectList);
if (depProjectList.Count > 0) if (depProjectList.Count > 0)
{ {
for (var dep in project.mDependencies) for (var depProject in depProjectList)
{
var depProject = gApp.mWorkspace.FindProject(dep.mProjectName);
if (depProject == null)
{
gApp.OutputLine("Failed to locate dependent library: {0}", dep.mProjectName);
return false;
}
else
{ {
var depOptions = gApp.GetCurProjectOptions(depProject); var depOptions = gApp.GetCurProjectOptions(depProject);
if (depOptions != null) if (depOptions != null)
@ -694,7 +679,6 @@ namespace IDE
} }
} }
} }
}
/*if (File.Delete(targetPath).Failed(true)) /*if (File.Delete(targetPath).Failed(true))
{ {

View file

@ -2217,14 +2217,27 @@ namespace IDE
public bool HasDependency(String projectName) public bool HasDependency(String projectName)
{ {
for (var dependency in mDependencies) HashSet<Project> checkedProject = scope .();
bool CheckDependency(Project project)
{
if (!checkedProject.Add(project))
return false;
for (var dependency in project.mDependencies)
{ {
if (dependency.mProjectName == projectName) if (dependency.mProjectName == projectName)
return true; return true;
let depProject = gApp.mWorkspace.FindProject(dependency.mProjectName);
if ((depProject != null) && (CheckDependency(depProject)))
return true;
} }
return false; return false;
} }
return CheckDependency(this);
}
public void SetupDefault(Options options, String configName, String platformName) public void SetupDefault(Options options, String configName, String platformName)
{ {
bool isRelease = configName.Contains("Release"); bool isRelease = configName.Contains("Release");

View file

@ -1242,8 +1242,13 @@ namespace IDE
if (depProject == null) if (depProject == null)
return; return;
List<Project> depProjectList = scope .();
gApp.GetDependentProjectList(depProject, depProjectList);
for (let checkProject in gApp.mWorkspace.mProjects) for (let checkProject in gApp.mWorkspace.mProjects)
{ {
if (checkProject.mGeneralOptions.mTargetType == .BeefLib)
continue;
if (checkProject.HasDependency(depProject.mProjectName)) if (checkProject.HasDependency(depProject.mProjectName))
{ {
List<String> targetPaths = scope .(); List<String> targetPaths = scope .();