1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-15 14:54:09 +02:00

Added Additional Lib Paths, renamed Link Dependencies

This commit is contained in:
Brian Fiete 2020-03-30 14:08:51 -07:00
parent 954613fe0c
commit 2f144ee19b
3 changed files with 51 additions and 2 deletions

View file

@ -611,6 +611,35 @@ namespace IDE
CopyLibFiles(targetPath, workspaceOptions, options); CopyLibFiles(targetPath, workspaceOptions, options);
List<String> libPaths = scope .();
defer ClearAndDeleteItems(libPaths);
void AddLibPath(StringView libPathIn, Project project, Project.Options projectOptions)
{
var libPath = new String();
if (gApp.ResolveConfigString(gApp.mPlatformName, workspaceOptions, project, projectOptions, libPathIn, "lib paths", libPath))
{
IDEUtils.FixFilePath(libPath);
libPaths.Add(libPath);
}
}
List<String> depPaths = scope .();
defer ClearAndDeleteItems(depPaths);
void AddDepPath(StringView depPathIn, Project project, Project.Options projectOptions)
{
var depPath = new String();
if (gApp.ResolveConfigString(gApp.mPlatformName, workspaceOptions, project, projectOptions, depPathIn, "dep paths", depPath))
{
IDEUtils.FixFilePath(depPath);
depPaths.Add(depPath);
}
}
for (let libPath in options.mBuildOptions.mLibPaths)
AddLibPath(libPath, project, options);
for (let depPath in options.mBuildOptions.mLinkDependencies)
AddDepPath(depPath, project, options);
List<Project> depProjectList = scope List<Project>(); List<Project> depProjectList = scope List<Project>();
gApp.GetDependentProjectList(project, depProjectList); gApp.GetDependentProjectList(project, depProjectList);
if (depProjectList.Count > 0) if (depProjectList.Count > 0)
@ -656,6 +685,11 @@ namespace IDE
gApp.ResolveConfigString(gApp.mPlatformName, workspaceOptions, depProject, depProjectOptions, depProjectOptions.mBuildOptions.mOtherLinkFlags, "link flags", linkFlags); gApp.ResolveConfigString(gApp.mPlatformName, workspaceOptions, depProject, depProjectOptions, depProjectOptions.mBuildOptions.mOtherLinkFlags, "link flags", linkFlags);
if (!linkFlags.IsWhiteSpace) if (!linkFlags.IsWhiteSpace)
linkLine.Append(linkFlags, " "); linkLine.Append(linkFlags, " ");
for (let libPath in depProjectOptions.mBuildOptions.mLibPaths)
AddLibPath(libPath, depProject, depProjectOptions);
for (let depPath in depProjectOptions.mBuildOptions.mLinkDependencies)
AddDepPath(depPath, depProject, depProjectOptions);
} }
} }
} }
@ -701,6 +735,13 @@ namespace IDE
linkLine.Append(gApp.mInstallDir, @"lib\x64\msvcrt.lib Beef", IDEApp.sRTVersionStr,"MinRT64", minRTModName, ".lib "); linkLine.Append(gApp.mInstallDir, @"lib\x64\msvcrt.lib Beef", IDEApp.sRTVersionStr,"MinRT64", minRTModName, ".lib ");
linkLine.Append("ntdll.lib user32.lib kernel32.lib gdi32.lib winmm.lib shell32.lib ole32.lib rpcrt4.lib version.lib comdlg32.lib chkstk.obj -ignore:4049 -ignore:4217 "); linkLine.Append("ntdll.lib user32.lib kernel32.lib gdi32.lib winmm.lib shell32.lib ole32.lib rpcrt4.lib version.lib comdlg32.lib chkstk.obj -ignore:4049 -ignore:4217 ");
} }
for (var libPath in libPaths)
{
IDEUtils.AppendWithOptionalQuotes(linkLine, libPath);
linkLine.Append(" ");
}
linkLine.Append("-nologo "); linkLine.Append("-nologo ");
//linkLine.Append("-fixed "); //linkLine.Append("-fixed ");
@ -792,7 +833,9 @@ namespace IDE
cacheStr.AppendF("Copyright\t{}\n", project.mWindowsOptions.mCopyright); cacheStr.AppendF("Copyright\t{}\n", project.mWindowsOptions.mCopyright);
cacheStr.AppendF("FileVersion\t{}\n", project.mWindowsOptions.mFileVersion); cacheStr.AppendF("FileVersion\t{}\n", project.mWindowsOptions.mFileVersion);
cacheStr.AppendF("ProductVersion\t{}\n", project.mWindowsOptions.mProductVersion); cacheStr.AppendF("ProductVersion\t{}\n", project.mWindowsOptions.mProductVersion);
for (var linkDep in options.mBuildOptions.mLinkDependencies) for (var linkDep in depPaths)
AddBuildFileDependency(linkDep, true);
for (var linkDep in libPaths)
AddBuildFileDependency(linkDep, true); AddBuildFileDependency(linkDep, true);
String prevCacheStr = scope .(); String prevCacheStr = scope .();

