diff --git a/.gitignore b/.gitignore index 357301d..b4469ae 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ build/ *.old *.dll *.exe -*.zip \ No newline at end of file +*.zip +.DS_Store diff --git a/CMakeLists.txt b/CMakeLists.txt index c904563..a4cf69b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,7 @@ target_link_libraries(sdrpp PRIVATE sdrpp_core) # Copy dynamic libs over if (MSVC) add_custom_target(do_always ALL xcopy /s \"$\\*.dll\" \"$\" /Y) + add_custom_target(do_always_volk ALL xcopy /s \"C:/Program Files/PothosSDR/bin\\volk.dll\" \"$\" /Y) endif (MSVC) if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 0b1d0e1..9c2a842 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -6,21 +6,15 @@ if (MSVC) set(CMAKE_CXX_FLAGS "-O2 /std:c++17") set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) else() - set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") + set(CMAKE_CXX_FLAGS "-g -O3 -std=c++17 -fpermissive") endif (MSVC) add_definitions(-DSDRPP_IS_CORE) # Main code -file(GLOB SRC "src/*.cpp") -file(GLOB GUI "src/gui/*.cpp") -file(GLOB MENUS "src/gui/menus/*.cpp") -file(GLOB DIALOGS "src/gui/dialogs/*.cpp") -file(GLOB SIGPATH "src/signal_path/*.cpp") -file(GLOB IMGUI "src/imgui/*.cpp") -file(GLOB DUKTAPE "src/duktape/*.c") +file(GLOB_RECURSE SRC "src/*.cpp" "src/*.c") # Add code to dyn lib -add_library(sdrpp_core SHARED ${SRC} ${GUI} ${MENUS} ${DIALOGS} ${SIGPATH} ${IMGUI} ${DUKTAPE}) +add_library(sdrpp_core SHARED ${SRC}) set_target_properties(sdrpp_core PROPERTIES PREFIX "") # Include core headers @@ -36,7 +30,6 @@ if (MSVC) target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/") # Volk - target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/volk/") target_link_libraries(sdrpp_core PUBLIC volk) # SoapySDR @@ -51,8 +44,6 @@ if (MSVC) target_link_libraries(sdrpp_core PUBLIC glfw) # FFTW3 - find_package(FFTW3 CONFIG REQUIRED) - target_link_libraries(sdrpp_core PUBLIC FFTW3::fftw3) find_package(FFTW3f CONFIG REQUIRED) target_link_libraries(sdrpp_core PUBLIC FFTW3::fftw3f) @@ -60,57 +51,54 @@ if (MSVC) find_package(portaudio CONFIG REQUIRED) target_link_libraries(sdrpp_core PUBLIC portaudio portaudio_static) -endif (MSVC) + target_link_libraries(sdrpp_core PUBLIC volk) -if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") - target_include_directories(sdrpp_core PUBLIC "/usr/include/volk") - - target_link_libraries(sdrpp_core PUBLIC pthread) - target_link_libraries(sdrpp_core PUBLIC GL) - target_link_libraries(sdrpp_core PUBLIC GLEW) - target_link_libraries(sdrpp_core PUBLIC glfw) - target_link_libraries(sdrpp_core PUBLIC fftw3) - target_link_libraries(sdrpp_core PUBLIC fftw3f) - target_link_libraries(sdrpp_core PUBLIC portaudio) - target_link_libraries(sdrpp_core PUBLIC X11) - target_link_libraries(sdrpp_core PUBLIC Xxf86vm) - target_link_libraries(sdrpp_core PUBLIC dl) -endif () - - -if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") +else() + find_package(PkgConfig) find_package(OpenGL REQUIRED) - # find_package(GLEW REQUIRED) - # find_package(fftw3 REQUIRED) - # find_package(glfw3 REQUIRED) - # find_package(volk REQUIRED) + pkg_check_modules(GLEW REQUIRED glew) + pkg_check_modules(FFTW3 REQUIRED fftw3f) + pkg_check_modules(VOLK REQUIRED volk) + pkg_check_modules(GLFW3 REQUIRED glfw3) + pkg_check_modules(PORTAUDIO REQUIRED portaudio-2.0) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/glew/include) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/glfw/include) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/fftw/include) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/portaudio/include) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/volk/include) - target_include_directories(sdrpp_core PUBLIC /usr/local/opt/volk/include/volk) + target_include_directories(sdrpp_core PUBLIC + ${GLEW_INCLUDE_DIRS} + ${FFTW3_INCLUDE_DIRS} + ${GLFW3_INCLUDE_DIRS} + ${VOLK_INCLUDE_DIRS} + ${PORTAUDIO_INCLUDE_DIRS} + ) - target_link_directories(sdrpp_core PUBLIC /usr/local/opt/glew/lib) - target_link_directories(sdrpp_core PUBLIC /usr/local/opt/volk/lib) - target_link_directories(sdrpp_core PUBLIC /usr/local/opt/glfw/lib) - target_link_directories(sdrpp_core PUBLIC /usr/local/opt/fftw/lib) - target_link_directories(sdrpp_core PUBLIC /usr/local/opt/portaudio/lib) + target_link_directories(sdrpp_core PUBLIC + ${GLEW_LIBRARY_DIRS} + ${FFTW3_LIBRARY_DIRS} + ${GLFW3_LIBRARY_DIRS} + ${VOLK_LIBRARY_DIRS} + ${PORTAUDIO_LIBRARY_DIRS} + ) - target_link_libraries(sdrpp_core PUBLIC ${OPENGL_LIBRARIES}) - target_link_libraries(sdrpp_core PUBLIC volk) - target_link_libraries(sdrpp_core PUBLIC glew) - target_link_libraries(sdrpp_core PUBLIC glfw) - target_link_libraries(sdrpp_core PUBLIC fftw3) - target_link_libraries(sdrpp_core PUBLIC fftw3f) - target_link_libraries(sdrpp_core PUBLIC portaudio) + target_link_libraries(sdrpp_core PUBLIC + ${OPENGL_LIBRARIES} + ${GLEW_STATIC_LIBRARIES} + ${FFTW3_STATIC_LIBRARIES} + ${GLFW3_STATIC_LIBRARIES} + ${VOLK_STATIC_LIBRARIES} + ${PORTAUDIO_STATIC_LIBRARIES} + ) + + if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + target_link_libraries(sdrpp_core PUBLIC stdc++fs) + endif () + + if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") + endif () endif () -target_link_libraries(sdrpp_core PUBLIC volk) - set(CORE_FILES ${RUNTIME_OUTPUT_DIRECTORY} PARENT_SCOPE) -# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" \ No newline at end of file +# cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64" diff --git a/core/src/core.cpp b/core/src/core.cpp index 6b3c407..025e1a4 100644 --- a/core/src/core.cpp +++ b/core/src/core.cpp @@ -100,11 +100,13 @@ int sdrpp_main() { glfwMakeContextCurrent(window); glfwSwapInterval(1); // Enable vsync +#if (GLFW_VERSION_MAJOR == 3) && (GLFW_VERSION_MINOR >= 3) if (maximized) { glfwMaximizeWindow(window); } glfwSetWindowMaximizeCallback(window, maximized_callback); +#endif // Load app icon GLFWimage icons[10]; @@ -265,4 +267,4 @@ int sdrpp_main() { glfwTerminate(); return 0; -} \ No newline at end of file +} diff --git a/core/src/dsp/block.h b/core/src/dsp/block.h index 4a301f7..111636c 100644 --- a/core/src/dsp/block.h +++ b/core/src/dsp/block.h @@ -1,7 +1,7 @@ #pragma once #include #include -#include +#include namespace dsp { template diff --git a/core/src/dsp/math.h b/core/src/dsp/math.h index e8fdbdc..0347378 100644 --- a/core/src/dsp/math.h +++ b/core/src/dsp/math.h @@ -2,7 +2,7 @@ #include #include #include -#include +#include #ifndef M_PI #define M_PI 3.1415926535f diff --git a/core/src/dsp/source.h b/core/src/dsp/source.h index 5130abb..1508372 100644 --- a/core/src/dsp/source.h +++ b/core/src/dsp/source.h @@ -2,7 +2,6 @@ #include #include #include -#include #include namespace dsp { diff --git a/soapy/CMakeLists.txt b/soapy/CMakeLists.txt index 19c3348..4522c8c 100644 --- a/soapy/CMakeLists.txt +++ b/soapy/CMakeLists.txt @@ -3,12 +3,6 @@ project(soapy) if (MSVC) set(CMAKE_CXX_FLAGS "-O2 /std:c++17") - - # Lib path - target_link_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/lib/") - - # Misc headers - target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/") else() set(CMAKE_CXX_FLAGS "-O3 -std=c++17 -fpermissive") endif (MSVC) @@ -19,9 +13,18 @@ add_library(soapy SHARED ${SRC}) target_link_libraries(soapy PRIVATE sdrpp_core) set_target_properties(soapy PROPERTIES PREFIX "") -target_link_libraries(soapy PUBLIC SoapySDR) +if (MSVC) + # Lib path + target_link_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/lib/") -if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - target_include_directories(soapy PUBLIC /usr/local/opt/soapysdr/include) - target_link_directories(soapy PUBLIC /usr/local/opt/soapysdr/lib) -endif () + # Misc headers + target_include_directories(sdrpp_core PUBLIC "C:/Program Files/PothosSDR/include/") +else (MSVC) + find_package(PkgConfig) + + pkg_check_modules(SOAPY REQUIRED SoapySDR) + + target_include_directories(soapy PUBLIC ${SOAPY_INCLUDE_DIRS}) + target_link_directories(soapy PUBLIC ${SOAPY_LIBRARY_DIRS}) + target_link_libraries(soapy PUBLIC ${SOAPY_LIBRARIES}) +endif (MSVC) \ No newline at end of file