Skip to content

Commit 05f5d73

Browse files
authored
Merge pull request #1722 from enetheru/gersemi
CMake: Pre-Commit Hook to Gersemi for auto-formatting
2 parents 714c9e2 + 2f6d7f2 commit 05f5d73

13 files changed

+460
-451
lines changed

.pre-commit-config.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ repos:
3333
- id: codespell
3434
additional_dependencies: [tomli]
3535

36+
- repo: https://github.com/BlankSpruce/gersemi
37+
rev: 0.18.2
38+
hooks:
39+
- id: gersemi
40+
args: ["-i", "--no-warn-about-unknown-commands", "-l", "120"]
41+
3642
- repo: local
3743
hooks:
3844
- id: copyright-headers

CMakeLists.txt

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,23 +37,25 @@ function is run.
3737
The CMake equivalent is below.
3838
]=======================================================================]
3939

40-
include( cmake/godotcpp.cmake )
40+
include(cmake/godotcpp.cmake)
4141

4242
godotcpp_options()
4343

4444
# Define our project.
45-
project( godot-cpp
46-
VERSION 4.4
47-
DESCRIPTION "C++ bindings for the Godot Engine's GDExtensions API."
48-
HOMEPAGE_URL "https://github.com/godotengine/godot-cpp"
49-
LANGUAGES CXX)
45+
project(
46+
godot-cpp
47+
VERSION 4.4
48+
DESCRIPTION "C++ bindings for the Godot Engine's GDExtensions API."
49+
HOMEPAGE_URL "https://github.com/godotengine/godot-cpp"
50+
LANGUAGES CXX
51+
)
5052

5153
compiler_detection()
5254
godotcpp_generate()
5355

5456
# Conditionally enable the godot-cpp.test.<target> integration testing targets
55-
if( GODOTCPP_ENABLE_TESTING )
56-
add_subdirectory( test )
57+
if(GODOTCPP_ENABLE_TESTING)
58+
add_subdirectory(test)
5759
endif()
5860

5961
# If this is the top level CMakeLists.txt, Generators which honor the

cmake/GodotCPPModule.cmake

Lines changed: 77 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -26,120 +26,130 @@ The build_profile.py has a __main__ and is used as a tool
2626
Its usage is listed as:
2727
$ python build_profile.py BUILD_PROFILE INPUT_JSON [OUTPUT_JSON]
2828
]]
29-
function( build_profile_generate_trimmed_api BUILD_PROFILE INPUT_JSON OUTPUT_JSON )
29+
function(build_profile_generate_trimmed_api BUILD_PROFILE INPUT_JSON OUTPUT_JSON)
3030
execute_process(
31-
COMMAND "${Python3_EXECUTABLE}"
32-
"${godot-cpp_SOURCE_DIR}/build_profile.py"
33-
"${BUILD_PROFILE}"
34-
"${INPUT_JSON}"
35-
"${OUTPUT_JSON}"
36-
WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
31+
COMMAND
32+
"${Python3_EXECUTABLE}" "${godot-cpp_SOURCE_DIR}/build_profile.py" "${BUILD_PROFILE}" "${INPUT_JSON}"
33+
"${OUTPUT_JSON}"
34+
WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
3735
)
38-
endfunction( )
39-
36+
endfunction()
4037

4138
#[[ Generate File List
4239
4340
Use the binding_generator.py Python script to determine the list of files that
4441
will be passed to the code generator using extension_api.json.
4542
NOTE: This happens for every configure.]]
46-
function( binding_generator_get_file_list OUT_VAR_NAME API_FILEPATH OUTPUT_DIR )
47-
43+
function(binding_generator_get_file_list OUT_VAR_NAME API_FILEPATH OUTPUT_DIR)
4844
# This code snippet will be squashed into a single line
4945
# The two strings make this a list, in CMake lists are semicolon delimited strings.
50-
set( PYTHON_SCRIPT
51-
"from binding_generator import print_file_list"
52-
"print_file_list( api_filepath='${API_FILEPATH}',
46+
set(PYTHON_SCRIPT
47+
"from binding_generator import print_file_list"
48+
"print_file_list( api_filepath='${API_FILEPATH}',
5349
output_dir='${OUTPUT_DIR}',
5450
headers=True,
55-
sources=True)")
56-
message( DEBUG "Python:\n${PYTHON_SCRIPT}" )
51+
sources=True)"
52+
)
53+
message(DEBUG "Python:\n${PYTHON_SCRIPT}")
5754

5855
# Strip newlines and whitespace to make it a one-liner.
59-
string( REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT}" )
56+
string(REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT}")
6057