View file

@ -1034,6 +1034,8 @@ namespace IDE
[Reflect] [Reflect]
public BuildCommandTrigger mBuildCommandsOnRun = .Always; public BuildCommandTrigger mBuildCommandsOnRun = .Always;
[Reflect] [Reflect]
public List<String> mLibPaths = new List<String>() ~ DeleteContainerAndItems!(_);
[Reflect]
public List<String> mLinkDependencies = new List<String>() ~ DeleteContainerAndItems!(_); public List<String> mLinkDependencies = new List<String>() ~ DeleteContainerAndItems!(_);
[Reflect] [Reflect]
public List<String> mPreBuildCmds = new List<String>() ~ DeleteContainerAndItems!(_); public List<String> mPreBuildCmds = new List<String>() ~ DeleteContainerAndItems!(_);
@ -1156,6 +1158,7 @@ namespace IDE
Set!(newOptions.mBuildOptions.mTargetName, mBuildOptions.mTargetName); Set!(newOptions.mBuildOptions.mTargetName, mBuildOptions.mTargetName);
Set!(newOptions.mBuildOptions.mOtherLinkFlags, mBuildOptions.mOtherLinkFlags); Set!(newOptions.mBuildOptions.mOtherLinkFlags, mBuildOptions.mOtherLinkFlags);
Set!(newOptions.mBuildOptions.mCLibType, mBuildOptions.mCLibType); Set!(newOptions.mBuildOptions.mCLibType, mBuildOptions.mCLibType);
Set!(newOptions.mBuildOptions.mLibPaths, mBuildOptions.mLibPaths);
Set!(newOptions.mBuildOptions.mLinkDependencies, mBuildOptions.mLinkDependencies); Set!(newOptions.mBuildOptions.mLinkDependencies, mBuildOptions.mLinkDependencies);
Set!(newOptions.mBuildOptions.mPreBuildCmds, mBuildOptions.mPreBuildCmds); Set!(newOptions.mBuildOptions.mPreBuildCmds, mBuildOptions.mPreBuildCmds);
Set!(newOptions.mBuildOptions.mPostBuildCmds, mBuildOptions.mPostBuildCmds); Set!(newOptions.mBuildOptions.mPostBuildCmds, mBuildOptions.mPostBuildCmds);
@ -1545,6 +1548,7 @@ namespace IDE
data.ConditionalAdd("StackSize", options.mBuildOptions.mStackSize, 0); data.ConditionalAdd("StackSize", options.mBuildOptions.mStackSize, 0);
data.ConditionalAdd("BuildCommandsOnCompile", options.mBuildOptions.mBuildCommandsOnCompile, .Always); data.ConditionalAdd("BuildCommandsOnCompile", options.mBuildOptions.mBuildCommandsOnCompile, .Always);
data.ConditionalAdd("BuildCommandsOnRun", options.mBuildOptions.mBuildCommandsOnRun, .Always); data.ConditionalAdd("BuildCommandsOnRun", options.mBuildOptions.mBuildCommandsOnRun, .Always);
WriteStrings("LibPaths", options.mBuildOptions.mLibPaths);
WriteStrings("LinkDependencies", options.mBuildOptions.mLinkDependencies); WriteStrings("LinkDependencies", options.mBuildOptions.mLinkDependencies);
WriteStrings("PreBuildCmds", options.mBuildOptions.mPreBuildCmds); WriteStrings("PreBuildCmds", options.mBuildOptions.mPreBuildCmds);
WriteStrings("PostBuildCmds", options.mBuildOptions.mPostBuildCmds); WriteStrings("PostBuildCmds", options.mBuildOptions.mPostBuildCmds);
@ -1879,6 +1883,7 @@ namespace IDE
options.mBuildOptions.mStackSize = data.GetInt("StackSize"); options.mBuildOptions.mStackSize = data.GetInt("StackSize");
options.mBuildOptions.mBuildCommandsOnCompile = data.GetEnum<BuildCommandTrigger>("BuildCommandsOnCompile", .Always); options.mBuildOptions.mBuildCommandsOnCompile = data.GetEnum<BuildCommandTrigger>("BuildCommandsOnCompile", .Always);
options.mBuildOptions.mBuildCommandsOnRun = data.GetEnum<BuildCommandTrigger>("BuildCommandsOnRun", .Always); options.mBuildOptions.mBuildCommandsOnRun = data.GetEnum<BuildCommandTrigger>("BuildCommandsOnRun", .Always);
ReadStrings("LibPaths", options.mBuildOptions.mLibPaths);
ReadStrings("LinkDependencies", options.mBuildOptions.mLinkDependencies); ReadStrings("LinkDependencies", options.mBuildOptions.mLinkDependencies);
ReadStrings("PreBuildCmds", options.mBuildOptions.mPreBuildCmds); ReadStrings("PreBuildCmds", options.mBuildOptions.mPreBuildCmds);
ReadStrings("PostBuildCmds", options.mBuildOptions.mPostBuildCmds); ReadStrings("PostBuildCmds", options.mBuildOptions.mPostBuildCmds);

