Skip to content

Commit 177e44f

Browse files
committed
What would happen
1 parent 651ff3a commit 177e44f

File tree

12 files changed

+438
-462
lines changed

12 files changed

+438
-462
lines changed

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( GODOT_ENABLE_TESTING )
56-
add_subdirectory( test )
57+
if(GODOT_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: 74 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -26,120 +26,129 @@ 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
46+
set(PYTHON_SCRIPT
5147
"from binding_generator import print_file_list"
5248
"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+
# gersemi: on
54+
message(DEBUG "Python:\n${PYTHON_SCRIPT}")
5755

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

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
59+
execute_process(
60+
COMMAND "${Python3_EXECUTABLE}" "-c" "${PYTHON_SCRIPT}"
61+
WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
62+
OUTPUT_VARIABLE GENERATED_FILES_LIST
63+
OUTPUT_STRIP_TRAILING_WHITESPACE
6564
)
6665

6766
# Debug output
68-
message( DEBUG "FileList-Begin" )
69-
foreach( PATH ${GENERATED_FILES_LIST} )
70-
message( DEBUG ${PATH} )
67+
message(DEBUG "FileList-Begin")
68+
foreach(PATH ${GENERATED_FILES_LIST})
69+
message(DEBUG ${PATH})
7170
endforeach()
7271

7372
# 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")
73+
list(LENGTH GENERATED_FILES_LIST LIST_LENGTH)
74+
if(NOT LIST_LENGTH GREATER 0)
75+
message(FATAL_ERROR "File List Generation Failed")
7776
endif()
78-
message( STATUS "There are ${LIST_LENGTH} Files to generate" )
79-
80-
set( ${OUT_VAR_NAME} ${GENERATED_FILES_LIST} PARENT_SCOPE )
81-
endfunction( )
77+
message(STATUS "There are ${LIST_LENGTH} Files to generate")
8278

79+
set(${OUT_VAR_NAME} ${GENERATED_FILES_LIST} PARENT_SCOPE)
80+
endfunction()
8381

8482
#[[ Generate Bindings
8583
8684
Using the generated file list, use the binding_generator.py to generate the
8785
godot-cpp bindings. This will run at build time only if there are files
8886
missing. ]]
89-
function( binding_generator_generate_bindings API_FILE USE_TEMPLATE_GET_NODE, BITS, PRECISION, OUTPUT_DIR )
87+
function(
88+
binding_generator_generate_bindings
89+
API_FILE
90+
USE_TEMPLATE_GET_NODE,
91+
BITS,
92+
PRECISION,
93+
OUTPUT_DIR
94+
)
9095
# This code snippet will be squashed into a single line
91-
set( PYTHON_SCRIPT
96+
set(PYTHON_SCRIPT
9297
"from binding_generator import generate_bindings"
9398
"generate_bindings(
9499
api_filepath='${API_FILE}',
95100
use_template_get_node='${USE_TEMPLATE_GET_NODE}',
96101
bits='${BITS}',
97102
precision='${PRECISION}',
98-
output_dir='${OUTPUT_DIR}')")
103+
output_dir='${OUTPUT_DIR}')"
104+
)
105+
# gersemi: on
99106

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

102109
# 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 ${GODOT_GDEXTENSION_API_FILE}
110-
DEPENDS ${godot-cpp_SOURCE_DIR}/binding_generator.py
111-
COMMENT "Generating bindings"
110+
string(REGEX REPLACE "\n *" " " PYTHON_SCRIPT "${PYTHON_SCRIPT}")
111+
112+
add_custom_command(
113+
OUTPUT ${GENERATED_FILES_LIST}
114+
COMMAND "${Python3_EXECUTABLE}" "-c" "${PYTHON_SCRIPT}"
115+
VERBATIM
116+
WORKING_DIRECTORY ${godot-cpp_SOURCE_DIR}
117+
MAIN_DEPENDENCY ${GODOT_GDEXTENSION_API_FILE}
118+
DEPENDS ${godot-cpp_SOURCE_DIR}/binding_generator.py
119+
COMMENT "Generating bindings"
112120
)
113-
endfunction( )
121+
endfunction()
114122

115123
#[[ Generate doc_data.cpp
116124
The documentation displayed in the Godot editor is compiled into the extension.
117125
It takes a list of XML source files, and transforms them into a cpp file that
118126
is added to the sources list.]]
119-
function( generate_doc_source OUTPUT_PATH SOURCES )
127+
function(generate_doc_source OUTPUT_PATH SOURCES)
120128
# Transform SOURCES CMake LIST
121129
# quote each path with ''
122130
# 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 )
131+
set(PYTHON_LIST "${SOURCES}")
132+
list(TRANSFORM PYTHON_LIST REPLACE "(.*\.xml)" "'\\1'")
133+
list(JOIN PYTHON_LIST "," PYTHON_LIST)
126134

127135
get_filename_component(OUTPUT_DIR "${OUTPUT_PATH}" DIRECTORY)
128-
file(MAKE_DIRECTORY ${OUTPUT_DIR} )
136+
file(MAKE_DIRECTORY ${OUTPUT_DIR})
129137

130138
# Python one-liner to run our command
131139
# 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
140-
"${godot-cpp_SOURCE_DIR}/doc_source_generator.py"
141-
"${SOURCES}"
142-
COMMENT "Generating: ${OUTPUT_PATH}"
140+
set(PYTHON_SCRIPT
141+
"from doc_source_generator import generate_doc_source"
142+
"generate_doc_source( '${OUTPUT_PATH}', [${PYTHON_LIST}] )"
143+
)
144+
145+
add_custom_command(
146+
OUTPUT "${OUTPUT_PATH}"
147+
COMMAND "${Python3_EXECUTABLE}" "-c" "${PYTHON_SCRIPT}"
148+
VERBATIM
149+
WORKING_DIRECTORY "${godot-cpp_SOURCE_DIR}"
150+
DEPENDS "${godot-cpp_SOURCE_DIR}/doc_source_generator.py" "${SOURCES}"
151+
COMMENT "Generating: ${OUTPUT_PATH}"
143152
)
144153
endfunction()
145154

@@ -148,22 +157,22 @@ A simpler interface to add xml files as doc source to a output target.
148157
TARGET: The gdexension library target
149158
SOURCES: a list of xml files to use for source generation and inclusion.
150159
This function also adds a doc_gen target to test source generation.]]
151-
function( target_doc_sources TARGET SOURCES )
160+
function(target_doc_sources TARGET SOURCES)
152161
# set the generated file name
153-
set( DOC_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/gen/doc_source.cpp" )
162+
set(DOC_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/gen/doc_source.cpp")
154163

155164
# Create the file generation target, this won't be triggered unless a target
156165
# that depends on DOC_SOURCE_FILE is built
157166
generate_doc_source( "${DOC_SOURCE_FILE}" ${SOURCES} )
158167

159168
# Add DOC_SOURCE_FILE as a dependency to TARGET
160-
target_sources( ${TARGET} PRIVATE "${DOC_SOURCE_FILE}" )
169+
target_sources(${TARGET} PRIVATE "${DOC_SOURCE_FILE}")
161170

162171
# Create a dummy target that depends on the source so that users can
163172
# test the file generation task.
164-
if( TARGET doc_gen )
173+
if(TARGET doc_gen)
165174
else()
166-
add_custom_target( doc_gen )
175+
add_custom_target(doc_gen)
167176
endif()
168-
target_sources( doc_gen PRIVATE "${DOC_SOURCE_FILE}" )
177+
target_sources(doc_gen PRIVATE "${DOC_SOURCE_FILE}")
169178
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)