builds godot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
diff --git a/main/main.cpp b/main/main.cpp
index 2d0843a331..2f46159c45 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -156,10 +156,10 @@ static bool editor = false;
 static bool project_manager = false;
 static bool cmdline_tool = false;
 static String locale;
-static bool show_help = false;
 static bool auto_quit = false;
 static OS::ProcessID editor_pid = 0;
 #ifdef TOOLS_ENABLED
+static bool show_help = false;
 static bool found_project = false;
 static bool auto_build_solutions = false;
 static String debug_server_uri;
@@ -301,6 +301,7 @@ void finalize_theme_db() {
 #define MAIN_PRINT(m_txt)
 #endif
 
+#ifdef TOOLS_ENABLED
 void Main::print_help(const char *p_binary) {
 	print_line(String(VERSION_NAME) + " v" + get_full_version_string() + " - " + String(VERSION_WEBSITE));
 	OS::get_singleton()->print("Free and open source software under the terms of the MIT license.\n");
@@ -319,11 +320,9 @@ void Main::print_help(const char *p_binary) {
 
 	OS::get_singleton()->print("Run options:\n");
 	OS::get_singleton()->print("  --, ++                                       Separator for user-provided arguments. Following arguments are not used by the engine, but can be read from `OS.get_cmdline_user_args()`.\n");
-#ifdef TOOLS_ENABLED
 	OS::get_singleton()->print("  -e, --editor                                 Start the editor instead of running the scene.\n");
 	OS::get_singleton()->print("  -p, --project-manager                        Start the project manager, even if a project is auto-detected.\n");
 	OS::get_singleton()->print("  --debug-server <uri>                         Start the editor debug server (<protocol>://<host/IP>[:<port>], e.g. tcp://127.0.0.1:6007)\n");
-#endif
 	OS::get_singleton()->print("  --quit                                       Quit after the first iteration.\n");
 	OS::get_singleton()->print("  -l, --language <locale>                      Use a specific locale (<locale> being a two-letter code).\n");
 	OS::get_singleton()->print("  --path <directory>                           Path to a project (<directory> must contain a 'project.godot' file).\n");
@@ -429,6 +428,7 @@ void Main::print_help(const char *p_binary) {
 #endif
 	OS::get_singleton()->print("\n");
 }
+#endif
 
 #ifdef TESTS_ENABLED
 // The order is the same as in `Main::setup()`, only core and some editor types
@@ -669,7 +669,9 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 	List<String> args;
 	List<String> main_args;
 	List<String> user_args;
+#ifdef TOOLS_ENABLED
 	bool adding_user_args = false;
+#endif
 	List<String> platform_args = OS::get_singleton()->get_cmdline_platform_args();
 
 	// Add command line arguments.
@@ -764,6 +766,19 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 		}
 #endif
 
+#ifndef TOOLS_ENABLED
+		if (I->get() == "--main-pack") {
+			if (I->next()) {
+				main_pack = I->next()->get();
+				N = I->next()->next();
+			} else {
+				OS::get_singleton()->print("Missing path to main pack file, aborting.\n");
+				goto error;
+			};
+		} else {
+			user_args.push_back(I->get());
+		}
+#else
 		if (adding_user_args) {
 			user_args.push_back(I->get());
 		} else if (I->get() == "-h" || I->get() == "--help" || I->get() == "/?") { // display help
@@ -1028,7 +1043,6 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 				OS::get_singleton()->print("Missing render thread mode argument, aborting.\n");
 				goto error;
 			}
-#ifdef TOOLS_ENABLED
 		} else if (I->get() == "-e" || I->get() == "--editor") { // starts editor
 
 			editor = true;
@@ -1116,7 +1130,6 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 			audio_driver = "Dummy";
 			display_driver = "headless";
 			main_args.push_back(I->get());
-#endif
 		} else if (I->get() == "--path") { // set path of project to start or edit
 
 			if (I->next()) {
@@ -1148,9 +1161,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 			} else {
 				project_path = path;
 			}
-#ifdef TOOLS_ENABLED
 			editor = true;
-#endif
 		} else if (I->get() == "-b" || I->get() == "--breakpoints") { // add breakpoints
 
 			if (I->next()) {
@@ -1293,18 +1304,15 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 		} else {
 			main_args.push_back(I->get());
 		}
-
+#endif
 		I = N;
 	}
-
 #ifdef TOOLS_ENABLED
 	if (editor && project_manager) {
 		OS::get_singleton()->print(
 				"Error: Command line arguments implied opening both editor and project manager, which is not possible. Aborting.\n");
 		goto error;
 	}
-#endif
-
 	// Network file system needs to be configured before globals, since globals are based on the
 	// 'project.godot' file which will only be available through the network if this is enabled
 	FileAccessNetwork::configure();
@@ -1326,7 +1334,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
 
 		FileAccess::make_default<FileAccessNetwork>(FileAccess::ACCESS_RESOURCES);
 	}
-
+#endif
 	if (globals->setup(project_path, main_pack, upwards, editor) == OK) {
 #ifdef TOOLS_ENABLED
 		found_project = true;
@@ -1886,9 +1894,11 @@ error:
 	args.clear();
 	main_args.clear();
 
+#ifdef TOOLS_ENABLED
 	if (show_help) {
 		print_help(execpath);
 	}
+#endif
 
 	EngineDebugger::deinitialize();
 
@@ -1935,7 +1945,7 @@ error:
 
 Error Main::setup2(Thread::ID p_main_tid_override) {
 	// Print engine name and version
-	print_line(String(VERSION_NAME) + " v" + get_full_version_string() + " - " + String(VERSION_WEBSITE));
+	print_line("v" + get_full_version_string());
 
 	engine->startup_benchmark_begin_measure("servers");