cmake_minimum_required(VERSION 2.4)
if(COMMAND cmake_policy)
    cmake_policy(SET CMP0005 OLD)
endif(COMMAND cmake_policy)

project(DVSWITCH CXX C)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake)
include(FindPkgConfig)
pkg_check_modules(ALSA REQUIRED alsa)
pkg_check_modules(GTKMM REQUIRED gtkmm-2.4)
pkg_check_modules(LIBAVCODEC REQUIRED libavcodec)
pkg_check_modules(LIBAVUTIL REQUIRED libavutil)

find_library(BOOST_THREAD_LIBRARIES
	     NAMES boost_thread-mt boost_thread
	     NO_SYSTEM_ENVIRONMENT_PATH)
if(NOT BOOST_THREAD_LIBRARIES)
    message(FATAL_ERROR "Could not find Boost.Thread library")
endif(NOT BOOST_THREAD_LIBRARIES)

# Cope with recent move of ffmpeg headers into subdirectories
set(LIBAVCODEC_INCLUDE_DIRS ${LIBAVCODEC_INCLUDE_DIRS} ${LIBAVCODEC_INCLUDEDIR}/libavcodec)

set(prefix /usr/local
    CACHE STRING "Installation prefix")
set(bindir ${prefix}/bin
    CACHE STRING "Executable installation directory")
set(sharedir ${prefix}/share
    CACHE STRING "Shared data installation directory")
set(docdir ${sharedir}/doc
    CACHE STRING "Documentation installation directory")
set(mandir ${sharedir}/man
    CACHE STRING "Manual page installation directory")

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98 -Wall -Wextra")
add_definitions(-D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_POSIX_C_SOURCE)
include_directories(src)

# Suppress bogus warnings (GCC PR7302)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-non-virtual-dtor")

# Suppress deprecation warnings from libavcodec headers about themselves
if(LIBAVCODEC_VERSION MATCHES "^51\\.")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
endif(LIBAVCODEC_VERSION MATCHES "^51\\.")

# Remove bogus -fPIC (Debian bug #478404)
set(CMAKE_SHARED_LIBRARY_C_FLAGS "")
set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "")

add_subdirectory(data)
add_subdirectory(doc)
add_subdirectory(src)
add_subdirectory(tests)

install(FILES ChangeLog
        DESTINATION ${docdir}/dvswitch)
