horusdemodlib/CMakeLists.txt

119 wiersze
5.2 KiB
CMake

cmake_minimum_required(VERSION 3.0)
project(horus C)
include(GNUInstallDirs)
mark_as_advanced(CLEAR
CMAKE_INSTALL_BINDIR
CMAKE_INSTALL_INCLUDEDIR
CMAKE_INSTALL_LIBDIR
)
#
# Prevent in-source builds
# If an in-source build is attempted, you will still need to clean up a few
# files manually.
#
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
message(FATAL_ERROR "In-source builds in ${CMAKE_BINARY_DIR} are not "
"allowed, please remove ./CMakeCache.txt and ./CMakeFiles/, create a "
"separate build directory and run cmake from there.")
endif("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
# Set project version information. This should probably be done via external
# file at some point.
#
set(HORUS_VERSION_MAJOR 0)
set(HORUS_VERSION_MINOR 2)
# Set to patch level if needed, otherwise leave FALSE.
# Must be positive (non-zero) if set, since 0 == FALSE in CMake.
set(HORUS_VERSION_PATCH FALSE)
set(HORUS_VERSION "${HORUS_VERSION_MAJOR}.${HORUS_VERSION_MINOR}")
# Patch level version bumps should not change API/ABI.
set(SOVERSION "${HORUS_VERSION_MAJOR}.${HORUS_VERSION_MINOR}")
if(HORUS_VERSION_PATCH)
set(HORUS_VERSION "${HORUS_VERSION}.${HORUS_VERSION_PATCH}")
endif()
message(STATUS "Horuslib version: ${HORUS_VERSION}")
# Set default flags
set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-unused-function -Wno-strict-overflow -O3 -g -I. -MD ${CMAKE_C_FLAGS} -DENABLE_ASSERTIONS")
# Arch specific stuff here
message(STATUS "Host system arch is: ${CMAKE_SYSTEM_PROCESSOR}")
add_subdirectory(src)
# Ctests ----------------------------------------------------------------------
include(CTest)
enable_testing()
add_test(NAME test_horus_binary
COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src;
sox ${CMAKE_CURRENT_SOURCE_DIR}/samples/horus_binary_ebno_4.5db.wav -r 48000 -t raw - |
./horus_demod -m binary - -"
)
set_tests_properties(test_horus_binary PROPERTIES PASS_REGULAR_EXPRESSION "1C9A9545")
add_test(NAME test_horus_binary_v2
COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src;
sox -t raw -r 8000 -e signed-integer -b 16 -c 1 ${CMAKE_CURRENT_SOURCE_DIR}/samples/horus_v2_100bd.raw -r 48000 -t raw - |
./horus_demod -m binary - -"
)
set_tests_properties(test_horus_binary_v2 PROPERTIES PASS_REGULAR_EXPRESSION "0102030405060708091DBB")
add_test(NAME test_horus_rtty_7n1
COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src;
sox ${CMAKE_CURRENT_SOURCE_DIR}/samples/rtty_7n1.wav -r 48000 -t raw - |
./horus_demod -c -m rtty7n1 - - | grep OK | wc -l"
)
set_tests_properties(test_horus_rtty_7n1 PROPERTIES PASS_REGULAR_EXPRESSION "3")
add_test(NAME test_horus_rtty_7n2
COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src;
sox ${CMAKE_CURRENT_SOURCE_DIR}/samples/rtty_7n2.wav -r 48000 -t raw - |
./horus_demod -c -m rtty - - | grep OK | wc -l"
)
set_tests_properties(test_horus_rtty_7n2 PROPERTIES PASS_REGULAR_EXPRESSION "6")
add_test(NAME test_horus_rtty_8n2
COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src;
sox ${CMAKE_CURRENT_SOURCE_DIR}/samples/rtty_8n2.wav -r 48000 -t raw - |
./horus_demod -c --rate=300 -m rtty8n2 - - | grep OK | wc -l"
)
set_tests_properties(test_horus_rtty_8n2 PROPERTIES PASS_REGULAR_EXPRESSION "4")
add_test(NAME test_horus_binary_iq
COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src;
cat ${CMAKE_CURRENT_SOURCE_DIR}/samples/horusb_iq_s16.raw |
./horus_demod -q -m binary --fsk_lower=1000 --fsk_upper=20000 - -"
)
set_tests_properties(test_horus_binary_iq PROPERTIES
PASS_REGULAR_EXPRESSION "000900071E2A000000000000000000000000259A6B14")
# Wenet - Using Mask estimator (Assuming ~120 kHz tone spacing)
add_test(NAME test_wenet_mask
COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src;
cat ${CMAKE_CURRENT_SOURCE_DIR}/samples/wenet_sample.c8 |
./fsk_demod --cu8 -s --mask=120000 2 921416 115177 - - |
./drs232_ldpc - - 2>&1 | strings"
)
set_tests_properties(test_wenet_mask PROPERTIES
PASS_REGULAR_EXPRESSION "packet_errors: 0 PER: 0.000")
# Using regular frequency estimator, tell freq est to avoid first 100 kHz due to a DC line
add_test(NAME test_wenet_nomask
COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}/src;
cat ${CMAKE_CURRENT_SOURCE_DIR}/samples/wenet_sample.c8 |
./fsk_demod --cu8 -s --fsk_lower 100000 2 921416 115177 - - |
./drs232_ldpc - - 2>&1 | strings"
)
set_tests_properties(test_wenet_nomask PROPERTIES
PASS_REGULAR_EXPRESSION "packet_errors: 0 PER: 0.000")