[GH-ISSUE #12] Too many warnings and werrors when we cross compile windows-msvc targets. -werror is also painful. #8

Closed
opened 2026-03-03 12:01:40 +03:00 by kerem · 6 comments
Owner

Originally created by @trcrsired on GitHub (Feb 1, 2026).
Original GitHub issue: https://github.com/ForLoopCodes/legacy-notepad/issues/12

You do not provide windows on arm build either.
This compiles but please remove -werror, plus -static-libstdc++ and -static-libgcc are also very bad. There is no gcc support for windows on arm yet.
Please just use this windows-msvc-sysroot with clang to build this with clang instead of gcc so that it will get rid of gcc libraries completely.
https://github.com/trcrsired/llvm-releases/releases
https://github.com/trcrsired/windows-msvc-sysroot

$ cmake -GNinja .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_ASM_COMPILER=clang -DCMAKE_RC_COMPILER=llvm-rc -DCMAKE_INSTALL_PREFIX=$HOME/softwares/aarch64-windows-msvc -DCMAKE_C_COMPILER_TARGET=aarch64-windows-msvc -DCMAKE_CXX_COMPILER_TARGET=aarch64-windows-msvc -DCMAKE_ASM_COMPILER_TARGET=aarch64-windows-msvc -DCMAKE_LINKER_TYPE=LLD -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=On -DCMAKE_C_FLAGS="-D_DLL=1 -fuse-ld=lld -lmsvcrt" -DCMAKE_CXX_FLAGS="-D_DLL=1 -fuse-ld=lld -lmsvcrt" -DCMAKE_SYSROOT=$HOME/toolchains/windows-msvc-sysroot -DCMAKE_SYSTEM_PROCESSOR=aarch64
-- The CXX compiler identification is Clang 23.0.0 with GNU-like command-line
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Users//toolchains/llvm/aarch64-apple-darwin24/llvm/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (3.1s)
-- Generating done (0.0s)
CMake Warning:
Manually-specified variables were not used by the project:

CMAKE_ASM_COMPILER
CMAKE_ASM_COMPILER_TARGET
CMAKE_C_COMPILER
CMAKE_C_FLAGS

-- Build files have been written to: /Users//toolchains_build/legacy-notepad/.build
$ ninja
[2/11] Building CXX object CMakeFiles/...cy-notepad.dir/src/core/globals.cpp.ob
clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument]
/Users//toolchains_build/legacy-notepad/src/core/globals.cpp:33:49: warning: missing field 'hwndOwner' initializer [-Wmissing-field-initializers]
33 | PAGESETUPDLGW g_pageSetup = {sizeof(g_pageSetup)};
| ^
1 warning generated.
[3/11] Building CXX object CMakeFiles/legacy-notepad.dir/src/main.cpp.obj
clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument]
[4/11] Building CXX object CMakeFiles/...y-notepad.dir/src/modules/theme.cpp.ob
clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument]
/Users//toolchains_build/legacy-notepad/src/modules/theme.cpp:78:49: warning: missing field 'iBorderWidth' initializer [-Wmissing-field-initializers]
78 | NONCLIENTMETRICSW ncm = {sizeof(ncm)};
| ^
1 warning generated.
[5/11] Building CXX object CMakeFiles/...-notepad.dir/src/modules/editor.cpp.ob
clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument]
[6/11] Building CXX object CMakeFiles/legacy-notepad.dir/src/modules/ui.cpp.obj
clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument]
[7/11] Building CXX object CMakeFiles/...epad.dir/src/modules/background.cpp.ob
clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument]
/Users//toolchains_build/legacy-notepad/src/modules/background.cpp:54:9: warning: suggest braces around initialization of subobject [-Wmissing-braces]
54 | 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| { }
/Users//toolchains_build/legacy-notepad/src/modules/background.cpp:55:9: warning: suggest braces around initialization of subobject [-Wmissing-braces]
55 | 0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| { }
/Users//toolchains_build/legacy-notepad/src/modules/background.cpp:56:9: warning: suggest braces around initialization of subobject [-Wmissing-braces]
56 | 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| { }
/Users//toolchains_build/legacy-notepad/src/modules/background.cpp:57:9: warning: suggest braces around initialization of subobject [-Wmissing-braces]
57 | 0.0f, 0.0f, 0.0f, opacity, 0.0f,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| { }
/Users//toolchains_build/legacy-notepad/src/modules/background.cpp:58:9: warning: suggest braces around initialization of subobject [-Wmissing-braces]
58 | 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| { }
/Users//toolchains_build/legacy-notepad/src/modules/background.cpp:224:37: warning: missing field 'hwndOwner' initializer [-Wmissing-field-initializers]
224 | OPENFILENAMEW ofn = {sizeof(ofn)};
| ^
6 warnings generated.
[8/11] Building CXX object CMakeFiles/...otepad.dir/src/modules/commands.cpp.ob
clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument]
/Users//toolchains_build/legacy-notepad/src/modules/commands.cpp:59:37: warning: missing field 'hwndOwner' initializer [-Wmissing-field-initializers]
59 | OPENFILENAMEW ofn = {sizeof(ofn)};
| ^
/Users//toolchains_build/legacy-notepad/src/modules/commands.cpp:80:37: warning: missing field 'hwndOwner' initializer [-Wmissing-field-initializers]
80 | OPENFILENAMEW ofn = {sizeof(ofn)};
| ^
/Users//toolchains_build/legacy-notepad/src/modules/commands.cpp:94:31: warning: missing field 'hwndOwner' initializer [-Wmissing-field-initializers]
94 | PRINTDLGW pd = {sizeof(pd)};
| ^
/Users//toolchains_build/legacy-notepad/src/modules/commands.cpp💯30: warning: missing field 'lpszDocName' initializer [-Wmissing-field-initializers]
100 | DOCINFOW di = {sizeof(di)};
| ^
4 warnings generated.
[9/11] Building CXX object CMakeFiles/...-notepad.dir/src/modules/dialog.cpp.ob
clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument]
[10/11] Building CXX object CMakeFiles...cy-notepad.dir/src/modules/file.cpp.ob
clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument]
[11/11] Linking CXX executable legacy-notepad.exe
clang++: warning: argument unused during compilation: '-static-libgcc' [-Wunused-command-line-argument]
clang++: warning: argument unused during compilation: '-static-libstdc++' [-Wunused-command-line-argument]
clang++: warning: argument unused during compilation: '-static-libgcc' [-Wunused-command-line-argument]
clang++: warning: argument unused during compilation: '-static-libstdc++' [-Wunused-command-line-argument]

Originally created by @trcrsired on GitHub (Feb 1, 2026). Original GitHub issue: https://github.com/ForLoopCodes/legacy-notepad/issues/12 You do not provide windows on arm build either. This compiles but please remove -werror, plus -static-libstdc++ and -static-libgcc are also very bad. There is no gcc support for windows on arm yet. Please just use this windows-msvc-sysroot with clang to build this with clang instead of gcc so that it will get rid of gcc libraries completely. https://github.com/trcrsired/llvm-releases/releases https://github.com/trcrsired/windows-msvc-sysroot $ cmake -GNinja .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_ASM_COMPILER=clang -DCMAKE_RC_COMPILER=llvm-rc -DCMAKE_INSTALL_PREFIX=$HOME/softwares/aarch64-windows-msvc -DCMAKE_C_COMPILER_TARGET=aarch64-windows-msvc -DCMAKE_CXX_COMPILER_TARGET=aarch64-windows-msvc -DCMAKE_ASM_COMPILER_TARGET=aarch64-windows-msvc -DCMAKE_LINKER_TYPE=LLD -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=On -DCMAKE_C_FLAGS="-D_DLL=1 -fuse-ld=lld -lmsvcrt" -DCMAKE_CXX_FLAGS="-D_DLL=1 -fuse-ld=lld -lmsvcrt" -DCMAKE_SYSROOT=$HOME/toolchains/windows-msvc-sysroot -DCMAKE_SYSTEM_PROCESSOR=aarch64 -- The CXX compiler identification is Clang 23.0.0 with GNU-like command-line -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /Users//toolchains/llvm/aarch64-apple-darwin24/llvm/bin/clang++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done (3.1s) -- Generating done (0.0s) CMake Warning: Manually-specified variables were not used by the project: CMAKE_ASM_COMPILER CMAKE_ASM_COMPILER_TARGET CMAKE_C_COMPILER CMAKE_C_FLAGS -- Build files have been written to: /Users//toolchains_build/legacy-notepad/.build $ ninja [2/11] Building CXX object CMakeFiles/...cy-notepad.dir/src/core/globals.cpp.ob clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument] /Users//toolchains_build/legacy-notepad/src/core/globals.cpp:33:49: warning: missing field 'hwndOwner' initializer [-Wmissing-field-initializers] 33 | PAGESETUPDLGW g_pageSetup = {sizeof(g_pageSetup)}; | ^ 1 warning generated. [3/11] Building CXX object CMakeFiles/legacy-notepad.dir/src/main.cpp.obj clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument] [4/11] Building CXX object CMakeFiles/...y-notepad.dir/src/modules/theme.cpp.ob clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument] /Users//toolchains_build/legacy-notepad/src/modules/theme.cpp:78:49: warning: missing field 'iBorderWidth' initializer [-Wmissing-field-initializers] 78 | NONCLIENTMETRICSW ncm = {sizeof(ncm)}; | ^ 1 warning generated. [5/11] Building CXX object CMakeFiles/...-notepad.dir/src/modules/editor.cpp.ob clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument] [6/11] Building CXX object CMakeFiles/legacy-notepad.dir/src/modules/ui.cpp.obj clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument] [7/11] Building CXX object CMakeFiles/...epad.dir/src/modules/background.cpp.ob clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument] /Users//toolchains_build/legacy-notepad/src/modules/background.cpp:54:9: warning: suggest braces around initialization of subobject [-Wmissing-braces] 54 | 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | { } /Users//toolchains_build/legacy-notepad/src/modules/background.cpp:55:9: warning: suggest braces around initialization of subobject [-Wmissing-braces] 55 | 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | { } /Users//toolchains_build/legacy-notepad/src/modules/background.cpp:56:9: warning: suggest braces around initialization of subobject [-Wmissing-braces] 56 | 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | { } /Users//toolchains_build/legacy-notepad/src/modules/background.cpp:57:9: warning: suggest braces around initialization of subobject [-Wmissing-braces] 57 | 0.0f, 0.0f, 0.0f, opacity, 0.0f, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | { } /Users//toolchains_build/legacy-notepad/src/modules/background.cpp:58:9: warning: suggest braces around initialization of subobject [-Wmissing-braces] 58 | 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | { } /Users//toolchains_build/legacy-notepad/src/modules/background.cpp:224:37: warning: missing field 'hwndOwner' initializer [-Wmissing-field-initializers] 224 | OPENFILENAMEW ofn = {sizeof(ofn)}; | ^ 6 warnings generated. [8/11] Building CXX object CMakeFiles/...otepad.dir/src/modules/commands.cpp.ob clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument] /Users//toolchains_build/legacy-notepad/src/modules/commands.cpp:59:37: warning: missing field 'hwndOwner' initializer [-Wmissing-field-initializers] 59 | OPENFILENAMEW ofn = {sizeof(ofn)}; | ^ /Users//toolchains_build/legacy-notepad/src/modules/commands.cpp:80:37: warning: missing field 'hwndOwner' initializer [-Wmissing-field-initializers] 80 | OPENFILENAMEW ofn = {sizeof(ofn)}; | ^ /Users//toolchains_build/legacy-notepad/src/modules/commands.cpp:94:31: warning: missing field 'hwndOwner' initializer [-Wmissing-field-initializers] 94 | PRINTDLGW pd = {sizeof(pd)}; | ^ /Users//toolchains_build/legacy-notepad/src/modules/commands.cpp:100:30: warning: missing field 'lpszDocName' initializer [-Wmissing-field-initializers] 100 | DOCINFOW di = {sizeof(di)}; | ^ 4 warnings generated. [9/11] Building CXX object CMakeFiles/...-notepad.dir/src/modules/dialog.cpp.ob clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument] [10/11] Building CXX object CMakeFiles...cy-notepad.dir/src/modules/file.cpp.ob clang++: warning: -lmsvcrt: 'linker' input unused [-Wunused-command-line-argument] [11/11] Linking CXX executable legacy-notepad.exe clang++: warning: argument unused during compilation: '-static-libgcc' [-Wunused-command-line-argument] clang++: warning: argument unused during compilation: '-static-libstdc++' [-Wunused-command-line-argument] clang++: warning: argument unused during compilation: '-static-libgcc' [-Wunused-command-line-argument] clang++: warning: argument unused during compilation: '-static-libstdc++' [-Wunused-command-line-argument]
kerem 2026-03-03 12:01:40 +03:00
Author
Owner

@trcrsired commented on GitHub (Feb 1, 2026):

The binary size is also smaller than your current ones.

-rwxr-xr-x 1 staff 101376 Feb 1 19:01 legacy-notepad.exe
$ file ./legacy-notepad.exe
./legacy-notepad.exe: PE32+ executable (GUI) x86-64, for MS Windows

99kb vs 192 KB

Windows on ARM one is even smaller
-rwxr-xr-x 1 staff 82944 Feb 1 18:59 legacy-notepad.exe
$ file ./legacy-notepad.exe
./legacy-notepad.exe: PE32+ executable (GUI) Aarch64, for MS Windows

81kb

<!-- gh-comment-id:3830885813 --> @trcrsired commented on GitHub (Feb 1, 2026): The binary size is also smaller than your current ones. -rwxr-xr-x 1 staff 101376 Feb 1 19:01 legacy-notepad.exe $ file ./legacy-notepad.exe ./legacy-notepad.exe: PE32+ executable (GUI) x86-64, for MS Windows 99kb vs 192 KB Windows on ARM one is even smaller -rwxr-xr-x 1 staff 82944 Feb 1 18:59 legacy-notepad.exe $ file ./legacy-notepad.exe ./legacy-notepad.exe: PE32+ executable (GUI) Aarch64, for MS Windows 81kb
Author
Owner

