Skip to content

Commit

Permalink
Merge pull request #78113 from lawnjelly/scu_build_3
Browse files Browse the repository at this point in the history
[3.x] Add support for single compilation unit builds
  • Loading branch information
akien-mga authored Jul 3, 2023
2 parents 29eeb46 + 43e181a commit ac5d7dc
Show file tree
Hide file tree
Showing 35 changed files with 542 additions and 130 deletions.
6 changes: 6 additions & 0 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ from collections import OrderedDict
# Local
import methods
import gles_builders
import scu_builders
from platform_methods import run_in_subprocess

# scan possible build platforms
Expand Down Expand Up @@ -155,6 +156,7 @@ opts.Add(BoolVariable("disable_advanced_gui", "Disable advanced GUI nodes and be
opts.Add(BoolVariable("no_editor_splash", "Don't use the custom splash screen for the editor", True))
opts.Add("system_certs_path", "Use this path as SSL certificates default for editor (for package maintainers)", "")
opts.Add(BoolVariable("use_precise_math_checks", "Math checks use very precise epsilon (debug option)", False))
opts.Add(BoolVariable("scu_build", "Use single compilation unit build", False))
opts.Add(
EnumVariable(
"rids",
Expand Down Expand Up @@ -442,6 +444,10 @@ if selected_platform in platform_list:
"for an optimized template with debug features)."
)

# Run SCU file generation script if in a SCU build.
if env["scu_build"]:
methods.set_scu_folders(scu_builders.generate_scu_files(env["verbose"], env_base["target"] != "debug"))

# Must happen after the flags' definition, as configure is when most flags
# are actually handled to change compile options, etc.
detect.configure(env)
Expand Down
2 changes: 2 additions & 0 deletions core/color_names.inc
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
// Names from https://en.wikipedia.org/wiki/X11_color_names
#pragma once

#include "core/map.h"

static Map<String, Color> _named_colors;
Expand Down
3 changes: 2 additions & 1 deletion core/make_binders.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ class MethodBind$argc$$ifret R$$ifconst C$ : public MethodBind {
#endif
"""

template = """
template = """#pragma once
#ifndef TYPED_METHOD_BIND
$iftempl template<$ $ifret class R$ $ifretargs ,$ $arg, class P@$ $iftempl >$
class MethodBind$argc$$ifret R$$ifconst C$ : public MethodBind {
Expand Down
4 changes: 2 additions & 2 deletions drivers/gles2/rasterizer_scene_gles2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
#endif
#endif

static const GLenum _cube_side_enum[6] = {
const GLenum RasterizerSceneGLES2::_cube_side_enum[6] = {

GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
GL_TEXTURE_CUBE_MAP_POSITIVE_X,
Expand Down Expand Up @@ -1332,7 +1332,7 @@ void RasterizerSceneGLES2::_fill_render_list(InstanceBase **p_cull_result, int p
}
}

static const GLenum gl_primitive[] = {
const GLenum RasterizerSceneGLES2::gl_primitive[] = {
GL_POINTS,
GL_LINES,
GL_LINE_STRIP,
Expand Down
2 changes: 2 additions & 0 deletions drivers/gles2/rasterizer_scene_gles2.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ class RasterizerSceneGLES2 : public RasterizerScene {

private:
uint32_t _light_counter;
static const GLenum gl_primitive[];
static const GLenum _cube_side_enum[6];

public:
RasterizerStorageGLES2 *storage;
Expand Down
2 changes: 1 addition & 1 deletion drivers/gles2/shader_gles2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ static void _display_error_with_code(const String &p_error, const Vector<const c
ERR_PRINT(p_error);
}

static String _mkid(const String &p_id) {
String ShaderGLES2::_mkid(const String &p_id) {
String id = "m_" + p_id;
return id.replace("__", "_dus_"); //doubleunderscore is reserved in glsl
}
Expand Down
2 changes: 2 additions & 0 deletions drivers/gles2/shader_gles2.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@
class RasterizerStorageGLES2;

class ShaderGLES2 {
static String _mkid(const String &p_id);

protected:
struct Enum {
uint64_t mask;
Expand Down
8 changes: 4 additions & 4 deletions drivers/gles3/rasterizer_scene_gles3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
#define glClearDepth glClearDepthf
#endif

static const GLenum _cube_side_enum[6] = {
const GLenum RasterizerSceneGLES3::_cube_side_enum[6] = {

GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
GL_TEXTURE_CUBE_MAP_POSITIVE_X,
Expand All @@ -52,7 +52,7 @@ static const GLenum _cube_side_enum[6] = {

};

static _FORCE_INLINE_ void store_transform(const Transform &p_mtx, float *p_array) {
void RasterizerSceneGLES3::store_transform(const Transform &p_mtx, float *p_array) {
p_array[0] = p_mtx.basis.elements[0][0];
p_array[1] = p_mtx.basis.elements[1][0];
p_array[2] = p_mtx.basis.elements[2][0];
Expand All @@ -71,7 +71,7 @@ static _FORCE_INLINE_ void store_transform(const Transform &p_mtx, float *p_arra
p_array[15] = 1;
}

static _FORCE_INLINE_ void store_camera(const CameraMatrix &p_mtx, float *p_array) {
void RasterizerSceneGLES3::store_camera(const CameraMatrix &p_mtx, float *p_array) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
p_array[i * 4 + j] = p_mtx.matrix[i][j];
Expand Down Expand Up @@ -1482,7 +1482,7 @@ void RasterizerSceneGLES3::_setup_geometry(RenderList::Element *e, const Transfo
}
}

static const GLenum gl_primitive[] = {
const GLenum RasterizerSceneGLES3::gl_primitive[] = {
GL_POINTS,
GL_LINES,
GL_LINE_STRIP,
Expand Down
7 changes: 7 additions & 0 deletions drivers/gles3/rasterizer_scene_gles3.h
Original file line number Diff line number Diff line change
Expand Up @@ -863,6 +863,13 @@ class RasterizerSceneGLES3 : public RasterizerScene {
virtual void set_scene_pass(uint64_t p_pass);
virtual void set_debug_draw_mode(VS::ViewportDebugDraw p_debug_draw);

private:
_FORCE_INLINE_ void store_transform(const Transform &p_mtx, float *p_array);
_FORCE_INLINE_ void store_camera(const CameraMatrix &p_mtx, float *p_array);
static const GLenum gl_primitive[];
static const GLenum _cube_side_enum[6];

public:
void iteration();
void initialize();
void finalize();
Expand Down
9 changes: 7 additions & 2 deletions editor/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,18 @@ if env["tools"]:
reg_exporters = "void register_exporters() {\n"
for e in env.platform_exporters:
# Glob all .cpp files in export folder
files = Glob("#platform/" + e + "/export/" + "*.cpp")
env.add_source_files(env.editor_sources, files)
if not env["scu_build"]:
files = Glob("#platform/" + e + "/export/" + "*.cpp")
env.add_source_files(env.editor_sources, files)

reg_exporters += "\tregister_" + e + "_exporter();\n"
reg_exporters_inc += '#include "platform/' + e + '/export/export.h"\n'
reg_exporters += "}\n"

# If we are in a SCU build, we add all the platform exporters in one SCU file.
if env["scu_build"]:
env.add_source_files(env.editor_sources, "../platform/*.cpp")

# NOTE: It is safe to generate this file here, since this is still executed serially
with open_utf8("register_exporters.gen.cpp", "w") as f:
f.write(reg_exporters_inc)
Expand Down
2 changes: 1 addition & 1 deletion editor/editor_about.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
#include "editor_node.h"

// The metadata key used to store and retrieve the version text to copy to the clipboard.
static const String META_TEXT_TO_COPY = "text_to_copy";
const String EditorAbout::META_TEXT_TO_COPY = "text_to_copy";

void EditorAbout::_notification(int p_what) {
switch (p_what) {
Expand Down
1 change: 1 addition & 0 deletions editor/editor_about.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ class EditorAbout : public AcceptDialog {
GDCLASS(EditorAbout, AcceptDialog);

private:
static const String META_TEXT_TO_COPY;
void _license_tree_selected();
void _version_button_pressed();
ScrollContainer *_populate_list(const String &p_name, const List<String> &p_sections, const char *const *const p_src[], const int p_flag_single_column = 0);
Expand Down
28 changes: 14 additions & 14 deletions editor/editor_inspector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,20 +43,6 @@
#include "scene/property_utils.h"
#include "scene/resources/packed_scene.h"

static bool _property_path_matches(const String &p_property_path, const String &p_filter, EditorPropertyNameProcessor::Style p_style) {
if (p_property_path.findn(p_filter) != -1) {
return true;
}

const Vector<String> sections = p_property_path.split("/");
for (int i = 0; i < sections.size(); i++) {
if (p_filter.is_subsequence_ofi(EditorPropertyNameProcessor::get_singleton()->process_name(sections[i], p_style))) {
return true;
}
}
return false;
}

Size2 EditorProperty::get_minimum_size() const {
Size2 ms;
Ref<Font> font = get_font("font", "Tree");
Expand Down Expand Up @@ -1232,6 +1218,20 @@ EditorInspectorSection::~EditorInspectorSection() {
Ref<EditorInspectorPlugin> EditorInspector::inspector_plugins[MAX_PLUGINS];
int EditorInspector::inspector_plugin_count = 0;

bool EditorInspector::_property_path_matches(const String &p_property_path, const String &p_filter, EditorPropertyNameProcessor::Style p_style) {
if (p_property_path.findn(p_filter) != -1) {
return true;
}

const Vector<String> sections = p_property_path.split("/");
for (int i = 0; i < sections.size(); i++) {
if (p_filter.is_subsequence_ofi(EditorPropertyNameProcessor::get_singleton()->process_name(sections[i], p_style))) {
return true;
}
}
return false;
}

EditorProperty *EditorInspector::instantiate_property_editor(Object *p_object, Variant::Type p_type, const String &p_path, PropertyHint p_hint, const String &p_hint_text, int p_usage) {
for (int i = inspector_plugin_count - 1; i >= 0; i--) {
inspector_plugins[i]->parse_property(p_object, p_type, p_path, p_hint, p_hint_text, p_usage);
Expand Down
1 change: 1 addition & 0 deletions editor/editor_inspector.h
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,7 @@ class EditorInspector : public ScrollContainer {
void _property_keyed_with_value(const String &p_path, const Variant &p_value, bool p_advance);
void _property_checked(const String &p_path, bool p_checked);
void _property_pinned(const String &p_path, bool p_pinned);
bool _property_path_matches(const String &p_property_path, const String &p_filter, EditorPropertyNameProcessor::Style p_style);

void _resource_selected(const String &p_path, RES p_resource);
void _property_selected(const String &p_path, int p_focusable);
Expand Down
28 changes: 14 additions & 14 deletions editor/editor_sectioned_inspector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,20 +34,6 @@
#include "editor_scale.h"
#include "editor_settings.h"

static bool _property_path_matches(const String &p_property_path, const String &p_filter, EditorPropertyNameProcessor::Style p_style) {
if (p_property_path.findn(p_filter) != -1) {
return true;
}

const Vector<String> sections = p_property_path.split("/");
for (int i = 0; i < sections.size(); i++) {
if (p_filter.is_subsequence_ofi(EditorPropertyNameProcessor::get_singleton()->process_name(sections[i], p_style))) {
return true;
}
}
return false;
}

class SectionedInspectorFilter : public Object {
GDCLASS(SectionedInspectorFilter, Object);

Expand Down Expand Up @@ -145,6 +131,20 @@ class SectionedInspectorFilter : public Object {
}
};

bool SectionedInspector::_property_path_matches(const String &p_property_path, const String &p_filter, EditorPropertyNameProcessor::Style p_style) {
if (p_property_path.findn(p_filter) != -1) {
return true;
}

const Vector<String> sections = p_property_path.split("/");
for (int i = 0; i < sections.size(); i++) {
if (p_filter.is_subsequence_ofi(EditorPropertyNameProcessor::get_singleton()->process_name(sections[i], p_style))) {
return true;
}
}
return false;
}

void SectionedInspector::_bind_methods() {
ClassDB::bind_method("_section_selected", &SectionedInspector::_section_selected);
ClassDB::bind_method("_search_changed", &SectionedInspector::_search_changed);
Expand Down
1 change: 1 addition & 0 deletions editor/editor_sectioned_inspector.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class SectionedInspector : public HSplitContainer {
void _section_selected();

void _search_changed(const String &p_what);
bool _property_path_matches(const String &p_property_path, const String &p_filter, EditorPropertyNameProcessor::Style p_style);

protected:
void _notification(int p_what);
Expand Down
2 changes: 1 addition & 1 deletion editor/plugins/text_editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -494,7 +494,7 @@ void TextEditor::_bind_methods() {
ClassDB::bind_method("_prepare_edit_menu", &TextEditor::_prepare_edit_menu);
}

static ScriptEditorBase *create_editor(const RES &p_resource) {
ScriptEditorBase *TextEditor::create_editor(const RES &p_resource) {
if (Object::cast_to<TextFile>(*p_resource)) {
return memnew(TextEditor);
}
Expand Down
1 change: 1 addition & 0 deletions editor/plugins/text_editor.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ class TextEditor : public ScriptEditorBase {
BOOKMARK_GOTO_PREV,
BOOKMARK_REMOVE_ALL,
};
static ScriptEditorBase *create_editor(const RES &p_resource);

protected:
static void _bind_methods();
Expand Down
2 changes: 2 additions & 0 deletions main/tests/test_string.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1330,3 +1330,5 @@ MainLoop *test() {
return nullptr;
}
} // namespace TestString

#undef CHECK
2 changes: 2 additions & 0 deletions main/tests/test_theme.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -301,3 +301,5 @@ MainLoop *test() {
return nullptr;
}
} // namespace TestTheme

#undef CHECK
Loading

0 comments on commit ac5d7dc

Please sign in to comment.