Skip to content

Add defconfig for Microwindows Integration and Examples. - #19572

Open
Acfboy wants to merge 3 commits into
apache:masterfrom
Acfboy:add-microwindows
Open

Add defconfig for Microwindows Integration and Examples.#19572
Acfboy wants to merge 3 commits into
apache:masterfrom
Acfboy:add-microwindows

Conversation

@Acfboy

@Acfboy Acfboy commented Jul 28, 2026

Copy link
Copy Markdown

Summary

Add ]board configurations sim:mw and qemu-intel64:mw that enable the Microwindows graphics library and its mwdemo demo application.

  • sim:mw uses virtual keyboard + touchscreen + framebuffer;
  • qemu-intel64:mw uses USB HID keyboard/mouse + framebuffer.

Related pr: apache/nuttx-apps#3624

Impact

  • New feature: YES — Microwindows board configurations for sim and qemu-intel64
  • Documentation: YES
  • No impact on existing configs, build, hardware, security, or compatibility.

Testing

Build Host: Linux x86_64, GCC 14.2

sim:mw:

tools/configure.sh sim:mw && make -j
./nuttx   # opens X11 window, mwdemo runs

qemu-intel64:mw:

tools/configure.sh qemu-intel64:mw && make -j

Create bootable ISO with GRUB2 (see doc)

qemu-system-x86_64 -cpu host -enable-kvm -m 2G \
      -cdrom boot_mw.iso \
      -serial stdio -monitor none -no-reboot \
      -device qemu-xhci -device usb-kbd -device usb-mouse

@linguini1 linguini1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please follow the PR template.

Also, could you please document the two new defconfigs under the board documentation pages?

@Acfboy

Acfboy commented Jul 28, 2026

Copy link
Copy Markdown
Author

Updated with documents and standered pr message now.

@linguini1
linguini1 dismissed their stale review July 28, 2026 17:32

Addressed

@linguini1

Copy link
Copy Markdown
Contributor

Can you add a screenshot of the window?

Can you please split your commit into at least two: one for sim and one for QEMU?

Could you add the Assisted-by field to your commit(s) if you used AI tooling?

@github-actions github-actions Bot added Area: Documentation Improvements or additions to documentation Size: M The size of the change in this PR is medium Board: simulator Board: x86_64 labels Jul 28, 2026
@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown

MemBrowse Memory Report

No memory changes detected for:

jerpelea
jerpelea previously approved these changes Jul 29, 2026
anchao
anchao previously approved these changes Jul 29, 2026
@michallenc

Copy link
Copy Markdown
Contributor

I am getting several compile warnings (in microwindows library) and a compile error because of undefined reference to fnt_createfont.

I tried to build sim:mw config with your core branch against upstream NuttX apps.

./tools/configure.sh sim:mw
make
Create version.h
LN: platform/board to /home/michal/Michal/projects/nuttx/apps/platform/dummy
Register: mwdemo
Register: dd
CP:  /home/michal/Michal/projects/nuttx/core/include/nuttx/config.h
CP:  /home/michal/Michal/projects/nuttx/core/include/nuttx/fs/hostfs.h
CC:  sim/sim_doirq.c /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/images/tools/convbmp.c: In function ‘ConvBMP’:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/images/tools/convbmp.c:379:32: warning: declaration of ‘p’ shadows a previous local [-Wshadow]
  379 |                 unsigned char *p = imagebits + i*pitch;
      |                                ^
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/images/tools/convbmp.c:255:8: note: shadowed declaration is here
  255 | UCHAR *p = (UCHAR *)&l;
      |        ^
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/images/tools/convbmp.c:404:32: warning: declaration of ‘p’ shadows a previous local [-Wshadow]
  404 |                 unsigned char *p = imagebits + i*pitch;
      |                                ^
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/images/tools/convbmp.c:255:8: note: shadowed declaration is here
  255 | UCHAR *p = (UCHAR *)&l;
      |        ^
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/images/tools/convbmp.c: In function ‘DecodeRLE4’:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/images/tools/convbmp.c:577:66: warning: ‘c1’ may be used uninitialized [-Wmaybe-uninitialized]
  577 |                                                         put4((c1 >> 4) & 0x0f);
      |                                                              ~~~~^~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/images/tools/convbmp.c:549:23: note: ‘c1’ was declared here
  549 | int             c, n, c1, c2;
      |                       ^~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from mwdemo_main.c:31:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
CC:  mm_heap/mm_calloc.c In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from mwdemo.c:20:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
CC:  vfs/fs_truncate.c /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/drivers/fb.c: In function ‘select_fb_subdriver’:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/drivers/fb.c:108:27: warning: unused variable ‘memplan4’ [-Wunused-variable]
  108 |         extern PSUBDRIVER memplan4[4];
      |                           ^~~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/drivers/rasterops.c: In function ‘GdRasterOp’:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/drivers/rasterops.c:310:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
  310 |     if (op == PIX_DST)   /* no-op */
      |     ^~
