From 4aaa2f5e813b1be602fe161f7da145151342e883 Mon Sep 17 00:00:00 2001
From: Lukas Tenbrink <lukas.tenbrink@gmail.com>
Date: Tue, 11 Feb 2025 22:11:11 +0100
Subject: [PATCH] Remove `.dev` suffix from builds. Warn on load when the
 GDExtension is loaded from a dev build.

---
 cmake/godotcpp.cmake |  1 -
 src/godot.cpp        | 11 +++++++++++
 tools/godotcpp.py    |  4 +---
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/cmake/godotcpp.cmake b/cmake/godotcpp.cmake
index a57e2c5f4..ad490b0b3 100644
--- a/cmake/godotcpp.cmake
+++ b/cmake/godotcpp.cmake
@@ -296,7 +296,6 @@ function( godotcpp_generate )
         string( CONCAT GODOT_SUFFIX
                 "$<1:.${SYSTEM_NAME}>"
                 "$<1:.${TARGET_ALIAS}>"
-                "$<${IS_DEV_BUILD}:.dev>"
                 "$<$<STREQUAL:${GODOT_PRECISION},double>:.double>"
                 "$<1:.${ARCH_NAME}>"
                 # TODO IOS_SIMULATOR
diff --git a/src/godot.cpp b/src/godot.cpp
index 31a64c462..722d453ab 100644
--- a/src/godot.cpp
+++ b/src/godot.cpp
@@ -526,6 +526,17 @@ void GDExtensionBinding::initialize_level(void *p_userdata, GDExtensionInitializ
 			doc_data.load_data();
 		}
 	}
+
+#ifdef DEV_ENABLED
+	if ((ModuleInitializationLevel)p_level == MODULE_INITIALIZATION_LEVEL_SCENE) {
+		callable_mp_static(+[]() {
+			String library_path;
+			internal::gdextension_interface_get_library_path(internal::library, library_path._native_ptr());
+
+			WARN_PRINT("GDExtension loaded from a development build: " + library_path);
+		}).call_deferred();
+	}
+#endif
 }
 
 void GDExtensionBinding::deinitialize_level(void *p_userdata, GDExtensionInitializationLevel p_level) {
diff --git a/tools/godotcpp.py b/tools/godotcpp.py
index 8931e6dc7..18381a79b 100644
--- a/tools/godotcpp.py
+++ b/tools/godotcpp.py
@@ -485,8 +485,6 @@ def generate(env):
 
     # Suffix
     suffix = ".{}.{}".format(env["platform"], env["target"])
-    if env.dev_build:
-        suffix += ".dev"
     if env["precision"] == "double":
         suffix += ".double"
     suffix += "." + env["arch"]
@@ -496,7 +494,7 @@ def generate(env):
         suffix += ".nothreads"
 
     env["suffix"] = suffix  # Exposed when included from another project
-    env["OBJSUFFIX"] = suffix + env["OBJSUFFIX"]
+    env["OBJSUFFIX"] = suffix + (".dev" if env.dev_build else "") + env["OBJSUFFIX"]
 
     # compile_commands.json
     env.Tool("compilation_db")