mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 03:28:20 +02:00
214 lines
6.2 KiB
Beef
214 lines
6.2 KiB
Beef
using System;
|
|
using Beefy.utils;
|
|
|
|
namespace IDE
|
|
{
|
|
class BuildOptions
|
|
{
|
|
public enum LTOType
|
|
{
|
|
None,
|
|
Thin,
|
|
}
|
|
|
|
public enum EmitDebugInfo
|
|
{
|
|
No,
|
|
Yes,
|
|
LinesOnly,
|
|
}
|
|
|
|
public enum SIMDSetting
|
|
{
|
|
None,
|
|
MMX,
|
|
SSE,
|
|
SSE2,
|
|
SSE3,
|
|
SSE4,
|
|
SSE41,
|
|
AVX,
|
|
AVX2,
|
|
}
|
|
|
|
public enum BfOptimizationLevel
|
|
{
|
|
case O0;
|
|
case O1;
|
|
case O2;
|
|
case O3;
|
|
case Og;
|
|
case OgPlus;
|
|
|
|
public bool IsOptimized()
|
|
{
|
|
return (this != .Og) && (this != .OgPlus) && (this != .O0);
|
|
}
|
|
}
|
|
|
|
public enum RelocType
|
|
{
|
|
NotSet,
|
|
Static,
|
|
PIC,
|
|
DynamicNoPIC,
|
|
ROPI,
|
|
RWPI,
|
|
ROPI_RWPI
|
|
}
|
|
|
|
public enum PICLevel
|
|
{
|
|
NotSet,
|
|
Not,
|
|
Small,
|
|
Big
|
|
}
|
|
|
|
public enum AlwaysIncludeKind
|
|
{
|
|
NotSet,
|
|
No,
|
|
IncludeType,
|
|
AssumeInstantiated,
|
|
IncludeAll
|
|
}
|
|
}
|
|
|
|
public class DistinctBuildOptions
|
|
{
|
|
public enum CreateState
|
|
{
|
|
Normal,
|
|
New,
|
|
Deleted
|
|
}
|
|
public CreateState mCreateState;
|
|
|
|
[Reflect]
|
|
public String mFilter = new String() ~ delete _;
|
|
[Reflect]
|
|
public BuildOptions.SIMDSetting? mBfSIMDSetting;
|
|
[Reflect]
|
|
public BuildOptions.BfOptimizationLevel? mBfOptimizationLevel;
|
|
[Reflect]
|
|
public BuildOptions.EmitDebugInfo? mEmitDebugInfo;
|
|
[Reflect]
|
|
public bool? mRuntimeChecks;
|
|
[Reflect]
|
|
public bool? mInitLocalVariables;
|
|
[Reflect]
|
|
public bool? mEmitDynamicCastCheck;
|
|
[Reflect]
|
|
public bool? mEmitObjectAccessCheck; // Only valid with mObjectHasDebugFlags
|
|
[Reflect]
|
|
public bool? mArithmeticCheck;
|
|
[Reflect]
|
|
public int32? mAllocStackTraceDepth;
|
|
[Reflect]
|
|
public BuildOptions.AlwaysIncludeKind mReflectAlwaysInclude;
|
|
[Reflect]
|
|
public bool? mReflectBoxing;
|
|
[Reflect]
|
|
public bool? mReflectStaticFields;
|
|
[Reflect]
|
|
public bool? mReflectNonStaticFields;
|
|
[Reflect]
|
|
public bool? mReflectStaticMethods;
|
|
[Reflect]
|
|
public bool? mReflectNonStaticMethods;
|
|
[Reflect]
|
|
public bool? mReflectConstructors;
|
|
[Reflect]
|
|
public String mReflectMethodFilter = new String() ~ delete _;
|
|
|
|
public ~this()
|
|
{
|
|
}
|
|
|
|
public DistinctBuildOptions Duplicate()
|
|
{
|
|
var newVal = new DistinctBuildOptions();
|
|
newVal.mFilter.Set(mFilter);
|
|
newVal.mBfSIMDSetting = mBfSIMDSetting;
|
|
newVal.mBfOptimizationLevel = mBfOptimizationLevel;
|
|
newVal.mEmitDebugInfo = mEmitDebugInfo;
|
|
newVal.mRuntimeChecks = mRuntimeChecks;
|
|
newVal.mInitLocalVariables = mInitLocalVariables;
|
|
newVal.mEmitDynamicCastCheck = mEmitDynamicCastCheck;
|
|
newVal.mEmitObjectAccessCheck = mEmitObjectAccessCheck;
|
|
newVal.mArithmeticCheck = mArithmeticCheck;
|
|
newVal.mAllocStackTraceDepth = mAllocStackTraceDepth;
|
|
newVal.mReflectAlwaysInclude = mReflectAlwaysInclude;
|
|
newVal.mReflectBoxing = mReflectBoxing;
|
|
newVal.mReflectStaticFields = mReflectStaticFields;
|
|
newVal.mReflectNonStaticFields = mReflectNonStaticFields;
|
|
newVal.mReflectStaticMethods = mReflectStaticMethods;
|
|
newVal.mReflectNonStaticMethods = mReflectNonStaticMethods;
|
|
newVal.mReflectConstructors = mReflectConstructors;
|
|
newVal.mReflectMethodFilter.Set(mReflectMethodFilter);
|
|
return newVal;
|
|
}
|
|
|
|
public void Deserialize(StructuredData data)
|
|
{
|
|
data.GetString("Filter", mFilter);
|
|
if (data.Contains("BfSIMDSetting"))
|
|
mBfSIMDSetting = data.GetEnum<BuildOptions.SIMDSetting>("BfSIMDSetting");
|
|
if (data.Contains("BfOptimizationLevel"))
|
|
mBfOptimizationLevel = data.GetEnum<BuildOptions.BfOptimizationLevel>("BfOptimizationLevel");
|
|
if (data.Contains("EmitDebugInfo"))
|
|
mEmitDebugInfo = data.GetEnum<BuildOptions.EmitDebugInfo>("EmitDebugInfo");
|
|
if (data.Contains("RuntimeChecks"))
|
|
mRuntimeChecks = data.GetBool("RuntimeChecks");
|
|
if (data.Contains("InitLocalVariables"))
|
|
mInitLocalVariables = data.GetBool("InitLocalVariables");
|
|
if (data.Contains("EmitDynamicCastCheck"))
|
|
mEmitDynamicCastCheck = data.GetBool("EmitDynamicCastCheck");
|
|
if (data.Contains("EmitObjectAccessCheck"))
|
|
mEmitObjectAccessCheck = data.GetBool("EmitObjectAccessCheck");
|
|
if (data.Contains("ArithmeticCheck"))
|
|
mArithmeticCheck = data.GetBool("ArithmeticCheck");
|
|
if (data.Contains("AllocStackTraceDepth"))
|
|
mAllocStackTraceDepth = data.GetInt("AllocStackTraceDepth");
|
|
|
|
if (data.Contains("ReflectAlwaysInclude"))
|
|
mReflectAlwaysInclude = data.GetEnum<BuildOptions.AlwaysIncludeKind>("ReflectAlwaysInclude");
|
|
if (data.Contains("ReflectBoxing"))
|
|
mReflectBoxing = data.GetBool("ReflectBoxing");
|
|
if (data.Contains("ReflectStaticFields"))
|
|
mReflectStaticFields = data.GetBool("ReflectStaticFields");
|
|
if (data.Contains("ReflectNonStaticFields"))
|
|
mReflectNonStaticFields = data.GetBool("ReflectNonStaticFields");
|
|
if (data.Contains("ReflectStaticMethods"))
|
|
mReflectStaticMethods = data.GetBool("ReflectStaticMethods");
|
|
if (data.Contains("ReflectNonStaticMethods"))
|
|
mReflectNonStaticMethods = data.GetBool("ReflectNonStaticMethods");
|
|
if (data.Contains("ReflectConstructors"))
|
|
mReflectConstructors = data.GetBool("ReflectConstructors");
|
|
data.GetString("ReflectMethodFilter", mReflectMethodFilter);
|
|
}
|
|
|
|
public void Serialize(StructuredData data)
|
|
{
|
|
data.Add("Filter", mFilter);
|
|
data.ConditionalAdd("BfSIMDSetting", mBfSIMDSetting);
|
|
data.ConditionalAdd("BfOptimizationLevel", mBfOptimizationLevel);
|
|
data.ConditionalAdd("EmitDebugInfo", mEmitDebugInfo);
|
|
data.ConditionalAdd("RuntimeChecks", mRuntimeChecks);
|
|
data.ConditionalAdd("InitLocalVariables", mInitLocalVariables);
|
|
data.ConditionalAdd("EmitDynamicCastCheck", mEmitDynamicCastCheck);
|
|
data.ConditionalAdd("EmitObjectAccessCheck", mEmitObjectAccessCheck);
|
|
data.ConditionalAdd("ArithmeticCheck", mArithmeticCheck);
|
|
data.ConditionalAdd("AllocStackTraceDepth", mAllocStackTraceDepth);
|
|
data.ConditionalAdd("ReflectAlwaysInclude", mReflectAlwaysInclude);
|
|
data.ConditionalAdd("ReflectBoxing", mReflectBoxing);
|
|
data.ConditionalAdd("ReflectStaticFields", mReflectStaticFields);
|
|
data.ConditionalAdd("ReflectNonStaticFields", mReflectNonStaticFields);
|
|
data.ConditionalAdd("ReflectStaticMethods", mReflectStaticMethods);
|
|
data.ConditionalAdd("ReflectNonStaticMethods", mReflectNonStaticMethods);
|
|
data.ConditionalAdd("ReflectConstructors", mReflectConstructors);
|
|
data.ConditionalAdd("ReflectMethodFilter", mReflectMethodFilter);
|
|
}
|
|
}
|
|
}
|