Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci_sim: add matter build to the test list sim-01.dat and support cmake compilation #11254

Merged
merged 4 commits into from
Dec 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -595,14 +595,15 @@ endif()
get_property(nuttx_apps_libs GLOBAL PROPERTY NUTTX_APPS_LIBRARIES)
get_property(nuttx_extra_libs GLOBAL PROPERTY NUTTX_EXTRA_LIBRARIES)

set(nuttx_libs ${nuttx_kernel_libs} ${nuttx_system_libs} ${nuttx_apps_libs}
${nuttx_extra_libs})
set(nuttx_libs ${nuttx_kernel_libs} ${nuttx_system_libs} ${nuttx_apps_libs})

if(NOT CONFIG_ARCH_SIM)

# TODO: nostart/nodefault not applicable to nuttx toolchain
target_link_libraries(
nuttx PRIVATE ${NUTTX_EXTRA_FLAGS} -Wl,--script=${ldscript}
-Wl,--start-group ${nuttx_libs} -Wl,--end-group)
nuttx
PRIVATE ${NUTTX_EXTRA_FLAGS} -Wl,--script=${ldscript} -Wl,--start-group
${nuttx_libs} ${nuttx_extra_libs} -Wl,--end-group)

# generate binary outputs in different formats (.bin, .hex, etc)
nuttx_generate_outputs(nuttx)
Expand Down Expand Up @@ -635,8 +636,8 @@ elseif(WIN32)
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/nuttx_all.lib
COMMAND ${CMAKE_AR} /OUT:${CMAKE_BINARY_DIR}/nuttx_all.lib
${nuttx_libs_paths}
DEPENDS ${nuttx_libs}
${nuttx_libs_paths} ${nuttx_extra_libs}
DEPENDS ${nuttx_libs} ${nuttx_extra_libs}
VERBATIM)
add_custom_target(nuttx_all-lib DEPENDS ${CMAKE_BINARY_DIR}/nuttx_all.lib)
add_dependencies(nuttx nuttx_all-lib)
Expand Down Expand Up @@ -692,10 +693,10 @@ else()
COMMAND
${CMAKE_C_COMPILER} ARGS -r $<$<BOOL:${CONFIG_SIM_M32}>:-m32>
$<TARGET_OBJECTS:sim_head> $<$<NOT:$<BOOL:${APPLE}>>:-Wl,--start-group>
${nuttx_libs_paths} $<$<NOT:$<BOOL:${APPLE}>>:-Wl,--end-group> -o
nuttx.rel
${nuttx_libs_paths} ${nuttx_extra_libs}
$<$<NOT:$<BOOL:${APPLE}>>:-Wl,--end-group> -o nuttx.rel
COMMAND ${CMAKE_OBJCOPY} --redefine-syms=nuttx-names.dat nuttx.rel
DEPENDS ${nuttx_libs_paths} sim_head
DEPENDS ${nuttx_libs} ${nuttx_extra_libs} sim_head
COMMAND_EXPAND_LISTS)
add_custom_target(nuttx-rel DEPENDS nuttx.rel
$<$<NOT:$<BOOL:${APPLE}>>:nuttx.ld>)
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/src/cmake/platform.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ if(CONFIG_ARCH_COVERAGE)
list(APPEND EXTRA_LIB ${extra_library})
endif()

set_property(GLOBAL APPEND PROPERTY NUTTX_EXTRA_LIBRARIES ${EXTRA_LIB})
nuttx_add_extra_library(${EXTRA_LIB})

separate_arguments(CMAKE_C_FLAG_ARGS NATIVE_COMMAND ${CMAKE_C_FLAGS})
set(PREPROCES ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} -E -P -x c)
2 changes: 1 addition & 1 deletion arch/risc-v/src/cmake/platform.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ if(CONFIG_ARCH_COVERAGE)
list(APPEND EXTRA_LIB ${extra_library})
endif()

set_property(GLOBAL APPEND PROPERTY NUTTX_EXTRA_LIBRARIES ${EXTRA_LIB})
nuttx_add_extra_library(${EXTRA_LIB})

