Skip to content

Commit cc7ed39

Browse files
committed
Remove need for -Wno-discarded-qualifiers/-Wno-incompatible-pointer-types-discards-qualifiers/-Wno-unused-function compilation flags
1 parent 8e4c348 commit cc7ed39

File tree

6 files changed

+27
-62
lines changed

6 files changed

+27
-62
lines changed

src/godot/builtins_pxd/conversion.pxd.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
cdef bint gd_variant_supports_py_type(object pytype)
33
cdef object gd_to_py_type(gdextension_interface.GDExtensionVariantType gdtype)
44
cdef gdextension_interface.GDExtensionVariantType py_to_gd_type(object pytype)
5-
cdef object gd_variant_steal_into_pyobj(const gd_variant_t *gdvar)
5+
cdef object gd_variant_steal_into_pyobj(gd_variant_t *gdvar)
66
cdef object gd_variant_copy_into_pyobj(const gd_variant_t *gdvar)
77
cdef bint gd_variant_steal_from_pyobj(object pyobj, gd_variant_t *gdvar)
88

src/godot/builtins_pyx/conversion.pyx.j2

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ cdef gdextension_interface.GDExtensionVariantType py_to_gd_type(object pytype):
6666
#########################################################################
6767

6868

69-
cdef object gd_variant_steal_into_pyobj(const gd_variant_t *gdvar):
69+
cdef object gd_variant_steal_into_pyobj(gd_variant_t *gdvar):
7070
cdef gdextension_interface.GDExtensionVariantType gdtype = gdptrs.gdptr_variant_get_type(gdvar)
7171
if gdtype == gdextension_interface.GDEXTENSION_VARIANT_TYPE_OBJECT:
7272
# TODO: This conversion relies on godot String and lookup into bindings
@@ -76,11 +76,11 @@ cdef object gd_variant_steal_into_pyobj(const gd_variant_t *gdvar):
7676
return BaseGDObject.cast_from_variant(gdvar)
7777
# TODO: Would it be possible to directly dig into the variant for simple types ?
7878
elif gdtype == gdextension_interface.{{ api.bool_type.variant_type_name }}:
79-
return gdapi.gd_{{ api.bool_type.snake_name }}_from_variant(<gd_variant_t*>gdvar) == 1
79+
return gdapi.gd_{{ api.bool_type.snake_name }}_from_variant(gdvar) == 1
8080
elif gdtype == gdextension_interface.{{ api.int_type.variant_type_name }}:
81-
return gdapi.gd_{{ api.int_type.snake_name }}_from_variant(<gd_variant_t*>gdvar)
81+
return gdapi.gd_{{ api.int_type.snake_name }}_from_variant(gdvar)
8282
elif gdtype == gdextension_interface.{{ api.float_type.variant_type_name }}:
83-
return gdapi.gd_{{ api.float_type.snake_name }}_from_variant(<gd_variant_t*>gdvar)
83+
return gdapi.gd_{{ api.float_type.snake_name }}_from_variant(gdvar)
8484
{% for builtin in api.builtins %}
8585
elif gdtype == gdextension_interface.{{ builtin.variant_type_name }}:
8686
return _gd_variant_steal_into_pyobj_{{ builtin.cy_type }}(gdvar)
@@ -93,18 +93,22 @@ cdef object gd_variant_steal_into_pyobj(const gd_variant_t *gdvar):
9393

9494

9595
{% for builtin in api.builtins if not builtin.is_nil %}
96-
cdef inline object _gd_variant_steal_into_pyobj_{{ builtin.cy_type }}(const gd_variant_t *gdvar):
96+
cdef inline object _gd_variant_steal_into_pyobj_{{ builtin.cy_type }}(gd_variant_t *gdvar):
9797
cdef {{ builtin.cy_type }} ret = {{ builtin.cy_type }}.__new__({{ builtin.cy_type }})
98-
ret._gd_data = gdapi.gd_{{ builtin.snake_name }}_from_variant(<gd_variant_t *>gdvar)
98+
ret._gd_data = gdapi.gd_{{ builtin.snake_name }}_from_variant(gdvar)
99+
{% if builtin.is_stack_only %}
100+
# Skip `gdapi.gd_variant_del(gdvar)` since this variant contains a builtin
101+
# that doesn't have destructor.
102+
{% else %}
99103
gdapi.gd_variant_del(gdvar)
104+
{% endif %}
100105
return ret
101106
{% endfor %}
102107

