diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e2457630a..252673daf2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -298,6 +298,7 @@ message(STATUS "Selected KPM Version: ${KPM_VERSION}") add_boolean_option(ENABLE_IMSCOPE OFF "Enable phy scope based on imgui" OFF) +add_boolean_option(ENABLE_IMSCOPE_RECORD OFF "Enable recording IQ data for imscope" OFF) ################################################## # ASN.1 grammar C code generation & dependencies # diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai index d6d3720bca..27bb63ff89 100755 --- a/cmake_targets/build_oai +++ b/cmake_targets/build_oai @@ -46,7 +46,7 @@ BUILD_DOXYGEN=0 DISABLE_HARDWARE_DEPENDENCY="False" CMAKE_BUILD_TYPE="RelWithDebInfo" CMAKE_CMD="$CMAKE" -OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope ldpc_cuda ldpc_t2 ldpc_xdma websrv oai_iqplayer imscope" +OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope ldpc_cuda ldpc_t2 ldpc_xdma websrv oai_iqplayer imscope imscope_record" TARGET_LIST="" BUILD_TOOL_OPT="-j$(nproc)" diff --git a/openair1/PHY/TOOLS/CMakeLists.txt b/openair1/PHY/TOOLS/CMakeLists.txt index 58db255f0c..8a3d912caa 100644 --- a/openair1/PHY/TOOLS/CMakeLists.txt +++ b/openair1/PHY/TOOLS/CMakeLists.txt @@ -64,6 +64,6 @@ if (ENABLE_TESTS) add_subdirectory(tests) endif() -if (ENABLE_IMSCOPE) +if (ENABLE_IMSCOPE OR ENABLE_IMSCOPE_RECORD) add_subdirectory(imscope) endif() diff --git a/openair1/PHY/TOOLS/imscope/CMakeLists.txt b/openair1/PHY/TOOLS/imscope/CMakeLists.txt index 060b288419..9a40e9cdd7 100644 --- a/openair1/PHY/TOOLS/imscope/CMakeLists.txt +++ b/openair1/PHY/TOOLS/imscope/CMakeLists.txt @@ -1,43 +1,47 @@ +if (ENABLE_IMSCOPE) + CPMAddPackage("gh:ocornut/imgui#v1.91.3-docking") + add_library(imgui + ${imgui_SOURCE_DIR}/imgui_draw.cpp + ${imgui_SOURCE_DIR}/imgui.cpp + ${imgui_SOURCE_DIR}/imgui_widgets.cpp + ${imgui_SOURCE_DIR}/imgui_tables.cpp + ${imgui_SOURCE_DIR}/imgui_demo.cpp + ) + target_include_directories(imgui PUBLIC ${imgui_SOURCE_DIR}) -CPMAddPackage("gh:ocornut/imgui#v1.91.3-docking") -add_library(imgui - ${imgui_SOURCE_DIR}/imgui_draw.cpp - ${imgui_SOURCE_DIR}/imgui.cpp - ${imgui_SOURCE_DIR}/imgui_widgets.cpp - ${imgui_SOURCE_DIR}/imgui_tables.cpp - ${imgui_SOURCE_DIR}/imgui_demo.cpp -) -target_include_directories(imgui PUBLIC ${imgui_SOURCE_DIR}) + add_library(imgui_opengl_renderer ${imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp) + target_include_directories(imgui_opengl_renderer PUBLIC ${imgui_SOURCE_DIR}/backends/) + target_link_libraries(imgui_opengl_renderer PUBLIC imgui) -add_library(imgui_opengl_renderer ${imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp) -target_include_directories(imgui_opengl_renderer PUBLIC ${imgui_SOURCE_DIR}/backends/) -target_link_libraries(imgui_opengl_renderer PUBLIC imgui) + add_library(imgui_glfw_backend ${imgui_SOURCE_DIR}/backends/imgui_impl_glfw.cpp) + target_include_directories(imgui_glfw_backend PUBLIC ${imgui_SOURCE_DIR}/backends/) + target_link_libraries(imgui_glfw_backend PUBLIC imgui) -add_library(imgui_glfw_backend ${imgui_SOURCE_DIR}/backends/imgui_impl_glfw.cpp) -target_include_directories(imgui_glfw_backend PUBLIC ${imgui_SOURCE_DIR}/backends/) -target_link_libraries(imgui_glfw_backend PUBLIC imgui) + find_package(OpenGL REQUIRED) + find_package(glfw3 3.3 REQUIRED) -find_package(OpenGL REQUIRED) -find_package(glfw3 3.3 REQUIRED) + CPMAddPackage("gh:epezent/implot#v0.16") + add_library(implot + ${implot_SOURCE_DIR}/implot.cpp + ${implot_SOURCE_DIR}/implot_demo.cpp + ${implot_SOURCE_DIR}/implot_items.cpp + ) + target_link_libraries(implot PUBLIC imgui) + target_include_directories(implot PUBLIC ${implot_SOURCE_DIR}) -CPMAddPackage("gh:epezent/implot#v0.16") -add_library(implot - ${implot_SOURCE_DIR}/implot.cpp - ${implot_SOURCE_DIR}/implot_demo.cpp - ${implot_SOURCE_DIR}/implot_items.cpp -) -target_link_libraries(implot PUBLIC imgui) -target_include_directories(implot PUBLIC ${implot_SOURCE_DIR}) + add_library(imscope MODULE imscope.cpp ../phy_scope_interface.c imscope_common.cpp imscope_init.cpp) + target_link_libraries(imscope PUBLIC imgui_glfw_backend glfw imgui_opengl_renderer OpenGL::OpenGL implot UTIL) + set_target_properties(imscope PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) + configure_file(imgui.ini ${CMAKE_BINARY_DIR}/imscope-init.ini COPYONLY) -add_library(imscope MODULE imscope.cpp ../phy_scope_interface.c imscope_common.cpp imscope_init.cpp) -target_link_libraries(imscope PUBLIC imgui_glfw_backend glfw imgui_opengl_renderer OpenGL::OpenGL implot UTIL) -set_target_properties(imscope PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) -configure_file(imgui.ini ${CMAKE_BINARY_DIR}/imscope-init.ini COPYONLY) + add_executable(imscope_iq_file_viewer imscope.cpp imscope_iq_file_viewer.cpp ../phy_scope_interface.c imscope_common.cpp) + target_link_libraries(imscope_iq_file_viewer PRIVATE imgui_glfw_backend glfw imgui_opengl_renderer OpenGL::OpenGL implot UTIL minimal_lib shlib_loader) + set_target_properties(imscope_iq_file_viewer PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") +endif() -add_library(imscope_record MODULE ../phy_scope_interface.c imscope_common.cpp imscope_record.cpp) -target_link_libraries(imscope_record PRIVATE UTIL atomic) -set_target_properties(imscope_record PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +if (ENABLE_IMSCOPE_RECORD) + add_library(imscope_record MODULE ../phy_scope_interface.c imscope_common.cpp imscope_record.cpp) + target_link_libraries(imscope_record PRIVATE UTIL atomic) + set_target_properties(imscope_record PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +endif() -add_executable(imscope_iq_file_viewer imscope.cpp imscope_iq_file_viewer.cpp ../phy_scope_interface.c imscope_common.cpp) -target_link_libraries(imscope_iq_file_viewer PRIVATE imgui_glfw_backend glfw imgui_opengl_renderer OpenGL::OpenGL implot UTIL minimal_lib shlib_loader) -set_target_properties(imscope_iq_file_viewer PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")