separate_arguments(CMAKE_C_FLAG_ARGS NATIVE_COMMAND ${CMAKE_C_FLAGS})
set(PREPROCES ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} -E -P -x c)
4 changes: 4 additions & 0 deletions arch/sim/src/cmake/Toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@ else()
endif()
endif()

if(CONFIG_CXX_STANDARD)
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-std=${CONFIG_CXX_STANDARD}>)
endif()

set(ARCHCFLAGS "-Wstrict-prototypes")
set(ARCHCXXFLAGS "-nostdinc++")

Expand Down
131 changes: 131 additions & 0 deletions boards/sim/sim/sim/configs/matter/defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
#
# This file is autogenerated: PLEASE DO NOT EDIT IT.
#
# You can use "make menuconfig" to make any modifications to the installed .config file.
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
# modifications.
#
# CONFIG_NSH_CMDOPT_HEXDUMP is not set
CONFIG_ALLOW_BSD_COMPONENTS=y
CONFIG_ARCH="sim"
CONFIG_ARCH_BOARD="sim"
CONFIG_ARCH_BOARD_SIM=y
CONFIG_ARCH_CHIP="sim"
CONFIG_ARCH_SIM=y
CONFIG_BOARDCTL_APP_SYMTAB=y
CONFIG_BOARDCTL_POWEROFF=y
CONFIG_BOARD_LOOPSPERMSEC=0
CONFIG_BOOT_RUNFROMEXTSRAM=y
CONFIG_BUILTIN=y
CONFIG_CRYPTO_MBEDTLS=y
CONFIG_DEBUG_SYMBOLS=y
CONFIG_DEV_GPIO=y
CONFIG_DEV_LOOP=y
CONFIG_DEV_URANDOM=y
CONFIG_DEV_ZERO=y
CONFIG_DRIVERS_BLUETOOTH=y
CONFIG_DRIVERS_WIRELESS=y
CONFIG_EXAMPLES_GPIO=y
CONFIG_EXAMPLES_HELLO=y
CONFIG_FAT_LCNAMES=y
CONFIG_FAT_LFN=y
CONFIG_FSUTILS_PASSWD=y
CONFIG_FSUTILS_PASSWD_READONLY=y
CONFIG_FS_BINFS=y
CONFIG_FS_FAT=y
CONFIG_FS_HOSTFS=y
CONFIG_FS_PROCFS=y
CONFIG_FS_RAMMAP=y
CONFIG_FS_ROMFS=y
CONFIG_HAVE_CXX=y
CONFIG_ICMPv6_AUTOCONF_RDNSS=y
CONFIG_IDLETHREAD_STACKSIZE=4096
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_IOB_NBUFFERS=1024
CONFIG_IOB_THROTTLE=256
CONFIG_LIBCXX=y
CONFIG_LIBC_ENVPATH=y
CONFIG_LIBC_EXECFUNCS=y
CONFIG_LIBC_GAISTRERROR=y
CONFIG_LIBC_GAISTRERROR_ERRNUM=y
CONFIG_LIBC_MAX_EXITFUNS=1
CONFIG_LIBC_NUMBERED_ARGS=y
CONFIG_LIBM=y
CONFIG_MATTER=y
CONFIG_NET=y
CONFIG_NETDB_DNSCLIENT=y
CONFIG_NETDB_DNSSERVER_IPv4ADDR=0x771d1d1d
CONFIG_NETDB_MAX_IPADDR=1
CONFIG_NETDEV_HPWORK_THREAD=y
CONFIG_NETINIT_IPADDR=0x0a000102
CONFIG_NETLINK_ROUTE=y
CONFIG_NETUTILS_JSONCPP=y
CONFIG_NET_6LOWPAN=y
CONFIG_NET_ARP_SEND=y
CONFIG_NET_BINDTODEVICE=y
CONFIG_NET_BROADCAST=y
CONFIG_NET_ETH_PKTSIZE=1518
CONFIG_NET_ICMP=y
CONFIG_NET_ICMP_SOCKET=y
CONFIG_NET_ICMPv6=y
CONFIG_NET_ICMPv6_AUTOCONF=y
CONFIG_NET_ICMPv6_NEIGHBOR=y
CONFIG_NET_ICMPv6_ROUTER=y
CONFIG_NET_ICMPv6_SOCKET=y
CONFIG_NET_IGMP=y
CONFIG_NET_IPv6=y
CONFIG_NET_LOCAL=y
CONFIG_NET_LOCAL_SCM=y
CONFIG_NET_MLD=y
CONFIG_NET_NETLINK=y
CONFIG_NET_PKT=y
CONFIG_NET_RECV_BUFSIZE=16384
CONFIG_NET_SEND_BUFSIZE=16384
CONFIG_NET_TCP=y
CONFIG_NET_TCPBACKLOG=y
CONFIG_NET_TCPURGDATA=y
CONFIG_NET_TCP_ALLOC_CONNS=1
CONFIG_NET_TCP_DELAYED_ACK=y
CONFIG_NET_TCP_KEEPALIVE=y
CONFIG_NET_TCP_NOTIFIER=y
CONFIG_NET_TCP_WRITE_BUFFERS=y
CONFIG_NET_UDP=y
CONFIG_NET_UDP_NOTIFIER=y
CONFIG_NET_UDP_WRITE_BUFFERS=y
CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_ARCHROMFS=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_FATDEVNO=2
CONFIG_NSH_FILE_APPS=y
CONFIG_NSH_MOTD=y
CONFIG_NSH_MOTD_STRING="MOTD: username=admin password=Administrator"
CONFIG_NSH_READLINE=y
CONFIG_NSH_ROMFSDEVNO=1
CONFIG_NSH_ROMFSETC=y
CONFIG_PATH_INITIAL="/bin"
CONFIG_PSEUDOFS_ATTRIBUTES=y
CONFIG_PSEUDOFS_SOFTLINKS=y
CONFIG_READLINE_TABCOMPLETION=y
CONFIG_SCHED_BACKTRACE=y
CONFIG_SCHED_HAVE_PARENT=y
CONFIG_SCHED_WAITPID=y
CONFIG_SIM_HCISOCKET=y
CONFIG_SIM_HOSTFS=y
CONFIG_SIM_M32=y
CONFIG_SIM_NETDEV=y
CONFIG_SIM_NET_BRIDGE=y
CONFIG_SIM_WALLTIME_SIGNAL=y
CONFIG_START_MONTH=6
CONFIG_START_YEAR=2008
CONFIG_SYSTEM_DUMPSTACK=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_PING6=y
CONFIG_SYSTEM_PING6_STACKSIZE=4096
CONFIG_SYSTEM_PING=y
CONFIG_SYSTEM_PING_STACKSIZE=4096
CONFIG_SYSTEM_TIME64=y
CONFIG_TLS_NELEM=4
CONFIG_TLS_TASK_NELEM=4
CONFIG_UART_BTH4=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_IEEE802154=y
14 changes: 13 additions & 1 deletion cmake/nuttx_add_library.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ define_property(
function(nuttx_add_library target)
add_library(${target} ${ARGN})

set_property(GLOBAL APPEND PROPERTY NUTTX_EXTRA_LIBRARIES ${target})
set_property(GLOBAL APPEND PROPERTY NUTTX_SYSTEM_LIBRARIES ${target})

get_target_property(target_type ${target} TYPE)
if(${target_type} STREQUAL "STATIC_LIBRARY")
Expand All @@ -181,6 +181,18 @@ function(nuttx_add_library target)
nuttx_add_library_internal(${target})
endfunction()

# =============================================================================
#
# nuttx_add_extra_library
#
# Add extra library to extra attribute
#
function(nuttx_add_extra_library)
foreach(target ${ARGN})
set_property(GLOBAL APPEND PROPERTY NUTTX_EXTRA_LIBRARIES ${target})
endforeach()
endfunction()

# Import static library
#
function(nuttx_library_import library_name library_path)
Expand Down
11 changes: 11 additions & 0 deletions libs/libxx/0001_fix_stdatomic_h_miss_typedef.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- libcxx/include/stdatomic.h.old 2023-12-06 21:01:46.168049453 +0800
+++ libcxx/include/stdatomic.h 2023-12-06 21:01:55.056057032 +0800
@@ -220,7 +220,7 @@
using std::atomic_signal_fence _LIBCPP_USING_IF_EXISTS;
using std::atomic_thread_fence _LIBCPP_USING_IF_EXISTS;

-#elif defined(_LIBCPP_COMPILER_CLANG_BASED)
+#else

// Before C++23, we include the next <stdatomic.h> on the path to avoid hijacking
// the header. We do this because Clang has historically shipped a <stdatomic.h>
35 changes: 19 additions & 16 deletions libs/libxx/libcxx.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,7 @@ if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/libcxx)

