
CMAKE_MINIMUM_REQUIRED ( VERSION 2.6 )


INCLUDE ( CheckIncludeFiles )

CONFIGURE_FILE (
	${CMAKE_CURRENT_SOURCE_DIR}/config.hpp.cmake
	${CMAKE_CURRENT_BINARY_DIR}/config.hpp )



SET ( SRC_GENERIC
)


SET ( SRC_GUI

	wdg/shared_pixmaps_set_meta.cpp
	wdg/shared_pixmaps_set.cpp
	wdg/shared_pixmaps_set_painter.cpp
	wdg/shared_pixmaps_set_buffer.cpp
	wdg/shared_pixmaps_set_hub.cpp

	wdg/static_tree.cpp
	wdg/static_tree_model.cpp

	wdg/covered_input.cpp
	wdg/covered_spinbox.cpp
	wdg/label_elide.cpp
	wdg/label_width.cpp
	wdg/text_browser.cpp
	wdg/tree_view_kv.cpp
	wdg/scroll_area_horizontal.cpp
	wdg/balloon_widget.cpp

	wdg/pixmaps_painter.cpp
	wdg/primitive_painter.cpp
	wdg/color_methods.cpp

	wdg/ds_check_button_pixmaps_meta.cpp
	wdg/ds_check_button_painter.cpp
	wdg/ds_check_button_painter_basic.cpp
	wdg/ds_check_button.cpp

	wdg/uint_mapper.cpp
	wdg/cubic_curve.cpp
	wdg/ds_slider_pixmaps_meta.cpp
	wdg/ds_slider_painter.cpp
	wdg/ds_slider_painter_basic.cpp
	wdg/ds_slider.cpp

	#slider_test.cpp
	#slider_test_dialog.cpp

	wdg/pad_focus_info.cpp
	wdg/pass_events.cpp

	wdg/layout_weights.cpp
	wdg/equal_columns_layout_group.cpp
	wdg/equal_columns_layout.cpp
	wdg/fill_columns_layout.cpp

	wdg/sliders_pad_proxy.cpp
	wdg/sliders_pad_proxy_slider.cpp
	wdg/sliders_pad_proxy_switch.cpp
	wdg/sliders_pad_proxies_column.cpp
	wdg/sliders_pad_proxies_group.cpp
	wdg/sliders_pad_layout.cpp
	wdg/sliders_pad_header_vars.cpp
	wdg/sliders_pad_header.cpp
	wdg/sliders_pad.cpp

	wdg/switches_area.cpp
	wdg/switches_pad_proxy.cpp
	wdg/switches_pad_proxy_enum.cpp
	wdg/switches_pad_proxy_switch.cpp
	wdg/switches_pad_proxies_group.cpp
	wdg/switches_pad_widgets.cpp
	wdg/switches_pad_widgets_group.cpp
	wdg/switches_pad.cpp

	qsnd/alsa.cpp
	qsnd/mixer_style.cpp

	qsnd/snd_ctl_info.cpp
	qsnd/snd_ctl_info_model.cpp

	qsnd/snd_mixer_ctl_data.cpp
	qsnd/snd_mixer_ctl_elem.cpp
	qsnd/snd_mixer_ctl.cpp
	qsnd/snd_mixer_simple_elem.cpp
	qsnd/snd_mixer_simple.cpp
	qsnd/snd_mixer_simple_single.cpp

	qsnd/snd_card_info.cpp
	qsnd/snd_control_address.cpp
	qsnd/snd_pcm_device_info.cpp

	qsnd/alsa_config_model.cpp
	qsnd/alsa_config_view_settings.cpp
	qsnd/alsa_config_view.cpp
	qsnd/controls_model.cpp
	qsnd/controls_view.cpp

	qsnd/simple_mixer_settings.cpp
	qsnd/mixer_events.cpp
	qsnd/mixer_ui_state.cpp
	qsnd/mixer_separation_info.cpp

	qsnd/mixer_ctl_tree_model.cpp
	qsnd/mixer_ctl_table_model.cpp
	qsnd/mixer_ctl_proxy.cpp
	qsnd/mixer_ctl_proxy_switch.cpp
	qsnd/mixer_ctl_proxy_integer.cpp
	qsnd/mixer_ctl_proxy_enum.cpp
	qsnd/mixer_ctl.cpp

	qsnd/mixer_sliders_proxy_slider.cpp
	qsnd/mixer_sliders_proxy_switch.cpp
	qsnd/mixer_sliders_proxies_column.cpp
	qsnd/mixer_sliders_proxies_group.cpp
	qsnd/mixer_sliders_status_bar.cpp
	qsnd/mixer_sliders.cpp

	qsnd/mixer_switches_proxy_enum.cpp
	qsnd/mixer_switches_proxy_switch.cpp
	qsnd/mixer_switches_proxies_group.cpp
	qsnd/mixer_switches.cpp


	single_application.cpp
	side_interface.cpp

	mini_mixer_settings.cpp
	mixer_settings.cpp

	dialog_info.cpp
	dialog_settings.cpp
	dialog_alsa_config.cpp

	message_widget.cpp
	main_view.cpp
	main_view_mixer_simple.cpp
	main_view_mixer_ctl.cpp
	main_view_info.cpp

	mini_mixer.cpp
	main_mixer_window.cpp

	unix_signal_handler.cpp
	init_globals.cpp
	cmd_parse.cpp
	main.cpp
)


