__       __   ______      _____  ________      __    __ 
|  \  _  |  \ /      \    |     \|        \    |  \  |  \
| $$ / \ | $$|  $$$$$$\    \$$$$$ \$$$$$$$$    | $$  | $$
| $$/  $\| $$| $$___\$$      | $$   | $$ ______ \$$\/  $$
| $$  $$$\ $$ \$$    \  __   | $$   | $$|      \ >$$  $$ 
| $$ $$\$$\$$ _\$$$$$$\|  \  | $$   | $$ \$$$$$$/  $$$$\ 
| $$$$  \$$$$|  \__| $$| $$__| $$   | $$       |  $$ \$$\
| $$$    \$$$ \$$    $$ \$$    $$   | $$       | $$  | $$
 \$$      \$$  \$$$$$$   \$$$$$$     \$$        \$$   \$$
                                                         
                                                         
                                                         
Installing WSJT-X
=================

Binary packages of WSJT-X are available from the project web site:

       http://www.physics.princeton.edu/pulsar/K1JT/wsjtx.html


Building from Source
====================

On Linux systems  some of the prerequisite libraries  are available in
the mainstream distribution repositories. They  are Qt v5 and FFTW v3.
For MS  Windows see the section  "Building from Source on  MS Windows"
below. For  Apple Mac see the  section "Building from Source  on Apple
Mac".

Qt v5, preferably v5.1 or later is required to build WSJT-X.

Qt  v5 multimedia  support is  necessary  as well  as the  core Qt  v5
components, normally installing the  Qt multimedia development package
is sufficient to pull in all the required Qt components and dependants
as  a single  transaction. On  some systems  the Qt  multimedia plugin
component is  separate in the  distribution repository an it  may also
need installing.

The single precision FFTW v3  library libfftw3f is required along with
the  libfftw library  development  package.   Normally installing  the
library  development  package  pulls  in all  the  FFTW  v3  libraries
including the single precision variant.

The Hamlib  library is  required. Currently WSJT-X  needs to  be built
using a  forked version of the  Hamlib git master. This  fork contains
patches  not yet  accepted by  the Hamlib  development team  which are
essential for  correct operation of  WSJT-X. To build the  Hamlib fork
from sources something like the following recipe should suffice:

     mkdir ~/hamlib-prefix
     cd ~/hamlib-prefix
     git clone git://git.code.sf.net/u/bsomervi/hamlib src
     cd src
     git checkout integration
     mkdir ../build
     cd ../build
     ../src/autogen.sh --prefix=$HOME/hamlib-prefix \
          --disable-shared --enable-static \
          --without-cxx-binding --disable-winradio \
          CFLAGS="-fdata-sections -ffunction-sections" \
          LDFLAGS="-Wl,--gc-sections"
     make
     make install

This will build a binary  hamlib package located at ~/hamlib-prefix so
you will need  to add that to your CMAKE_PREFIX_PATH  variable in your
WSJT-X build.  On Linux  that is  probably the only  path you  have on
CMAKE_PREFIX_PATH  unless  you  are   using  a  locally  installed  Qt
installation.

To get the  sources either download and extract a  source tarball from
the project web site or preferably fetch the sources directly from the
project's  subversion repository.  The  project svn  repository has  a
non-standard layout  in that the WSJT-X  project is not on  the trunk,
instead the main code line is in a branch at ^/branches/wsjtx

     mkdir -p ~/wsjtx-prefix/build
     cd ~/wsjtx-prefix
     svn checkout svn://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx src

To build WSJT-X you will need CMake and asciidoc installed.

     cd ~/wsjtx-prefix/build
     cmake -D CMAKE_PREFIX_PATH=~/hamlib-prefix ../src
     cmake --build .
     cmake --build . --target install

The recipe  above will install  into /usr by  default, if you  wish to
install  in  you own  directory  you  can  add  a prefix-path  to  the
configure step like:

     cd ~/wsjtx-prefix/build
     cmake -D CMAKE_PREFIX_PATH=~/hamlib-prefix \
         -D CMAKE_INSTALL_PREFIX=~/wsjtx-prefix ../src
     cmake --build .
     cmake --build . --target install

