
This file is a HOWTO for the cross-compiling of Windows 32 and 64 bit
binary DLLs built from a tarball generated by 'make dist' in a Git
checkout.  The resulting DLLs are built with a cdecl interface compatible
with MS VC++.


Prerequisites
=============

In these steps the release or daily snapshot tarball is unpacked in ~/builds
for the Windows build and all operations are done from there unless
otherwise noted.

Under Linux you need at least  the mingw-w64 package to cross-compile it, zip
to create the archive, the tofrodos or dos2unix package installed to convert
to DOS text format, and Wine plus the free MVC++Toolkit available from:

http://uploading.com/files/HNH73WB3/VCToolkitSetup%28v1.01%29%282004.07.06%29.zip.html

to create the Windows .LIB file (unzip and then install it with Wine in the
usual way).

On Debian Jesse the mingw-w64 package works and is being used to build
the daily Windows 32/64 snapshots and releases.

Finally, the Windows version of libusb 1.0 must be available for the USB backends
to be built.  Download the latest libusb-1.0 from:

https://sourceforge.net/projects/libusb/files/libusb-1.0/

:nd unzip the archive in ~/builds

Libusb 1.0.20 is known to work. Presumably any 1.X.X version should work.

Several variables may need to be set differently at the top of the script file
depending on your system.

The script now relies on a pair of environment variables to locate the needed
libusb files.

The script generates HTML documents for the included .EXE files using groff
to convert the nroff formatted man pages.  On Debian and derivatives, the groff
package is likely already installed.


Build for Windows 32/64, cross-compile on Linux:
================================================

Extract the Hamlib tarball into ~/builds (if you prefer another directory
be sure to edit the BUILD_DIR variable in the build-w[32|64].sh script):

        $ tar xvfz ~/Downloads/hamlib-3.3~git-???????-20180527.tar.gz

Invoke the build-w[32|64].sh script (it requires a Bash shell) with the
name of the directory/Hamlib version to build (you need not cd into the hamlib
directory, although it won't hurt.  The build-w[32|64].sh script uses absolute
paths):

        $ build-w32.sh hamlib-3.3~git

or:

        $ build-w64.sh hamlib-3.3~git


Release Info
============

The structure of the archive is:

$ tree -d
.
|-- bin
|-- doc
|-- include
|   `-- hamlib
|-- lib
   |-- gcc
   `-- msvc

8 directories

The bin/ directory is where the executables and DLL files are placed.  Header
files are under include/Hamlib/ and compiler specific files are under lib/*.
HTML documents for the .EXE programs are in doc/ while text documents
(READMEs and such) are in the main archive directory.  The doc/ directory
contains the classic Unix manual pages converted to HTML.  The embedded
README.w[32|64]-bin.txt file generated by the build-w[32|64].sh script
describes setting the PATH environment variable in Windows 2000, Windows XP,
and Windows 7.


73, Nate, N0NB