103108

104109
cdef object gd_variant_copy_into_pyobj(const gd_variant_t *gdvar):
105110
cdef gd_variant_t copy
106-
# TODO: must do an ugly cast because autopxd2 ignores const qualifiers in the C headers
107-
gdptrs.gdptr_variant_new_copy(&copy, <gd_variant_t *>gdvar)
111+
gdptrs.gdptr_variant_new_copy(&copy, gdvar)
108112
return gd_variant_steal_into_pyobj(&copy)
109113

110114

src/godot/classes.pxd.j2

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ cdef class BaseGDObject:
1515

1616
@staticmethod
1717
cdef inline object cast_from_variant(const gd_variant_t *gdvar):
18-
cdef gd_object_t obj = gdapi.gd_object_from_variant(gdvar)
18+
# TODO: cast to remove const due to `GDExtensionTypeFromVariantConstructorFunc`
19+
cdef gd_object_t obj = gdapi.gd_object_from_variant(<gd_variant_t *>gdvar)
1920
if obj == NULL:
2021
return None
2122
cdef object class_name = _object_call(obj, "get_class", [])

src/godot/hazmat/gdapi_pxd/meth.pxd.j2

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,25 +102,27 @@ cdef inline {{ render_utility_function_signature(builtin) }}:
102102

103103

104104
{% macro render_builtin_from_variant_signature(builtin) %}
105-
{{ builtin.c_type }} gd_{{ builtin.snake_name }}_from_variant(gd_variant_t *val)
105+
{{ builtin.c_type }} gd_{{ builtin.snake_name }}_from_variant(const gd_variant_t *val)
106106
{%- endmacro %}
107107

108108

109109
{% macro render_builtin_into_variant_signature(builtin) %}
110110
{%- if builtin.is_scalar %}
111-
gd_variant_t gd_{{ builtin.snake_name }}_into_variant({{ builtin.c_type }} val)
111+
gd_variant_t gd_{{ builtin.snake_name }}_into_variant(const {{ builtin.c_type }} val)
112112
{%- else %}
113-
gd_variant_t gd_{{ builtin.snake_name }}_into_variant({{ builtin.c_type }} *val)
113+
gd_variant_t gd_{{ builtin.snake_name }}_into_variant(const {{ builtin.c_type }} *val)
114114
{%- endif %}
115115
{% endmacro %}
116116

117117

118118
{% macro render_builtin_object_variant_conversions(builtin) %}
119-
cdef inline gdextension_interface.GDExtensionObjectPtr gd_object_from_variant(gd_variant_t *val):
119+
cdef inline gdextension_interface.GDExtensionObjectPtr gd_object_from_variant(const gd_variant_t *val):
120120
cdef gdextension_interface.GDExtensionObjectPtr ret
121-
gdptrs.gdptr_object_from_variant(&ret, val)
121+
# TODO: cast to remove const due to `GDExtensionTypeFromVariantConstructorFunc`
122+
gdptrs.gdptr_object_from_variant(&ret, <gd_variant_t *>val)
122123
return ret
123124

125+
124126
cdef inline gd_variant_t gd_object_into_variant(gdextension_interface.GDExtensionObjectPtr val):
125127
cdef gd_variant_t ret
126128
gdptrs.gdptr_object_into_variant(&ret, &val)
@@ -136,12 +138,15 @@ cdef inline {{ render_builtin_from_variant_signature(builtin) }}:
136138
# TODO: no longer needed once https://github.com/godotengine/godot/pull/35813 is merged
137139
cdef {{ builtin.c_type }} ret = gd_{{ builtin.snake_name }}_new()
138140
{% endif %}
139-
gdptrs.gdptr_{{ builtin.snake_name }}_from_variant(&ret, val)
141+
# TODO: cast to remove const due to `GDExtensionTypeFromVariantConstructorFunc`
142+
gdptrs.gdptr_{{ builtin.snake_name }}_from_variant(&ret, <gd_variant_t *>val)
140143
return ret
141144

145+
142146
cdef inline {{ render_builtin_into_variant_signature(builtin) }}:
143147
cdef gd_variant_t ret
144-
gdptrs.gdptr_{{ builtin.snake_name }}_into_variant(&ret, {{ "&val" if builtin.is_scalar else "val"}})
148+
# TODO: cast to remove const due to `GDExtensionVariantFromTypeConstructorFunc`
149+
gdptrs.gdptr_{{ builtin.snake_name }}_into_variant(&ret, <{{ builtin.c_type }} *>{{ "&val" if builtin.is_scalar else "val"}})
145150
return ret
146151
{% endmacro %}
147152

