main
6f8fc97 ยท 1 month ago 10 commits
 1cmake_minimum_required(VERSION 3.30)
 2project(audioProcessor
 3    VERSION 1.0.0
 4    DESCRIPTION "Audio Gain Controller using WebRTC - GainController2"
 5    LANGUAGES CXX
 6)
 7
 8set(CMAKE_CXX_STANDARD 20)
 9set(CMAKE_CXX_STANDARD_REQUIRED True)
10set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
11
12if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
13    add_compile_options(-Wall)
14elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
15    add_compile_options(/W4)
16endif()
17
18find_program(MESON_EXECUTABLE meson REQUIRED)
19find_program(NINJA_EXECUTABLE ninja REQUIRED)
20
21include(ExternalProject)
22
23set(AGC_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/agc")
24
25ExternalProject_Add(webrtc_apm
26    GIT_REPOSITORY https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing.git
27    PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/webrtc-apm"
28    CONFIGURE_COMMAND ${MESON_EXECUTABLE} setup <BINARY_DIR> <SOURCE_DIR> -Dprefix=${AGC_PREFIX} --buildtype=release
29    BUILD_COMMAND ${NINJA_EXECUTABLE} -C <BINARY_DIR>
30    INSTALL_COMMAND ${NINJA_EXECUTABLE} -C <BINARY_DIR> install
31    BUILD_BYPRODUCTS "${AGC_PREFIX}/lib/pkgconfig/webrtc-audio-processing-2.pc"
32)
33
34ExternalProject_Get_Property(webrtc_apm SOURCE_DIR)
35
36file(GLOB ABSL_DIR "${SOURCE_DIR}/subprojects/abseil-cpp-*")
37
38add_executable(audioProcessor
39    src/main.cpp
40    src/audioProcessor.cpp
41)
42
43add_dependencies(audioProcessor webrtc_apm)
44
45target_compile_definitions(audioProcessor PRIVATE WEBRTC_APM_DEBUG_DUMP=0)
46
47target_include_directories(audioProcessor PRIVATE
48    src/
49    "${SOURCE_DIR}"
50    "${SOURCE_DIR}/webrtc"
51    "${SOURCE_DIR}/webrtc/modules/audio_processing"
52		"${ABSL_DIR}"
53)
54
55target_link_directories(audioProcessor PRIVATE "${AGC_PREFIX}/lib")
56target_link_libraries(audioProcessor PRIVATE webrtc-audio-processing-2)