noisicaa/noisicaa/audioproc/engine/CMakeLists.txt

192 lines
7.0 KiB
CMake

# @begin:license
#
# Copyright (c) 2015-2019, Benjamin Niemann <pink@odahoda.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# @end:license
add_python_package(
backend.pyi
backend_test.py
block_context.pyi
buffers.pyi
buffer_arena.pyi
engine_perftest.py
engine_test.py
graph.py
message_queue.pyi
player.pyi
plugin_host.pyi
plugin_host_process.py
plugin_host_process_test.py
plugin_host_test.py
plugin_host_ladspa_test.py
plugin_host_lv2_test.py
plugin_ui_host.pyi
processor.pyi
processor_test.py
processor_csound_test.py
processor_plugin_test.py
processor_sound_file_test.py
profile.pyi
realm.pyi
realm_test.py
spec.pyi
)
set(LIB_SRCS
alsa_device_manager.cpp
backend.cpp
backend_null.cpp
backend_portaudio.cpp
backend_renderer.cpp
block_context.cpp
buffer_arena.cpp
buffers.cpp
control_value.cpp
csound_util.cpp
double_buffered_state_manager.cpp
engine.cpp
fluidsynth_util.cpp
misc.cpp
message_queue.cpp
opcodes.cpp
player.cpp
plugin_host.pb.cc
plugin_host.cpp
plugin_host_lv2.cpp
plugin_host_ladspa.cpp
plugin_ui_host.cpp
plugin_ui_host_lv2.cpp
processor.cpp
processor_null.cpp
processor_csound_base.cpp
processor_csound.cpp
processor_plugin.cpp
processor_plugin.pb.cc
processor_sound_file.cpp
profile.cpp
realtime.cpp
spec.cpp
realm.cpp
)
set(TEST_SRCS
buffers_test.pyx
opcodes_test.pyx
player_test.pyx
spec_test.pyx
)
py_proto(plugin_host.proto)
cpp_proto(plugin_host.proto)
py_proto(processor_plugin.proto)
cpp_proto(processor_plugin.proto)
add_library(noisicaa-audioproc-engine SHARED ${LIB_SRCS})
target_compile_options(noisicaa-audioproc-engine PRIVATE -fPIC -std=c++11 -Wall -Werror -pedantic -DHAVE_PTHREAD_SPIN_LOCK)
target_link_libraries(noisicaa-audioproc-engine PRIVATE noisicaa-core)
target_link_libraries(noisicaa-audioproc-engine PRIVATE noisicaa-host_system)
target_link_libraries(noisicaa-audioproc-engine PRIVATE noisicaa-lv2)
target_link_libraries(noisicaa-audioproc-engine PRIVATE noisicaa-node_db)
target_link_libraries(noisicaa-audioproc-engine PRIVATE noisicaa-audioproc-public)
target_link_libraries(noisicaa-audioproc-engine PRIVATE pthread)
target_link_libraries(noisicaa-audioproc-engine PRIVATE rt)
target_link_libraries(noisicaa-audioproc-engine PRIVATE profiler)
target_link_libraries(noisicaa-audioproc-engine PRIVATE rtcheck)
target_link_libraries(noisicaa-audioproc-engine PRIVATE noisicaa-builtin_nodes-processors)
target_include_directories(noisicaa-audioproc-engine PUBLIC ${LIBLILV_INCLUDE_DIRS})
target_link_libraries(noisicaa-audioproc-engine PRIVATE ${LIBLILV_LIBRARIES})
target_include_directories(noisicaa-audioproc-engine PRIVATE ${LIBCSOUND_INCLUDE_DIRS})
target_link_libraries(noisicaa-audioproc-engine PRIVATE ${LIBCSOUND_LIBRARIES})
target_include_directories(noisicaa-audioproc-engine PRIVATE ${LIBFLUIDSYNTH_INCLUDE_DIRS})
target_link_libraries(noisicaa-audioproc-engine PRIVATE ${LIBFLUIDSYNTH_LIBRARIES})
target_include_directories(noisicaa-audioproc-engine PRIVATE ${LIBSNDFILE_INCLUDE_DIRS})
target_link_libraries(noisicaa-audioproc-engine PRIVATE ${LIBSNDFILE_LIBRARIES})
target_include_directories(noisicaa-audioproc-engine PRIVATE ${LIBAVUTIL_INCLUDE_DIRS})
target_link_libraries(noisicaa-audioproc-engine PRIVATE ${LIBAVUTIL_LIBRARIES})
target_include_directories(noisicaa-audioproc-engine PRIVATE ${LIBSWRESAMPLE_INCLUDE_DIRS})
target_link_libraries(noisicaa-audioproc-engine PRIVATE ${LIBSWRESAMPLE_LIBRARIES})
target_include_directories(noisicaa-audioproc-engine PRIVATE ${LIBPROTOBUF_INCLUDE_DIRS})
target_link_libraries(noisicaa-audioproc-engine PRIVATE ${LIBPROTOBUF_LIBRARIES})
target_include_directories(noisicaa-audioproc-engine PRIVATE ${LIBPORTAUDIO_INCLUDE_DIRS})
target_link_libraries(noisicaa-audioproc-engine PRIVATE ${LIBPORTAUDIO_LIBRARIES})
target_include_directories(noisicaa-audioproc-engine PUBLIC ${LIBSUIL_INCLUDE_DIRS})
target_link_libraries(noisicaa-audioproc-engine PRIVATE ${LIBSUIL_LIBRARIES})
target_include_directories(noisicaa-audioproc-engine PRIVATE ${GTK2_INCLUDE_DIRS})
target_link_libraries(noisicaa-audioproc-engine PRIVATE ${GTK2_LIBRARIES})
add_cython_module(spec CXX)
target_link_libraries(${spec.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(buffer_arena CXX)
target_link_libraries(${buffer_arena.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(buffers CXX)
target_link_libraries(${buffers.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(control_value CXX)
target_link_libraries(${control_value.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(processor CXX)
target_link_libraries(${processor.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(block_context CXX)
target_link_libraries(${block_context.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(backend CXX)
target_link_libraries(${backend.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(engine CXX)
target_link_libraries(${engine.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(message_queue CXX)
target_link_libraries(${message_queue.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(plugin_host CXX)
target_link_libraries(${plugin_host.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(plugin_ui_host CXX)
target_link_libraries(${plugin_ui_host.so} PRIVATE noisicaa-audioproc-engine)
target_link_libraries(${plugin_ui_host.so} PRIVATE noisicaa-core)
add_cython_module(realm CXX)
target_link_libraries(${realm.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(player CXX)
target_link_libraries(${player.so} PRIVATE noisicaa-audioproc-engine)
add_cython_module(profile CXX)
target_link_libraries(${profile.so} PRIVATE noisicaa-audioproc-engine)
foreach(TEST_SRC ${TEST_SRCS})
string(REGEX REPLACE "\.pyx$" "" TEST_MOD ${TEST_SRC})
add_cython_module(${TEST_MOD} CXX)
target_link_libraries(${${TEST_MOD}.so} PRIVATE noisicaa-audioproc-engine)
target_include_directories(${${TEST_MOD}.so} PRIVATE ${LIBLILV_INCLUDE_DIRS})
target_link_libraries(${${TEST_MOD}.so} PRIVATE ${LIBLILV_LIBRARIES})
endforeach(TEST_SRC)
add_library(rtcheck SHARED rtcheck.c)
add_custom_target(librtcheck_preload ALL DEPENDS librtcheck_preload.so)
add_custom_command(
OUTPUT librtcheck_preload.so
COMMAND gcc -std=c11 -Wall -Werror -pedantic ${CMAKE_CURRENT_LIST_DIR}/rtcheck_preload.c -fPIC -shared -o librtcheck_preload.so -lc -ldl -L${CMAKE_CURRENT_BINARY_DIR} -lrtcheck
DEPENDS ${CMAKE_CURRENT_LIST_DIR}/rtcheck_preload.c rtcheck
)