SwuduSusuwu / SubStack

Stages blog posts, has C++ sources which match posts. Blog about human nervous tissues + antivirus + autonomous tools
https://SwuduSusuwu.substack.com/
Apache License 2.0
1 stars 0 forks source link

Test Windows version of this (has minimal OS-specific code, thus assumed this supports all OS's) #16

Open SwuduSusuwu opened 1 week ago

SwuduSusuwu commented 1 week ago

?build.sh New param --mingw for Windows Beta@a6a4d31 allows to use Termux (or other emus) to test this through MinGW (https://github.com/mingw-w64), but without wine, box86 or box64 can just test that build.sh compiles this (can not test executables produced).

SwuduSusuwu commented 1 week ago

https://github.com/termux/termux-packages/issues/21720#issuecomment-2396888397 fixes MinGW (if Termux gives you 'mm_malloc.h' file not found, just execute pkg up; in combination with Undo 42c2a23, do %s/shlobj_core.h/shlobj.h/@36d7efb, ./build.sh --mingw (with default, --debug, or --release) is now success.

SwuduSusuwu commented 1 week ago

https://github.com/termux-play-store/termux-issues/issues/150 is now all which blocks unit tests of executables for MinGW (win32)

SwuduSusuwu commented 1 week ago

[Version of post is ?build.sh Output file path+size on success@709c40e ] Howto build from Linux (or other POSIX OS) to Windows (cross-platform):

~ $ git clone https://github.com/SwuduSusuwu/SubStack.git
fatal: destination path 'SubStack' already exists and is not an empty directory.
~ $ cd SubStack
~/SubStack $ ./build.sh --mingw
[Notice: Dual licenses: choose "Creative Commons" or "Apache 2" (allows all uses)]
[Notice: `./build.sh --mingw` defaults to `./build.sh --mingw --debug`.]
[Notice: Use `./build.sh --mingw --release` to improve how fast this executes]
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fsanitize=address -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -fno-omit-frame-pointer -g -x c -c ./cxx//../c/rfc6234/sha1.c
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fsanitize=address -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -fno-omit-frame-pointer -g -x c -c ./cxx//../c/rfc6234/sha224-256.c
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fsanitize=address -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -fno-omit-frame-pointer -g -x c -c ./cxx//../c/rfc6234/sha384-512.c
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fsanitize=address -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -fno-omit-frame-pointer -g -c ./cxx//ClassSha2.cxx
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fsanitize=address -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -fno-omit-frame-pointer -g -c ./cxx//ClassResultList.cxx
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fsanitize=address -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -fno-omit-frame-pointer -g -c ./cxx//ClassSys.cxx
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fsanitize=address -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -fno-omit-frame-pointer -g -c ./cxx//ClassCns.cxx
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fsanitize=address -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -fno-omit-frame-pointer -g -c ./cxx//VirusAnalysis.cxx
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fsanitize=address -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -fno-omit-frame-pointer -g -c ./cxx//AssistantCns.cxx
./cxx//AssistantCns.cxx:129:10: warning: TODO: process XHTML without Boost [-W#pragma-messages]
  129 | # pragma message("TODO: process XHTML without Boost")
      |          ^
1 warning generated.
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fsanitize=address -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -fno-omit-frame-pointer -g -c ./cxx//main.cxx
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fsanitize=address -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment -fno-omit-frame-pointer -g sha1.o sha224-256.o sha384-512.o ClassSha2.o ClassResultList.o ClassSys.o ClassCns.o VirusAnalysis.o AssistantCns.o main.o
+ STATUS=0
+ set +x
[Success: produced `a.exe` (3080192 bytes)]
~/SubStack $ ./build.sh --mingw --release
[Notice: Dual licenses: choose "Creative Commons" or "Apache 2" (allows all uses)]
[Notice: `./build.sh --mingw --release` does not support profilers/debuggers (use `./build.sh --mingw --debug` for this)]
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fomit-frame-pointer -DNDEBUG -O2 -x c -c ./cxx//../c/rfc6234/sha1.c
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fomit-frame-pointer -DNDEBUG -O2 -x c -c ./cxx//../c/rfc6234/sha224-256.c
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fomit-frame-pointer -DNDEBUG -O2 -x c -c ./cxx//../c/rfc6234/sha384-512.c
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fomit-frame-pointer -DNDEBUG -O2 -c ./cxx//ClassSha2.cxx
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fomit-frame-pointer -DNDEBUG -O2 -c ./cxx//ClassResultList.cxx
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fomit-frame-pointer -DNDEBUG -O2 -c ./cxx//ClassSys.cxx
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fomit-frame-pointer -DNDEBUG -O2 -c ./cxx//ClassCns.cxx
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fomit-frame-pointer -DNDEBUG -O2 -c ./cxx//VirusAnalysis.cxx
In file included from ./cxx//VirusAnalysis.cxx:6:
./cxx/ClassResultList.hxx:140:104: warning: loop not unrolled: the optimizer was unable to perform the requested transformation; the transformation might be disabled or specified as part of an unsupported transformation ordering [-Wpass-failed=transform-warning]
  140 | const std::tuple<typename List::value_type::const_iterator, typename List::value_type::const_iterator> listProduceSignature(const List &list, const typename List::value_type &value) {
      |                                                                                                        ^
1 warning generated.
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fomit-frame-pointer -DNDEBUG -O2 -c ./cxx//AssistantCns.cxx
./cxx//AssistantCns.cxx:129:10: warning: TODO: process XHTML without Boost [-W#pragma-messages]
  129 | # pragma message("TODO: process XHTML without Boost")
      |          ^
1 warning generated.
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fomit-frame-pointer -DNDEBUG -O2 -c ./cxx//main.cxx
+ x86_64-w64-mingw32-clang++ -Wall -Wno-unused -Wno-unused-function -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -fomit-frame-pointer -DNDEBUG -O2 sha1.o sha224-256.o sha384-512.o ClassSha2.o ClassResultList.o ClassSys.o ClassCns.o VirusAnalysis.o AssistantCns.o main.o
+ STATUS=0
+ set +x
[Success: produced `a.exe` (279040 bytes)]
SwuduSusuwu commented 1 day ago

?cxx/Macros.hxx %s/-D /-D/, + MSVC instructions@330f0ee assists those with Windows computers.

?build.sh %s/mull/null/ Shell fix if no clang++@def429c Fixes g++ (plus x86_64-w64-mingw32-g++) ?cxx/Macros.hxx NOEXCEPT/NORETURN fallbacks@b7678c6 Fixes g++ (plus x86_64-w64-mingw32-g++)

?build.sh:?CXX_FLAGS_DEBUG split in 2@8727038 Fixes x86_64-w64-mingw32-g++ ?build.sh:+LD_FLAGS (for --mingw)@e9c84be Fixes x86_64-w64-mingw32-clang++ (plus x86_64-w64-mingw32-g++) ?testHarnesses Use +classSysTestsNoexcept to catch@5884ca6 Fixes unit tests on WINE/Windows.

Can now do ./build --mingw && wine a.exe on Fedora/Debian (plus derivatives such as Ubuntu).