src/godot/meson.build

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -116,19 +116,9 @@ else
116116
endif
117117

118118

119-
# AutoPxd currently strip const qualifier when generating `gdextension_interface.pxd`,
120-
# hence -Wno-discarded-qualifiers
121-
if host_platform.startswith('windows')
122-
builtins_c_args = []
123-
else
124-
builtins_c_args = ['-Wno-discarded-qualifiers', '-Wno-incompatible-pointer-types-discards-qualifiers']
125-
endif
126-
127-
128119
shared_library(
129120
'builtins',
130121
cbuiltins,
131-
c_args: builtins_c_args,
132122
gnu_symbol_visibility: 'hidden', # Used by both clang & gcc (see https://gcc.gnu.org/wiki/Visibility)
133123
dependencies : [dep_godot, dep_python, dep_pythonscript],
134124
install_rpath: builtins_rpath, # To find libpython
@@ -176,21 +166,9 @@ else
176166
endif
177167

178168

179-
# Cython's cdef inline methods are turned into static inline C functions that
180-
# produced `defined but not used` errors, hence the `-Wno-unused-function`
181-
# AutoPxd currently strip const qualifier when generating `gdextension_interface.pxd`,
182-
# hence -Wno-discarded-qualifiers
183-
if host_platform.startswith('windows')
184-
classes_c_args = []
185-
else
186-
classes_c_args = ['-Wno-discarded-qualifiers', '-Wno-incompatible-pointer-types-discards-qualifiers', '-Wno-unused-function']
187-
endif
188-
189-
190169
shared_library(
191170
'classes',
192171
cclasses,
193-
c_args: classes_c_args,
194172
gnu_symbol_visibility: 'hidden', # Used by both clang & gcc (see https://gcc.gnu.org/wiki/Visibility)
195173
dependencies : [dep_godot, dep_python, dep_pythonscript],
196174
install_rpath: classes_rpath, # To find libpython
@@ -249,21 +227,9 @@ else
249227
endif
250228

251229

252-
# Cython's cdef inline methods are turned into static inline C functions that
253-
# produced `defined but not used` errors, hence the `-Wno-unused-function`
254-
# AutoPxd currently strip const qualifier when generating `gdextension_interface.pxd`,
255-
# hence -Wno-discarded-qualifiers
256-
if host_platform.startswith('windows')
257-
_lang_c_args = []
258-
else
259-
_lang_c_args = ['-Wno-discarded-qualifiers', '-Wno-incompatible-pointer-types-discards-qualifiers', '-Wno-unused-function']
260-
endif
261-
262-
263230
shared_library(
264231
'_lang',
265232
c_lang,
266-
c_args: _lang_c_args,
267233
gnu_symbol_visibility: 'hidden', # Used by both clang & gcc (see https://gcc.gnu.org/wiki/Visibility)
268234
dependencies : [dep_godot, dep_python, dep_pythonscript],
269235
install_rpath: _lang_rpath, # To find libpython

src/meson.build

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -210,21 +210,10 @@ else
210210
lib_pythonscript_rpath = ''
211211
endif
212212

213-
# Cython's cdef inline methods are turned into static inline C functions that
214-
# produced `defined but not used` errors, hence the `-Wno-unused-function`
215-
# AutoPxd currently strip const qualifier when generating `gdextension_interface.pxd`,
216-
# hence -Wno-discarded-qualifiers
217-
if host_platform.startswith('windows')
218-
lib__pythonscript_c_args = []
219-
else
220-
lib__pythonscript_c_args = ['-Wno-discarded-qualifiers', '-Wno-incompatible-pointer-types-discards-qualifiers', '-Wno-unused-function']
221-
endif
222-
223213

224214
lib_pythonscript = shared_library(
225215
'pythonscript',
226216
['pythonscript.c', c_pythonscript_gdextension_ptrs],
227-
c_args: lib__pythonscript_c_args,
228217
gnu_symbol_visibility: 'hidden', # Used by both clang & gcc (see https://gcc.gnu.org/wiki/Visibility)
229218
dependencies: [dep_godot, dep_python],
230219
install_rpath: lib_pythonscript_rpath, # To find libpython

0 commit comments

Comments
 (0)