In file included from /home/michal/Michal/projects/nuttx/core/include/nuttx/mutex.h:30,
                 from /home/michal/Michal/projects/nuttx/core/include/nuttx/fs/fs.h:46,
                 from /home/michal/Michal/projects/nuttx/core/include/stdio.h:36,
                 from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/drivers/rasterops.c:33:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/drivers/rasterops.c:314:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
  314 |         assert((pixd->pitch & 3) == 0);
      |         ^~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winclip2.c:7,
                 from microwindows/src/mwin/winclip.c:4:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winexpos.c:11:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/caret.c:11:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
CC:  signal/sig_nanosleep.c In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/button.c:1:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/wingdi.c:7:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
CC:  sched/sched_getfiles.c microwindows/src/mwin/wingdi.c:35:35: warning: missing braces around initializer [-Wmissing-braces]
   35 | static MWPALOBJ default_palette = {
      |                                   ^
   36 |         {OBJ_PAL, TRUE}, 0, 0
      |                          {
   37 | };
      | }
CC:  pthread/pthread_cancel.c microwindows/src/mwin/wingdi.c: In function ‘FillRect’:
microwindows/src/mwin/wingdi.c:787:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  787 |                 crFill = GetSysColor((int)obr-1);       // OK: Not pointer. Convert to int then decrement.
      |                                      ^
CC:  misc/lib_crc16xmodem.c In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/insetr.c:1:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/medit.c:53:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/ptinsid.c:1:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
CC:  microwindows/src/mwin/winlib/newlistbox.c In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/progbar.c:52:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/newlistbox.c:16:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/static.c:53:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/scrlbar.c:11:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/windlg.c:18:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/graph3d.c:8:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/newedit.c:32:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winmain.c:22:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
CC:  microwindows/src/mwin/winlib/fastfill.c In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winrgn.c:14:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/fastfill.c:1:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
CC:  net/lib_etherntoa.c In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winres.c:15:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
CC:  signal/sig_ppoll.c microwindows/src/mwin/winres.c: In function ‘mwResCompare’:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:175:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  175 | #define HIWORD(l)           ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
      |                                      ^
microwindows/src/mwin/winres.c:67:14: note: in expansion of macro ‘HIWORD’
   67 |         if ((HIWORD(res1) == 0xFFFF) || (HIWORD(res2) == 0xFFFF))       // OK: Not pointer. Checks high word of resource DWORD.
      |              ^~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:175:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  175 | #define HIWORD(l)           ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
      |                                      ^
microwindows/src/mwin/winres.c:67:42: note: in expansion of macro ‘HIWORD’
   67 |         if ((HIWORD(res1) == 0xFFFF) || (HIWORD(res2) == 0xFFFF))       // OK: Not pointer. Checks high word of resource DWORD.
      |                                          ^~~~~~
CC:  signal/sig_pause.c microwindows/src/mwin/winres.c: In function ‘mwIsSameType’:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:175:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  175 | #define HIWORD(l)           ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
      |                                      ^
