Skip to content

Commit dd9acc7

Browse files
committed
Add tests/1-gdextension test
1 parent 3ffa7ba commit dd9acc7

File tree

8 files changed

+125
-0
lines changed

8 files changed

+125
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
res://my.gdextension

β€Žtests/1-gdextension/build.pyβ€Ž

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import platform
2+
from pathlib import Path
3+
import subprocess
4+
5+
6+
PROJECT_DIR = Path(__file__).resolve().parent
7+
GODOT_HEADERS_DIR = PROJECT_DIR / "godot_headers"
8+
9+
10+
if platform.system() == "Windows":
11+
cmd = ["cl.exe", "/DEBUG", "/LD", "my.c", "/I", str(GODOT_HEADERS_DIR)]
12+
elif platform.system() == "Darwin":
13+
cmd = [
14+
"cc",
15+
"-g",
16+
"-fPIC",
17+
"-shared",
18+
"-c",
19+
"my.c",
20+
"-o",
21+
"my.so",
22+
"-I",
23+
str(GODOT_HEADERS_DIR),
24+
]
25+
else:
26+
assert platform.system() == "Linux"
27+
cmd = [
28+
"cc",
29+
"-g",
30+
"-fPIC",
31+
"-shared",
32+
"-c",
33+
"my.c",
34+
"-o",
35+
"my.so",
36+
"-I",
37+
str(GODOT_HEADERS_DIR),
38+
]
39+
40+
print(f"cd {PROJECT_DIR} && " + " ".join(cmd))
41+
subprocess.check_call(cmd, cwd=PROJECT_DIR)

β€Žtests/1-gdextension/main.gdβ€Ž

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
extends Node
2+
3+
func _ready():
4+
# Exit godot
5+
self.get_tree().quit()
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[gd_scene load_steps=2 format=3 uid="uid://2mikyvxkygni"]
2+
3+
[ext_resource type="Script" path="res://main.gd" id="1_2fqr4"]
4+
5+
[node name="Node" type="Node"]
6+
script = ExtResource( "1_2fqr4" )

β€Žtests/1-gdextension/my.cβ€Ž

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#include <godot/gdextension_interface.h>
2+
3+
#ifdef _WIN32
4+
# define DLL_EXPORT __declspec(dllexport)
5+
# define DLL_IMPORT __declspec(dllimport)
6+
#else
7+
# define DLL_EXPORT
8+
# define DLL_IMPORT
9+
#endif
10+
11+
// Nobody ain't no time to include stdbool.h !
12+
#define bool unsigned int;
13+
#define true 1
14+
#define false 0
15+
16+
17+
static void _initialize(void *userdata, GDExtensionInitializationLevel p_level) {
18+
if (p_level != GDEXTENSION_INITIALIZATION_SERVERS) {
19+
return;
20+
}
21+
printf("My GDExtension initialize\n");
22+
}
23+
24+
static void _deinitialize(void *userdata, GDExtensionInitializationLevel p_level) {
25+
if (p_level != GDEXTENSION_INITIALIZATION_SERVERS) {
26+
return;
27+
}
28+
printf("My GDExtension deinitialize\n");
29+
}
30+
31+
DLL_EXPORT GDExtensionBool my_init(
32+
const GDExtensionInterface *p_interface,
33+
const GDExtensionClassLibraryPtr p_library,
34+
GDExtensionInitialization *r_initialization
35+
) {
36+
printf("My GDExtension entry point call\n");
37+
38+
r_initialization->minimum_initialization_level = GDEXTENSION_INITIALIZATION_SERVERS;
39+
r_initialization->userdata = NULL;
40+
r_initialization->initialize = _initialize;
41+
r_initialization->deinitialize = _deinitialize;
42+
43+
return true;
44+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[configuration]
2+
3+
entry_symbol = "my_init"
4+
5+
[libraries]
6+
7+
linux.64="res://my.so"
8+
linux.32="res://my.so"
9+
windows.64="res://my.dll"
10+
windows.32="res://my.dll"
11+
macos.64="res://my.dylib"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
; Engine configuration file.
2+
; It's best edited using the editor UI and not directly,
3+
; since the parameters that go here are not all obvious.
4+
;
5+
; Format:
6+
; [section] ; section goes between []
7+
; param=value ; assign values to parameters
8+
9+
config_version=5
10+
11+
[application]
12+
13+
run/main_scene="res://main.tscn"
14+
config/features=PackedStringArray("4.0")
15+
name="TestProject"
16+
main_scene="res://main.tscn"

0 commit comments

Comments
Β (0)