@ -7,8 +7,7 @@
# *
# * /
# / *
# * Copyright ( C ) 2 0 2 2 b y B r y a n B i e d e n k a p p N 2 P L L
# * Copyright ( C ) 2 0 2 2 b y N a t a l i e M o o r e < h t t p s : / / g i t h u b . c o m / j e l i m o o r e >
# * Copyright ( C ) 2 0 2 4 b y B r y a n B i e d e n k a p p N 2 P L L
# *
# * T h i s p r o g r a m i s f r e e s o f t w a r e ; y o u c a n r e d i s t r i b u t e i t a n d / o r m o d i f y
# * i t u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d b y
@ -24,160 +23,80 @@
# * a l o n g w i t h t h i s p r o g r a m ; i f n o t , w r i t e t o t h e F r e e S o f t w a r e
# * F o u n d a t i o n , I n c . , 6 7 5 M a s s A v e , C a m b r i d g e , M A 0 2 1 3 9 , U S A .
# * /
#
# # d v m h o s t s o u r c e / h e a d e r f i l e s
#
file ( GLOB dvmhost_SRC
file ( GLOB common_SRC
# D M R m o d u l e
" s r c / d m r / * . h "
" s r c / d m r / * . c p p "
" s r c / d m r / a c l / * . h "
" s r c / d m r / a c l / * . c p p "
" s r c / d m r / d a t a / * . h "
" s r c / d m r / d a t a / * . c p p "
" s r c / d m r / e d a c / * . h "
" s r c / d m r / e d a c / * . c p p "
" s r c / d m r / l c / * . h "
" s r c / d m r / l c / * . c p p "
" s r c / d m r / l c / c s b k / * . h "
" s r c / d m r / l c / c s b k / * . c p p "
" s r c / d m r / l o o k u p s / * . h "
" s r c / d m r / l o o k u p s / * . c p p "
" s r c / d m r / p a c k e t * . h "
" s r c / d m r / p a c k e t / * . c p p "
" s r c / c o m m o n / d m r / * . c p p "
" s r c / c o m m o n / d m r / a c l / * . c p p "
" s r c / c o m m o n / d m r / d a t a / * . c p p "
" s r c / c o m m o n / d m r / l c / * . c p p "
" s r c / c o m m o n / d m r / l c / c s b k / * . c p p "
" s r c / c o m m o n / d m r / l o o k u p s / * . c p p "
# P 2 5 m o d u l e
" s r c / p 2 5 / * . h "
" s r c / p 2 5 / * . c p p "
" s r c / p 2 5 / a c l / * . h "
" s r c / p 2 5 / a c l / * . c p p "
" s r c / p 2 5 / d a t a / * . h "
" s r c / p 2 5 / d a t a / * . c p p "
" s r c / p 2 5 / d f s i / * . h "
" s r c / p 2 5 / d f s i / * . c p p "
" s r c / p 2 5 / e d a c / * . h "
" s r c / p 2 5 / e d a c / * . c p p "
" s r c / p 2 5 / l c / * . h "
" s r c / p 2 5 / l c / * . c p p "
" s r c / p 2 5 / l c / t d u l c / * . h "
" s r c / p 2 5 / l c / t d u l c / * . c p p "
" s r c / p 2 5 / l c / t s b k / * . h "
" s r c / p 2 5 / l c / t s b k / * . c p p "
" s r c / p 2 5 / l o o k u p s / * . h "
" s r c / p 2 5 / l o o k u p s / * . c p p "
" s r c / p 2 5 / p a c k e t / * . h "
" s r c / p 2 5 / p a c k e t / * . c p p "
" s r c / c o m m o n / p 2 5 / * . c p p "
" s r c / c o m m o n / p 2 5 / a c l / * . c p p "
" s r c / c o m m o n / p 2 5 / d a t a / * . c p p "
" s r c / c o m m o n / p 2 5 / d f s i / * . c p p "
" s r c / c o m m o n / p 2 5 / l c / * . c p p "
" s r c / c o m m o n / p 2 5 / l c / t d u l c / * . c p p "
" s r c / c o m m o n / p 2 5 / l c / t s b k / * . c p p "
" s r c / c o m m o n / p 2 5 / l o o k u p s / * . c p p "
# N X D N m o d u l e
" s r c / n x d n / * . h "
" s r c / n x d n / * . c p p "
" s r c / n x d n / a c l / * . h "
" s r c / n x d n / a c l / * . c p p "
" s r c / n x d n / c h a n n e l / * . h "
" s r c / n x d n / c h a n n e l / * . c p p "
" s r c / n x d n / e d a c / * . h "
" s r c / n x d n / e d a c / * . c p p "
" s r c / n x d n / l c / * . h "
" s r c / n x d n / l c / * . c p p "
" s r c / n x d n / l c / r c c h / * . h "
" s r c / n x d n / l c / r c c h / * . c p p "
" s r c / n x d n / p a c k e t / * . h "
" s r c / n x d n / p a c k e t / * . c p p "
" s r c / c o m m o n / n x d n / * . c p p "
" s r c / c o m m o n / n x d n / a c l / * . c p p "
" s r c / c o m m o n / n x d n / c h a n n e l / * . c p p "
" s r c / c o m m o n / n x d n / e d a c / * . c p p "
" s r c / c o m m o n / n x d n / l c / * . c p p "
" s r c / c o m m o n / n x d n / l c / r c c h / * . c p p "
# C o r e
" s r c / e d a c / * . h "
" s r c / e d a c / * . c p p "
" s r c / e d a c / r s / * . h "
" s r c / h o s t / * . h "
" s r c / h o s t / * . c p p "
" s r c / h o s t / c a l i b r a t e / * . h "
" s r c / h o s t / c a l i b r a t e / * . c p p "
" s r c / h o s t / s e t u p / * . h "
" s r c / h o s t / s e t u p / * . c p p "
" s r c / h o s t / f n e / * . h "
" s r c / h o s t / f n e / * . c p p "
" s r c / l o o k u p s / * . h "
" s r c / l o o k u p s / * . c p p "
" s r c / m o d e m / * . h "
" s r c / m o d e m / * . c p p "
" s r c / m o d e m / p o r t / * . h "
" s r c / m o d e m / p o r t / * . c p p "
" s r c / n e t w o r k / * . h "
" s r c / n e t w o r k / * . c p p "
" s r c / n e t w o r k / f n e / * . h "
" s r c / n e t w o r k / f n e / * . c p p "
" s r c / n e t w o r k / j s o n / * . h "
" s r c / n e t w o r k / r e s t / * . h "
" s r c / n e t w o r k / r e s t / * . c p p "
" s r c / n e t w o r k / r e s t / h t t p / * . h "
" s r c / n e t w o r k / r e s t / h t t p / * . c p p "
" s r c / r e m o t e / R E S T C l i e n t . c p p "
" s r c / r e m o t e / R E S T C l i e n t . h "
" s r c / y a m l / * . h "
" s r c / y a m l / * . c p p "
" s r c / * . h "
" s r c / * . c p p "
" s r c / c o m m o n / e d a c / * . c p p "
" s r c / c o m m o n / l o o k u p s / * . c p p "
" s r c / c o m m o n / n e t w o r k / * . c p p "
" s r c / c o m m o n / n e t w o r k / r e s t / * . c p p "
" s r c / c o m m o n / n e t w o r k / r e s t / h t t p / * . c p p "
" s r c / c o m m o n / y a m l / * . c p p "
" s r c / c o m m o n / * . c p p "
)
#
# # d v m c m d s o u r c e / h e a d e r f i l e s
#
file ( GLOB dvmcmd_SRC
" s r c / n e t w o r k / U D P S o c k e t . h "
" s r c / n e t w o r k / U D P S o c k e t . c p p "
" s r c / n e t w o r k / R E S T D e f i n e s . h "
" s r c / n e t w o r k / j s o n / * . h "
" s r c / n e t w o r k / r e s t / * . h "
" s r c / n e t w o r k / r e s t / * . c p p "
" s r c / n e t w o r k / r e s t / h t t p / * . h "
" s r c / n e t w o r k / r e s t / h t t p / * . c p p "
" s r c / r e m o t e / * . h "
" s r c / r e m o t e / * . c p p "
" s r c / e d a c / S H A 2 5 6 . h "
" s r c / e d a c / S H A 2 5 6 . c p p "
" s r c / D e f i n e s . h "
" s r c / T h r e a d . h "
" s r c / T h r e a d . c p p "
" s r c / L o g . h "
" s r c / L o g . c p p "
" s r c / U t i l s . h "
" s r c / U t i l s . c p p "
)
file ( GLOB common_INCLUDE
# D M R m o d u l e
" s r c / c o m m o n / d m r / * . h "
" s r c / c o m m o n / d m r / a c l / * . h "
" s r c / c o m m o n / d m r / d a t a / * . h "
" s r c / c o m m o n / d m r / l c / * . h "
" s r c / c o m m o n / d m r / l c / c s b k / * . h "
" s r c / c o m m o n / d m r / l o o k u p s / * . h "
#
# # d v m m o n s o u r c e / h e a d e r f i l e s
#
file ( GLOB dvmmon_SRC
" s r c / l o o k u p s / A f f i l i a t i o n L o o k u p . h "
" s r c / l o o k u p s / L o o k u p T a b l e . h "
" s r c / l o o k u p s / I d e n T a b l e L o o k u p . h "
" s r c / l o o k u p s / I d e n T a b l e L o o k u p . c p p "
" s r c / m o d e m / M o d e m . h "
" s r c / m o n i t o r / * . h "
" s r c / m o n i t o r / * . c p p "
" s r c / n e t w o r k / U D P S o c k e t . h "
" s r c / n e t w o r k / U D P S o c k e t . c p p "
" s r c / n e t w o r k / R E S T D e f i n e s . h "
" s r c / n e t w o r k / j s o n / * . h "
" s r c / n e t w o r k / r e s t / * . h "
" s r c / n e t w o r k / r e s t / * . c p p "
" s r c / n e t w o r k / r e s t / h t t p / * . h "
" s r c / n e t w o r k / r e s t / h t t p / * . c p p "
" s r c / r e m o t e / R E S T C l i e n t . h "
" s r c / r e m o t e / R E S T C l i e n t . c p p "
" s r c / e d a c / S H A 2 5 6 . h "
" s r c / e d a c / S H A 2 5 6 . c p p "
" s r c / y a m l / * . h "
" s r c / y a m l / * . c p p "
" s r c / D e f i n e s . h "
" s r c / T h r e a d . h "
" s r c / T h r e a d . c p p "
" s r c / T i m e r . h "
" s r c / T i m e r . c p p "
" s r c / L o g . h "
" s r c / L o g . c p p "
" s r c / U t i l s . h "
" s r c / U t i l s . c p p "
# P 2 5 m o d u l e
" s r c / c o m m o n / p 2 5 / * . h "
" s r c / c o m m o n / p 2 5 / a c l / * . h "
" s r c / c o m m o n / p 2 5 / d a t a / * . h "
" s r c / c o m m o n / p 2 5 / d f s i / * . h "
" s r c / c o m m o n / p 2 5 / l c / * . h "
" s r c / c o m m o n / p 2 5 / l c / t d u l c / * . h "
" s r c / c o m m o n / p 2 5 / l c / t s b k / * . h "
" s r c / c o m m o n / p 2 5 / l o o k u p s / * . h "
# N X D N m o d u l e
" s r c / c o m m o n / n x d n / * . h "
" s r c / c o m m o n / n x d n / a c l / * . h "
" s r c / c o m m o n / n x d n / c h a n n e l / * . h "
" s r c / c o m m o n / n x d n / e d a c / * . h "
" s r c / c o m m o n / n x d n / l c / * . h "
" s r c / c o m m o n / n x d n / l c / r c c h / * . h "
# C o r e
" s r c / c o m m o n / e d a c / * . h "
" s r c / c o m m o n / e d a c / r s / * . h "
" s r c / c o m m o n / l o o k u p s / * . h "
" s r c / c o m m o n / n e t w o r k / * . h "
" s r c / c o m m o n / n e t w o r k / j s o n / * . h "
" s r c / c o m m o n / n e t w o r k / r e s t / * . h "
" s r c / c o m m o n / n e t w o r k / r e s t / h t t p / * . h "
" s r c / c o m m o n / y a m l / * . h "
" s r c / c o m m o n / * . h "
)
# D i g i t a l m o d e o p t i o n s a n d o t h e r c o m p i l a t i o n f e a t u r e s
@ -314,10 +233,7 @@ if (DEBUG_TRELLIS)
add_definitions ( -DDEBUG_TRELLIS )
endif ( DEBUG_TRELLIS )
#
# # d v m h o s t p r o j e c t
#
project ( dvmhost )
project ( common )
set ( CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" )
find_package ( Threads REQUIRED )
@ -327,11 +243,6 @@ target_include_directories(asio::asio INTERFACE ${ASIO_INCLUDE_DIR})
target_compile_definitions ( asio::asio INTERFACE "ASIO_STANDALONE" )
target_link_libraries ( asio::asio INTERFACE Threads::Threads )
if ( ENABLE_SETUP_TUI )
# a d d f i n a l c u t
target_include_directories ( finalcut INTERFACE ${ FINALCUT_INCLUDE_DIR } )
endif ( ENABLE_SETUP_TUI )
# C h e c k i f p l a t f o r m - s p e c i f i c f u n c t i o n s e x i s t
include ( CheckCXXSymbolExists )
check_cxx_symbol_exists ( sendmsg sys/socket.h HAVE_SENDMSG )
@ -350,69 +261,10 @@ if (HAVE_SENDMMSG)
set ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DHAVE_SENDMMSG=1" )
endif ( HAVE_SENDMMSG )
add_executable ( dvmhost ${ dvmhost_SRC } )
target_include_directories ( dvmhost PRIVATE src )
if ( ENABLE_SETUP_TUI )
target_link_libraries ( dvmhost PRIVATE asio::asio finalcut Threads::Threads util )
else ( )
target_link_libraries ( dvmhost PRIVATE asio::asio Threads::Threads util )
endif ( ENABLE_SETUP_TUI )
set ( CPACK_SET_DESTDIR true )
set ( CPACK_PACKAGING_INSTALL_PREFIX "/usr/local" )
set ( CPACK_GENERATOR "DEB" )
set ( CPACK_PACKAGE_NAME "dvmhost" )
set ( CPACK_DEBIAN_PACKAGE_NAME "dvmhost" )
set ( CPACK_PACKAGE_VENDOR "DVMProject" )
set ( CPACK_DEBIAN_PACKAGE_DESCRIPTION "The DVM Host software provides the host computer implementation of a mixed-mode DMR, P25 and/or NXDN or dedicated-mode DMR, P25 or NXDN repeater system that talks to the actual modem hardware. The host software; is the portion of a complete Over-The-Air modem implementation that performs the data processing, decision making and FEC correction for a digital repeater." )
set ( CPACK_DEBIAN_PACKAGE_MAINTAINER "DVMProject Authors" )
set ( CPACK_DEBIAN_PACKAGE_VERSION "3.5.5" )
set ( CPACK_DEBIAN_PACKAGE_RELEASE "0" )
set ( CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/dvmproject" )
set ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / d e b i a n / p o s t i n s t ; $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / d e b i a n / p o s t r m " )
set ( CPACK_DEBIAN_FILE_NAME ${ CPACK_DEBIAN_PACKAGE_NAME } _ ${ CPACK_DEBIAN_PACKAGE_VERSION } - ${ CPACK_DEBIAN_PACKAGE_RELEASE } _ ${ CPACK_DEBIAN_PACKAGE_ARCHITECTURE } .deb )
include ( CPack )
#
# # d v m c m d p r o j e c t
#
project ( dvmcmd )
set ( CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" )
find_package ( Threads REQUIRED )
# a d d A S I O
target_include_directories ( asio::asio INTERFACE ${ ASIO_INCLUDE_DIR } )
target_compile_definitions ( asio::asio INTERFACE "ASIO_STANDALONE" )
target_link_libraries ( asio::asio INTERFACE Threads::Threads )
add_executable ( dvmcmd ${ dvmcmd_SRC } )
target_link_libraries ( dvmcmd PRIVATE asio::asio Threads::Threads )
target_include_directories ( dvmcmd PRIVATE src )
#
# # d v m m o n p r o j e c t
#
if ( ENABLE_TUI_SUPPORT AND ( NOT DISABLE_MONITOR ) )
project ( dvmmon )
set ( CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" )
find_package ( Threads REQUIRED )
# a d d A S I O
target_include_directories ( asio::asio INTERFACE ${ ASIO_INCLUDE_DIR } )
target_compile_definitions ( asio::asio INTERFACE "ASIO_STANDALONE" )
target_link_libraries ( asio::asio INTERFACE Threads::Threads )
# a d d f i n a l c u t
target_include_directories ( finalcut INTERFACE ${ FINALCUT_INCLUDE_DIR } )
add_library ( common STATIC ${ common_SRC } ${ common_INCLUDE } )
target_include_directories ( common PRIVATE src src/common )
add_executable( dvmmon ${ dvmmon_SRC } )
target_link_libraries( dvmmon PRIVATE asio::asio finalcut Threads::Threads )
target_include_directories( dvmmon PRIVATE src )
endif ( ENABLE_TUI_SUPPORT AND ( NOT DISABLE_MONITOR ) )
include ( src/host/CMakeLists.txt )
include ( src/fne/CMakeLists.txt )
include ( src/monitor/CMakeLists.txt )
include ( src/remote/CMakeLists.txt )