1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-07-04 15:26:00 +02:00

Removed "Dynamic Library" target type, replaced by Build Kind

This commit is contained in:
Brian Fiete 2021-06-28 09:44:47 -07:00
parent 1c1cb1ac49
commit 7ae8599916
8 changed files with 163 additions and 98 deletions

View file

@ -296,7 +296,7 @@ namespace IDE
bool isTest = options.mBuildOptions.mBuildKind == .Test;
bool isExe = ((project.mGeneralOptions.mTargetType != Project.TargetType.BeefLib) && (project.mGeneralOptions.mTargetType != Project.TargetType.BeefTest)) || (isTest);
bool isDynLib = project.mGeneralOptions.mTargetType == Project.TargetType.BeefDynLib;
bool isDynLib = (project.mGeneralOptions.mTargetType == Project.TargetType.BeefLib) && (options.mBuildOptions.mBuildKind == .DynamicLib);
if (options.mBuildOptions.mBuildKind == .StaticLib)
isExe = false;
@ -525,7 +525,7 @@ namespace IDE
bool isTest = options.mBuildOptions.mBuildKind == .Test;
bool isExe = ((project.mGeneralOptions.mTargetType != Project.TargetType.BeefLib) && (project.mGeneralOptions.mTargetType != Project.TargetType.BeefTest)) || (isTest);
bool isDynLib = project.mGeneralOptions.mTargetType == Project.TargetType.BeefDynLib;
bool isDynLib = (project.mGeneralOptions.mTargetType == Project.TargetType.BeefLib) && (options.mBuildOptions.mBuildKind == .DynamicLib);
if (isExe || isDynLib)
{
@ -761,7 +761,8 @@ namespace IDE
}
}
if (depProject.mGeneralOptions.mTargetType == .BeefDynLib)
bool depIsDynLib = (depProject.mGeneralOptions.mTargetType == Project.TargetType.BeefLib) && (depOptions.mBuildOptions.mBuildKind == .DynamicLib);
if (depIsDynLib)
{
if (mImpLibMap.TryGetValue(depProject, var libPath))
{
@ -797,9 +798,9 @@ namespace IDE
bool isTest = options.mBuildOptions.mBuildKind == .Test;
bool isExe = ((project.mGeneralOptions.mTargetType != Project.TargetType.BeefLib) && (project.mGeneralOptions.mTargetType != Project.TargetType.BeefTest)) || (isTest);
if (options.mBuildOptions.mBuildKind == .StaticLib)
isExe = false;
if (options.mBuildOptions.mBuildKind == .DynamicLib)
isExe = true;
if (isExe)
{
String linkLine = scope String();
@ -814,7 +815,7 @@ namespace IDE
linkLine.Append("-subsystem:windows ");
else if (project.mGeneralOptions.mTargetType == .C_GUIApplication)
linkLine.Append("-subsystem:console ");
else if (project.mGeneralOptions.mTargetType == .BeefDynLib)
else if (project.mGeneralOptions.mTargetType == .BeefLib)
{
linkLine.Append("-dll ");
@ -885,7 +886,7 @@ namespace IDE
linkLine.Append("-nologo ");
if ((project.mGeneralOptions.mTargetType == .BeefDynLib) && (workspaceOptions.mAllowHotSwapping) && (is64Bit))
if ((project.mGeneralOptions.mTargetType == .BeefLib) && (workspaceOptions.mAllowHotSwapping) && (is64Bit))
{
// This helps to ensure that DLLs have enough hot swapping space after them
int nameHash = targetPath.GetHashCode();
@ -1204,7 +1205,7 @@ namespace IDE
Directory.CreateDirectory(targetDir).IgnoreError();
}
if (project.mGeneralOptions.mTargetType == .BeefDynLib)
if (project.mGeneralOptions.mTargetType == .BeefLib)
{
if (targetPath.EndsWith(".dll", .InvariantCultureIgnoreCase))
{

View file

@ -8884,11 +8884,15 @@ namespace IDE
{
if (project.mGeneralOptions.mTargetType.IsBeefApplication)
targetType = .BeefApplication_StaticLib;
else if (project.mGeneralOptions.mTargetType == .BeefLib)
targetType = .BeefLib_Static;
}
else if (options.mBuildOptions.mBuildKind == .DynamicLib)
{
if (project.mGeneralOptions.mTargetType.IsBeefApplication)
targetType = .BeefApplication_DynamicLib;
else if (project.mGeneralOptions.mTargetType == .BeefLib)
targetType = .BeefLib_Dynamic;
}
}
@ -9418,48 +9422,28 @@ namespace IDE
let platformType = Workspace.PlatformType.GetFromName(platformName);
if (options.mBuildOptions.mBuildKind.IsApplicationLib)
switch (platformType)
{
switch (platformType)
{
case .Windows:
case .Windows:
if (options.mBuildOptions.mBuildKind == .DynamicLib)
newString.Append(".dll");
else if ((options.mBuildOptions.mBuildKind == .StaticLib) || (project.mGeneralOptions.mTargetType == .BeefLib))
newString.Append(".lib");
case .iOS:
if (options.mBuildOptions.mBuildKind == .DynamicLib)
newString.Append(".dylib");
else
newString.Append(".a");
case .Wasm:
if (!newString.Contains('.'))
newString.Append(".html");
default:
if (options.mBuildOptions.mBuildKind == .DynamicLib)
newString.Append(".so");
else
newString.Append(".a");
}
}
else
{
switch (platformType)
{
case .Windows:
if (project.mGeneralOptions.mTargetType == .BeefLib)
newString.Append(".lib");
else if (project.mGeneralOptions.mTargetType == .BeefDynLib)
newString.Append(".dll");
else if (project.mGeneralOptions.mTargetType != .CustomBuild)
newString.Append(".exe");
case .macOS:
if (project.mGeneralOptions.mTargetType == .BeefDynLib)
newString.Append(".dylib");
case .Wasm:
if (!newString.Contains('.'))
newString.Append(".html");
default:
if (project.mGeneralOptions.mTargetType == .BeefDynLib)
newString.Append(".so");
}
else if (project.mGeneralOptions.mTargetType != .CustomBuild)
newString.Append(".exe");
case .macOS:
if (options.mBuildOptions.mBuildKind == .DynamicLib)
newString.Append(".dylib");
else if (options.mBuildOptions.mBuildKind == .StaticLib)
newString.Append(".a");
case .Wasm:
if (!newString.Contains('.'))
newString.Append(".html");
default:
if (options.mBuildOptions.mBuildKind == .DynamicLib)
newString.Append(".so");
else if (options.mBuildOptions.mBuildKind == .StaticLib)
newString.Append(".a");
}
}
IDEUtils.FixFilePath(newString);
@ -9480,9 +9464,11 @@ namespace IDE
case "LinkFlags":
newString = scope:ReplaceBlock String();
bool isBeefDynLib = (project.mGeneralOptions.mTargetType == .BeefLib) && (options.mBuildOptions.mBuildKind == .DynamicLib);
if ((project.mGeneralOptions.mTargetType == .BeefConsoleApplication) ||
(project.mGeneralOptions.mTargetType == .BeefGUIApplication) ||
(project.mGeneralOptions.mTargetType == .BeefDynLib) ||
(isBeefDynLib) ||
(options.mBuildOptions.mBuildKind == .Test))
{
let platformType = Workspace.PlatformType.GetFromName(platformName);

View file

@ -866,14 +866,6 @@ namespace IDE
case StaticLib;
case DynamicLib;
case NotSupported;
public bool IsApplicationLib
{
get
{
return (this == .StaticLib) || (this == .DynamicLib);
}
}
}
public enum COptimizationLevel
@ -916,13 +908,14 @@ namespace IDE
case BeefConsoleApplication,
BeefGUIApplication,
BeefLib,
BeefDynLib,
CustomBuild,
BeefTest,
C_ConsoleApplication,
C_GUIApplication,
BeefApplication_StaticLib,
BeefApplication_DynamicLib;
BeefApplication_DynamicLib,
BeefLib_Static,
BeefLib_Dynamic;
public bool IsBeef
{
@ -933,7 +926,6 @@ namespace IDE
case BeefConsoleApplication,
BeefGUIApplication,
BeefLib,
BeefDynLib,
BeefTest:
return true;
default:
@ -956,6 +948,22 @@ namespace IDE
}
}
}
public bool IsBeefApplicationOrLib
{
get
{
switch (this)
{
case BeefConsoleApplication,
BeefGUIApplication,
BeefLib:
return true;
default:
return false;
}
}
}
}
public class WindowsOptions
@ -1863,7 +1871,8 @@ namespace IDE
strs.Add(cmd);
}
}
bool isBeefDynLib = false;
using (data.Open("Project"))
{
if (!IsSingleFile)
@ -1889,6 +1898,9 @@ namespace IDE
mGeneralOptions.mTargetType = .BeefGUIApplication;
case "C_WindowsApplication":
mGeneralOptions.mTargetType = .C_GUIApplication;
case "BeefDynLib":
mGeneralOptions.mTargetType = .BeefLib;
isBeefDynLib = true;
default:
mGeneralOptions.mTargetType = data.GetEnum<TargetType>("TargetType", GetDefaultTargetType());
}
@ -1962,6 +1974,8 @@ namespace IDE
// Build
options.mBuildOptions.mBuildKind = data.GetEnum<BuildKind>("BuildKind", isTest ? .Test : .Normal);
if ((isBeefDynLib) && (options.mBuildOptions.mBuildKind == .Normal))
options.mBuildOptions.mBuildKind = .DynamicLib;
data.GetString("TargetDirectory", options.mBuildOptions.mTargetDirectory, "$(BuildDir)");
data.GetString("TargetName", options.mBuildOptions.mTargetName, "$(ProjectName)");
data.GetString("OtherLinkFlags", options.mBuildOptions.mOtherLinkFlags, "$(LinkFlags)");

View file

@ -16,11 +16,10 @@ namespace IDE.ui
public PathEditWidget mDirectoryEdit;
public EditWidget mNameEdit;
public DarkComboBox mTargetComboBox;
static String[6] sApplicationTypeNames =
static String[5] sApplicationTypeNames =
.("Console Application",
"GUI Application",
"Library",
"Dynamic Library",
"Custom Build",
"Test");
public bool mNameChanged;

View file

@ -622,7 +622,6 @@ namespace IDE.ui
"Console Application",
"GUI Application",
"Library",
"Dynamic Library",
"Custom Build",
"Test"
));