mirror of
https://github.com/EttusResearch/uhd.git
synced 2026-10-25 17:36:10 +00:00
- This example will let you tx data from the host to the NullSRcSink block on the FPGa design. This is complementary to the rfnoc_nullsource_ce_rx example. Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
119 lines
3.6 KiB
CMake
119 lines
3.6 KiB
CMake
#
|
|
# Copyright 2010-2015 Ettus Research LLC
|
|
# Copyright 2018 Ettus Research, a National Instruments Company
|
|
#
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
#
|
|
|
|
########################################################################
|
|
# example applications
|
|
########################################################################
|
|
set(example_sources
|
|
benchmark_rate.cpp
|
|
rx_multi_samples.cpp
|
|
rx_samples_to_file.cpp
|
|
rx_samples_to_udp.cpp
|
|
rx_timed_samples.cpp
|
|
test_dboard_coercion.cpp
|
|
test_messages.cpp
|
|
test_pps_input.cpp
|
|
test_timed_commands.cpp
|
|
tx_bursts.cpp
|
|
tx_samples_from_file.cpp
|
|
tx_timed_samples.cpp
|
|
tx_waveforms.cpp
|
|
txrx_loopback_to_file.cpp
|
|
txrx_complex_gain.cpp
|
|
usrp_list_sensors.cpp
|
|
latency_test.cpp
|
|
gpio.cpp
|
|
spi.cpp
|
|
sync_to_gps.cpp
|
|
rfnoc_nullsource_ce_rx.cpp
|
|
rfnoc_nullsource_ce_tx.cpp
|
|
rfnoc_rx_to_file.cpp
|
|
rfnoc_radio_loopback.cpp
|
|
rfnoc_replay_samples_from_file.cpp
|
|
)
|
|
|
|
if(ENABLE_OCTOCLOCK)
|
|
list(APPEND example_sources test_clock_synch.cpp)
|
|
endif(ENABLE_OCTOCLOCK)
|
|
|
|
#for each source: build an executable and install
|
|
foreach(example_source ${example_sources})
|
|
get_filename_component(example_name ${example_source} NAME_WE)
|
|
add_executable(${example_name} ${example_source})
|
|
target_link_libraries(${example_name}
|
|
PUBLIC uhd Boost::program_options Boost::filesystem)
|
|
UHD_INSTALL(TARGETS ${example_name} RUNTIME DESTINATION ${PKG_LIB_DIR}/examples COMPONENT examples)
|
|
endforeach(example_source)
|
|
|
|
########################################################################
|
|
# ASCII Art DFT - requires curses, so this part is optional
|
|
########################################################################
|
|
set(CURSES_NEED_NCURSES 1)
|
|
find_package(Curses)
|
|
|
|
if(CURSES_FOUND)
|
|
include_directories(${CURSES_INCLUDE_DIR})
|
|
add_executable(rx_ascii_art_dft rx_ascii_art_dft.cpp)
|
|
target_link_libraries(rx_ascii_art_dft
|
|
PUBLIC uhd ${CURSES_LIBRARIES} Boost::program_options)
|
|
UHD_INSTALL(TARGETS rx_ascii_art_dft RUNTIME DESTINATION ${PKG_LIB_DIR}/examples COMPONENT examples)
|
|
|
|
add_executable(twinrx_freq_hopping twinrx_freq_hopping.cpp)
|
|
target_link_libraries(twinrx_freq_hopping
|
|
PUBLIC uhd ${CURSES_LIBRARIES} Boost::program_options)
|
|
UHD_INSTALL(TARGETS twinrx_freq_hopping RUNTIME DESTINATION ${PKG_LIB_DIR}/examples COMPONENT examples)
|
|
endif(CURSES_FOUND)
|
|
|
|
########################################################################
|
|
# Examples using C API
|
|
########################################################################
|
|
if(ENABLE_C_API)
|
|
#
|
|
# Check if this particular C99 feature is available with this compiler
|
|
#
|
|
include(CheckCSourceCompiles)
|
|
CHECK_C_SOURCE_COMPILES("
|
|
typedef struct {
|
|
int bar;
|
|
int baz;
|
|
} foo;
|
|
|
|
int main()
|
|
{
|
|
foo wat = {
|
|
.bar = 1,
|
|
.baz = 2
|
|
};
|
|
|
|
return 0;
|
|
}
|
|
" HAVE_C99_STRUCTDECL)
|
|
|
|
if(HAVE_C99_STRUCTDECL)
|
|
add_subdirectory(getopt)
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/getopt)
|
|
|
|
set(C_API_EXAMPLES
|
|
rx_samples_c
|
|
tx_samples_c
|
|
)
|
|
|
|
foreach(example ${C_API_EXAMPLES})
|
|
add_executable(${example} ${example}.c)
|
|
target_link_libraries(${example} uhd getopt)
|
|
if(UNIX)
|
|
target_link_libraries(${example} m)
|
|
endif(UNIX)
|
|
UHD_INSTALL(TARGETS ${example} RUNTIME DESTINATION ${PKG_LIB_DIR}/examples COMPONENT examples)
|
|
endforeach(example ${C_API_EXAMPLES})
|
|
endif(HAVE_C99_STRUCTDECL)
|
|
endif(ENABLE_C_API)
|
|
|
|
if(ENABLE_PYTHON_API)
|
|
add_subdirectory(python)
|
|
endif(ENABLE_PYTHON_API)
|