microwindows/src/mwin/winres.c:261:13: note: in expansion of macro ‘HIWORD’
  261 |         if (HIWORD(id) == 0xFFFF) {
      |             ^~~~~~
microwindows/src/mwin/winres.c:268:33: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  268 |                 if (w == LOWORD((DWORD) id))
      |                                 ^
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:174:37: note: in definition of macro ‘LOWORD’
  174 | #define LOWORD(l)           ((WORD)(l))
      |                                     ^
microwindows/src/mwin/winres.c: In function ‘resDialogTemplate’:
microwindows/src/mwin/winres.c:541:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  541 |         *extra++ = (WORD)menu;          // OK: No string menus yet, menu id always passed as WORD.
      |                    ^
microwindows/src/mwin/winres.c:542:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  542 |         *extra++ = (WORD)classname;     // OK: No string classes yet, class id always passed as WORD.
      |                    ^
CC:  microwindows/src/mwin/winlib/draw3d.c In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winuser.c:20:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
CC:  signal/sig_suspend.c In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winsbar.c:9:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/draw3d.c:1:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
CC:  obstack/lib_obstack_copy.c microwindows/src/mwin/winuser.c: In function ‘CreateWindowEx’:
microwindows/src/mwin/winuser.c:492:18: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  492 |         wp->id = (int)hMenu;                            // OK: Not pointer. Menu id always passed as int.
      |                  ^
microwindows/src/mwin/winsbar.c: In function ‘ShowScrollBar’:
microwindows/src/mwin/winsbar.c:799:21: warning: variable ‘rcClient’ set but not used [-Wunused-but-set-variable]
  799 |         RECT rcWin, rcClient;
      |                     ^~~~~~~~
microwindows/src/mwin/winuser.c: In function ‘GetClassLong’:
microwindows/src/mwin/winuser.c:1304:24: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 1304 |                 return (DWORD)hwnd->pClass->hbrBackground;              // OK: Pointer size checked above and is 32 bit.
      |                        ^
microwindows/src/mwin/winuser.c: In function ‘SetProp’:
microwindows/src/mwin/winuser.c:1517:38: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 1517 |                 pProp->Atom = LOWORD((DWORD)lpString);                  // OK: Not pointer. Atom passed in low 16 bits.
      |                                      ^
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:174:37: note: in definition of macro ‘LOWORD’
  174 | #define LOWORD(l)           ((WORD)(l))
      |                                     ^
microwindows/src/mwin/winuser.c: In function ‘GetProp’:
microwindows/src/mwin/winuser.c:1535:31: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 1535 |                 Atom = LOWORD((DWORD)lpString);                         // OK: Not pointer. Atom passed in low 16 bits.
      |                               ^
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:174:37: note: in definition of macro ‘LOWORD’
  174 | #define LOWORD(l)           ((WORD)(l))
      |                                     ^
microwindows/src/mwin/winuser.c: In function ‘RemoveProp’:
microwindows/src/mwin/winuser.c:1557:31: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 1557 |                 Atom = LOWORD((DWORD)lpString);                         // OK: Not pointer. Atom passed in low 16 bits.
      |                               ^
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:174:37: note: in definition of macro ‘LOWORD’
  174 | #define LOWORD(l)           ((WORD)(l))
      |                                     ^
microwindows/src/mwin/winuser.c: In function ‘SetWindowPos’:
CC:  obstack/lib_obstack_alloc.c microwindows/src/mwin/winuser.c:1659:24: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 1659 |                 switch((int)hwndInsertAfter) {                  // OK: intentional HWND to int cast
      |                        ^
microwindows/src/mwin/winuser.c:1660:22: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 1660 |                 case (int)(HWND)HWND_TOP:                               // OK: intentional HWND to int cast
      |                      ^
microwindows/src/mwin/winuser.c:1663:22: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
 1663 |                 case (int)(HWND)HWND_BOTTOM:                    // OK: intentional HWND to int cast
      |                      ^
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winlib/combobox.c:36:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
microwindows/src/mwin/winlib/combobox.c: In function ‘DefComboboxProc’:
microwindows/src/mwin/winlib/combobox.c:350:19: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  350 |         lp->nID = (UINT) lpcs->hMenu;        //OK:  Not pointer, control id always passed as UINT.
      |                   ^
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winfont.c:8:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/winevent.c:13:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
In file included from /home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windows.h:21,
                 from microwindows/src/mwin/windefw.c:10:
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:168:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  168 | typedef int (FAR *FARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:169:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  169 | typedef int (NEAR *NEARPROC)();
      | ^~~~~~~
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/include/windef.h:170:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
  170 | typedef int (*PROC)();
      | ^~~~~~~
LD:  nuttx
/usr/bin/ld: nuttx.rel: in function `GdCreateFont':
/home/michal/Michal/projects/nuttx/apps/graphics/microwindows/microwindows/src/engine/devfont.c:254:(.text.GdCreateFont+0x351): undefined reference to `fnt_createfont'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:490: nuttx] Error 1
make: *** [tools/Unix.mk:569: nuttx] Error 2

@Acfboy

Acfboy commented Jul 29, 2026

Copy link
Copy Markdown
Author

Sorry, this was my oversight when cleaning up config items from Make.defs to Makefile — I forgot to add HAVE_FNT_SUPPORT = Y in Makefile. Fixed it in apache/nuttx-apps#3678

Acfboy added 3 commits July 30, 2026 01:22
Add the sim:mw defconfig and board documentation entry for the
Microwindows demo.  This configuration uses the virtual keyboard
(event mode), touchscreen, and X11-based framebuffer.

Signed-off-by: Acfboy <AcfboyU@outlook.com>
Assisted-by: Opencode/Deepseek-V4-pro
Add the qemu-intel64:mw defconfig and board documentation entry, and the
Microwindows application documentation page.  This configuration uses
the framebuffer, USB HID keyboard (raw byte stream), and USB HID mouse.

Signed-off-by: Acfboy <AcfboyU@outlook.com>
Assisted-by: Opencode/Deepseek-V4-pro

Signed-off-by: Acfboy <AcfboyU@outlook.com>
This page covers the Microwindows integration, quick start for both
sim:mw and qemu-intel64:mw configurations, available Kconfig options
for keyboard/mouse/framebuffer drivers, the mwdemo demo application,
and porting guidance for new hardware.

Signed-off-by: Acfboy <AcfboyU@outlook.com>
Assisted-by:  Opencode/Deepseek-V4-pro
@Acfboy
Acfboy dismissed stale reviews from anchao, jerpelea, and xiaoxiang781216 via c2a44dd July 29, 2026 17:33
@Acfboy
Acfboy force-pushed the add-microwindows branch from 90123b0 to c2a44dd Compare July 29, 2026 17:33
@Acfboy

Acfboy commented Jul 29, 2026

Copy link
Copy Markdown
Author

Can you add a screenshot of the window?

Can you please split your commit into at least two: one for sim and one for QEMU?

Could you add the Assisted-by field to your commit(s) if you used AI tooling?

Okay. Thanks for the suggestions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: Documentation Improvements or additions to documentation Board: simulator Board: x86_64 Size: M The size of the change in this PR is medium

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants