implement build system support for non-static linking;

pull/121/head
Bryan Biedenkapp 1 month ago
parent d736e7b598
commit 69aaced3cf

@ -19,6 +19,14 @@ else ()
message(CHECK_PASS "no")
endif (ENABLE_TESTS)
option(SHARED_LIBS "Build dvmcommon and vocoder as shared libraries" off)
message(CHECK_START "Build dvmcommon and vocoder as shared libraries")
if (SHARED_LIBS)
message(CHECK_PASS "yes")
else ()
message(CHECK_PASS "no")
endif (SHARED_LIBS)
option(ENABLE_TUI_SUPPORT "Enable TUI support" on)
message(CHECK_START "Enable TUI support")
if (ENABLE_TUI_SUPPORT)
@ -286,6 +294,12 @@ if (ENABLE_TESTS)
target_compile_definitions(dvmtests PUBLIC -DCATCH2_TEST_COMPILATION)
target_link_libraries(dvmtests PRIVATE Catch2::Catch2WithMain common ${OPENSSL_LIBRARIES} asio::asio Threads::Threads util)
target_include_directories(dvmtests PRIVATE ${OPENSSL_INCLUDE_DIR} src src/host src/fne tests)
if (SHARED_LIBS AND NOT COMPILE_WIN32)
set_target_properties(dvmtests PROPERTIES
BUILD_RPATH_USE_ORIGIN TRUE
BUILD_RPATH "$ORIGIN;/opt/dvm/bin;/opt/dvm/lib;/usr/local/bin;/usr/local/lib;/usr/bin"
INSTALL_RPATH "$ORIGIN;/opt/dvm/bin;/opt/dvm/lib;/usr/local/bin;/usr/local/lib;/usr/bin")
endif ()
catch_discover_tests(dvmtests)
endif (ENABLE_TESTS)
@ -301,6 +315,12 @@ install(TARGETS tged DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
endif (ENABLE_TUI_SUPPORT AND (NOT DISABLE_TUI_APPS))
install(TARGETS dvmbridge DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
install(TARGETS dvmpatch DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
if (SHARED_LIBS)
install(TARGETS common vocoder
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
endif (SHARED_LIBS)
install(FILES configs/config.example.yml configs/fne-config.example.yml configs/fne-sysview.example.yml configs/monitor-config.example.yml configs/iden_table.example.dat configs/RSSI.dat configs/rid_acl.example.dat configs/talkgroup_rules.example.yml configs/bridge-config.example.yml configs/patch-config.example.yml DESTINATION ${CMAKE_INSTALL_PREFIX}/etc)
install(PROGRAMS tools/start-dvm.sh tools/stop-dvm.sh tools/dvm-watchdog.sh tools/stop-watchdog.sh tools/fne-watchdog.sh tools/start-dvm-fne.sh DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
install(CODE "execute_process(COMMAND bash \"-c\" \"sed -i 's/filePath: ./filePath: \\\\/var\\\\/log\\\\//' /usr/local/etc/config.example.yml\")")

@ -13,7 +13,19 @@ include(src/CompilerOptions.cmake)
## common
#
include(src/common/CMakeLists.txt)
add_library(common STATIC ${common_SRC} ${common_INCLUDE})
if (SHARED_LIBS)
set(DVM_LIBRARY_TYPE SHARED)
else ()
set(DVM_LIBRARY_TYPE STATIC)
endif (SHARED_LIBS)
add_library(common ${DVM_LIBRARY_TYPE} ${common_SRC} ${common_INCLUDE})
set_target_properties(common PROPERTIES OUTPUT_NAME dvmcommon)
if (SHARED_LIBS)
target_compile_definitions(common PRIVATE DVMCOMMON_EXPORTS)
else ()
target_compile_definitions(common PUBLIC DVMCOMMON_STATIC)
endif (SHARED_LIBS)
if (COMPILE_WIN32)
target_link_libraries(common PRIVATE asio::asio Threads::Threads)
else ()
@ -25,7 +37,12 @@ target_include_directories(common PRIVATE ${OPENSSL_INCLUDE_DIR} ${LIBDW_INCLUDE
## vocoder
#
include(src/vocoder/CMakeLists.txt)
add_library(vocoder STATIC ${vocoder_SRC} ${vocoder_INCLUDE})
add_library(vocoder ${DVM_LIBRARY_TYPE} ${vocoder_SRC} ${vocoder_INCLUDE})
if (SHARED_LIBS)
target_compile_definitions(vocoder PRIVATE VOCODER_EXPORTS)
else ()
target_compile_definitions(vocoder PUBLIC VOCODER_STATIC)
endif (SHARED_LIBS)
target_include_directories(vocoder PRIVATE src src/vocoder)
#
@ -157,3 +174,23 @@ else ()
target_link_libraries(dvmpatch PRIVATE common ${OPENSSL_LIBRARIES} ${LIBDW_LIBRARY} dl asio::asio Threads::Threads)
endif (COMPILE_WIN32)
target_include_directories(dvmpatch PRIVATE ${OPENSSL_INCLUDE_DIR} ${LIBDW_INCLUDE_DIR} src src/patch)
if (SHARED_LIBS AND NOT COMPILE_WIN32)
set(_dvm_shared_library_consumers
dvmhost
dvmfne
dvmcmd
dvmbridge
dvmpatch)
if (ENABLE_TUI_SUPPORT AND (NOT DISABLE_TUI_APPS))
list(APPEND _dvm_shared_library_consumers sysview tged peered)
endif ()
foreach (_target IN LISTS _dvm_shared_library_consumers)
set_target_properties(${_target} PROPERTIES
BUILD_RPATH_USE_ORIGIN TRUE
BUILD_RPATH "$ORIGIN;/opt/dvm/bin;/opt/dvm/lib;/usr/local/bin;/usr/local/lib;/usr/bin"
INSTALL_RPATH "$ORIGIN;/opt/dvm/bin;/opt/dvm/lib;/usr/local/bin;/usr/local/lib;/usr/bin")
endforeach ()
endif ()

@ -45,7 +45,7 @@ namespace crypto
* @brief Advanced Encryption Standard Algorithm.
* @ingroup crypto
*/
class HOST_SW_API AES {
class DVM_COMMON_API AES {
public:
/**
* @brief Initializes a new instance of the AES class.

@ -54,7 +54,7 @@
* @param tzp
* @returns int
*/
extern HOST_SW_API int gettimeofday(struct timeval* tv, struct timezone* tzp);
extern DVM_COMMON_API int gettimeofday(struct timeval* tv, struct timezone* tzp);
#endif // defined(_WIN32)
namespace system_clock
@ -70,7 +70,7 @@ namespace system_clock
* @ingroup system_clock
* @returns uint64_t Current time in NTP units.
*/
uint64_t now();
DVM_COMMON_API uint64_t now();
/**
* @brief Calculate the time difference of two NTP times.
* @ingroup system_clock
@ -78,14 +78,14 @@ namespace system_clock
* @param ntp2 Time in NTP units to compare.
* @returns uint64_t Difference in NTP units between ntp1 and ntp2.
*/
uint64_t diff(uint64_t ntp1, uint64_t ntp2);
DVM_COMMON_API uint64_t diff(uint64_t ntp1, uint64_t ntp2);
/**
* @brief Calculate the time difference the given NTP time and now.
* @ingroup system_clock
* @param then Time in NTP units to compare.
* @returns uint64_t Difference in NTP units between now and then.
*/
uint64_t diffNow(uint64_t then);
DVM_COMMON_API uint64_t diffNow(uint64_t then);
} // namespace ntp
/*
@ -101,7 +101,7 @@ namespace system_clock
* @ingroup system_clock
* @returns hrc_t Current time in HRC units.
*/
hrc_t now();
DVM_COMMON_API hrc_t now();
/**
* @brief Calculate the time difference of two HRC times.
* @ingroup system_clock
@ -109,21 +109,21 @@ namespace system_clock
* @param hrc2 Time in HRC units to compare.
* @returns uint64_t Difference in HRC units between hrc1 and hrc2.
*/
uint64_t diff(hrc_t hrc1, hrc_t hrc2);
DVM_COMMON_API uint64_t diff(hrc_t hrc1, hrc_t hrc2);
/**
* @brief Calculate the time difference the given HRC time and now.
* @ingroup system_clock
* @param then Time in HRC units to compare.
* @returns uint64_t Difference in HRC units between now and then.
*/
uint64_t diffNow(hrc_t then);
DVM_COMMON_API uint64_t diffNow(hrc_t then);
/**
* @brief Calculate the time difference the given HRC time and now in microseconds.
* @ingroup system_clock
* @param then Time in HRC units to compare.
* @returns uint64_t Difference in HRC units between now and then.
*/
uint64_t diffNowUS(hrc_t& then);
DVM_COMMON_API uint64_t diffNowUS(hrc_t& then);
} // namespace hrc
/**
@ -132,14 +132,14 @@ namespace system_clock
* @param ms Milliseconds.
* @returns uint64_t Milliseconds in jiffies.
*/
uint64_t msToJiffies(uint64_t ms);
DVM_COMMON_API uint64_t msToJiffies(uint64_t ms);
/**
* @brief Convert jiffies to milliseconds.
* @ingroup system_clock
* @param jiffies Jiffies.
* @returns uint64_t Jiffes in miilliseconds.
*/
uint64_t jiffiesToMs(uint64_t jiffies);
DVM_COMMON_API uint64_t jiffiesToMs(uint64_t jiffies);
} // namespace system_clock
#endif // __CLOCK_H__

@ -28,7 +28,7 @@ namespace crypto
* @brief Data Encryption Standard Algorithm.
* @ingroup crypto
*/
class HOST_SW_API DES {
class DVM_COMMON_API DES {
public:
/**
* @brief Initializes a new instance of the DES class.

@ -141,6 +141,30 @@ typedef unsigned long long ulong64_t;
#define HOST_SW_API
#if defined(DVMCOMMON_STATIC)
#define DVM_COMMON_API
#elif defined(_WIN32)
#if defined(DVMCOMMON_EXPORTS)
#define DVM_COMMON_API __declspec(dllexport)
#else
#define DVM_COMMON_API __declspec(dllimport)
#endif
#else
#define DVM_COMMON_API __attribute__((visibility("default")))
#endif
#if defined(VOCODER_STATIC)
#define VOCODER_API
#elif defined(_WIN32)
#if defined(VOCODER_EXPORTS)
#define VOCODER_API __declspec(dllexport)
#else
#define VOCODER_API __declspec(dllimport)
#endif
#else
#define VOCODER_API __attribute__((visibility("default")))
#endif
/**
* @addtogroup common
* @{

@ -191,29 +191,29 @@ namespace log_internal
* @brief Internal helper to set an output stream to direct logging to.
* @param stream
*/
extern HOST_SW_API void SetInternalOutputStream(std::ostream& stream);
extern DVM_COMMON_API void SetInternalOutputStream(std::ostream& stream);
/**
* @brief Writes a new entry to the diagnostics log.
* @param level Log level for entry.
* @param log Fully formatted log message.
*/
extern HOST_SW_API void LogInternal(uint32_t level, const std::string& log);
extern DVM_COMMON_API void LogInternal(uint32_t level, const std::string& log);
/**
* @brief Internal helper to get the log file path.
* @returns std::string Configured log file path.
*/
extern HOST_SW_API std::string GetLogFilePath();
extern DVM_COMMON_API std::string GetLogFilePath();
/**
* @brief Internal helper to get the log file root name.
* @returns std::string Configured log file root name.
*/
extern HOST_SW_API std::string GetLogFileRoot();
extern DVM_COMMON_API std::string GetLogFileRoot();
/**
* @brief Internal helper to get the log file handle pointer.
* @returns FILE* Pointer to the open log file.
*/
extern HOST_SW_API FILE* GetLogFile();
extern DVM_COMMON_API FILE* GetLogFile();
} // namespace log_internal
namespace log_stacktrace
@ -228,7 +228,7 @@ namespace log_stacktrace
* @brief Backward backtrace signal handling class.
* @ingroup logger
*/
class HOST_SW_API SignalHandling {
class DVM_COMMON_API SignalHandling {
public:
/**
* @brief Helper to generate a default list of POSIX signals to handle.
@ -440,7 +440,7 @@ namespace log_stacktrace
* @brief Backward backtrace signal handling class.
* @ingroup logger
*/
class HOST_SW_API SignalHandling {
class DVM_COMMON_API SignalHandling {
public:
/**
* @brief Initializes a new instance of the SignalHandling class
@ -724,7 +724,7 @@ namespace log_stacktrace
* @brief Backward backtrace signal handling class.
* @ingroup logger
*/
class HOST_SW_API SignalHandling {
class DVM_COMMON_API SignalHandling {
public:
/**
* @brief Initializes a new instance of the SignalHandling class
@ -756,29 +756,29 @@ namespace log_stacktrace
* @brief Helper to get the current log file level.
* @returns uint32_t Current log file level.
*/
extern HOST_SW_API uint32_t CurrentLogFileLevel();
extern DVM_COMMON_API uint32_t CurrentLogFileLevel();
/**
* @brief Helper to get the current log file path.
* @returns std::string Current log file path.
*/
extern HOST_SW_API std::string LogGetFilePath();
extern DVM_COMMON_API std::string LogGetFilePath();
/**
* @brief Helper to get the current log file root.
* @returns std::string Current log file root.
*/
extern HOST_SW_API std::string LogGetFileRoot();
extern DVM_COMMON_API std::string LogGetFileRoot();
/**
* @brief Gets the instance of the Network class to transfer the activity log with.
* @returns void*
*/
extern HOST_SW_API void* LogGetNetwork();
extern DVM_COMMON_API void* LogGetNetwork();
/**
* @brief Sets the instance of the Network class to transfer the activity log with.
* @param network
*/
extern HOST_SW_API void LogSetNetwork(void* network);
extern DVM_COMMON_API void LogSetNetwork(void* network);
/**
* @brief Initializes the diagnostics log.
@ -790,12 +790,12 @@ extern HOST_SW_API void LogSetNetwork(void* network);
* @param syslog Flag indicating whether or not logs will be sent to syslog.
* @returns
*/
extern HOST_SW_API bool LogInitialise(const std::string& filePath, const std::string& fileRoot,
extern DVM_COMMON_API bool LogInitialise(const std::string& filePath, const std::string& fileRoot,
uint32_t fileLevel, uint32_t displayLevel, bool disableTimeDisplay = false, bool useSyslog = false);
/**
* @brief Finalizes the diagnostics log.
*/
extern HOST_SW_API void LogFinalise();
extern DVM_COMMON_API void LogFinalise();
/**
* @brief Writes a new entry to the diagnostics log.
@ -806,7 +806,7 @@ extern HOST_SW_API void LogFinalise();
* This is a variable argument function. This shouldn't be called directly, utilize the LogXXXX macros above, instead.
*/
template<typename ... Args>
HOST_SW_API void Log(uint32_t level, log_internal::SourceLocation sourceLoc, const std::string& fmt, Args... args)
DVM_COMMON_API void Log(uint32_t level, log_internal::SourceLocation sourceLoc, const std::string& fmt, Args... args)
{
using namespace log_internal;

@ -38,7 +38,7 @@ namespace crypto
* @brief Rivest Cipher 4 Algorithm.
* @ingroup crypto
*/
class HOST_SW_API RC4 {
class DVM_COMMON_API RC4 {
public:
/**
* @brief Initializes a new instance of the RC4 class.

@ -31,7 +31,7 @@
* @tparam T Type of data to store in RingBuffer.
*/
template<class T>
class HOST_SW_API RingBuffer {
class DVM_COMMON_API RingBuffer {
public:
/**
* @brief Initializes a new instance of the RingBuffer class.

@ -38,7 +38,7 @@
* @brief StopWatch Provides a set of methods and properties that you can use to accurately measure elapsed time.
* @ingroup timers
*/
class HOST_SW_API StopWatch {
class DVM_COMMON_API StopWatch {
public:
/**
* @brief Initializes a new instance of the StopWatch class.

@ -59,7 +59,7 @@ struct thread_t {
* @brief Creates and controls a thread.
* @ingroup threading
*/
class HOST_SW_API Thread {
class DVM_COMMON_API Thread {
public:
/**
* @brief Initializes a new instance of the Thread class.

@ -33,7 +33,7 @@
* @brief Represents a task run by a thread pool worker thread.
* @ingroup threading
*/
class HOST_SW_API ThreadPoolTask {
class DVM_COMMON_API ThreadPoolTask {
public:
/**
* @brief Initializes a new instance of the ThreadPoolTask class.
@ -77,7 +77,7 @@ ThreadPoolTask* new_pooltask(F&& f, Args&&... args) { return new ThreadPoolTask(
* @brief Creates and controls a thread pool.
* @ingroup threading
*/
class HOST_SW_API ThreadPool {
class DVM_COMMON_API ThreadPool {
public:
/**
* @brief Initializes a new instance of the Thread class.

@ -27,7 +27,7 @@
* @brief Timer Simple timer that tracks the time and marks if an expiration period has been reached.
* @ingroup timers
*/
class HOST_SW_API Timer {
class DVM_COMMON_API Timer {
public:
/**
* @brief Initializes a new instance of the Timer class.

@ -133,7 +133,7 @@ inline uint32_t __IP_FROM_STR(const std::string& value) {
return (ip[0U] << 24) | (ip[1U] << 16) | (ip[2U] << 8) | (ip[3U] << 0);
}
#else
extern HOST_SW_API uint32_t __IP_FROM_STR(const std::string& value);
extern DVM_COMMON_API uint32_t __IP_FROM_STR(const std::string& value);
#endif // !defined(_WIN32)
/**
@ -168,7 +168,7 @@ inline std::string strtoupper(const std::string value) {
* @brief Various helper utilities.
* @ingroup utils
*/
class HOST_SW_API Utils {
class DVM_COMMON_API Utils {
public:
/**
* @brief Helper to dump the input buffer and display the hexadecimal output in the log.

@ -29,7 +29,7 @@ namespace analog
* @brief Implements aLaw and uLaw audio codecs, along with helper routines for analog audio.
* @ingroup analog
*/
class HOST_SW_API AnalogAudio {
class DVM_COMMON_API AnalogAudio {
public:
/**
* @brief Helper to convert PCM into G.711 aLaw.

@ -32,7 +32,7 @@ namespace analog
* audio at 8kHz, or 320 bytes in length.
* @ingroup analog
*/
class HOST_SW_API NetData {
class DVM_COMMON_API NetData {
public:
/**
* @brief Initializes a new instance of the NetData class.

@ -27,7 +27,7 @@ namespace dmr
* @brief This class implements various helper functions for validating DMR data.
* @ingroup dmr
*/
class HOST_SW_API DMRUtils {
class DVM_COMMON_API DMRUtils {
public:
/**
* @brief Helper to test and clamp a DMR color code.

@ -28,7 +28,7 @@ namespace dmr
* @brief Represents site data for DMR.
* @ingroup dmr
*/
class HOST_SW_API SiteData {
class DVM_COMMON_API SiteData {
public:
/**
* @brief Initializes a new instance of the SiteData class.

@ -30,7 +30,7 @@ namespace dmr
* @brief Represents DMR slot type.
* @ingroup dmr
*/
class HOST_SW_API SlotType {
class DVM_COMMON_API SlotType {
public:
/**
* @brief Initializes a new instance of the SlotType class.

@ -28,7 +28,7 @@ namespace dmr
* @brief Helper class for generating DMR sync data.
* @ingroup dmr
*/
class HOST_SW_API Sync {
class DVM_COMMON_API Sync {
public:
/**
* @brief Helper to append DMR data sync bytes to the passed buffer.

@ -36,7 +36,7 @@ namespace dmr
* @brief Implements radio and talkgroup ID access control checking.
* @ingroup dmr
*/
class HOST_SW_API AccessControl {
class DVM_COMMON_API AccessControl {
public:
/**
* @brief Initializes the DMR access control.

@ -35,7 +35,7 @@ namespace dmr
* @brief Implements a packet assembler for DMR PDU packet streams.
* @ingroup dmr_pdu
*/
class HOST_SW_API Assembler {
class DVM_COMMON_API Assembler {
public:
/**
* @brief Initializes a new instance of the Assembler class.

@ -36,7 +36,7 @@ namespace dmr
* @brief Represents a data block for PDU DMR packets.
* @ingroup dmr_pdu
*/
class HOST_SW_API DataBlock {
class DVM_COMMON_API DataBlock {
public:
/**
* @brief Initializes a copy instance of the DataBlock class.

@ -36,7 +36,7 @@ namespace dmr
* @brief Represents the data header for PDU DMR packets.
* @ingroup dmr_pdu
*/
class HOST_SW_API DataHeader {
class DVM_COMMON_API DataHeader {
public:
/**
* @brief Initializes a copy instance of the DataHeader class.

@ -30,7 +30,7 @@ namespace dmr
* @brief Represents a DMR embedded signalling data.
* @ingroup dmr
*/
class HOST_SW_API EMB {
class DVM_COMMON_API EMB {
public:
/**
* @brief Initializes a new instance of the EMB class.

@ -44,7 +44,7 @@ namespace dmr
* @brief Represents a DMR embedded data.
* @ingroup dmr
*/
class HOST_SW_API EmbeddedData {
class DVM_COMMON_API EmbeddedData {
public:
/**
* @brief Initializes a new instance of the EmbeddedData class.

@ -32,7 +32,7 @@ namespace dmr
* @brief Represents network DMR data.
* @ingroup dmr
*/
class HOST_SW_API NetData {
class DVM_COMMON_API NetData {
public:
/**
* @brief Initializes a new instance of the NetData class.

@ -35,7 +35,7 @@ namespace dmr
* @brief Represents DMR control signalling block data.
* @ingroup dmr_lc
*/
class HOST_SW_API CSBK {
class DVM_COMMON_API CSBK {
public:
/**
* @brief Initializes a copy instance of the CSBK class.

@ -35,7 +35,7 @@ namespace dmr
* @brief Represents full DMR link control.
* @ingroup dmr_lc
*/
class HOST_SW_API FullLC {
class DVM_COMMON_API FullLC {
public:
/**
* @brief Initializes a new instance of the FullLC class.

@ -36,7 +36,7 @@ namespace dmr
* @brief Represents DMR link control data.
* @ingroup dmr_lc
*/
class HOST_SW_API LC {
class DVM_COMMON_API LC {
public:
/**
* @brief Initializes a new instance of the LC class.

@ -30,7 +30,7 @@ namespace dmr
* @brief Represents DMR privacy indicator link control data.
* @ingroup dmr_lc
*/
class HOST_SW_API PrivacyLC {
class DVM_COMMON_API PrivacyLC {
public:
/**
* @brief Initializes a new instance of the PrivacyLC class.

@ -30,7 +30,7 @@ namespace dmr
* @brief Represents short DMR link control.
* @ingroup dmr_lc
*/
class HOST_SW_API ShortLC {
class DVM_COMMON_API ShortLC {
public:
/**
* @brief Initializes a new instance of the ShortLC class.

@ -58,7 +58,7 @@ namespace dmr
* @brief Helper class to instantiate an instance of a CSBK.
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBKFactory {
class DVM_COMMON_API CSBKFactory {
public:
/**
* @brief Initializes a new instance of the CSBKFactory class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements ACK RSP - Acknowledge Response
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_ACK_RSP : public CSBK {
class DVM_COMMON_API CSBK_ACK_RSP : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_ACK_RSP class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements ALOHA - Aloha PDUs for the random access protocol
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_ALOHA : public CSBK {
class DVM_COMMON_API CSBK_ALOHA : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_ALOHA class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements BCAST - Announcement PDUs
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_BROADCAST : public CSBK {
class DVM_COMMON_API CSBK_BROADCAST : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_BROADCAST class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements BS DWN ACT - BS Outbound Activation
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_BSDWNACT : public CSBK {
class DVM_COMMON_API CSBK_BSDWNACT : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_BSDWNACT class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements CALL ALRT - Call Alert
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_CALL_ALRT : public CSBK {
class DVM_COMMON_API CSBK_CALL_ALRT : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_CALL_ALRT class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements EXT FNCT - Extended Function
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_EXT_FNCT : public CSBK {
class DVM_COMMON_API CSBK_EXT_FNCT : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_EXT_FNCT class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements MAINT - Call Maintainence
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_MAINT : public CSBK {
class DVM_COMMON_API CSBK_MAINT : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_MAINT class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements NACK RSP - Negative Acknowledgement Response
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_NACK_RSP : public CSBK {
class DVM_COMMON_API CSBK_NACK_RSP : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_NACK_RSP class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements PD_GRANT - Private Data Channel Grant
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_PD_GRANT : public CSBK {
class DVM_COMMON_API CSBK_PD_GRANT : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_PD_GRANT class.

@ -34,7 +34,7 @@ namespace dmr
* @brief Implements PRE CSBK - Preamble CSBK
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_PRECCSBK : public CSBK {
class DVM_COMMON_API CSBK_PRECCSBK : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_PRECCSBK class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements PV_GRANT - Private Voice Channel Grant
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_PV_GRANT : public CSBK {
class DVM_COMMON_API CSBK_PV_GRANT : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_PV_GRANT class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements P_CLEAR - Payload Channel Clear
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_P_CLEAR : public CSBK {
class DVM_COMMON_API CSBK_P_CLEAR : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_P_CLEAR class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements P_GRANT - Payload Channel Talkgroup Voice Channel Grant
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_P_GRANT : public CSBK {
class DVM_COMMON_API CSBK_P_GRANT : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_P_GRANT class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements RAND - Random Access
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_RAND : public CSBK {
class DVM_COMMON_API CSBK_RAND : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_RAND class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements a mechanism to generate raw CSBK data from bytes.
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_RAW : public CSBK {
class DVM_COMMON_API CSBK_RAW : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_RAW class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements TD_GRANT - Talkgroup Data Channel Grant
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_TD_GRANT : public CSBK {
class DVM_COMMON_API CSBK_TD_GRANT : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_TD_GRANT class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements TV_GRANT - Talkgroup Voice Channel Grant
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_TV_GRANT : public CSBK {
class DVM_COMMON_API CSBK_TV_GRANT : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_TV_GRANT class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements UU ANS RSP - Unit to Unit Answer Response
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_UU_ANS_RSP : public CSBK {
class DVM_COMMON_API CSBK_UU_ANS_RSP : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_UU_ANS_RSP class.

@ -33,7 +33,7 @@ namespace dmr
* @brief Implements UU VCH REQ - Unit-to-Unit Voice Channel Request
* @ingroup dmr_csbk
*/
class HOST_SW_API CSBK_UU_V_REQ : public CSBK {
class DVM_COMMON_API CSBK_UU_V_REQ : public CSBK {
public:
/**
* @brief Initializes a new instance of the CSBK_UU_V_REQ class.

@ -64,7 +64,7 @@ namespace edac
* c0[24], c1[23], c2[11], c3[14], MSB first. Annex S conversion between
* transmitted dibits and this codeword is intentionally separate.
*/
class HOST_SW_API AMBE2FEC {
class DVM_COMMON_API AMBE2FEC {
public:
/**
* @brief Regenerates the P25 Phase 2 half-rate FEC.

@ -464,7 +464,7 @@ namespace edac
* correction.
* @ingroup edac
*/
class HOST_SW_API AMBEFEC {
class DVM_COMMON_API AMBEFEC {
public:
/**
* @brief Initializes a new instance of the AMBEFEC class.

@ -29,7 +29,7 @@ namespace edac
* data.
* @ingroup edac
*/
class HOST_SW_API BCH {
class DVM_COMMON_API BCH {
public:
/**
* @brief Initializes a new instance of the BCH class.

@ -28,7 +28,7 @@ namespace edac
* @brief Implements Block Product Turbo Code (196,96) FEC.
* @ingroup edac
*/
class HOST_SW_API BPTC19696 {
class DVM_COMMON_API BPTC19696 {
public:
/**
* @brief Initializes a new instance of the BPTC19696 class.

@ -29,7 +29,7 @@ namespace edac
* @brief Implements various Cyclic Redundancy Check routines.
* @ingroup edac
*/
class HOST_SW_API CRC {
class DVM_COMMON_API CRC {
public:
/**
* @brief Check 5-bit CRC.

@ -28,7 +28,7 @@ namespace edac
* @brief Implements Golay (20,8,7) forward error correction.
* @ingroup edac
*/
class HOST_SW_API Golay2087 {
class DVM_COMMON_API Golay2087 {
public:
/**
* @brief Decode Golay (20,8,7) FEC.

@ -30,7 +30,7 @@ namespace edac
* correction.
* @ingroup edac
*/
class HOST_SW_API Golay24128 {
class DVM_COMMON_API Golay24128 {
public:
/**
* @brief Decode Golay (23,12,7) FEC.

@ -30,7 +30,7 @@ namespace edac
* (17, 12, 3) forward error correction.
* @ingroup edac
*/
class HOST_SW_API Hamming {
class DVM_COMMON_API Hamming {
public:
/**
* @brief Decode Hamming (15,11,3).

@ -28,7 +28,7 @@ namespace edac
* @brief Implements Quadratic residue (16,7,6) forward error correction.
* @ingroup edac
*/
class HOST_SW_API QR1676 {
class DVM_COMMON_API QR1676 {
public:
/**
* @brief Decode QR (16,7,6) FEC.

@ -28,7 +28,7 @@ namespace edac
* @brief Implements Reed-Solomon (12,9) forward error correction.
* @ingroup edac
*/
class HOST_SW_API RS129 {
class DVM_COMMON_API RS129 {
public:
/**
* @brief Check RS (12,9) FEC.

@ -31,7 +31,7 @@ namespace edac
* (45,26,20). (44,16,29) forward error correction.
* @ingroup edac
*/
class HOST_SW_API RS634717 {
class DVM_COMMON_API RS634717 {
public:
/**
* @brief Initializes a new instance of the RS634717 class.

@ -39,7 +39,7 @@ namespace edac
* @brief Implements SHA-256 hashing.
* @ingroup edac
*/
class HOST_SW_API SHA256 {
class DVM_COMMON_API SHA256 {
public:
/**
* @brief Initializes a new instance of the SHA256 class.'

@ -29,7 +29,7 @@ namespace edac
* @brief Implements 1/2 rate and 3/4 rate Trellis for DMR/P25.
* @ingroup edac
*/
class HOST_SW_API Trellis {
class DVM_COMMON_API Trellis {
public:
/**
* @brief Initializes a new instance of the Trellis class.

@ -39,7 +39,7 @@ namespace lookups
* @brief Represents an adjacent peer map entry.
* @ingroup lookups_asm
*/
class HOST_SW_API AdjPeerMapEntry {
class DVM_COMMON_API AdjPeerMapEntry {
public:
/**
* @brief Initializes a new instance of the AdjPeerMapEntry class.
@ -148,7 +148,7 @@ namespace lookups
* information.
* @ingroup lookups_asm
*/
class HOST_SW_API AdjSiteMapLookup : public Thread {
class DVM_COMMON_API AdjSiteMapLookup : public Thread {
public:
/**
* @brief Initializes a new instance of the AdjSiteMapLookup class.

@ -43,7 +43,7 @@ namespace lookups
* and group affiliation information.
* @ingroup lookups_aff
*/
class HOST_SW_API AffiliationLookup : public concurrent::concurrent_lock {
class DVM_COMMON_API AffiliationLookup : public concurrent::concurrent_lock {
public:
/**
* @brief Initializes a new instance of the AffiliationLookup class.

@ -40,7 +40,7 @@ namespace lookups
* @brief Represents voice channel data.
* @ingroup lookups_ch
*/
class HOST_SW_API VoiceChData {
class DVM_COMMON_API VoiceChData {
public:
/**
* @brief Initializes a new instance of the VoiceChData class.
@ -192,7 +192,7 @@ namespace lookups
* @brief Implements a lookup table class that contains RF channel information.
* @ingroup lookups_ch
*/
class HOST_SW_API ChannelLookup {
class DVM_COMMON_API ChannelLookup {
public:
/**
* @brief Initializes a new instance of the ChannelLookup class.

@ -38,7 +38,7 @@ namespace lookups
* @brief Represents an individual entry in the bandplan identity table.
* @ingroup lookups_iden
*/
class HOST_SW_API IdenTable {
class DVM_COMMON_API IdenTable {
public:
/**
* @brief Initializes a new instance of the IdenTable class.
@ -119,7 +119,7 @@ namespace lookups
* identity table.
* @ingroup lookups_iden
*/
class HOST_SW_API IdenTableLookup : public LookupTable<IdenTable> {
class DVM_COMMON_API IdenTableLookup : public LookupTable<IdenTable> {
public:
/**
* @brief Initializes a new instance of the IdenTableLookup class.

@ -43,7 +43,7 @@ namespace lookups
* @ingroup lookups
*/
template <class T>
class HOST_SW_API LookupTable : public Thread {
class DVM_COMMON_API LookupTable : public Thread {
public:
/**
* @brief Initializes a new instance of the LookupTable class.

@ -41,7 +41,7 @@ namespace lookups
* @brief Represents an individual entry in the peer ID table.
* @ingroup lookups_peer
*/
class HOST_SW_API PeerId {
class DVM_COMMON_API PeerId {
public:
/**
* @brief Initializes a new instance of the PeerId class.
@ -205,7 +205,7 @@ namespace lookups
* lookup table.
* @ingroup lookups_peer
*/
class HOST_SW_API PeerListLookup : public LookupTable<PeerId> {
class DVM_COMMON_API PeerListLookup : public LookupTable<PeerId> {
public:
/**
* @brief Initializes a new instance of the PeerListLookup class.

@ -33,7 +33,7 @@ namespace lookups
* @brief RSSI interpolated lookup for RSSI values returned from the modem.
* @ingroup lookups
*/
class HOST_SW_API RSSIInterpolator {
class DVM_COMMON_API RSSIInterpolator {
public:
/**
* @brief Initializes a new instance of the RSSIInterpolator class.

@ -34,7 +34,7 @@ namespace lookups
* lookup table.
* @ingroup lookups_rid
*/
class HOST_SW_API RadioAliasLookup : public LookupTable<std::string> {
class DVM_COMMON_API RadioAliasLookup : public LookupTable<std::string> {
public:
/**
* @brief Initializes a new instance of the RadioAliasLookup class.

@ -39,7 +39,7 @@ namespace lookups
* @brief Represents an individual entry in the radio ID table.
* @ingroup lookups_rid
*/
class HOST_SW_API RadioId {
class DVM_COMMON_API RadioId {
public:
/**
* @brief Initializes a new instance of the RadioId class.
@ -171,7 +171,7 @@ namespace lookups
* lookup table.
* @ingroup lookups_rid
*/
class HOST_SW_API RadioIdLookup : public LookupTable<RadioId> {
class DVM_COMMON_API RadioIdLookup : public LookupTable<RadioId> {
public:
/**
* @brief Initializes a new instance of the RadioIdLookup class.

@ -52,7 +52,7 @@ namespace lookups
* @brief Represents an source block for a routing rule.
* @ingroup lookups_tgid
*/
class HOST_SW_API TalkgroupRuleGroupVoiceSource {
class DVM_COMMON_API TalkgroupRuleGroupVoiceSource {
public:
/**
* @brief Initializes a new instance of the TalkgroupRuleGroupVoiceSource class.
@ -117,7 +117,7 @@ namespace lookups
* @brief Represents an rewrite block for a routing rule rewrites.
* @ingroup lookups_tgid
*/
class HOST_SW_API TalkgroupRuleRewrite {
class DVM_COMMON_API TalkgroupRuleRewrite {
public:
/**
* @brief Initializes a new instance of the TalkgroupRuleRewrite class.
@ -190,7 +190,7 @@ namespace lookups
* @brief Represents an configuration block for a routing rule.
* @ingroup lookups_tgid
*/
class HOST_SW_API TalkgroupRuleConfig {
class DVM_COMMON_API TalkgroupRuleConfig {
public:
/**
* @brief Initializes a new instance of the TalkgroupRuleConfig class.
@ -450,7 +450,7 @@ namespace lookups
* @brief Represents an group voice block for a routing rule.
* @ingroup lookups_tgid
*/
class HOST_SW_API TalkgroupRuleGroupVoice {
class DVM_COMMON_API TalkgroupRuleGroupVoice {
public:
/**
* @brief Initializes a new instance of the TalkgroupRuleGroupVoice class.
@ -549,7 +549,7 @@ namespace lookups
* rules information.
* @ingroup lookups_tgid
*/
class HOST_SW_API TalkgroupRulesLookup : public Thread {
class DVM_COMMON_API TalkgroupRulesLookup : public Thread {
public:
/**
* @brief Initializes a new instance of the TalkgroupRulesLookup class.

@ -102,7 +102,7 @@ namespace network
* fast path for in-order packets. Out-of-order packets are buffered briefly
* to allow reordering, with adaptive timeout based on observed jitter.
*/
class HOST_SW_API AdaptiveJitterBuffer {
class DVM_COMMON_API AdaptiveJitterBuffer {
public:
/**
* @brief Initializes a new instance of the AdaptiveJitterBuffer class.

@ -196,7 +196,7 @@ namespace network
* @brief Handles dealing with maintaining RTP sequencing for multiple multiplexed RTP streams.
* @ingroup fne_network
*/
class HOST_SW_API RTPStreamMultiplex {
class DVM_COMMON_API RTPStreamMultiplex {
public:
auto operator=(RTPStreamMultiplex&) -> RTPStreamMultiplex& = delete;
auto operator=(RTPStreamMultiplex&&) -> RTPStreamMultiplex& = delete;
@ -393,7 +393,7 @@ namespace network
* @brief Implements the base networking logic.
* @ingroup network_core
*/
class HOST_SW_API BaseNetwork {
class DVM_COMMON_API BaseNetwork {
public:
/**
* @brief Initializes a new instance of the BaseNetwork class.

@ -43,7 +43,7 @@ namespace network
* @brief Implements the network RTP frame queuing logic.
* @ingroup network_core
*/
class HOST_SW_API FrameQueue : public RawFrameQueue {
class DVM_COMMON_API FrameQueue : public RawFrameQueue {
public: typedef std::pair<const NET_FUNC::ENUM, const NET_SUBFUNC::ENUM> OpcodePair;
public:
auto operator=(FrameQueue&) -> FrameQueue& = delete;

@ -38,7 +38,7 @@ namespace network
// Class Prototypes
// ---------------------------------------------------------------------------
class HOST_SW_API Socket;
class Socket;
}
// ---------------------------------------------------------------------------
@ -55,7 +55,7 @@ namespace network
* @brief Implements the Remote Procedure Call networking logic.
* @ingroup network_core
*/
class HOST_SW_API NetRPC {
class DVM_COMMON_API NetRPC {
public:
typedef std::function<void(json::object& request, json::object& reply)> RPCType;

@ -141,7 +141,7 @@ namespace network
* @brief Implements the core peer networking logic.
* @ingroup network_core
*/
class HOST_SW_API Network : public BaseNetwork {
class DVM_COMMON_API Network : public BaseNetwork {
public:
/**
* @brief Initializes a new instance of the Network class.

@ -54,7 +54,7 @@ namespace network
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* \endcode
*/
class HOST_SW_API PacketBuffer {
class DVM_COMMON_API PacketBuffer {
public:
auto operator=(PacketBuffer&) -> PacketBuffer& = delete;
auto operator=(PacketBuffer&&) -> PacketBuffer& = delete;

@ -47,7 +47,7 @@ namespace network
* 8 bytes
* \endcode
*/
class HOST_SW_API RPCHeader {
class DVM_COMMON_API RPCHeader {
public:
/**
* @brief Initializes a new instance of the RPCHeader class.

@ -47,7 +47,7 @@ namespace network
* 4 bytes
* \endcode
*/
class HOST_SW_API RTPExtensionHeader {
class DVM_COMMON_API RTPExtensionHeader {
public:
/**
* @brief Initializes a new instance of the RTPExtensionHeader class.

@ -184,7 +184,7 @@ namespace network
* 20 bytes (16 bytes without RTP Extension Header)
* \endcode
*/
class HOST_SW_API RTPFNEHeader : public RTPExtensionHeader {
class DVM_COMMON_API RTPFNEHeader : public RTPExtensionHeader {
public:
/**
* @brief Initializes a new instance of the RTPFNEHeader class.

@ -54,7 +54,7 @@ namespace network
* \endcode
* @ingroup network_core
*/
class HOST_SW_API RTPHeader {
class DVM_COMMON_API RTPHeader {
public:
/**
* @brief Initializes a new instance of the RTPHeader class.

@ -40,7 +40,7 @@ namespace network
* @brief Implements the network frame queuing logic.
* @ingroup network_core
*/
class HOST_SW_API RawFrameQueue {
class DVM_COMMON_API RawFrameQueue {
public:
auto operator=(RawFrameQueue&) -> RawFrameQueue& = delete;
auto operator=(RawFrameQueue&&) -> RawFrameQueue& = delete;

@ -43,7 +43,7 @@ namespace network
* @brief Implements a secure TCP client.
* @ingroup tcp_socket
*/
class HOST_SW_API SecureTcpClient : public Socket
class DVM_COMMON_API SecureTcpClient : public Socket
{
public:
auto operator=(SecureTcpClient&) -> SecureTcpClient& = delete;

@ -38,7 +38,7 @@ namespace network
* @brief Implements a secure TCP server listener.
* @ingroup tcp_socket
*/
class HOST_SW_API SecureTcpListener : public Socket
class DVM_COMMON_API SecureTcpListener : public Socket
{
public:
auto operator=(SecureTcpListener&) -> SecureTcpListener& = delete;

@ -58,7 +58,7 @@ namespace network
* network socket.
* @ingroup tcp_socket
*/
class HOST_SW_API Socket
class DVM_COMMON_API Socket
{
public:
auto operator=(Socket&) -> Socket& = delete;

@ -33,7 +33,7 @@ namespace network
* @brief Implements a TCP client.
* @ingroup tcp_socket
*/
class HOST_SW_API TcpClient : public Socket
class DVM_COMMON_API TcpClient : public Socket
{
public:
auto operator=(TcpClient&) -> TcpClient& = delete;

@ -31,7 +31,7 @@ namespace network
* @brief Implements a TCP server listener.
* @ingroup tcp_socket
*/
class HOST_SW_API TcpListener : public Socket
class DVM_COMMON_API TcpListener : public Socket
{
public:

@ -182,7 +182,7 @@ namespace network
* network socket.
* @ingroup udp_socket
*/
class HOST_SW_API Socket {
class DVM_COMMON_API Socket {
public:
auto operator=(Socket&) -> Socket& = delete;
auto operator=(Socket&&) -> Socket& = delete;

@ -52,7 +52,7 @@ namespace network
* network interface.
* @ingroup viface
*/
class HOST_SW_API VIFace {
class DVM_COMMON_API VIFace {
public:
auto operator=(VIFace&) -> VIFace& = delete;
auto operator=(VIFace&&) -> VIFace& = delete;

@ -454,7 +454,7 @@ namespace nxdn
* @brief Implements NXDN audio processing and interleaving.
* @ingroup host_nxdn
*/
class HOST_SW_API Audio {
class DVM_COMMON_API Audio {
public:
/**
* @brief Initializes a new instance of the Audio class.

@ -29,7 +29,7 @@ namespace nxdn
* @brief This class implements various helper functions for scrambling NXDN data.
* @ingroup nxdn
*/
class HOST_SW_API NXDNUtils {
class DVM_COMMON_API NXDNUtils {
public:
/**
* @brief Helper to scramble the NXDN frame data.

@ -27,7 +27,7 @@ namespace nxdn
* @brief Represents site data for NXDN.
* @ingroup nxdn
*/
class HOST_SW_API SiteData {
class DVM_COMMON_API SiteData {
public:
/**
* @brief Initializes a new instance of the SiteData class.

@ -28,7 +28,7 @@ namespace nxdn
* @brief Helper class for generating NXDN sync data.
* @ingroup nxdn
*/
class HOST_SW_API Sync {
class DVM_COMMON_API Sync {
public:
/**
* @brief Helper to append NXDN sync bytes to the passed buffer.

@ -36,7 +36,7 @@ namespace nxdn
* @brief This class implements radio and talkgroup ID access control checking.
* @ingroup nxdn
*/
class HOST_SW_API AccessControl {
class DVM_COMMON_API AccessControl {
public:
/**
* @brief Initializes the NXDN access control.

@ -31,7 +31,7 @@ namespace nxdn
* @brief Implements NXDN Common Access Channel.
* @ingroup nxdn_ch
*/
class HOST_SW_API CAC {
class DVM_COMMON_API CAC {
public:
/**
* @brief Initializes a new instance of the CAC class.

@ -30,7 +30,7 @@ namespace nxdn
* @brief Implements NXDN Fast Associated Control Channel 1.
* @ingroup nxdn_ch
*/
class HOST_SW_API FACCH1 {
class DVM_COMMON_API FACCH1 {
public:
/**
* @brief Initializes a new instance of the FACCH1 class.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save

Powered by TurnKey Linux.