This is an automated email from the ASF dual-hosted git repository.
acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 03876a22aec cmake: Sanitize NAME for _main symbol generation
03876a22aec is described below
commit 03876a22aec2ed04055d59803566e596e38bd416
Author: Ansh Rai <[email protected]>
AuthorDate: Fri Jul 17 11:44:23 2026 +0000
cmake: Sanitize NAME for _main symbol generation
Program names containing '-' (for example, renaming hello to
hello-world via PROGNAME) previously generated an invalid identifier
<NAME>_main when constructing the main= compiler definition and the
APP_MAIN target property used during builtin list generation. This
caused the CMake build to fail because '-' is not a valid character in
a C identifier.
This mirrors the Make-based fix (Application.mk's PROGSYM) for the
traditional build.
Introduce NAME_SYM, a sanitized copy of NAME with '-' replaced by '_',
and use it only where an internal C identifier is required: the
main= COMPILE_DEFINITIONS property and the APP_MAIN target property.
Leave NAME unchanged everywhere else, including CMake target/output
names and the APP_NAME property, where hyphens are valid.
The standalone/loadable executable path (MODULE/DYNLIB/kernel build)
does not rename main() and therefore requires no sanitization because
each executable is linked independently rather than merged into a
shared builtin image.
Testing (WSL2 Ubuntu, x86_64):
- BOARD_CONFIG=sim/nsh, CONFIG_EXAMPLES_HELLO_PROGNAME="hello-world":
clean CMake configure/build; 'hello-world' runs and prints
'Hello, World!!'
- Reverted to CONFIG_EXAMPLES_HELLO_PROGNAME="hello": reconfigured
and rebuilt; 'hello' runs and prints 'Hello, World!!' (no
regression)
Fixes #19447
Signed-off-by: Ansh Rai <[email protected]>
---
cmake/nuttx_add_application.cmake | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/cmake/nuttx_add_application.cmake
b/cmake/nuttx_add_application.cmake
index 7e26894ed18..c670bf00d54 100644
--- a/cmake/nuttx_add_application.cmake
+++ b/cmake/nuttx_add_application.cmake
@@ -111,6 +111,8 @@ function(nuttx_add_application)
return()
endif()
+ string(REPLACE "-" "_" NAME_SYM "${NAME}")
+
# check if SRCS exist
if(SRCS)
file(GLOB SRCS_EXIST ${SRCS})
@@ -257,7 +259,7 @@ function(nuttx_add_application)
set_property(
SOURCE ${MAIN_SRC}
APPEND
- PROPERTY COMPILE_DEFINITIONS main=${NAME}_main)
+ PROPERTY COMPILE_DEFINITIONS main=${NAME_SYM}_main)
endif()
endif()
@@ -275,7 +277,7 @@ function(nuttx_add_application)
# store parameters into properties (used during builtin list generation)
- set_target_properties(${TARGET} PROPERTIES APP_MAIN ${NAME}_main)
+ set_target_properties(${TARGET} PROPERTIES APP_MAIN ${NAME_SYM}_main)
set_target_properties(${TARGET} PROPERTIES APP_NAME ${NAME})
if(PRIORITY)