# JS8Call

JS8Call is built atop the Qt framework and can be compiled on Linux, Windows, and MacOS.

## Compiling for Linux

### Get the Hamlib Source

mkdir ~/hamlib-prefix
cd ~/hamlib-prefix
git clone https://github.com/Hamlib/Hamlib.git src

### Get the JS8Call Source

mkdir ~/js8call-prefix
cd ~/js8call-prefix
git clone https://bitbucket.org/widefido/js8call.git src

### Get the Dependencies

Most Debian-based distributions make it very easy to install the required dependencies. Other distributions may require a little more effort. 

JS8Call depends on:

* Qt5
* FFTW3
* Hamlib

#### 18.04 LTS:

sudo apt install build-essential git automake cmake clang gfortran libfftw3-dev git libgfortran5 libusb-1.0-0-dev autoconf libtool texinfo qt5-default qtmultimedia5-dev libqt5multimedia5-plugins libqt5serialport5-dev libudev-dev pkg-config

#### 20.04 LTS:

sudo apt install build-essential git automake make cmake clang gfortran libfftw3-dev git libgfortran-10-dev libusb-1.0-0-dev autoconf libtool texinfo qt5-default qtmultimedia5-dev libqt5multimedia5-plugins libqt5serialport5-dev libudev-dev pkg-config

### Compile Hamlib

cd ~/hamlib-prefix/src
./bootstrap
mkdir ../build
cd ../build
../src/configure --prefix=$HOME/hamlib-prefix \
    --disable-shared --enable-static \
    --without-cxx-binding --disable-winradio \
    CFLAGS="-g -O2 -fdata-sections -ffunction-sections" \
    LDFLAGS="-Wl,--gc-sections"
make
make install-strip

### Compile JS8Call

cd ~/js8call-prefix/src
mkdir ../build
cd ../build
cmake -D CMAKE_PREFIX_PATH=~/hamlib-prefix -D CMAKE_INSTALL_PREFIX=~/js8call-prefix ../src
make

### Package JS8Call (.deb, .rpm, etc)

cd ~/js8call-prefix/build
cmake -D CMAKE_PREFIX_PATH=~/hamlib-prefix -D CMAKE_INSTALL_PREFIX=~/js8call-prefix ../src
make package

## Compiling for Windows

TODO

## Compiling for MacOS

TODO