61-
execute_process( COMMAND "${Python3_EXECUTABLE}" "-c" "${PYTHON_SCRIPT}"
62-
WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
63-
OUTPUT_VARIABLE GENERATED_FILES_LIST
64-
OUTPUT_STRIP_TRAILING_WHITESPACE
58+
execute_process(
59+
COMMAND "${Python3_EXECUTABLE}" "-c" "${PYTHON_SCRIPT}"
60+
WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
61+
OUTPUT_VARIABLE GENERATED_FILES_LIST
62+
OUTPUT_STRIP_TRAILING_WHITESPACE
6563
)
6664

6765
# Debug output
68-
message( DEBUG "FileList-Begin" )
69-
foreach( PATH ${GENERATED_FILES_LIST} )
70-
message( DEBUG ${PATH} )
66+
message(DEBUG "FileList-Begin")
67+
foreach(PATH ${GENERATED_FILES_LIST})
68+
message(DEBUG ${PATH})
7169
endforeach()
7270

7371
# Error out if the file list generator returned no files.
74-
list( LENGTH GENERATED_FILES_LIST LIST_LENGTH )
75-
if( NOT LIST_LENGTH GREATER 0 )
76-
message( FATAL_ERROR "File List Generation Failed")
72+
list(LENGTH GENERATED_FILES_LIST LIST_LENGTH)
73+
if(NOT LIST_LENGTH GREATER 0)
74+
message(FATAL_ERROR "File List Generation Failed")
7775
endif()
78-
message( STATUS "There are ${LIST_LENGTH} Files to generate" )
79-
80-
set( ${OUT_VAR_NAME} ${GENERATED_FILES_LIST} PARENT_SCOPE )
81-
endfunction( )
76+
message(STATUS "There are ${LIST_LENGTH} Files to generate")
8277

78+
set(${OUT_VAR_NAME} ${GENERATED_FILES_LIST} PARENT_SCOPE)
79+
endfunction()
8380

8481
#[[ Generate Bindings
8582
8683
Using the generated file list, use the binding_generator.py to generate the
8784
godot-cpp bindings. This will run at build time only if there are files
8885
missing. ]]
89-
function( binding_generator_generate_bindings API_FILE USE_TEMPLATE_GET_NODE, BITS, PRECISION, OUTPUT_DIR )
86+
function(
87+
binding_generator_generate_bindings
88+
API_FILE
89+
USE_TEMPLATE_GET_NODE,
90+
BITS,
91+
PRECISION,
92+
OUTPUT_DIR
93+
)
9094
# This code snippet will be squashed into a single line
91-
set( PYTHON_SCRIPT
92-
"from binding_generator import generate_bindings"
93-
"generate_bindings(
95+
set(PYTHON_SCRIPT
96+
"from binding_generator import generate_bindings"
97+
"generate_bindings(
9498
api_filepath='${API_FILE}',
9599
use_template_get_node='${USE_TEMPLATE_GET_NODE}',
96100
bits='${BITS}',
97101
precision='${PRECISION}',
98-
output_dir='${OUTPUT_DIR}')")
102+
output_dir='${OUTPUT_DIR}')"
103+
)
99104

100-
message( DEBUG "Python:\n${PYTHON_SCRIPT}" )
105+
message(DEBUG "Python:\n${PYTHON_SCRIPT}")
101106

102107
# Strip newlines and whitespace to make it a one-liner.
103-
string( REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT}" )
104-
105-
add_custom_command(OUTPUT ${GENERATED_FILES_LIST}
106-
COMMAND "${Python3_EXECUTABLE}" "-c" "${PYTHON_SCRIPT}"
107-
VERBATIM
108-
WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
109-
MAIN_DEPENDENCY ${GODOTCPP_GDEXTENSION_API_FILE}
110-
DEPENDS ${godot-cpp_SOURCE_DIR}/binding_generator.py
111-
COMMENT "Generating bindings"
108+
string(REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT}")
109+
110+
add_custom_command(
111+
OUTPUT ${GENERATED_FILES_LIST}
112+
COMMAND "${Python3_EXECUTABLE}" "-c" "${PYTHON_SCRIPT}"
113+
VERBATIM
114+
WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
115+
MAIN_DEPENDENCY ${GODOTCPP_GDEXTENSION_API_FILE}
116+
DEPENDS ${godot-cpp_SOURCE_DIR}/binding_generator.py
117+
COMMENT "Generating bindings"
112118
)
113-
endfunction( )
119+
endfunction()
114120

115121
#[[ Generate doc_data.cpp
116122
The documentation displayed in the Godot editor is compiled into the extension.
117123
It takes a list of XML source files, and transforms them into a cpp file that
118124
is added to the sources list.]]
119-
function( generate_doc_source OUTPUT_PATH SOURCES )
125+
function(generate_doc_source OUTPUT_PATH SOURCES)
120126
# Transform SOURCES CMake LIST
121127
# quote each path with ''
122128
# join with , to transform into a python list minus the surrounding []
123-
set( PYTHON_LIST "${SOURCES}")
124-
list( TRANSFORM PYTHON_LIST REPLACE "(.*\.xml)" "'\\1'" )
125-
list( JOIN PYTHON_LIST "," PYTHON_LIST )
129+
set(PYTHON_LIST "${SOURCES}")
130+
list(TRANSFORM PYTHON_LIST REPLACE "(.*\.xml)" "'\\1'")
131+
list(JOIN PYTHON_LIST "," PYTHON_LIST)
126132