this will install WSJT-X at ~/wsjtx-prefix.


Building from Source on MS Windows
==================================

Because  building on  MS  Windows  is quite  complicated  there is  an
Software Development Kit available  that provides all the prerequisite
libraries and tools for building  WSJT-X. This SDK is called JT-SDK-QT
which is documented here:

http://physics.princeton.edu/pulsar/K1JT/wsjtx-doc/dev-guide-main.html

If you need to build Hamlib rather than use the Hamlib kit included in
the  JT-SDK the  following recipe  should help.  Reasons for  building
Hamlib from source might include picking up the very latest patches or
building a different branch that you wish to contribute to.

On Windows there is a complication in that the compilers used to build
Qt  and WSJT-X  are the  MinGW ones  bundled with  the Qt  package but
Hamlib needs to be build from an MSYS shell with the tools required to
build  an autotools  project. This  means that  you need  to tell  the
Hamlib configuration  to use  the Qt bundled  MinGW compilers  (if you
don't  then  the  thread  support   library  use  by  Hamlib  will  be
incompatible  with that  used by  Qt and  WSJT-X). So  on Windows  the
Hamlib build recipe is something like:

In an MSYS shell:-

    mkdir ~/hamib-prefix
    cd ~/hamlib-prefix
    git clone git://git.code.sf.net/u/bsomervi/hamlib src
    cd src
    git checkout integration
    mkdir ../build
    cd ../build
    ../src/autogen.sh --prefix=$HOME/hamlib-prefix \
        --disable-shared --enable-static \
        --without-cxx-binding --disable-winradio \
        CC=<path-to-Qt-MinGW-tools>/gcc \
        CXX=<path-to-Qt-MinGW-tools>/g++ \
        CFLAGS="-fdata-sections -ffunction-sections" \
        LDFLAGS="-Wl,--gc-sections"
    make
    make install

NOTE: <path-to-Qt-MinGQ-tools>  should be substituted with  the actual
path   to  your   Qt   bundled  tools   e.g  on   my   system  it   is
C:\Tools\Qt\Tools\mingw48_32\bin

This   will    leave   a   Hamlib   binary    package   installed   at
c:/Users/<user-name>/hamlib-prefix which  is what needs to  be on your
CMAKE_PREFIX_PATH. On  Windows you  almost certainly  will be  using a
CMake tool chain  file and this is  where you will need  to specify the
Hamlib binary location as one of the paths in CMAKE_PREFIX_PATH.


Building from Source on Apple Mac
=================================

These instructions are adapted from my Evernote page at:

    https://www.evernote.com/pub/bsomervi/wsjt-xmacbuilds

There are several  ways to get the required GNU  and other open source
tools and libraries installed, my preference is MacPorts because it is
easy to use and does everything we need.

You  will need  Xcode, MacPorts,  CMake  and, Qt.   The Xcode  install
instructions are included in the MacPorts documentation.

Install MacPorts from instructions here:

    http://www.macports.org/install.php

More detailed instructions are available in the documentation:

    https://guide.macports.org

The ports that need to be installed are:

autoconf
automake
libtool
pkgconfig
texinfo
gcc49
fftw-3-single +gcc49
asciidoc

These are install by typing:

    sudo port install autoconf automake \
        libtool pkgconfig texinfo gcc49 asciidoc \
        fftw-3-single +gcc49

Once complete you should have all the tools required to build WSJT-X.

Uninstalling MacPorts

If at some point  you wish to remove the ports  from your machine. The
instructions are here:

    https://guide.macports.org/#installing.macports.uninstalling .

Hamlib

First fetch hamlib from the repository, in this case my fork of Hamlib
3 until the official repository has all the fixes we need:

    mkdir -p ~/hamlib-prefix/build
    cd ~/hamlib-prefix
    git clone git://git.code.sf.net/u/bsomervi/hamlib src
    cd src
    git checkout integration

