diff --git a/Source/Engine/Core/Math/CollisionsHelper.h b/Source/Engine/Core/Math/CollisionsHelper.h
index 4bebf2492..692b86dbe 100644
--- a/Source/Engine/Core/Math/CollisionsHelper.h
+++ b/Source/Engine/Core/Math/CollisionsHelper.h
@@ -2,8 +2,6 @@
#pragma once
-#include "Engine/Core/Compiler.h"
-
struct Vector2;
struct Vector3;
struct Vector4;
diff --git a/Source/Engine/Navigation/NavMeshBuilder.h b/Source/Engine/Navigation/NavMeshBuilder.h
index 27dab4273..350302a2a 100644
--- a/Source/Engine/Navigation/NavMeshBuilder.h
+++ b/Source/Engine/Navigation/NavMeshBuilder.h
@@ -4,8 +4,6 @@
#if COMPILE_WITH_NAV_MESH_BUILDER
-#include "Engine/Core/Compiler.h"
-
class Scene;
///
diff --git a/Source/Engine/Particles/ParticleManager.h b/Source/Engine/Particles/ParticleManager.h
index bd9fa1716..4308b2ab8 100644
--- a/Source/Engine/Particles/ParticleManager.h
+++ b/Source/Engine/Particles/ParticleManager.h
@@ -2,8 +2,6 @@
#pragma once
-#include "Engine/Core/Compiler.h"
-
struct RenderContext;
struct RenderView;
class ParticleEmitter;
diff --git a/Source/Engine/Scripting/StdTypesContainer.h b/Source/Engine/Scripting/StdTypesContainer.h
index 3b4a13d19..8a62a78dc 100644
--- a/Source/Engine/Scripting/StdTypesContainer.h
+++ b/Source/Engine/Scripting/StdTypesContainer.h
@@ -3,7 +3,6 @@
#pragma once
#include "Engine/Core/Singleton.h"
-#include "Engine/Core/Compiler.h"
class MClass;
class MMethod;
diff --git a/Source/FlaxEngine.Gen.h b/Source/FlaxEngine.Gen.h
index 569d2f551..94eb7c467 100644
--- a/Source/FlaxEngine.Gen.h
+++ b/Source/FlaxEngine.Gen.h
@@ -2,8 +2,6 @@
#pragma once
-#include "Engine/Core/Compiler.h"
-
#define FLAXENGINE_NAME "FlaxEngine"
#define FLAXENGINE_VERSION Version(1, 0, 6216)
#define FLAXENGINE_VERSION_TEXT "1.0.6216"
diff --git a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cpp.cs b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cpp.cs
index 175b03584..5bddd5d94 100644
--- a/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cpp.cs
+++ b/Source/Tools/Flax.Build/Bindings/BindingsGenerator.Cpp.cs
@@ -2005,8 +2005,6 @@ namespace Flax.Build.Bindings
contents.AppendLine();
contents.AppendLine("#pragma once");
contents.AppendLine();
- contents.AppendLine("#include \"Engine/Core/Compiler.h\"");
- contents.AppendLine();
contents.AppendLine($"#define {binaryModuleNameUpper}_NAME \"{binaryModuleName}\"");
if (version.Build == -1)
contents.AppendLine($"#define {binaryModuleNameUpper}_VERSION Version({version.Major}, {version.Minor})");
diff --git a/Source/Tools/Flax.Build/Build/EngineTarget.cs b/Source/Tools/Flax.Build/Build/EngineTarget.cs
index f310a4814..575d0cdc5 100644
--- a/Source/Tools/Flax.Build/Build/EngineTarget.cs
+++ b/Source/Tools/Flax.Build/Build/EngineTarget.cs
@@ -141,7 +141,7 @@ namespace Flax.Build
mainModuleOptions.SourcePaths.Add(mainModule.FolderPath);
mainModule.Setup(mainModuleOptions);
mainModuleOptions.MergeSourcePathsIntoSourceFiles();
- mainModuleOptions.CompileEnv.PreprocessorDefinitions.Add("FLAXENGINE_API=DLLIMPORT");
+ mainModuleOptions.CompileEnv.PreprocessorDefinitions.Add("FLAXENGINE_API=" + buildOptions.Toolchain.DllImport);
Builder.BuildModuleInner(buildData, mainModule, mainModuleOptions, false);
// Link executable
diff --git a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs
index e52a6055c..5b748a481 100644
--- a/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs
+++ b/Source/Tools/Flax.Build/Build/NativeCpp/Builder.NativeCpp.cs
@@ -695,14 +695,14 @@ namespace Flax.Build
if (buildData.Target.LinkType == TargetLinkType.Modular)
{
// Export symbols from binary module
- moduleOptions.CompileEnv.PreprocessorDefinitions.Add(binaryModuleNameUpper + (target.UseSymbolsExports ? "_API=DLLEXPORT" : "_API="));
+ moduleOptions.CompileEnv.PreprocessorDefinitions.Add(binaryModuleNameUpper + (target.UseSymbolsExports ? "_API=" + toolchain.DllExport : "_API="));
}
else
{
// Export symbols from all binary modules in the build
foreach (var q in buildData.BinaryModules)
{
- moduleOptions.CompileEnv.PreprocessorDefinitions.Add(q.Key.ToUpperInvariant() + (target.UseSymbolsExports ? "_API=DLLEXPORT" : "_API="));
+ moduleOptions.CompileEnv.PreprocessorDefinitions.Add(q.Key.ToUpperInvariant() + (target.UseSymbolsExports ? "_API=" + toolchain.DllExport : "_API="));
}
}
@@ -715,7 +715,7 @@ namespace Flax.Build
if (buildData.Target.LinkType == TargetLinkType.Modular)
{
// Import symbols from referenced binary module
- moduleOptions.CompileEnv.PreprocessorDefinitions.Add(q.Name.ToUpperInvariant() + "_API=DLLIMPORT");
+ moduleOptions.CompileEnv.PreprocessorDefinitions.Add(q.Name.ToUpperInvariant() + "_API=" + toolchain.DllImport);
// Link against the referenced binary module
if (toolchain.UseImportLibraryWhenLinking)
@@ -726,7 +726,7 @@ namespace Flax.Build
else if (target.UseSymbolsExports)
{
// Export symbols from referenced binary module to be visible further
- moduleOptions.CompileEnv.PreprocessorDefinitions.Add(q.Name.ToUpperInvariant() + "_API=DLLEXPORT");
+ moduleOptions.CompileEnv.PreprocessorDefinitions.Add(q.Name.ToUpperInvariant() + "_API=" + toolchain.DllExport);
}
else
{
diff --git a/Source/Tools/Flax.Build/Build/Toolchain.cs b/Source/Tools/Flax.Build/Build/Toolchain.cs
index 252e3f071..262d821c7 100644
--- a/Source/Tools/Flax.Build/Build/Toolchain.cs
+++ b/Source/Tools/Flax.Build/Build/Toolchain.cs
@@ -41,6 +41,16 @@ namespace Flax.Build
///
public virtual bool GeneratesImportLibraryWhenLinking => false;
+ ///
+ /// Gets the compiler attribute for symbols exported to shared library (dll file).
+ ///
+ public abstract string DllExport { get; }
+
+ ///
+ /// Gets the compiler attribute for symbols imported from shared library (dll file).
+ ///
+ public abstract string DllImport { get; }
+
///
/// Initializes a new instance of the class.
///
diff --git a/Source/Tools/Flax.Build/Platforms/Unix/UnixToolchain.cs b/Source/Tools/Flax.Build/Platforms/Unix/UnixToolchain.cs
index e66af3ece..f4598db2c 100644
--- a/Source/Tools/Flax.Build/Platforms/Unix/UnixToolchain.cs
+++ b/Source/Tools/Flax.Build/Platforms/Unix/UnixToolchain.cs
@@ -195,6 +195,12 @@ namespace Flax.Build.Platforms
}
}
+ ///
+ public override string DllExport => "__attribute__ ((__visibility__ (\"default\")))";
+
+ ///
+ public override string DllImport => "";
+
///
public override void LogInfo()
{
diff --git a/Source/Tools/Flax.Build/Platforms/Windows/WindowsToolchainBase.cs b/Source/Tools/Flax.Build/Platforms/Windows/WindowsToolchainBase.cs
index 919971f68..38446ee17 100644
--- a/Source/Tools/Flax.Build/Platforms/Windows/WindowsToolchainBase.cs
+++ b/Source/Tools/Flax.Build/Platforms/Windows/WindowsToolchainBase.cs
@@ -330,6 +330,12 @@ namespace Flax.Build.Platforms
///
public override bool GeneratesImportLibraryWhenLinking => true;
+ ///
+ public override string DllExport => "__declspec(dllexport)";
+
+ ///
+ public override string DllImport => "__declspec(dllimport)";
+
///
public override void LogInfo()
{