include( FindPkgConfig )
include( CheckIncludeFile )

option( TMIX_WITH_PULSE "Enable PulseAudio backend" ON )
option( TMIX_WITH_ALSA  "Enable ALSA backend"       ON )
option( TMIX_WITH_OSS   "Enable OSS backend"        ON )

if( TMIX_WITH_PULSE )
    pkg_check_modules( PULSE libpulse )
endif()
if( TMIX_WITH_ALSA )
    pkg_check_modules( ALSA alsa )
endif()
if( TMIX_WITH_OSS )
    check_include_file( "sys/soundcard.h" HAVE_OSS_HEADER )
endif()

if( NOT PULSE_FOUND AND NOT ALSA_FOUND AND NOT HAVE_OSS_HEADER )
    message( FATAL_ERROR "No audio backend found (need libpulse, libasound, or sys/soundcard.h)" )
endif()

set( TMIX_SOURCES
    main.cpp
    model/audiodevice.cpp
    ui/backendcontroller.cpp
    ui/balanceknob.cpp
    ui/kledbutton.cpp
    ui/preferencesdlg.cpp
    ui/tmixapp.cpp
)

set( TMIX_LIBS
    tqt-mt
    tdecore
    tdeui
    DCOP
)

set( TMIX_INCLUDES
    ${CMAKE_BINARY_DIR}
    ${CMAKE_CURRENT_BINARY_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${TDE_INCLUDE_DIR}
    ${TQT_INCLUDE_DIRS}
)

if( PULSE_FOUND )
    add_definitions( -DWITH_PULSE )
    list( APPEND TMIX_INCLUDES ${PULSE_INCLUDE_DIRS} )
    list( APPEND TMIX_LIBS     ${PULSE_LIBRARIES} )
    list( APPEND TMIX_SOURCES
        model/pulsedevice.cpp
        model/pulsemodel.cpp
        ui/levelmeter.cpp
        ui/devicewidget.cpp
        ui/devicespage.cpp
        ui/tmixpopup.cpp
        ui/tmixtray.cpp
        ui/mixerwindow.cpp
    )
endif()

if( ALSA_FOUND )
    add_definitions( -DWITH_ALSA )
    list( APPEND TMIX_INCLUDES ${ALSA_INCLUDE_DIRS} )
    list( APPEND TMIX_LIBS     ${ALSA_LIBRARIES} )
    list( APPEND TMIX_SOURCES
        model/alsadevice.cpp
        model/alsamodel.cpp
        ui/alsa/alsadevicewidget.cpp
        ui/alsa/alsadevicespage.cpp
        ui/alsa/alsamixerwindow.cpp
        ui/alsa/alsapopup.cpp
        ui/alsa/alsatray.cpp
    )
endif()

if( HAVE_OSS_HEADER )
    add_definitions( -DWITH_OSS )
    list( APPEND TMIX_SOURCES
        model/ossdevice.cpp
        model/ossmodel.cpp
        ui/oss/ossdevicewidget.cpp
        ui/oss/ossmixerwindow.cpp
        ui/oss/osspopup.cpp
        ui/oss/osstray.cpp
    )
endif()

include_directories( ${TMIX_INCLUDES} )

link_directories(
    ${TQT_LIBRARY_DIRS}
    ${TDE_LIB_DIR}
)

tde_add_executable( tmix AUTOMOC
    SOURCES  ${TMIX_SOURCES}
    LINK     ${TMIX_LIBS}
    DESTINATION ${BIN_INSTALL_DIR}
)
