Commit eb6cf53
Changed files (2)
.gitignore
@@ -1,5 +1,4 @@
.vscode
bin
build
-thirdparty/agc
-thirdparty/webrtc-audio-processing
\ No newline at end of file
+thirdparty
CMakeLists.txt
@@ -15,9 +15,41 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
add_compile_options(/W4)
endif()
-add_executable(audioProcessor src/main.cpp src/audioProcessor.cpp)
-add_definitions(-DWEBRTC_APM_DEBUG_DUMP=0)
+find_program(MESON_EXECUTABLE meson REQUIRED)
+find_program(NINJA_EXECUTABLE ninja REQUIRED)
-target_include_directories(audioProcessor PRIVATE src/ thirdparty/agc/include thirdparty/agc/include/webrtc thirdparty/agc/include/webrtc/modules/audio_processing)
-target_link_directories(audioProcessor PRIVATE thirdparty/agc/lib)
+include(ExternalProject)
+
+set(AGC_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/agc")
+
+ExternalProject_Add(webrtc_apm
+ GIT_REPOSITORY https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing.git
+ PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/webrtc-apm"
+ CONFIGURE_COMMAND ${MESON_EXECUTABLE} setup <BINARY_DIR> <SOURCE_DIR> -Dprefix=${AGC_PREFIX} --buildtype=release
+ BUILD_COMMAND ${NINJA_EXECUTABLE} -C <BINARY_DIR>
+ INSTALL_COMMAND ${NINJA_EXECUTABLE} -C <BINARY_DIR> install
+ BUILD_BYPRODUCTS "${AGC_PREFIX}/lib/pkgconfig/webrtc-audio-processing-2.pc"
+)
+
+ExternalProject_Get_Property(webrtc_apm SOURCE_DIR)
+
+file(GLOB ABSL_DIR "${SOURCE_DIR}/subprojects/abseil-cpp-*")
+
+add_executable(audioProcessor
+ src/main.cpp
+ src/audioProcessor.cpp
+)
+
+add_dependencies(audioProcessor webrtc_apm)
+
+target_compile_definitions(audioProcessor PRIVATE WEBRTC_APM_DEBUG_DUMP=0)
+
+target_include_directories(audioProcessor PRIVATE
+ src/
+ "${SOURCE_DIR}"
+ "${SOURCE_DIR}/webrtc"
+ "${SOURCE_DIR}/webrtc/modules/audio_processing"
+)
+
+target_link_directories(audioProcessor PRIVATE "${AGC_PREFIX}/lib")
target_link_libraries(audioProcessor PRIVATE webrtc-audio-processing-2)