SET ( SRC_GUI_HEADER_MOC

	wdg/shared_pixmaps_set_buffer.hpp

	wdg/covered_input.hpp
	wdg/covered_spinbox.hpp
	wdg/tree_view_kv.hpp
	wdg/ds_check_button.hpp
	wdg/ds_slider.hpp
	wdg/balloon_widget.hpp

	#slider_test.hpp
	#slider_test_dialog.hpp

	wdg/sliders_pad_proxy.hpp
	wdg/sliders_pad_proxy_slider.hpp
	wdg/sliders_pad_proxy_switch.hpp
	wdg/sliders_pad_proxies_column.hpp
	wdg/sliders_pad_proxies_group.hpp
	wdg/sliders_pad_header.hpp
	wdg/sliders_pad.hpp

	wdg/switches_pad_proxy.hpp
	wdg/switches_pad_proxy_enum.hpp
	wdg/switches_pad_proxy_switch.hpp
	wdg/switches_pad_proxies_group.hpp
	wdg/switches_pad.hpp

	qsnd/snd_ctl_info.hpp
	qsnd/snd_ctl_info_model.hpp

	qsnd/snd_mixer_ctl_elem.hpp
	qsnd/snd_mixer_ctl.hpp
	qsnd/snd_mixer_simple_elem.hpp
	qsnd/snd_mixer_simple.hpp
	qsnd/snd_mixer_simple_single.hpp

	qsnd/alsa_config_model.hpp
	qsnd/alsa_config_view.hpp
	qsnd/controls_model.hpp
	qsnd/controls_view.hpp

	qsnd/mixer_ctl_tree_model.hpp
	qsnd/mixer_ctl_table_model.hpp
	qsnd/mixer_ctl_proxy.hpp
	qsnd/mixer_ctl_proxy_switch.hpp
	qsnd/mixer_ctl_proxy_integer.hpp
	qsnd/mixer_ctl_proxy_enum.hpp
	qsnd/mixer_ctl.hpp

	qsnd/mixer_sliders_proxy_slider.hpp
	qsnd/mixer_sliders_proxy_switch.hpp
	qsnd/mixer_sliders_proxies_column.hpp
	qsnd/mixer_sliders_proxies_group.hpp
	qsnd/mixer_sliders_status_bar.hpp
	qsnd/mixer_sliders.hpp

	qsnd/mixer_switches_proxy_enum.hpp
	qsnd/mixer_switches_proxy_switch.hpp
	qsnd/mixer_switches_proxies_group.hpp
	qsnd/mixer_switches.hpp

	single_application.hpp
	side_interface.hpp
	dialog_info.hpp
	dialog_settings.hpp
	dialog_alsa_config.hpp

	message_widget.hpp
	main_view.hpp
	main_view_mixer_simple.hpp
	main_view_mixer_ctl.hpp
	main_view_info.hpp

	mini_mixer.hpp
	main_mixer_window.hpp

	unix_signal_handler.hpp
)


SET ( SRC_EXTRA
#	extra/prober_overlay.cpp
#	extra/prober.cpp
)

SET ( SRC_EXTRA_HEADER_MOC
#	extra/prober_overlay.hpp
#	extra/prober.hpp
)


ADD_DEFINITIONS ( "-Wextra -Wunused -Wall" )

SET ( CMAKE_CXX_FLAGS_DEBUG "-O0 -g -DDEBUG -fno-inline" )
SET ( CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG" )


# QT stuff

SET ( QT_USE_QTCORE TRUE )
SET ( QT_USE_QTGUI TRUE )
SET ( QT_USE_QTNETWORK TRUE )

FIND_PACKAGE ( Qt4 4.6 REQUIRED )
FIND_PACKAGE ( ALSA REQUIRED )

INCLUDE ( ${QT_USE_FILE} )

QT4_WRAP_CPP ( SRC_GUI_MOC ${SRC_GUI_HEADER_MOC} )
QT4_WRAP_CPP ( SRC_EXTRA_MOC ${SRC_EXTRA_HEADER_MOC} )

INCLUDE_DIRECTORIES ( ${CMAKE_CURRENT_SOURCE_DIR} )
INCLUDE_DIRECTORIES ( ${CMAKE_CURRENT_BINARY_DIR} )
INCLUDE_DIRECTORIES ( ${ALSA_INCLUDE_DIR} )


ADD_EXECUTABLE (
	${PROGRAM_NAME}
	${SRC_GENERIC}
	${SRC_GUI}
	${SRC_GUI_MOC}
	${SRC_EXTRA}
	${SRC_EXTRA_MOC}
)

TARGET_LINK_LIBRARIES (
	${PROGRAM_NAME}
	${QT_LIBRARIES}
	${ALSA_LIBRARIES} )


# Installation

INSTALL (
	TARGETS ${PROGRAM_NAME} RUNTIME
	DESTINATION bin )
