summaryrefslogtreecommitdiffstats
path: root/platform/linuxbsd
diff options
context:
space:
mode:
Diffstat (limited to 'platform/linuxbsd')
-rw-r--r--platform/linuxbsd/detect.py13
-rw-r--r--platform/linuxbsd/doc_classes/EditorExportPlatformLinuxBSD.xml73
-rw-r--r--platform/linuxbsd/x11/display_server_x11.cpp5
3 files changed, 91 insertions, 0 deletions
diff --git a/platform/linuxbsd/detect.py b/platform/linuxbsd/detect.py
index 54351757cd..dadc03685b 100644
--- a/platform/linuxbsd/detect.py
+++ b/platform/linuxbsd/detect.py
@@ -56,6 +56,16 @@ def get_opts():
]
+def get_doc_classes():
+ return [
+ "EditorExportPlatformLinuxBSD",
+ ]
+
+
+def get_doc_path():
+ return "doc_classes"
+
+
def get_flags():
return [
("arch", detect_arch()),
@@ -453,6 +463,9 @@ def configure(env: "Environment"):
else:
env.Append(LINKFLAGS=["-T", "platform/linuxbsd/pck_embed.legacy.ld"])
+ if platform.system() == "FreeBSD":
+ env.Append(LINKFLAGS=["-lkvm"])
+
## Cross-compilation
# TODO: Support cross-compilation on architectures other than x86.
host_is_64_bit = sys.maxsize > 2**32
diff --git a/platform/linuxbsd/doc_classes/EditorExportPlatformLinuxBSD.xml b/platform/linuxbsd/doc_classes/EditorExportPlatformLinuxBSD.xml
new file mode 100644
index 0000000000..4ab2464929
--- /dev/null
+++ b/platform/linuxbsd/doc_classes/EditorExportPlatformLinuxBSD.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="EditorExportPlatformLinuxBSD" inherits="EditorExportPlatformPC" version="4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ Exporter for Linux/BSD.
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ <link title="Exporting for Linux">$DOCS_URL/tutorials/export/exporting_for_linux.html</link>
+ </tutorials>
+ <members>
+ <member name="binary_format/architecture" type="String" setter="" getter="">
+ Application executable architecture.
+ Supported architectures: [code]x86_32[/code], [code]x86_64[/code], [code]arm64[/code], [code]arm32[/code], [code]rv64[/code], [code]ppc64[/code], and [code]ppc32[/code].
+ Official export templates include [code]x86_32[/code] and [code]x86_64[/code] binaries only.
+ </member>
+ <member name="binary_format/embed_pck" type="bool" setter="" getter="">
+ If [code]true[/code], project resources are embedded into the executable.
+ </member>
+ <member name="custom_template/debug" type="String" setter="" getter="">
+ Path to the custom export template. If left empty, default template is used.
+ </member>
+ <member name="custom_template/release" type="String" setter="" getter="">
+ Path to the custom export template. If left empty, default template is used.
+ </member>
+ <member name="debug/export_console_script" type="int" setter="" getter="">
+ If [code]true[/code], a console wrapper script is exported alongside the main executable, which allows running the project with enabled console output.
+ </member>
+ <member name="ssh_remote_deploy/cleanup_script" type="String" setter="" getter="">
+ Script code to execute on the remote host when app is finished.
+ The following variables can be used in the script:
+ - [code]{temp_dir}[/code] - Path of temporary folder on the remote, used to upload app and scripts to.
+ - [code]{archive_name}[/code] - Name of the ZIP containing uploaded application.
+ - [code]{exe_name}[/code] - Name of application executable.
+ - [code]{cmd_args}[/code] - Array of the command line argument for the application.
+ </member>
+ <member name="ssh_remote_deploy/enabled" type="bool" setter="" getter="">
+ Enables remote deploy using SSH/SCP.
+ </member>
+ <member name="ssh_remote_deploy/extra_args_scp" type="String" setter="" getter="">
+ Array of the additional command line arguments passed to the SCP.
+ </member>
+ <member name="ssh_remote_deploy/extra_args_ssh" type="String" setter="" getter="">
+ Array of the additional command line arguments passed to the SSH.
+ </member>
+ <member name="ssh_remote_deploy/host" type="String" setter="" getter="">
+ Remote host SSH user name and address, in [code]user@address[/code] format.
+ </member>
+ <member name="ssh_remote_deploy/port" type="String" setter="" getter="">
+ Remote host SSH port number.
+ </member>
+ <member name="ssh_remote_deploy/run_script" type="String" setter="" getter="">
+ Script code to execute on the remote host when running the app.
+ The following variables can be used in the script:
+ - [code]{temp_dir}[/code] - Path of temporary folder on the remote, used to upload app and scripts to.
+ - [code]{archive_name}[/code] - Name of the ZIP containing uploaded application.
+ - [code]{exe_name}[/code] - Name of application executable.
+ - [code]{cmd_args}[/code] - Array of the command line argument for the application.
+ </member>
+ <member name="texture_format/bptc" type="bool" setter="" getter="">
+ If [code]true[/code], project textures are exported in the BPTC format.
+ </member>
+ <member name="texture_format/etc" type="bool" setter="" getter="">
+ If [code]true[/code], project textures are exported in the ETC format.
+ </member>
+ <member name="texture_format/etc2" type="bool" setter="" getter="">
+ If [code]true[/code], project textures are exported in the ETC2 format.
+ </member>
+ <member name="texture_format/s3tc" type="bool" setter="" getter="">
+ If [code]true[/code], project textures are exported in the S3TC format.
+ </member>
+ </members>
+</class>
diff --git a/platform/linuxbsd/x11/display_server_x11.cpp b/platform/linuxbsd/x11/display_server_x11.cpp
index 9d9d4ae43e..ac4fbe2068 100644
--- a/platform/linuxbsd/x11/display_server_x11.cpp
+++ b/platform/linuxbsd/x11/display_server_x11.cpp
@@ -2671,6 +2671,11 @@ void DisplayServerX11::cursor_set_custom_image(const Ref<Resource> &p_cursor, Cu
Ref<Image> image = texture->get_image();
ERR_FAIL_COND(!image.is_valid());
+ if (image->is_compressed()) {
+ image = image->duplicate(true);
+ Error err = image->decompress();
+ ERR_FAIL_COND_MSG(err != OK, "Couldn't decompress VRAM-compressed custom mouse cursor image. Switch to a lossless compression mode in the Import dock.");
+ }
// Create the cursor structure
XcursorImage *cursor_image = XcursorImageCreate(texture_size.width, texture_size.height);