This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit e35129b98d79885f31c6bcbaac5cfe3142377e3f
Author: Jorge Guzman <[email protected]>
AuthorDate: Thu Jul 16 22:00:26 2026 -0300

    risc-v/gd32vw55x: make the build warning-clean for CI (-Werror)
    
    CI builds with -Werror and the board's build carried thousands of
    warnings, all rooted in the vendor SDK integration:
    
    - The NMSIS riscv_encoding.h redefines 32 CSR macros that NuttX's
      <arch/csr.h> (pulled in through <nuttx/irq.h>) already defines with
      its own encodings. No -Wno flag covers macro redefinitions, so the
      SDK patch now undefines those names right before the NMSIS
      definitions. Same treatment for COMPILE_TIME_ASSERT in
      wifi_management.h.
    - The vendor sources are not NuttX-warning-clean (undefined macros in
      #if, %d for uint32_t, shadowed locals, K&R prototypes, ...); add the
      matching -Wno suppressions scoped to this chip's build.
    - Fix the port's own warnings properly: gd32vw55x_eclic.h redefined
      CSR_MINTSTATUS with the Nuclei address (0x346) over the standard
      CLIC one in csr.h (renamed to CSR_NUCLEI_MINTSTATUS), an unused
      variable in gdwifi_transmit() and a dead function in
      wrapper_nuttx.c.
    
    All seven configurations now build with "-Wno-cpp -Werror" (the CI
    flags). Smoke-validated on hardware: Wi-Fi WPA2 association and ping,
    BLE advertising, connect and GATT write.
    
    Assisted-by: Claude Opus 4.8
    Signed-off-by: Jorge Guzman <[email protected]>
---
 arch/risc-v/src/gd32vw55x/gdwifi/Wireless.mk       |  8 +++
 arch/risc-v/src/gd32vw55x/gdwifi/gdwifi_netdev.c   |  1 -
 .../gd32vw55x/gdwifi/patches/0001-nuttx-port.patch | 68 ++++++++++++++++++++++
 arch/risc-v/src/gd32vw55x/gdwifi/wrapper_nuttx.c   | 22 -------
 .../src/gd32vw55x/hardware/gd32vw55x_eclic.h       |  8 ++-
 5 files changed, 82 insertions(+), 25 deletions(-)

diff --git a/arch/risc-v/src/gd32vw55x/gdwifi/Wireless.mk 
b/arch/risc-v/src/gd32vw55x/gdwifi/Wireless.mk
index 2f50eb366f1..1ccdbfa68cf 100644
--- a/arch/risc-v/src/gd32vw55x/gdwifi/Wireless.mk
+++ b/arch/risc-v/src/gd32vw55x/gdwifi/Wireless.mk
@@ -33,6 +33,14 @@
 # not use: WPA comes from the lightweight libwpas.a, via wifi_wpa.c.
 CFLAGS += -DCFG_RTOS -DEXEC_USING_STD_PRINTF -DGDWIFI_NUTTX
 
+# The vendor SDK sources are not NuttX-warning-clean (undefined macros in
+# #if, %d for uint32_t, shadowed locals, K&R prototypes, ...).  These
+# suppressions are scoped to this chip's build; the macro redefinitions
+# that no -Wno flag covers are fixed in the SDK patch instead
+# (riscv_encoding.h, wifi_management.h).
+CFLAGS += -Wno-undef -Wno-format -Wno-shadow -Wno-address
+CFLAGS += -Wno-unused-function -Wno-strict-prototypes -Wno-array-parameter
+
 # Include paths: our patched config dir must come first
 
 INCLUDES += 
$(INCDIR_PREFIX)$(ARCH_SRCDIR)$(DELIM)gd32vw55x$(DELIM)gdwifi$(DELIM)config
diff --git a/arch/risc-v/src/gd32vw55x/gdwifi/gdwifi_netdev.c 
b/arch/risc-v/src/gd32vw55x/gdwifi/gdwifi_netdev.c
index a691712c8f5..df7fb4299d5 100644
--- a/arch/risc-v/src/gd32vw55x/gdwifi/gdwifi_netdev.c
+++ b/arch/risc-v/src/gd32vw55x/gdwifi/gdwifi_netdev.c
@@ -529,7 +529,6 @@ static int gdwifi_ifdown(struct netdev_lowerhalf_s *dev)
 
 static int gdwifi_transmit(struct netdev_lowerhalf_s *dev, netpkt_t *pkt)
 {
-  struct gdwifi_dev_s *priv = (struct gdwifi_dev_s *)dev;
   unsigned int len = netpkt_getdatalen(dev, pkt);
   struct pbuf *p;
 
diff --git a/arch/risc-v/src/gd32vw55x/gdwifi/patches/0001-nuttx-port.patch 
b/arch/risc-v/src/gd32vw55x/gdwifi/patches/0001-nuttx-port.patch
index 346237efd39..526fcca2f31 100644
--- a/arch/risc-v/src/gd32vw55x/gdwifi/patches/0001-nuttx-port.patch
+++ b/arch/risc-v/src/gd32vw55x/gdwifi/patches/0001-nuttx-port.patch
@@ -1,3 +1,53 @@
+diff --git a/MSDK/plf/riscv/NMSIS/Core/Include/riscv_encoding.h 
b/MSDK/plf/riscv/NMSIS/Core/Include/riscv_encoding.h
+index 8b87225..51cb931 100644
+--- a/MSDK/plf/riscv/NMSIS/Core/Include/riscv_encoding.h
++++ b/MSDK/plf/riscv/NMSIS/Core/Include/riscv_encoding.h
+@@ -31,6 +31,45 @@
+  * The following macros are used for CSR encodings
+  *   @{
+  */
++/* NuttX port: the NuttX <arch/csr.h> (pulled in through <nuttx/irq.h>)
++ * already defines several of these names with its own encodings; undefine
++ * them so this header provides the NMSIS values to the SDK sources without
++ * macro redefinition warnings.
++ */
++
++#undef CSR_FCSR
++#undef CSR_FFLAGS
++#undef CSR_FRM
++#undef CSR_MINTSTATUS
++#undef CSR_USTATUS
++#undef MIE_MEIE
++#undef MIE_MSIE
++#undef MIE_MTIE
++#undef MIE_SEIE
++#undef MIE_SSIE
++#undef MIE_STIE
++#undef MIP_MEIP
++#undef MIP_MSIP
++#undef MIP_MTIP
++#undef MIP_SEIP
++#undef MIP_SSIP
++#undef MIP_STIP
++#undef MSTATUS_FS
++#undef MSTATUS_FS_CLEAN
++#undef MSTATUS_FS_DIRTY
++#undef MSTATUS_MIE
++#undef MSTATUS_MPIE
++#undef MSTATUS_MPRV
++#undef MSTATUS_MXR
++#undef MSTATUS_SIE
++#undef MSTATUS_SPIE
++#undef MSTATUS_UIE
++#undef MSTATUS_XS
++#undef SSTATUS_FS
++#undef SSTATUS_SIE
++#undef SSTATUS_SPIE
++#undef SSTATUS_XS
++
+ /* === Standard CSR bit mask === */
+ #define MSTATUS_UIE         0x00000001
+ #define MSTATUS_SIE         0x00000002
 diff --git a/MSDK/plf/riscv/gd32vw55x/gd32vw55x.h 
b/MSDK/plf/riscv/gd32vw55x/gd32vw55x.h
 index f4e200e..c9189ca 100644
 --- a/MSDK/plf/riscv/gd32vw55x/gd32vw55x.h
@@ -37,6 +87,24 @@ index e7f393f..8731cb8 100644
  
      /* 2. wifi power on */
      wifi_exist_flag = 1;
+diff --git a/MSDK/wifi_manager/wifi_management.h 
b/MSDK/wifi_manager/wifi_management.h
+index 3a108f9..3923f02 100644
+--- a/MSDK/wifi_manager/wifi_management.h
++++ b/MSDK/wifi_manager/wifi_management.h
+@@ -94,6 +94,13 @@ extern "C" {
+ #define wifi_sm_printf(...)
+ #endif
+ 
++/* NuttX port: <nuttx/compiler.h> also defines COMPILE_TIME_ASSERT; use the
++ * SDK's own definition here without redefining the other one.
++ */
++#ifdef COMPILE_TIME_ASSERT
++#undef COMPILE_TIME_ASSERT
++#endif
++
+ #define COMPILE_TIME_ASSERT(constant_expr)    \
+ do {                        \
+     switch(0) {             \
 diff --git a/MSDK/wifi_manager/wifi_netlink.c 
b/MSDK/wifi_manager/wifi_netlink.c
 index aec26cc..445c109 100644
 --- a/MSDK/wifi_manager/wifi_netlink.c
diff --git a/arch/risc-v/src/gd32vw55x/gdwifi/wrapper_nuttx.c 
b/arch/risc-v/src/gd32vw55x/gdwifi/wrapper_nuttx.c
index 27d651823db..6264aae5a6e 100644
--- a/arch/risc-v/src/gd32vw55x/gdwifi/wrapper_nuttx.c
+++ b/arch/risc-v/src/gd32vw55x/gdwifi/wrapper_nuttx.c
@@ -1033,28 +1033,6 @@ void sys_sched_unlock(void)
  * Public Functions - timers
  ****************************************************************************/
 
-static void timer_worker_fixed(void *arg)
-{
-  struct nx_timer_s *t = arg;
-
-  if (!t->active)
-    {
-      return;
-    }
-
-  if (t->periodic)
-    {
-      wd_start(&t->wdog, MSEC2TICK(t->delay_ms), timer_wdog_handler,
-               (wdparm_t)(uintptr_t)t);
-    }
-  else
-    {
-      t->active = 0;
-    }
-
-  t->func(t, t->arg);
-}
-
 void sys_timer_init(os_timer_t *timer, const uint8_t *name, uint32_t delay,
                     uint8_t periodic, timer_func_t func, void *arg)
 {
diff --git a/arch/risc-v/src/gd32vw55x/hardware/gd32vw55x_eclic.h 
b/arch/risc-v/src/gd32vw55x/hardware/gd32vw55x_eclic.h
index 4c8027382d0..8cdb2a7e015 100644
--- a/arch/risc-v/src/gd32vw55x/hardware/gd32vw55x_eclic.h
+++ b/arch/risc-v/src/gd32vw55x/hardware/gd32vw55x_eclic.h
@@ -86,10 +86,14 @@
 
 #define ECLIC_INTCTL_LEVEL(l)        ((((l) & 0xf) << 4) | 0x0f)
 
-/* Nuclei-specific CSRs used with the ECLIC */
+/* Nuclei-specific CSRs used with the ECLIC.  Note: the Nuclei interrupt
+ * level status CSR lives at 0x346, not at the standard CLIC MINTSTATUS
+ * address that arch/risc-v/include/csr.h names CSR_MINTSTATUS (0xfb1); a
+ * distinct name avoids redefining it.
+ */
 
 #define CSR_MTVT                     0x307  /* Vector table base */
-#define CSR_MINTSTATUS               0x346  /* Interrupt level status */
+#define CSR_NUCLEI_MINTSTATUS        0x346  /* Interrupt level status */
 #define CSR_MCACHE_CTL               0x7ca  /* I-cache control */
 #define CSR_MMISC_CTL                0x7d0  /* Misc control (NMI base) */
 #define CSR_MTVT2                    0x7ec  /* Non-vectored irq entry */

Reply via email to