Skip to content

Latest commit

 

History

History
483 lines (464 loc) · 15.3 KB

compilers.md

File metadata and controls

483 lines (464 loc) · 15.3 KB

Compiler Support

Kermit 95 should build with all released 32bit or better versions of Microsoft Visual C++ as well as 32bit versions of OpenWatcom 1.9. For the best security, always use the most recent compiler you can. Support for older compilers remains for those wishing to build Kermit 95 for vintage Windows systems, the security situation of which is well known.

The table below outlines which compilers you can use to target which versions of Windows, and what features you loose (or gain) in the process. The "Tested Often" column indicates which compilers are tested regularly either automatically by github or through occasional manual builds. These compilers are highly likely to work.

ARM64 and Itanium are built automatically by github actions but this project lacks the required hardware to actually test these builds. If you discover any issues please log a bug.

The Dialer is currently known to build fine with Visual C++ 2.0-7.0 (2002) and OpenWatcom 1.9. Visual C++ 6.0 SP6 is the recommended compiler as newer versions lack ctl3d32 - without this the application tends to look a little like something from Windows 3.1. Compilers newer than 2002 may work but OpenZinc is known to be incompatible with Visual C++ 14.x.

The highly optional k95cinit.exe utility requires Visual C++ 1.5 to be built.

Compiler Arch Minimum Windows Target Free? Tested Often PTY SSH NTLM Auth TAPI Dialer Notes
Visual C++ 2022 x86-64, x86 Windows Vista SP2
ARM64
ARM32
Visual C++ 2019 x86-64, x86 Windows XP SP3
ARM64
ARM32
Visual C++ 2017 x86-64, x86 Windows XP SP3
ARM64
ARM32
Visual C++ 2015 x86, x86-64 Windows XP
ARM64
ARM32
Visual C++ 2013 x86-64, x86 Windows XP Rarely tested but should work
Visual C++ 2012 x86-64, x86 Windows XP Rarely tested but should work
Visual C++ 2010 x86-64, x86 Windows XP Free Platform SDK 7.1 includes this compiler and works fine.
IA64
Visual C++ 2008 x86, x86-64 Windows 2000 Rarely tested but should work
IA64
Visual C++ 2005 x86-64, x86 Windows NT 4, Windows 98 ✅* Express Edition + Server 2003 Platform SDK is free.
IA64
Visual C++ 2003 x86 Windows NT 4, Windows 95 ✅* Visual C++ 2003 Toolkit + Server 2003 Platform SDK is free. Static CRT only. Can not build dialer (no lib.exe)
Visual C++ 2002 Professional x86 Windows NT 4, Windows 95
January 2000 Platform SDK Alpha 64bit (AXP64) 64bit Windows 2000 for DEC Alpha Code builds fine. Finding a 64bit version of Windows for the DEC Alpha to run it on is another matter entirely.
Visual C++ 6.0 Professional x86 Windows NT 3.51, Windows 95 Service Pack 6 tested
Alpha Windows NT 3.51? Service Pack 1
Visual C++ 5.0 (Visual Studio 97) Professional x86 Windows NT 3.51, Windows 95
Alpha Windows NT 3.51? Untested
Visual C++ 4.x Professional Edition x86 Windows NT 3.51, Windows 95, Win32s 1.25
Visual C++ 4.x RISC Edition MIPS Windows NT 3.51? TAPI support does not build (compiler bug?)
PowerPC No debug logging support due to TOC size limit.
Alpha
Visual C++ 2.x x86 Windows NT 3.1, Win32s 1.2 No toolbar or some GUI dialogs, window resizing scales font doesn't currently work well. Dialer builds refuses to start on NT 3.50 (see bug [#136](davidrg#136)) and would likely have some non-functional TAPI/modem-dialing stuff may be visible if it did. Targets NT 3.50 and 3.10 by default. To target NT 3.50 only (no runtime checks for NT 3.50-only APIs), set set CKT_NT35=no before building. K95 still has known issues when actually running on NT 3.1.
Visual C++ 2.x RISC Edition for Alpha/MIPS MIPS Windows NT 3.1? RISC Edition is Untested
Alpha
Visual C++ 1.5x x86-16 Windows 3.x This compiler is supported for building the k95cinit.exe utility only.
Visual C++ 1.0 32-bit Edition x86 Windows NT 3.1, Win32s 1.1 Compiler works but there are unresolved issues running on NT 3.1
OpenWatcom 1.9 x86 Windows NT 3.51, Windows 95 To target NT 3.50, set CKT_NT35=yes before building. Can not target NT 3.1 (it builds fine with set CKT_NT31=yes but the resulting binary gives "Unexpected error: 11" on NT 3.1)
OpenWatcom 2.0 x86 Windows NT 3.51, Windows 95 2022-08-01 build tested, targeting 32bit win32
MinGW x86 Limited support for development purposes.

Building with the Windows NT SDK

Some versions of the Platform SDK include a compiler. Sometimes that compiler is usable for building K95, sometimes it is not.

Windows NT 3.1

Building with this SDK is supported, but you also require some parts from Visual C++ as the included nmake.exe is too old and the SDK doesn't include link.exe (instead it has link32.exe which is incompatible). When using a newer link.exe, you may also need to grab cvtres.exe (link.exe version 3.0 from Visual C++ 4.0 is incompatible with the version of cvtres.exe included in the NT 3.1 SDK, possibly earlier versions of link.exe might be ok.)

Both the MIPS and i386 compilers should be correctly detected and configured to statically link against the C runtime and set the subsystem version to 3.1.

Windows NT 3.50

As found on the Microsoft Solutions Development Kit, the only compiler or linker included is for the Alpha platform and is at a similar level to Visual C++ 1.0 32bit (MSC 8.0). The compiler works but the linker does not, so you'll need a newer linker from Visual C++ 2.0 or 4.0. You may also need an updated cvtres.exe.

This Alpha cmopiler should be correctly detected and configured to statically link against the C runtime and set the subsystem version to 3.1.

January 2000 Platform SDK

The January 2000 Platform SDK includes a very early version of Visual C++ 2002 calling itself Microsoft (R) & Digital (TM) Alpha C/C++ Optimizing Compiler Version 13.00.8499. This compiler is capable of targeting both regular 32bit Alpha NT and the never released internal only 64bit Windows 2000 port (AXP64).

This is likely both the final publicly released version of Visual C++ for the Alpha, and the oldest publicly released version of Visual C++ for targeting 64bit Windows.

When built with this SDK, the build system will default to targeting AXP64. The build should complete without problems but the resulting binaries can not be run on any publicly released version of Windows.

While the compiler in this SDK is capable of doing 32bit builds, the Platform SDK headers have some issues (complains about size_t being redefined) and the required import libraries are not present.