The CMake changes are slightly complicated by the Windows build using
a local copy of some hidapi files, for some reason, instead of using
the hidapi library itself. The Mac version uses hidapi in the same way
as other libraries.
In the CMake files, it is unclear to me whether "elseif (NOT WIN32 AND
NOT CYGWIN)" means the same thing as "elseif (APPLE)", so they are
treated separately in order to avoid breaking other build types.
This allows client applications to locate the IP addresses and the port of
the KISS TCP service, allowing the end user to just select a Dire Wolf from
a list instead of trying to guess its dynamic IP address and typing it in
manually. This is especially convenient on mobile devices.
On Linux, the standard Avahi daemon is used via dbus and the avahi-client
library. Building with it requires installing the development header
package; README.md is updated accordingly.
On Mac, the MacOS dnssd API is used:
https://developer.apple.com/documentation/dnssd?language=objc
I don't have Windows, but more recent Windows 10 builds apparently have
a working DNS-SD mDNS implementation that can be used on 64-bit builds.
to create ZIP package run
cpack
to add new generator modify CPACK_GENERATOR variable.
NOTE: pay attention on CPU flags optimization when you redistribuite
the package (segmentation fault)
works with cygwin and x86_64-w64-mingw32-gcc/x86_64-w64-mingw32-g++
from the package installer of cygwin.
To use that add the following lines to .bash_profile
export CC=x86_64-w64-mingw32-gcc
export CXX=x86_64-w64-mingw32-g++
you also need cmake from cygwin
the new tests are implemented with CTest suite of CMake.
To enable the tests you need to run cmake with -DBUILD_TESTING=ON
There are optional tests (that might not work) that can be enabled with
-DOPTIONAL_TEST=ON
So, to enable all tests and run it use the following command
mkdir build
cmake -DBUILD_TESTING=ON -DOPTIONA_TEST=ON ..
make
ctest
to debug the errors use
ctest --debug
You can always find all tests binary on build/test/
Implementation:
- check-modem* tests are implemented with shell script because it
requires to execute many commands and therefore will be easy to
manage. The file is configured at configuration time.
- for single binary we verify the exit status (default = 0) so you
only need to build the binary and add it to add_test()
this step unify the builing system for all platforms (windows, linux,
osx and *BSD)
* Requirements:
- gcc/clang (C/C++ compiler) (in debian build-essential)
- cmake (in debian cmake)
- git if you build from source (in debian git)
- posix threads
** Requirements on *BSD/macOS:
- portaudio
** Optional Requirements:
- gpsd (in debian libgps-dev)
- libhamlib (in debian libhamlib-dev)
** Optional Requirements in Linux
- udev (in debian libudev-dev)
- alsa (in debian libasound2-dev)
* Main changes:
- version is now set only on CMakeLists.txt and automatically used
on the code
- cpu flags are auto-discovered in the default build and it works
on gcc/clang/msvc on x86/x86_64/arm; you can force cpu flags with
-DFORCE_SSE=1 for example (see CMakeLists.txt on root)
- use a more "complex" tag on generic.conf to facilitate parsing
by cmake (not more platform dependent). Now it is %C% or %R% for
example
- target `tocalls-symbols` is now called `data-update`
- created debian/ directory to contains files to use debuild
* Example to build:
mkdir build && cd build
cmake ..
make
make install
make install-conf
then you have the binary files on src/ and in the system directory
* CMake options (see the head of CMakeLists.txt)
- FORCE_SSE force sse instruction
- FORCE_SSSE3 force ssse3 instruction
- FORCE_SSE41 force ssse4.1 instruction
- OPTIONAL_TEST compile optional test (might be broken)
- BUILD_TESTING enable tests (ctest framework)
- CMAKE_INSTALL_PREFIX if you want to change your install path
prefix
for example:
cmake .. -DOPTIONAL_TEST=ON