Implement Wayland protocols module and file generation
This commit is contained in:
@@ -101,6 +101,8 @@ public class Platform : EngineModule
|
||||
options.SourcePaths.Add(Path.Combine(FolderPath, "SDL"));
|
||||
break;
|
||||
}
|
||||
if (options.Platform.Target == TargetPlatform.Linux)
|
||||
options.PublicDependencies.Add("Wayland");
|
||||
}
|
||||
if (options.Target.IsEditor)
|
||||
{
|
||||
|
||||
29
Source/ThirdParty/Wayland/LICENSE.txt
vendored
Normal file
29
Source/ThirdParty/Wayland/LICENSE.txt
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
Copyright © 2008-2012 Kristian Høgsberg
|
||||
Copyright © 2010-2012 Intel Corporation
|
||||
Copyright © 2011 Benjamin Franzke
|
||||
Copyright © 2012 Collabora, Ltd.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice (including the next
|
||||
paragraph) shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
---
|
||||
|
||||
The above is the version of the MIT "Expat" License used by X.org:
|
||||
|
||||
http://cgit.freedesktop.org/xorg/xserver/tree/COPYING
|
||||
37
Source/ThirdParty/Wayland/Wayland.Build.cs
vendored
Normal file
37
Source/ThirdParty/Wayland/Wayland.Build.cs
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Flax.Build;
|
||||
using Flax.Build.NativeCpp;
|
||||
|
||||
/// <summary>
|
||||
/// https://gitlab.freedesktop.org/wayland/wayland-protocolsk
|
||||
/// </summary>
|
||||
public class Wayland : ThirdPartyModule
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
|
||||
LicenseType = LicenseTypes.MIT;
|
||||
LicenseFilePath = "LICENSE.txt";
|
||||
|
||||
// Merge third-party modules into engine binary
|
||||
BinaryModuleName = "FlaxEngine";
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void Setup(BuildOptions options)
|
||||
{
|
||||
base.Setup(options);
|
||||
|
||||
if (options.Platform.Target != TargetPlatform.Linux)
|
||||
throw new InvalidPlatformException(options.Platform.Target);
|
||||
|
||||
// Include generated protocol files for dependency
|
||||
options.PublicIncludePaths.Add(Path.Combine(FolderPath, "include"));
|
||||
options.SourceFiles.AddRange(Directory.GetFiles(FolderPath, "*.cpp", SearchOption.TopDirectoryOnly));
|
||||
}
|
||||
}
|
||||
63
Source/Tools/Flax.Build/Deps/Dependencies/Wayland.cs
Normal file
63
Source/Tools/Flax.Build/Deps/Dependencies/Wayland.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Flax.Build;
|
||||
|
||||
namespace Flax.Deps.Dependencies
|
||||
{
|
||||
/// <summary>
|
||||
/// Wayland protocols.
|
||||
/// </summary>
|
||||
/// <seealso cref="Flax.Deps.Dependency" />
|
||||
class Wayland : Dependency
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public override TargetPlatform[] Platforms
|
||||
{
|
||||
get
|
||||
{
|
||||
switch (BuildPlatform)
|
||||
{
|
||||
case TargetPlatform.Linux:
|
||||
return new[]
|
||||
{
|
||||
TargetPlatform.Linux,
|
||||
};
|
||||
default: return new TargetPlatform[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void Build(BuildOptions options)
|
||||
{
|
||||
var dstPath = Path.Combine(options.ThirdPartyFolder, "Wayland");
|
||||
var protocolsPath = Path.Combine(dstPath, "protocols");
|
||||
var includePath = Path.Combine(dstPath, "include");
|
||||
|
||||
foreach (var platform in options.Platforms)
|
||||
{
|
||||
BuildStarted(platform);
|
||||
switch (platform)
|
||||
{
|
||||
case TargetPlatform.Linux:
|
||||
if (!Directory.Exists(Path.Combine(includePath, "wayland")))
|
||||
Directory.CreateDirectory(Path.Combine(includePath, "wayland"));
|
||||
|
||||
string[] protocolFiles = Directory.GetFiles(protocolsPath, "*.xml", SearchOption.TopDirectoryOnly);
|
||||
foreach (var protocolPath in protocolFiles)
|
||||
{
|
||||
var headerFile = Path.ChangeExtension(Path.GetFileName(protocolPath), "h");
|
||||
var glueFile = Path.ChangeExtension(Path.GetFileName(protocolPath), "cpp");
|
||||
Utilities.Run("wayland-scanner", $"client-header {protocolPath} include/wayland/{headerFile}", null, dstPath, Utilities.RunOptions.DefaultTool);
|
||||
Utilities.Run("wayland-scanner", $"private-code {protocolPath} {glueFile}", null, dstPath, Utilities.RunOptions.DefaultTool);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Utilities.FileCopy("/usr/share/licenses/wayland/COPYING", Path.Combine(dstPath, "LICENSE.txt"));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user