Win32 builds
------------

MinGW
=====

For DLLs compatible with MSVC++ cross-compiled from Linux with MinGW, see
the build-win32.sh script in the scripts/ directory and its companion README
file.


Cygwin
======

From: "Mark J. Fine" <mark.fine@fineware-swl.com>
Subject: [Hamlib-developer] Building under Cygwin for Windows (Mingw32)
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum=hamlib-developer>
Date: Sun, 20 Jun 2004 15:25:24 -0400

<revised by mjf Tue, 17 Aug, 2004>
<revised by n0nb Thu, 27 Jul 2017>

Found this to be helpful for building hamlib under Cygwin/Mingw32 for
linking with Windows apps:


1. To create the dlls, do the following from within Cygwin (assumes
Cygwin is fully updated):

$ export CC="gcc -mno-cygwin"
$ export CXX="g++ -mno-cygwin"
$ ./bootstrap
$ ./configure --prefix=/usr/local \
--build=i686-pc-cygwin \
--host=i686-pc-mingw32 \
--target=i686-pc-mingw32

Note: on subsequent runs you will only need to run 'bootstrap' if
there are modifications to any .ac, .m4, or Makefile.am files.
In that case, "make clean", and re-run 'bootstrap' as above.

# make

If you are only building one version of hamlib, you can proceed to
install it:

# make install

Note: Don't run "make install" if you've already made a native Cygwin or
Linux version of hamlib. It will interfere with the pkgconfig used for
linking the hamlib library with a native Cygwin or Linux application.
In fact if you are building two versions, it's best to have one tree for
native Cygwin and another tree for cross-compiling with MingW32. This way
you can avoid overwriting or corrupting any needed object files or libraries.

As an alternative to "make install", manually go through all of the .libs
in the source tree and copy the resulting .exes and .dlls in to a single
directory. Or, create a script or batch file to do it for you. Likewise,
you will need to copy all of the the .h files from include/hamlib into this
same directory.

Go to the directory you've just put all that stuff in and run:
# strip *.dll
# strip *.exe
This will make the resulting images smaller.


2. To create a MSVC-compatible interface library, do the following in a
Windows command window from the directory where you put all that stuff:

 > lib /def:libhamlib.def /machine:IX86 /name:libhamlib-1-2-2cvs-2

This will create libhamlib.lib and libhamlib.exp. This example is for
hamlib v1.2.2cvs-2. You will have to use the correct version of the
library in the "/name:" switch, above.

REM: Using the (free) Microsoft Visual C++ Toolkit 2003, replace
the "lib" command by "link /lib".

libhamlib.lib and the .h includes from include/hamlib can now be used
within any MSVC build (i.e., dream), but all the dlls must be put in the
same directory or in PATH as the resulting .exe otherwise it won't find it.

--

Mark J. Fine
Remington, Virginia, USA


MSVC 2022
=========
MSVC C/C++ projects must use the NuGet pthread package in order to compile as of Sep 2022
An example C++ project is in bindings/MSVC
If you want to do a dotnet build you will need this done from an administrative PowerShell
npm install -g --production windows-build-tools


