[runtime] Convert the bindings-generator.csproj project to a .NET project. (#20743)
This commit is contained in:
Родитель
10f3b5ae32
Коммит
fc6ce95b52
|
@ -60,11 +60,12 @@ delegates.%: delegates.%.t4 delegates.t4
|
||||||
Delegates.generated.cs: Delegates.cs.t4 delegates.t4
|
Delegates.generated.cs: Delegates.cs.t4 delegates.t4
|
||||||
$(Q_GEN) $(TT) $< -o $@
|
$(Q_GEN) $(TT) $< -o $@
|
||||||
|
|
||||||
bindings-generator.exe: bindings-generator.cs
|
BINDINGS_GENERATOR=bin/Debug/bindings-generator.dll
|
||||||
$(Q) $(SYSTEM_CSC) $< -out:$@ -debug:full -features:strict
|
$(BINDINGS_GENERATOR): bindings-generator.cs bindings-generator.csproj
|
||||||
|
$(Q) $(DOTNET) build bindings-generator.csproj $(DOTNET_BUILD_VERBOSITY)
|
||||||
|
|
||||||
bindings-generated.m: bindings-generator.exe
|
bindings-generated.m: $(BINDINGS_GENERATOR)
|
||||||
$(Q_GEN) $(SYSTEM_MONO) --debug $< $@
|
$(Q_GEN) $(DOTNET) exec $< $@
|
||||||
|
|
||||||
# our makefiles don't support building the same source file multiple times with different defines,
|
# our makefiles don't support building the same source file multiple times with different defines,
|
||||||
# so just symlink extension-main.m to another file and compile that instead.
|
# so just symlink extension-main.m to another file and compile that instead.
|
||||||
|
|
|
@ -91,16 +91,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
{
|
{
|
||||||
var data = new List<FunctionData> ();
|
var data = new List<FunctionData> ();
|
||||||
|
|
||||||
Types.NativeHandleType = isDotNet ? Types.NativeHandle : Types.IntPtr;
|
Types.IsDotNet = isDotNet;
|
||||||
Types.Vector2d = isDotNet ? Types.NVector2d : Types.OpenTK_Vector2d;
|
|
||||||
Types.Vector4d = isDotNet ? Types.NVector4d : Types.OpenTK_Vector4d;
|
|
||||||
Types.Vector2i = isDotNet ? Types.NVector2i : Types.OpenTK_Vector2i;
|
|
||||||
Types.Vector3i = isDotNet ? Types.NVector3i : Types.OpenTK_Vector3i;
|
|
||||||
Types.Vector4i = isDotNet ? Types.NVector4i : Types.OpenTK_Vector4i;
|
|
||||||
Types.Matrix3f = isDotNet ? Types.RMatrix3f : Types.OpenTK_Matrix3f;
|
|
||||||
Types.Matrix4f = isDotNet ? Types.Numerics_Matrix4f : Types.OpenTK_Matrix4f;
|
|
||||||
Types.QuatD = isDotNet ? Types.NQuaterniond : Types.OpenTK_QuatD;
|
|
||||||
Types.MDLVoxelIndexExtent = isDotNet ? Types.MDLVoxelIndexExtent_DotNet : Types.MDLVoxelIndexExtent2;
|
|
||||||
|
|
||||||
data.Add (
|
data.Add (
|
||||||
new FunctionData {
|
new FunctionData {
|
||||||
|
@ -2992,7 +2983,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
return funcName.ToString ();
|
return funcName.ToString ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void WriteParametersMarshal (StringWriter writer, ParameterData [] ps)
|
static void WriteParametersMarshal (StringWriter writer, ParameterData []? ps)
|
||||||
{
|
{
|
||||||
if (ps is null)
|
if (ps is null)
|
||||||
return;
|
return;
|
||||||
|
@ -3007,7 +2998,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void WriteParametersInvoke (StringWriter writer, ParameterData [] ps)
|
static void WriteParametersInvoke (StringWriter writer, ParameterData []? ps)
|
||||||
{
|
{
|
||||||
if (ps is null)
|
if (ps is null)
|
||||||
return;
|
return;
|
||||||
|
@ -3025,7 +3016,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void WriteParametersNativeDeclaration (StringWriter writer, ParameterData [] parameters, bool isTypedef, FunctionData func)
|
static void WriteParametersNativeDeclaration (StringWriter writer, ParameterData []? parameters, bool isTypedef, FunctionData func)
|
||||||
{
|
{
|
||||||
if (parameters is null)
|
if (parameters is null)
|
||||||
return;
|
return;
|
||||||
|
@ -3122,7 +3113,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
// body
|
// body
|
||||||
writer.WriteLine ("{");
|
writer.WriteLine ("{");
|
||||||
if (tmpReturnValue) {
|
if (tmpReturnValue) {
|
||||||
writer.WriteLine ("\t{0} rv;", func.ReturnType.NativeType);
|
writer.WriteLine ("\t{0} rv;", func.ReturnType!.NativeType);
|
||||||
}
|
}
|
||||||
|
|
||||||
// marshal managed parameters to native format
|
// marshal managed parameters to native format
|
||||||
|
@ -3185,7 +3176,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
// body
|
// body
|
||||||
writer.WriteLine ("{");
|
writer.WriteLine ("{");
|
||||||
if (tmpReturnValue) {
|
if (tmpReturnValue) {
|
||||||
writer.WriteLine ("\t{0} rv;", func.ReturnType.NativeType);
|
writer.WriteLine ("\t{0} rv;", func.ReturnType!.NativeType);
|
||||||
}
|
}
|
||||||
|
|
||||||
// marshal managed parameters to native format
|
// marshal managed parameters to native format
|
||||||
|
@ -3354,6 +3345,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Types {
|
public static class Types {
|
||||||
|
public static bool IsDotNet;
|
||||||
public static TypeData Vector2 = new TypeData {
|
public static TypeData Vector2 = new TypeData {
|
||||||
ManagedType = "Vector2",
|
ManagedType = "Vector2",
|
||||||
NativeType = "vector_float2",
|
NativeType = "vector_float2",
|
||||||
|
@ -3385,7 +3377,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
NativeWrapperType = "struct Vector4f",
|
NativeWrapperType = "struct Vector4f",
|
||||||
RequireMarshal = true,
|
RequireMarshal = true,
|
||||||
};
|
};
|
||||||
public static TypeData Vector2i;
|
public static TypeData Vector2i { get => IsDotNet ? Types.NVector2i : Types.OpenTK_Vector2i; }
|
||||||
public static TypeData OpenTK_Vector2i = new TypeData {
|
public static TypeData OpenTK_Vector2i = new TypeData {
|
||||||
ManagedType = "Vector2i",
|
ManagedType = "Vector2i",
|
||||||
NativeType = "vector_int2",
|
NativeType = "vector_int2",
|
||||||
|
@ -3400,7 +3392,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
RequireMarshal = true,
|
RequireMarshal = true,
|
||||||
IsX86Stret = true,
|
IsX86Stret = true,
|
||||||
};
|
};
|
||||||
public static TypeData Vector3i;
|
public static TypeData Vector3i { get => IsDotNet ? Types.NVector3i : Types.OpenTK_Vector3i; }
|
||||||
public static TypeData OpenTK_Vector3i = new TypeData {
|
public static TypeData OpenTK_Vector3i = new TypeData {
|
||||||
ManagedType = "Vector3i",
|
ManagedType = "Vector3i",
|
||||||
NativeType = "vector_int3",
|
NativeType = "vector_int3",
|
||||||
|
@ -3413,7 +3405,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
NativeWrapperType = "struct Vector3i",
|
NativeWrapperType = "struct Vector3i",
|
||||||
RequireMarshal = true,
|
RequireMarshal = true,
|
||||||
};
|
};
|
||||||
public static TypeData Vector4i;
|
public static TypeData Vector4i { get => IsDotNet ? Types.NVector4i : Types.OpenTK_Vector4i; }
|
||||||
public static TypeData OpenTK_Vector4i = new TypeData {
|
public static TypeData OpenTK_Vector4i = new TypeData {
|
||||||
ManagedType = "Vector4i",
|
ManagedType = "Vector4i",
|
||||||
NativeType = "vector_int4",
|
NativeType = "vector_int4",
|
||||||
|
@ -3426,7 +3418,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
NativeWrapperType = "struct Vector4i",
|
NativeWrapperType = "struct Vector4i",
|
||||||
RequireMarshal = true,
|
RequireMarshal = true,
|
||||||
};
|
};
|
||||||
public static TypeData Vector2d;
|
public static TypeData Vector2d { get => IsDotNet ? NVector2d : OpenTK_Vector2d; }
|
||||||
public static TypeData OpenTK_Vector2d = new TypeData {
|
public static TypeData OpenTK_Vector2d = new TypeData {
|
||||||
ManagedType = "Vector2d",
|
ManagedType = "Vector2d",
|
||||||
NativeType = "vector_double2",
|
NativeType = "vector_double2",
|
||||||
|
@ -3451,7 +3443,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
NativeWrapperType = "struct Vector4d", // Yes, Vector4d, since NVector3d has 4 doubles.
|
NativeWrapperType = "struct Vector4d", // Yes, Vector4d, since NVector3d has 4 doubles.
|
||||||
RequireMarshal = true,
|
RequireMarshal = true,
|
||||||
};
|
};
|
||||||
public static TypeData Vector4d;
|
public static TypeData Vector4d { get => IsDotNet ? Types.NVector4d : Types.OpenTK_Vector4d; }
|
||||||
public static TypeData OpenTK_Vector4d = new TypeData {
|
public static TypeData OpenTK_Vector4d = new TypeData {
|
||||||
ManagedType = "Vector4d",
|
ManagedType = "Vector4d",
|
||||||
NativeType = "vector_double4",
|
NativeType = "vector_double4",
|
||||||
|
@ -3482,7 +3474,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
IsX86Stret = true,
|
IsX86Stret = true,
|
||||||
IsX64Stret = false,
|
IsX64Stret = false,
|
||||||
};
|
};
|
||||||
public static TypeData Matrix3f;
|
public static TypeData Matrix3f { get => IsDotNet ? Types.RMatrix3f : Types.OpenTK_Matrix3f; }
|
||||||
public static TypeData OpenTK_Matrix3f = new TypeData {
|
public static TypeData OpenTK_Matrix3f = new TypeData {
|
||||||
ManagedType = "Matrix3",
|
ManagedType = "Matrix3",
|
||||||
NativeType = "matrix_float3x3",
|
NativeType = "matrix_float3x3",
|
||||||
|
@ -3510,7 +3502,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
IsX86Stret = true,
|
IsX86Stret = true,
|
||||||
IsX64Stret = true,
|
IsX64Stret = true,
|
||||||
};
|
};
|
||||||
public static TypeData Matrix4f;
|
public static TypeData Matrix4f { get => IsDotNet ? Types.Numerics_Matrix4f : Types.OpenTK_Matrix4f; }
|
||||||
public static TypeData OpenTK_Matrix4f = new TypeData {
|
public static TypeData OpenTK_Matrix4f = new TypeData {
|
||||||
ManagedType = "Matrix4",
|
ManagedType = "Matrix4",
|
||||||
NativeType = "matrix_float4x4",
|
NativeType = "matrix_float4x4",
|
||||||
|
@ -3570,7 +3562,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
NativeWrapperType = "void *",
|
NativeWrapperType = "void *",
|
||||||
RequireMarshal = false,
|
RequireMarshal = false,
|
||||||
};
|
};
|
||||||
public static TypeData NativeHandleType;
|
public static TypeData NativeHandleType { get => IsDotNet ? NativeHandle : IntPtr; }
|
||||||
public static TypeData NativeHandle = new TypeData {
|
public static TypeData NativeHandle = new TypeData {
|
||||||
ManagedType = "NativeHandle",
|
ManagedType = "NativeHandle",
|
||||||
NativeType = "void *",
|
NativeType = "void *",
|
||||||
|
@ -3708,7 +3700,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
RequireMarshal = true,
|
RequireMarshal = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
public static TypeData QuatD;
|
public static TypeData QuatD { get => IsDotNet ? Types.NQuaterniond : Types.OpenTK_QuatD; }
|
||||||
public static TypeData OpenTK_QuatD = new TypeData {
|
public static TypeData OpenTK_QuatD = new TypeData {
|
||||||
ManagedType = "Quaterniond",
|
ManagedType = "Quaterniond",
|
||||||
NativeType = "simd_quatd",
|
NativeType = "simd_quatd",
|
||||||
|
@ -3734,7 +3726,7 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
IsX64Stret = true,
|
IsX64Stret = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
public static TypeData MDLVoxelIndexExtent;
|
public static TypeData MDLVoxelIndexExtent { get => IsDotNet ? Types.MDLVoxelIndexExtent_DotNet : Types.MDLVoxelIndexExtent2; }
|
||||||
|
|
||||||
public static TypeData MDLVoxelIndexExtent_DotNet = new TypeData {
|
public static TypeData MDLVoxelIndexExtent_DotNet = new TypeData {
|
||||||
ManagedType = "MDLVoxelIndexExtent",
|
ManagedType = "MDLVoxelIndexExtent",
|
||||||
|
@ -3777,9 +3769,9 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
}
|
}
|
||||||
|
|
||||||
class TypeData {
|
class TypeData {
|
||||||
public string ManagedType;
|
public string ManagedType = string.Empty;
|
||||||
public string NativeWrapperType;
|
public string NativeWrapperType = string.Empty;
|
||||||
public string NativeType;
|
public string NativeType = string.Empty;
|
||||||
public bool RequireMarshal;
|
public bool RequireMarshal;
|
||||||
public bool IsX86Stret;
|
public bool IsX86Stret;
|
||||||
#pragma warning disable 649
|
#pragma warning disable 649
|
||||||
|
@ -3790,8 +3782,8 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
#pragma warning restore 649
|
#pragma warning restore 649
|
||||||
public bool IsAnyStret { get { return IsX86Stret || IsX64Stret || IsARMStret; } }
|
public bool IsAnyStret { get { return IsX86Stret || IsX64Stret || IsARMStret; } }
|
||||||
public bool IsNativeType;
|
public bool IsNativeType;
|
||||||
public TypeData Bit32Type;
|
public TypeData? Bit32Type;
|
||||||
public TypeData Bit64Type;
|
public TypeData? Bit64Type;
|
||||||
|
|
||||||
public TypeData AsSpecificNativeType (bool as32bit)
|
public TypeData AsSpecificNativeType (bool as32bit)
|
||||||
{
|
{
|
||||||
|
@ -3802,21 +3794,22 @@ namespace Xamarin.BindingMethods.Generator {
|
||||||
}
|
}
|
||||||
|
|
||||||
class ParameterData {
|
class ParameterData {
|
||||||
public TypeData TypeData;
|
TypeData? typeData;
|
||||||
|
public TypeData TypeData { get => typeData!; set => typeData = value; }
|
||||||
public bool IsRef;
|
public bool IsRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
class FunctionData {
|
class FunctionData {
|
||||||
public string Comment;
|
public string? Comment;
|
||||||
public string Prefix = string.Empty;
|
public string Prefix = string.Empty;
|
||||||
// Variants is a [Flags] enum, specifying which of the objc_msgSend variants
|
// Variants is a [Flags] enum, specifying which of the objc_msgSend variants
|
||||||
// should be generated. You'll usually use "All", which will generate all 4,
|
// should be generated. You'll usually use "All", which will generate all 4,
|
||||||
// or "NonStret", which will just generate objc_msgSend and objc_msgSendSuper.
|
// or "NonStret", which will just generate objc_msgSend and objc_msgSendSuper.
|
||||||
public Variants Variants;
|
public Variants Variants;
|
||||||
// The return type of the function. Use null for void.
|
// The return type of the function. Use null for void.
|
||||||
public TypeData ReturnType;
|
public TypeData? ReturnType;
|
||||||
// The parameters. Use null for void.
|
// The parameters. Use null for void.
|
||||||
public ParameterData [] Parameters;
|
public ParameterData []? Parameters;
|
||||||
public bool MarshalExceptions;
|
public bool MarshalExceptions;
|
||||||
|
|
||||||
public bool HasNativeType {
|
public bool HasNativeType {
|
||||||
|
|
|
@ -1,45 +1,17 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
|
||||||
<ProjectGuid>{6B616492-49F0-43EF-8390-F9D1B4CCC632}</ProjectGuid>
|
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<RootNamespace>zzg</RootNamespace>
|
<TargetFramework>net$(BundledNETCoreAppTargetFrameworkVersion)</TargetFramework>
|
||||||
<AssemblyName>bindings-generator</AssemblyName>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
<Nullable>enable</Nullable>
|
||||||
<ProductVersion>8.0.30703</ProductVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
<EnableDefaultItems>false</EnableDefaultItems>
|
||||||
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>bin\Debug</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
|
||||||
<ConsolePause>false</ConsolePause>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>bin\Release</OutputPath>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<Externalconsole>true</Externalconsole>
|
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(RunConfiguration)' == 'Default' ">
|
|
||||||
<StartAction>Project</StartAction>
|
|
||||||
<StartArguments>${ProjectDir}/bindings-generated.m</StartArguments>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="System" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="bindings-generator.cs" />
|
<Compile Include="bindings-generator.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче