From 384cfcbec6e01fe5dc673766ba9dba00d8f08e3e Mon Sep 17 00:00:00 2001 From: Sara Date: Fri, 20 Jun 2025 21:27:01 +0200 Subject: [PATCH 1/3] feat: added clang-format and formatted existing files --- modules/.clang-format | 238 +++++++++++++++++++++++++++++++++++++++ modules/PROJECT/macros.h | 22 ++-- 2 files changed, 251 insertions(+), 9 deletions(-) create mode 100644 modules/.clang-format diff --git a/modules/.clang-format b/modules/.clang-format new file mode 100644 index 00000000..6a547cf6 --- /dev/null +++ b/modules/.clang-format @@ -0,0 +1,238 @@ +# Commented out parameters are those with the same value as base LLVM style. +# We can uncomment them if we want to change their value, or enforce the +# chosen value in case the base style changes (last sync: Clang 17.0.6). +BasedOnStyle: LLVM +AccessModifierOffset: -4 +AlignAfterOpenBracket: DontAlign +# AlignArrayOfStructures: None +# AlignConsecutiveAssignments: +# Enabled: false +# AcrossEmptyLines: false +# AcrossComments: false +# AlignCompound: false +# PadOperators: true +# AlignConsecutiveBitFields: +# Enabled: false +# AcrossEmptyLines: false +# AcrossComments: false +# AlignCompound: false +# PadOperators: false +# AlignConsecutiveDeclarations: +# Enabled: false +# AcrossEmptyLines: false +# AcrossComments: false +# AlignCompound: false +# PadOperators: false +# AlignConsecutiveMacros: +# Enabled: false +# AcrossEmptyLines: false +# AcrossComments: false +# AlignCompound: false +# PadOperators: false +# AlignConsecutiveShortCaseStatements: +# Enabled: false +# AcrossEmptyLines: false +# AcrossComments: false +# AlignCaseColons: false +# AlignEscapedNewlines: Right +AlignOperands: DontAlign +AlignTrailingComments: + Kind: Never + OverEmptyLines: 0 +# AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: false +# AllowShortBlocksOnASingleLine: Never +# AllowShortCaseLabelsOnASingleLine: false +# AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: Inline +# AllowShortIfStatementsOnASingleLine: Never +# AllowShortLambdasOnASingleLine: All +# AllowShortLoopsOnASingleLine: false +# AlwaysBreakAfterDefinitionReturnType: None +# AlwaysBreakAfterReturnType: None +# AlwaysBreakBeforeMultilineStrings: false +# AlwaysBreakTemplateDeclarations: MultiLine +# AttributeMacros: +# - __capability +# BinPackArguments: true +# BinPackParameters: true +# BitFieldColonSpacing: Both +# BraceWrapping: +# AfterCaseLabel: false +# AfterClass: false +# AfterControlStatement: Never +# AfterEnum: false +# AfterFunction: false +# AfterNamespace: false +# AfterObjCDeclaration: false +# AfterStruct: false +# AfterUnion: false +# AfterExternBlock: false +# BeforeCatch: false +# BeforeElse: false +# BeforeLambdaBody: false +# BeforeWhile: false +# IndentBraces: false +# SplitEmptyFunction: true +# SplitEmptyRecord: true +# SplitEmptyNamespace: true +# BreakAfterAttributes: Never +# BreakAfterJavaFieldAnnotations: false +# BreakArrays: true +# BreakBeforeBinaryOperators: None +# BreakBeforeBraces: Attach +# BreakBeforeConceptDeclarations: Always +# BreakBeforeInlineASMColon: OnlyMultiline +# BreakBeforeTernaryOperators: true +BreakConstructorInitializers: AfterColon +# BreakInheritanceList: BeforeColon +# BreakStringLiterals: true +ColumnLimit: 0 +# CommentPragmas: "^ IWYU pragma:" +# CompactNamespaces: false +ConstructorInitializerIndentWidth: 8 +ContinuationIndentWidth: 8 +Cpp11BracedListStyle: false +# DerivePointerAlignment: false +# DisableFormat: false +# EmptyLineAfterAccessModifier: Never +# EmptyLineBeforeAccessModifier: LogicalBlock +# ExperimentalAutoDetectBinPacking: false +# FixNamespaceComments: true +# ForEachMacros: +# - foreach +# - Q_FOREACH +# - BOOST_FOREACH +# IfMacros: +# - KJ_IF_MAYBE +# IncludeBlocks: Preserve +IncludeCategories: + - Regex: ^".*"$ + Priority: 1 + - Regex: ^<.*\.h>$ + Priority: 2 + - Regex: ^<.*>$ + Priority: 3 +# IncludeIsMainRegex: (Test)?$ +# IncludeIsMainSourceRegex: "" +# IndentAccessModifiers: false +# IndentCaseBlocks: false +IndentCaseLabels: true +# IndentExternBlock: AfterExternBlock +# IndentGotoLabels: true +# IndentPPDirectives: None +# IndentRequiresClause: true +IndentWidth: 4 +# IndentWrappedFunctionNames: false +InsertBraces: true +# InsertNewlineAtEOF: false +# InsertTrailingCommas: None +# IntegerLiteralSeparator: +# Binary: 0 +# BinaryMinDigits: 0 +# Decimal: 0 +# DecimalMinDigits: 0 +# Hex: 0 +# HexMinDigits: 0 +JavaImportGroups: + - org.godotengine + - android + - androidx + - com.android + - com.google + - java + - javax +# JavaScriptQuotes: Leave +# JavaScriptWrapImports: true +# KeepEmptyLinesAtEOF: false +KeepEmptyLinesAtTheStartOfBlocks: false +# LambdaBodyIndentation: Signature +# Language: Cpp +# LineEnding: DeriveLF +# MacroBlockBegin: "" +# MacroBlockEnd: "" +# MaxEmptyLinesToKeep: 1 +# NamespaceIndentation: None +# ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 4 +# ObjCBreakBeforeNestedBlockParam: true +# ObjCSpaceAfterProperty: false +# ObjCSpaceBeforeProtocolList: true +# PPIndentWidth: -1 +PackConstructorInitializers: NextLine +# PenaltyBreakAssignment: 2 +# PenaltyBreakBeforeFirstCallParameter: 19 +# PenaltyBreakComment: 300 +# PenaltyBreakFirstLessLess: 120 +# PenaltyBreakOpenParenthesis: 0 +# PenaltyBreakString: 1000 +# PenaltyBreakTemplateDeclaration: 10 +# PenaltyExcessCharacter: 1000000 +# PenaltyIndentedWhitespace: 0 +# PenaltyReturnTypeOnItsOwnLine: 60 +# PointerAlignment: Right +# QualifierAlignment: Leave +# ReferenceAlignment: Pointer +# ReflowComments: true +# RemoveBracesLLVM: false +# RemoveParentheses: Leave +RemoveSemicolon: true +# RequiresClausePosition: OwnLine +# RequiresExpressionIndentation: OuterScope +# SeparateDefinitionBlocks: Leave +# ShortNamespaceLines: 1 +# SortIncludes: CaseSensitive +# SortJavaStaticImport: Before +# SortUsingDeclarations: LexicographicNumeric +# SpaceAfterCStyleCast: false +# SpaceAfterLogicalNot: false +# SpaceAfterTemplateKeyword: true +# SpaceAroundPointerQualifiers: Default +# SpaceBeforeAssignmentOperators: true +# SpaceBeforeCaseColon: false +# SpaceBeforeCpp11BracedList: false +# SpaceBeforeCtorInitializerColon: true +# SpaceBeforeInheritanceColon: true +# SpaceBeforeJsonColon: false +# SpaceBeforeParens: ControlStatements +# SpaceBeforeParensOptions: +# AfterControlStatements: true +# AfterForeachMacros: true +# AfterFunctionDeclarationName: false +# AfterFunctionDefinitionName: false +# AfterIfMacros: true +# AfterOverloadedOperator: false +# AfterRequiresInClause: false +# AfterRequiresInExpression: false +# BeforeNonEmptyParentheses: false +# SpaceBeforeRangeBasedForLoopColon: true +# SpaceBeforeSquareBrackets: false +# SpaceInEmptyBlock: false +# SpacesBeforeTrailingComments: 1 +# SpacesInAngles: Never +# SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 0 # We want a minimum of 1 for comments, but allow 0 for disabled code. + Maximum: -1 +# SpacesInParens: Never +# SpacesInParensOptions: +# InConditionalStatements: false +# InCStyleCasts: false +# InEmptyParentheses: false +# Other: false +# SpacesInSquareBrackets: false +Standard: c++20 +# StatementAttributeLikeMacros: +# - Q_EMIT +# StatementMacros: +# - Q_UNUSED +# - QT_REQUIRE_VERSION +TabWidth: 4 +UseTab: Always +# VerilogBreakBetweenInstancePorts: true +# WhitespaceSensitiveMacros: +# - BOOST_PP_STRINGIZE +# - CF_SWIFT_NAME +# - NS_SWIFT_NAME +# - PP_STRINGIZE +# - STRINGIZE diff --git a/modules/PROJECT/macros.h b/modules/PROJECT/macros.h index c1c26d61..53be3185 100644 --- a/modules/PROJECT/macros.h +++ b/modules/PROJECT/macros.h @@ -1,16 +1,20 @@ #ifndef GODOT_EXTRA_MACROS_H #define GODOT_EXTRA_MACROS_H -#define BIND_GET_SET(m_property)\ -ClassDB::bind_method(D_METHOD("set_" #m_property, #m_property), &self_type::set_##m_property);\ -ClassDB::bind_method(D_METHOD("get_" #m_property), &self_type::get_##m_property) +#define BIND_GET_SET(m_property) \ + ClassDB::bind_method(D_METHOD("set_" #m_property, #m_property), \ + &self_type::set_##m_property); \ + ClassDB::bind_method(D_METHOD("get_" #m_property), \ + &self_type::get_##m_property) -#define BIND_HPROPERTY(m_type, m_property, ...)\ -BIND_GET_SET(m_property);\ -ADD_PROPERTY(PropertyInfo(m_type, #m_property, __VA_ARGS__), "set_" #m_property, "get_" #m_property) +#define BIND_HPROPERTY(m_type, m_property, ...) \ + BIND_GET_SET(m_property); \ + ADD_PROPERTY(PropertyInfo(m_type, #m_property, __VA_ARGS__), \ + "set_" #m_property, "get_" #m_property) -#define BIND_PROPERTY(m_type, m_property)\ -BIND_GET_SET(m_property);\ -ADD_PROPERTY(PropertyInfo(m_type, #m_property), "set_" #m_property, "get_" #m_property) +#define BIND_PROPERTY(m_type, m_property) \ + BIND_GET_SET(m_property); \ + ADD_PROPERTY(PropertyInfo(m_type, #m_property), "set_" #m_property, \ + "get_" #m_property) #endif // !GODOT_EXTRA_MACROS_H -- 2.47.2 From 684fcbf3c92ec2ce3ab4c04cc981add4fd8bc4ca Mon Sep 17 00:00:00 2001 From: Sara Date: Fri, 20 Jun 2025 21:28:01 +0200 Subject: [PATCH 2/3] feat: added `just format` command --- justfile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/justfile b/justfile index ad237ea9..f5db7774 100644 --- a/justfile +++ b/justfile @@ -1,8 +1,8 @@ set export BUILD_NAME := "change_me" - -build: + +build: format cd engine/ && scons target=editor symbols=yes optimization=debug dev_build=yes linker=mold use_llvm=yes compiledb=yes custom_modules="../modules" run: build @@ -29,3 +29,6 @@ initialize-template projectname: sed "s/change_me/{{projectname}}/" ./justfile mv ./modules/PROJECT ./modules/{{projectname}} +format: + # Formatting Custom Modules + clang-format -i $(find modules/ -iname '*.h' -o -iname '*.c' -o -iname '*.hpp' -o -iname '*.cpp' -o -iname '*.hxx' -o -iname '*.cxx') -- 2.47.2 From 79048bc28ed58c415232f3f1e573b128a3efc036 Mon Sep 17 00:00:00 2001 From: Sara Date: Fri, 20 Jun 2025 21:28:26 +0200 Subject: [PATCH 3/3] feat: added comments to justfile for clarity and debugging ease --- justfile | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/justfile b/justfile index f5db7774..ad0c5d09 100644 --- a/justfile +++ b/justfile @@ -3,31 +3,43 @@ set export BUILD_NAME := "change_me" build: format + # Compiling Editor cd engine/ && scons target=editor symbols=yes optimization=debug dev_build=yes linker=mold use_llvm=yes compiledb=yes custom_modules="../modules" run: build + # Running Editor engine/bin/godot.linuxbsd.editor.dev.x86_64.llvm --editor --path project release-linux: build + # Compiling Linux Release cd engine/ && scons platform=linuxbsd target=template_release arch=x86_64 linker=mold use_llvm=yes compiledb=yes custom_modules="../modules" + # Preparing Build Environment sed -i "s!templatepath!{{`realpath engine/bin/godot.linuxbsd.template_release.x86_64.llvm`}}!" project/export_presets.cfg rm -rf build && mkdir build engine/bin/godot.*.editor.dev.*.llvm --headless --export-release "Linux" project/project.godot && zip build.zip build/* + # Resetting Build Environment touch build/.gitkeep sed -i "s!{{`realpath engine/bin/godot.linuxbsd.template_release.x86_64.llvm`}}!templatepath!" project/export_presets.cfg + # Completed Linux Release Build release-windows: build + # Compiling Windows Release cd engine/ && scons platform=windows target=template_release arch=x86_64 linker=mold use_llvm=yes compiledb=yes custom_modules="../modules" + # Preparing Build Environment sed -i "s!templatepath!{{`realpath engine/bin/godot.windows.template_release.x86_64.llvm`}}!" project/export_presets.cfg rm -rf build && mkdir build engine/bin/godot.*.editor.dev.*.llvm --headless --export-release "Windows" project/project.godot && zip build.zip build/* - touch build/.gitkeep + # Resetting Build Environment + touch build/.gitkeep sed -i "s!{{`realpath engine/bin/godot.windows.template_release.x86_64.llvm`}}!templatepath!" project/export_presets.cfg + # Completed Windows Release Build initialize-template projectname: + # Initializing Template {{projectname}} sed -i -e "s/PROJECT/{{projectname}}/g" ./modules/PROJECT/register_types.h ./modules/PROJECT/register_types.cpp ./project/project.godot ./project/export_presets.cfg .gitignore sed "s/change_me/{{projectname}}/" ./justfile mv ./modules/PROJECT ./modules/{{projectname}} + # Done Initializing, you will still have to update BUILD_NAME in your justfile format: # Formatting Custom Modules -- 2.47.2