# cmake-format: off
set(LIBCXX_PATCH_COMMAND
patch -p0 -d ${CMAKE_CURRENT_LIST_DIR} <
${CMAKE_CURRENT_LIST_DIR}/0001-Remove-the-locale-fallback-for-NuttX.patch
&& patch -p0 -d ${CMAKE_CURRENT_LIST_DIR} <
${CMAKE_CURRENT_LIST_DIR}/0001-libc-avoid-the-waring-__EXCEPTIONS-is-not-defined-ev.patch
&& patch -p1 -d ${CMAKE_CURRENT_LIST_DIR} <
${CMAKE_CURRENT_LIST_DIR}/0001-libcxx-Rename-PS-macro-to-avoid-clashing-with-Xtensa.patch
)

if(CONFIG_LIBC_ARCH_ATOMIC)
list(
APPEND
LIBCXX_PATCH_COMMAND
&& patch -p1 -d ${CMAKE_CURRENT_LIST_DIR} <
${CMAKE_CURRENT_LIST_DIR}/0002-Omit-atomic_-un-signed_lock_free-if-unsupported.patch
)
endif()
patch -p1 -d ${CMAKE_CURRENT_LIST_DIR}/libcxx < ${CMAKE_CURRENT_LIST_DIR}/0001_fix_stdatomic_h_miss_typedef.patch)
# cmake-format: on
FetchContent_Declare(
libcxx
Expand Down Expand Up @@ -68,13 +53,31 @@ if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/libcxx)
FetchContent_Populate(libcxx)
endif()