127133
get_filename_component(OUTPUT_DIR "${OUTPUT_PATH}" DIRECTORY)
128-
file(MAKE_DIRECTORY ${OUTPUT_DIR} )
134+
file(MAKE_DIRECTORY ${OUTPUT_DIR})
129135

130136
# Python one-liner to run our command
131137
# lists in CMake are just strings delimited by ';', so this works.
132-
set( PYTHON_SCRIPT "from doc_source_generator import generate_doc_source"
133-
"generate_doc_source( '${OUTPUT_PATH}', [${PYTHON_LIST}] )" )
134-
135-
add_custom_command( OUTPUT "${OUTPUT_PATH}"
136-
COMMAND "${Python3_EXECUTABLE}" "-c" "${PYTHON_SCRIPT}"
137-
VERBATIM
138-
WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
139-
DEPENDS
138+
set(PYTHON_SCRIPT
139+
"from doc_source_generator import generate_doc_source"
140+
"generate_doc_source( '${OUTPUT_PATH}', [${PYTHON_LIST}] )"
141+
)
142+
143+
add_custom_command(
144+
OUTPUT "${OUTPUT_PATH}"
145+
COMMAND "${Python3_EXECUTABLE}" "-c" "${PYTHON_SCRIPT}"
146+
VERBATIM
147+
WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
148+
DEPENDS
149+
DEPENDS #
140150
"${godot-cpp_SOURCE_DIR}/doc_source_generator.py"
141151
"${SOURCES}"
142-
COMMENT "Generating: ${OUTPUT_PATH}"
152+
COMMENT "Generating: ${OUTPUT_PATH}"
143153
)
144154
endfunction()
145155

@@ -148,22 +158,22 @@ A simpler interface to add xml files as doc source to a output target.
148158
TARGET: The gdexension library target
149159
SOURCES: a list of xml files to use for source generation and inclusion.
150160
This function also adds a doc_gen target to test source generation.]]
151-
function( target_doc_sources TARGET SOURCES )
161+
function(target_doc_sources TARGET SOURCES)
152162
# set the generated file name
153-
set( DOC_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/gen/doc_source.cpp" )
163+
set(DOC_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/gen/doc_source.cpp")
154164

155165
# Create the file generation target, this won't be triggered unless a target
156166
# that depends on DOC_SOURCE_FILE is built
157167
generate_doc_source( "${DOC_SOURCE_FILE}" ${SOURCES} )
158168

159169
# Add DOC_SOURCE_FILE as a dependency to TARGET
160-
target_sources( ${TARGET} PRIVATE "${DOC_SOURCE_FILE}" )
170+
target_sources(${TARGET} PRIVATE "${DOC_SOURCE_FILE}")
161171

162172
# Create a dummy target that depends on the source so that users can
163173
# test the file generation task.
164-
if( TARGET doc_gen )
174+
if(TARGET doc_gen)
165175
else()
166-
add_custom_target( doc_gen )
176+
add_custom_target(doc_gen)
167177
endif()
168-
target_sources( doc_gen PRIVATE "${DOC_SOURCE_FILE}" )
178+
target_sources(doc_gen PRIVATE "${DOC_SOURCE_FILE}")
169179
endfunction()

cmake/android.cmake

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,12 @@ Android platforms.
2525
There is further information and examples in the doc/cmake.rst file.
2626
2727
]=======================================================================]
28-
function( android_options )
28+
function(android_options)
2929
# Android Options
3030
endfunction()
3131

32-
function( android_generate )
33-
target_compile_definitions(${TARGET_NAME}
34-
PUBLIC
35-
ANDROID_ENABLED
36-
UNIX_ENABLED
37-
)
32+
function(android_generate)
33+
target_compile_definitions(${TARGET_NAME} PUBLIC ANDROID_ENABLED UNIX_ENABLED)
3834

3935
common_compiler_flags()
4036
endfunction()

0 commit comments

Comments
 (0)