Browse Source

throw on unsupported arch/platform

pull/1913/head
duckdoom5 4 months ago
parent
commit
1425b95982
  1. 4
      src/CLI/Generator.cs
  2. 5
      src/CppParser/AST.h
  3. 10
      src/CppParser/Parser.cpp
  4. 6
      src/Generator/Driver.cs

4
src/CLI/Generator.cs

@ -40,6 +40,8 @@ namespace CppSharp @@ -40,6 +40,8 @@ namespace CppSharp
case TargetArchitecture.WASM64:
tripleBuilder.Append("wasm64-");
break;
default:
throw new ArgumentOutOfRangeException(nameof(options.Architecture), "Unsupported target architecture.");
}
switch (options.Platform)
@ -71,6 +73,8 @@ namespace CppSharp @@ -71,6 +73,8 @@ namespace CppSharp
abi = CppAbi.Itanium;
break;
}
default:
throw new ArgumentOutOfRangeException(nameof(options.Platform), "Unsupported target platform.");
}
triple = tripleBuilder.ToString();

5
src/CppParser/AST.h

@ -23,7 +23,10 @@ enum class ArchType @@ -23,7 +23,10 @@ enum class ArchType
{
UnknownArch,
x86,
x86_64
x86_64,
aarch64,
aarch64_be,
aarch64_32
};
class CS_API NativeLibrary

10
src/CppParser/Parser.cpp

@ -4667,8 +4667,16 @@ static ArchType ConvertArchType(unsigned int archType) @@ -4667,8 +4667,16 @@ static ArchType ConvertArchType(unsigned int archType)
return ArchType::x86;
case llvm::Triple::ArchType::x86_64:
return ArchType::x86_64;
case llvm::Triple::ArchType::aarch64:
return ArchType::aarch64;
case llvm::Triple::ArchType::aarch64_be:
return ArchType::aarch64_be;
case llvm::Triple::ArchType::aarch64_32:
return ArchType::aarch64_32;
default:
assertm(0, "Unsupported architecture type!\n");
return ArchType::UnknownArch;
}
return ArchType::UnknownArch;
}
template<class ELFT>

6
src/Generator/Driver.cs

@ -28,16 +28,14 @@ namespace CppSharp @@ -28,16 +28,14 @@ namespace CppSharp
void ValidateOptions()
{
if (!Options.Compilation.Platform.HasValue)
Options.Compilation.Platform = Platform.Host;
Options.Compilation.Platform ??= Platform.Host;
foreach (var module in Options.Modules)
{
if (string.IsNullOrWhiteSpace(module.LibraryName))
throw new InvalidOptionException("One of your modules has no library name.");
if (module.OutputNamespace == null)
module.OutputNamespace = module.LibraryName;
module.OutputNamespace ??= module.LibraryName;
for (int i = 0; i < module.IncludeDirs.Count; i++)
{

Loading…
Cancel
Save