Download Latest Version JTSDK64-4.0.0b1.exe (347.0 MB)
Email in envelope

Get an email when there's a new version of HAMLIB SDK (Evolved JTSDK)

Name Modified Size InfoDownloads / Week
Parent folder
README.md 2022-01-21 11.3 kB
Notes for Qt and MinGW 9.docx 2022-01-21 16.4 kB
Totals: 2 Items   27.7 kB 0

Developing Tools for the MinGW Environment


Introduction

For JT-ware, the MinGW environment provides Unix-like environments and tools for MS-Windows 10 and 11 that can be used to emulate Unix/Linux tools and hence compile and develop JT-ware natively within Windows environments.

Section Aim

Unfortunately Qt does not provide a very extensible enviroment. It just provides static MinGW environments that ar ehard to add additional tools and libraries to.

Sometimes we need additional tools.

The MSYS2 MinGW environment provides the pacman tool for updating, maintaining and adding requireed resources and libraries.

The Qt maintainers do not supply anything bar the MaintenanceTool - which primarily is used to provide updates and to add new packages.

The aim of this section is to provide documentation and resources that can assist JT-ware and other Amateur Radio Programmers in adding additional tools and resources to the QT-supplied MinGW environments.

Why can't we just add MSYS2 tools to the system path?

The issue is reliability and the models to which Qt MinGW components are built to.

In a nutshell, Qt's environments are built to the posix threading model with Structured Exception Handling (SEH). The MSYS environment is NOT built to these generic Windows threading models and exception handling abilities.

Example: Qt MinGW v8.1

PS C:\JTSDK64-Tools> gcc --version
gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

PS C:\JTSDK64-Tools> gcc -v
Using built-in specs.
COLLECT_GCC=C:\JTSDK64-Tools\tools\Qt\Tools\mingw810_64\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/JTSDK64-Tools/tools/Qt/Tools/mingw810_64/bin/../libexec/gcc/x86_64-w64-mingw32/8.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-8.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw810/x86_64-810-posix-seh-rt_v6-rev0/mingw64 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev0, Built by MinGW-W64 project' --with-bugurl=https://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-posix-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-posix-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw810/x86_64-810-posix-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw810/x86_64-810-posix-seh-rt_v6-rev0/mingw64/opt/lib -L/c/mingw810/prerequisites/x86_64-zlib-static/lib -L/c/mingw810/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: posix
gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)

Example: MSYS2

$ gcc --version
gcc.exe (Rev6, Built by MSYS2 project) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gcc -v
Using built-in specs.
COLLECT_GCC=C:\JTSDK64-Tools\tools\msys64\mingw64\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/JTSDK64-Tools/tools/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../gcc-11.2.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --enable-checking=release --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++,jit --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts --enable-libstdcxx-time --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-lto --enable-libgomp --disable-multilib --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev6, Built by MSYS2 project' --with-bugurl=https://github.com/msys2/MINGW-packages/issues --with-gnu-as --with-gnu-ld --with-boot-ldflags='-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high -Wl,--disable-dynamicbase -static-libstdc++ -static-libgcc' 'LDFLAGS_FOR_TARGET=-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high' --enable-linker-plugin-flags='LDFLAGS=-static-libstdc++\ -static-libgcc\ -pipe\ -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high\ -Wl,--stack,12582912'
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.2.0 (Rev6, Built by MSYS2 project)

You will note with a simple web browser search of the above outputs that MSYS2 is not developed with "seh" options set (though the "posix" threading model appears to be set).

Therefore we need to learn how to compile our own tools that are COMPATIBLE WITH the models to which Qt compiles and delivers their tools.

That is what this section is about.

How Can I Help?

** Please provide resources that can be added to these lists or this folder ***

** ALL CONTRIBUTIONS AND COMMENTS ARE GRATEFULLY WELCOMED ** !

Reports

Reports, suggestions and comments via the JTSDK Forum - or via the email addresses from main contributors there of late if you do not have post access - are essential.


Programming Resources



Conclusion and Further References


The aim of JTSDK64 Project is to use an Agile delivery approach to create a high-quality, yet flexible build system.

Source: README.md, updated 2022-01-21