execute_process(
COMMAND
sh -c
"ln -s ${CMAKE_CURRENT_LIST_DIR}/libcxx/include ${NUTTX_DIR}/include/libcxx"
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
execute_process(
COMMAND
sh -c
"cp ${CMAKE_CURRENT_LIST_DIR}/__config_site ${NUTTX_DIR}/include/libcxx/__config_site"
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
endif()

find_program(GN_EXECUTABLEXX gn REQUIRED)
message("GN_EXECUTABLEXX ${GN_EXECUTABLEXX}")

set_property(
TARGET nuttx
APPEND
PROPERTY NUTTX_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/libcxx/include)

set_property(
TARGET nuttx
APPEND
PROPERTY NUTTX_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/libcxx/src)

add_compile_definitions(_LIBCPP_BUILDING_LIBRARY)
if(CONFIG_LIBSUPCXX)
add_compile_definitions(__GLIBCXX__)
Expand Down
4 changes: 4 additions & 0 deletions tools/ci/testlist/sim-01.dat
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@
# Skip WebAssembly Micro Runtime
-Darwin,sim:wamr

# macOS matter compilation is not currently supported
-Darwin,sim:matter

# Boards build by CMake
CMake,sim:alsa
CMake,sim:bluetooth
Expand All @@ -51,3 +54,4 @@ CMake,sim:nettest
CMake,sim:note
CMake,sim:nsh
CMake,sim:nxffs
CMake,sim:matter
Loading