@trcrsired commented on GitHub (Feb 1, 2026):

This also contains windows on arm one.

legacy-notepad.zip

<!-- gh-comment-id:3830909700 --> @trcrsired commented on GitHub (Feb 1, 2026): This also contains windows on arm one. [legacy-notepad.zip](https://github.com/user-attachments/files/24991820/legacy-notepad.zip)
Author
Owner

@ForLoopCodes commented on GitHub (Feb 3, 2026):

awesome!!! are being able to open a PR? would love to merge it

<!-- gh-comment-id:3841356546 --> @ForLoopCodes commented on GitHub (Feb 3, 2026): awesome!!! are being able to open a PR? would love to merge it
Author
Owner

@trcrsired commented on GitHub (Feb 3, 2026):

awesome!!! are being able to open a PR? would love to merge it

I mean you should at least first try the toolchain to compile the code by yourself to see whether it works best for you.

https://github.com/trcrsired/windows-msvc-sysroot
https://github.com/trcrsired/llvm-releases/releases Download x86_64-windows-gnu.tar.xz

Try to use this toolchain by set --target=, --sysroot=

<!-- gh-comment-id:3842273544 --> @trcrsired commented on GitHub (Feb 3, 2026): > awesome!!! are being able to open a PR? would love to merge it I mean you should at least first try the toolchain to compile the code by yourself to see whether it works best for you. https://github.com/trcrsired/windows-msvc-sysroot https://github.com/trcrsired/llvm-releases/releases Download x86_64-windows-gnu.tar.xz Try to use this toolchain by set --target=, --sysroot=
Author
Owner

@ForLoopCodes commented on GitHub (Feb 4, 2026):

i will see the updated code soon when im on my computer, thanks for the files

<!-- gh-comment-id:3845189280 --> @ForLoopCodes commented on GitHub (Feb 4, 2026): i will see the updated code soon when im on my computer, thanks for the files
Author
Owner

@ForLoopCodes commented on GitHub (Feb 4, 2026):

will add arm support in v1.2.0 release

<!-- gh-comment-id:3847799847 --> @ForLoopCodes commented on GitHub (Feb 4, 2026): will add arm support in v1.2.0 release
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/legacy-notepad#8
No description provided.