View file

@ -680,7 +680,8 @@ namespace IDE.ui
(listViewItem, propEntry) = AddPropertiesItem(root, "C Library", "mBuildOptions.mCLibType"); (listViewItem, propEntry) = AddPropertiesItem(root, "C Library", "mBuildOptions.mCLibType");
(listViewItem, propEntry) = AddPropertiesItem(root, "Beef Library", "mBuildOptions.mBeefLibType"); (listViewItem, propEntry) = AddPropertiesItem(root, "Beef Library", "mBuildOptions.mBeefLibType");
(listViewItem, propEntry) = AddPropertiesItem(root, "Stack Size", "mBuildOptions.mStackSize"); (listViewItem, propEntry) = AddPropertiesItem(root, "Stack Size", "mBuildOptions.mStackSize");
(listViewItem, propEntry) = AddPropertiesItem(root, "Link Dependencies", "mBuildOptions.mLinkDependencies"); (listViewItem, propEntry) = AddPropertiesItem(root, "Additional Lib Paths", "mBuildOptions.mLibPaths");
(listViewItem, propEntry) = AddPropertiesItem(root, "Rebuild Dependencies", "mBuildOptions.mLinkDependencies");
(listViewItem, propEntry) = AddPropertiesItem(root, "Prebuild Commands", "mBuildOptions.mPreBuildCmds"); (listViewItem, propEntry) = AddPropertiesItem(root, "Prebuild Commands", "mBuildOptions.mPreBuildCmds");
(listViewItem, propEntry) = AddPropertiesItem(root, "Postbuild Commands", "mBuildOptions.mPostBuildCmds"); (listViewItem, propEntry) = AddPropertiesItem(root, "Postbuild Commands", "mBuildOptions.mPostBuildCmds");
(listViewItem, propEntry) = AddPropertiesItem(root, "Clean Commands", "mBuildOptions.mCleanCmds"); (listViewItem, propEntry) = AddPropertiesItem(root, "Clean Commands", "mBuildOptions.mCleanCmds");