Fix using proper engine native module for importing symbols
This commit is contained in:
@@ -135,9 +135,14 @@ bool MCore::LoadEngine()
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Prepare managed side
|
// Prepare managed side
|
||||||
const StringAnsi hostExecutable(Platform::GetExecutableFilePath());
|
|
||||||
CoreCLR::CallStaticMethodByName<void>(TEXT("Init"));
|
CoreCLR::CallStaticMethodByName<void>(TEXT("Init"));
|
||||||
CoreCLR::RegisterNativeLibrary("FlaxEngine", hostExecutable.Get());
|
#ifdef MCORE_MAIN_MODULE_NAME
|
||||||
|
// MCORE_MAIN_MODULE_NAME define is injected by Scripting.Build.cs on platforms that use separate shared library for engine symbols
|
||||||
|
const StringAnsi flaxLibraryPath(Platform::GetMainDirectory() / TEXT(MACRO_TO_STR(MCORE_MAIN_MODULE_NAME)));
|
||||||
|
#else
|
||||||
|
const StringAnsi flaxLibraryPath(Platform::GetExecutableFilePath());
|
||||||
|
#endif
|
||||||
|
CoreCLR::RegisterNativeLibrary("FlaxEngine", flaxLibraryPath.Get());
|
||||||
|
|
||||||
MRootDomain = New<MDomain>("Root");
|
MRootDomain = New<MDomain>("Root");
|
||||||
MDomains.Add(MRootDomain);
|
MDomains.Add(MRootDomain);
|
||||||
|
|||||||
@@ -16,9 +16,20 @@ public class Scripting : EngineModule
|
|||||||
if (EngineConfiguration.WithCSharp(options))
|
if (EngineConfiguration.WithCSharp(options))
|
||||||
{
|
{
|
||||||
if (EngineConfiguration.WithDotNet(options))
|
if (EngineConfiguration.WithDotNet(options))
|
||||||
|
{
|
||||||
options.PublicDependencies.Add("nethost");
|
options.PublicDependencies.Add("nethost");
|
||||||
|
|
||||||
|
if (options.Target is EngineTarget engineTarget && engineTarget.UseSeparateMainExecutable(options))
|
||||||
|
{
|
||||||
|
// Build target doesn't support linking again main executable (eg. Linux) thus additional shared library is used for the engine (eg. libFlaxEditor.so)
|
||||||
|
var fileName = options.Platform.GetLinkOutputFileName(engineTarget.OutputName, LinkerOutput.SharedLibrary);
|
||||||
|
options.CompileEnv.PreprocessorDefinitions.Add("MCORE_MAIN_MODULE_NAME=" + fileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
options.PublicDependencies.Add("mono");
|
options.PublicDependencies.Add("mono");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
options.PrivateDependencies.Add("Utilities");
|
options.PrivateDependencies.Add("Utilities");
|
||||||
|
|||||||
@@ -125,7 +125,10 @@ namespace Flax.Build
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool UseSeparateMainExecutable(BuildOptions buildOptions)
|
/// <summary>
|
||||||
|
/// Returns true if this build target should use separate (aka main-only) executable file and separate runtime (in shared library). Used on platforms that don't support linking again executable file but only shared library (see HasExecutableFileReferenceSupport).
|
||||||
|
/// </summary>
|
||||||
|
public bool UseSeparateMainExecutable(BuildOptions buildOptions)
|
||||||
{
|
{
|
||||||
return UseSymbolsExports && OutputType == TargetOutputType.Executable && !buildOptions.Platform.HasExecutableFileReferenceSupport && !Configuration.BuildBindingsOnly;
|
return UseSymbolsExports && OutputType == TargetOutputType.Executable && !buildOptions.Platform.HasExecutableFileReferenceSupport && !Configuration.BuildBindingsOnly;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user