cmake_minimum_required(VERSION 3.5)

project(dep_example_apps)
set(CMAKE_CXX_STANDARD 11)

# 3rd party libraries
add_library(dep_example_third_party_includes INTERFACE)
target_include_directories(dep_example_third_party_includes INTERFACE 3p_include/)

# versions
add_library(dep_example_version STATIC
        version/versions.c)
target_include_directories(dep_example_version PUBLIC version/)

############################################################
# Loopback tool
############################################################

add_executable(dep_example_loopback
        dep_loopback/DanteLoopback.cpp
        )

target_link_libraries(dep_example_loopback
        dep_audio
        dep_example_version
        )
set_target_properties(dep_example_loopback PROPERTIES OUTPUT_NAME DepLoopback)

############################################################
# Timing diagnostic tool
############################################################

add_executable(dep_example_timing
        dep_timing_trace/DanteTimingTrace.cpp
        )
target_link_libraries(dep_example_timing
        dep_audio
        dep_example_version
        )
set_target_properties(dep_example_timing PROPERTIES OUTPUT_NAME DepTiming)

# Linux examples
if(DANTE_LINUX_EXAMPLES)

############################################################
# Alsa Device Library
############################################################

add_library(dep_example_alsa_device STATIC
        AlsaDevice/src/AlsaDevice.cpp
        )
target_include_directories(dep_example_alsa_device PUBLIC
        AlsaDevice/include
        )
target_link_libraries(dep_example_alsa_device PUBLIC
        alsalib
        dep_example_third_party_includes
        )

############################################################
# Metadata Header Tool
############################################################

add_executable(dep_example_info
        dep_info/dinfo.cpp
        )

target_link_libraries(dep_example_info
        dep_audio
        dep_example_version
        )
set_target_properties(dep_example_info PROPERTIES OUTPUT_NAME dinfo)

############################################################
# Playback Tool
############################################################

add_executable(dep_example_playback
        dep_play/dplay.cpp
        )
target_link_libraries(dep_example_playback
        dep_audio
        dep_example_third_party_includes
        dep_example_version
        )
set_target_properties(dep_example_playback PROPERTIES OUTPUT_NAME dplay)

############################################################
# Recording Tool
############################################################

add_executable(dep_example_record
        dep_record/drecord.cpp
        )
target_link_libraries(dep_example_record
        dep_audio
        dep_example_third_party_includes
        dep_example_version
        )
set_target_properties(dep_example_record PROPERTIES OUTPUT_NAME drecord)

############################################################
# Tone/Noise Generation Tool
############################################################

add_executable(dep_example_soundtest
        dep_test/dtest.cpp
        )
target_link_libraries(dep_example_soundtest
        dep_audio
        dep_example_third_party_includes
        dep_example_version
        )
set_target_properties(dep_example_soundtest PROPERTIES OUTPUT_NAME dtest)

############################################################
# Alsa Audio Input/Output Tool
############################################################

add_executable(dep_example_alsa_bridge
        dep_alsa_bridge/DanteAlsaBridge.cpp
        )
target_link_libraries(dep_example_alsa_bridge
        dep_audio
        dep_example_alsa_device
        dep_example_third_party_includes
        dep_example_version
        )
set_target_properties(dep_example_alsa_bridge PROPERTIES OUTPUT_NAME DepAlsaBridge)

############################################################
# Dante Soundcard Tool
############################################################

set(SOUNDCARD_SHARED_OBJECT_NAME "dsoundcard.so")
set(SOUNDCARD_SHARED_OBJECT_NAME ${SOUNDCARD_SHARED_OBJECT_NAME} PARENT_SCOPE)
add_executable(dep_example_soundcard
        dep_soundcard/src/dsoundcard.cpp
        dep_soundcard/src/dsoundcard_intermediatebuffer.cpp
        dep_soundcard/src/dsoundcard_logging.cpp
        dep_soundcard/src/alsa_plugin.cpp
        )
target_link_libraries(dep_example_soundcard
        dep_audio
        dep_example_alsa_device
        dep_example_third_party_includes
        dep_example_version
        )
target_include_directories(dep_example_soundcard PUBLIC
    ${CMAKE_CURRENT_LIST_DIR}/dep_soundcard/include
    )
set_target_properties(dep_example_soundcard PROPERTIES OUTPUT_NAME ${SOUNDCARD_SHARED_OBJECT_NAME})
target_compile_options(dep_example_soundcard PUBLIC -fPIC -DPIC)
target_link_options(dep_example_soundcard PUBLIC -shared -fPIC -DPIC)



endif()
