cmake: make CPPDEFINES handling robust for SCons-generated values
Some checks failed
ToolsCI / Tools (push) Has been cancelled
RT-Thread BSP Static Build Check / 🔍 Summary of Git Diff Changes (push) Has been cancelled
RT-Thread BSP Static Build Check / ${{ matrix.legs.RTT_BSP }} (push) Has been cancelled
RT-Thread BSP Static Build Check / collect-artifacts (push) Has been cancelled
pkgs_test / change (push) Has been cancelled
utest_auto_run / A9 :components/dfs.cfg (push) Has been cancelled
utest_auto_run / A9 :components/lwip.cfg (push) Has been cancelled
utest_auto_run / A9 :components/netdev.cfg (push) Has been cancelled
utest_auto_run / A9 :components/sal.cfg (push) Has been cancelled
utest_auto_run / A9 :cpp11/cpp11.cfg (push) Has been cancelled
utest_auto_run / AARCH64-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / A9-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / RISCV-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / XUANTIE-rtsmart :default.cfg (push) Has been cancelled
utest_auto_run / AARCH64 :default.cfg (push) Has been cancelled
utest_auto_run / AARCH64-smp :default.cfg (push) Has been cancelled
utest_auto_run / A9 :default.cfg (push) Has been cancelled
utest_auto_run / A9-smp :default.cfg (push) Has been cancelled
utest_auto_run / RISCV :default.cfg (push) Has been cancelled
utest_auto_run / RISCV-smp :default.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/atomic_c11.cfg (push) Has been cancelled
utest_auto_run / RISCV :kernel/atomic_c11.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/ipc.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/kernel_basic.cfg (push) Has been cancelled
utest_auto_run / A9 :kernel/mem.cfg (push) Has been cancelled
Weekly CI Scheduler / Trigger and Monitor CIs (push) Has been cancelled
Weekly CI Scheduler / Create Discussion Report (push) Has been cancelled

[tools][cmake] fix type handling when generating CMake targets

[Root Cause]
Unexpected macro definition types during `scons --target=cmake`
could trigger a TypeError and abort CMakeLists.txt generation.

[Solution]
Add support for handling different macro definition types.

[Affect Area]
cmake.py

[Test Suggestion]
Run `scons --target=cmake` and verify CMakeLists.txt is generated
successfully with different macro definition formats.
This commit is contained in:
vm22
2026-01-25 13:02:41 +08:00
committed by R b b666
parent 5d1f199e9e
commit 97e1f014a1

View File

@@ -18,6 +18,7 @@
* 2024-11-18 kaidegit fix processing groups with similar name
* 2025-02-22 kaidegit fix missing some flags added in Sconscript
* 2025-02-24 kaidegit remove some code that is unnecessary but takes time, get them from env
* 2026-01-22 xym-ee Fix handling of tuple-based CPPDEFINES from SCons in CMake project generation.
"""
import os
@@ -187,7 +188,24 @@ def GenerateCFiles(env, project, project_name):
cm_file.write("ADD_DEFINITIONS(\n")
for i in env['CPPDEFINES']:
cm_file.write("\t-D" + i + "\n")
# Handle CPPDEFINES from SCons (str / tuple)
if isinstance(i, tuple):
# e.g. ('STM32F407xx',)
if len(i) == 1:
cm_file.write("\t-D" + str(i[0]) + "\n")
# e.g. ('FOO', None)
elif len(i) == 2:
if i[1] is None:
cm_file.write("\t-D" + str(i[0]) + "\n")
# e.g. ('FOO', 1)
else:
cm_file.write("\t-D{}={}\n".format(i[0], i[1]))
else:
# unexpected form, fallback to name only
cm_file.write("\t-D" + str(i[0]) + "\n")
else:
# generic macro (commonly a string), ensure robust string conversion
cm_file.write("\t-D" + str(i) + "\n")
cm_file.write(")\n\n")
libgroups = []