The integration  branch is my system  testing branch which has  all my
latest published changes.

You need  to make one  small change  to the sources  to build on  OS X
using the MacPorts tools, here is a sed command to make the change:

     sed -i.orig '/libtoolize/s/lib/glib/' autogen.sh

To build:

    cd ~/hamlib-prefix/build
    ../src/hamlib/autogen.sh \
       --enable-static \
       --disable-shared \
       --disable-winradio \
       --prefix=$HOME/hamlib-prefix
    make
    make install-strip

The above commands will build hamlib and install it into ~/hamlib-prefix

Qt

The easiest  way to obtain Qt  is to use the  latest qt-project.org on
line   installer  DMG   for   Mac   OS  X   which   should  be   here:
http://www.qt.io/download . You need the "Community" edition.

CMake

Although CMake  is available via MacPorts  I prefer to use  the binary
installer  from cake.org  as  the MacPorts  port  doesn't include  the
graphical CMake tool cmake-gui which I find quite useful.

Fetch    the    latest    CMake     universal    64-bit    DMG    from
http://www.cmake.org/download/  open the  DMG then  drag and  drop the
application bundle onto the supplied /Applications link.

To complete the install process you  need to run the CMake application
as root from a terminal shell:

    sudo /Applications/CMake.app/Contents/MacOS/CMake

in the CMake application choose  "Tools->Install For Command Line Use"
from the menu and then click the "Install Command Line Links".


WSJT-X

First fetch the source from the repository:

    mkdir -p ~/wsjtx-prefix/build
    cd ~/wsjtx-prefix
    svn checkout svn://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx src

this links to the Subversion repository in a read-only fashion, if you
intend to  contribute to the project  then you probably want  to get a
developer login  and use a read-write  checkout. Even if you  don't it
can be upgraded at a later date.

The checkout  is of  the latest  code on the  project trunk,  i.e. the
development  branch. You  can easily  switch the  checkout to  another
branch  or  even  a  tag  if  you want  to  build  a  prior  published
generation. For now  we will build the latest  development sources. To
configure:

    cd ~/wsjtx-prefix/build
    FC=gfortran-mp-4.9 \
    cmake \
        -D CMAKE_PREFIX_PATH="~/Qt/5.3/clang_64;~/hamlib-prefix;/opt/local" \
        -D CMAKE_INSTALL_PREFIX=~/wsjtx-prefix \
        ~/wsjtx-prefix/src

The CMAKE_PREFIX_PATH variable specifies where CMake should look first
for other packages, the two  elements may be different depending where
you  have  installed Qt  and  what  version  you  have and  where  you
installed  Hamlib (i.e.  the --prefix  configure option  above in  the
hamlib section).

If you already have the fftw3-dev  package installed on your system it
may well get selected in preference to  the one you built above in the
MacPorts installation.  It is  unlikely that  a prior  installation of
libfftw3f is  correctly configured  for use in  a WSJT-X  package, the
CMAKE_PREFIX_PATH above  is augmented  with the  MacPorts installation
location  (/opt/local)  to  ensure  the  correct  libfftw3f.dylib  and
headers are located.

To build:

    cmake --build .
    cmake --build . --target install

which installs the WSJT-X application bundle into ~/wsjtx-prefix


Updating and Rebuilding Hamlib
==============================

From  time  to time  new  fixes  will be  pushed  to  the Hamlib  fork
repository integration branch. To pick them up type:

    cd ~/hamlib-prefix/src
    git pull

To rebuild hamlib with the changed sources:

    cd ~/hamlib-prefix/build
    make
    make install-strip


Updating and Rebuilding WSJT-X
==============================

To update to the latest sources type:

    cd ~/wsjtx-prefix/src
    svn update
    cd ~/wsjtx-prefix/build
    cmake --build .
    cmake --build . --target install


73
Bill
G4WJS.