
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)
PROJECT(sayonara)

INCLUDE(FindPkgConfig)
INCLUDE(compiler.cmake)

IF(WIN32)
	PKG_CHECK_MODULES(GIO gio-windows-2.0 REQUIRED)
ENDIF()

PKG_CHECK_MODULES(TAGLIB taglib>=1.6 REQUIRED)
PKG_CHECK_MODULES(GLIB glib-2.0 REQUIRED)
PKG_CHECK_MODULES(GOBJECT gobject-2.0 REQUIRED)
PKG_CHECK_MODULES(GSTREAMER gstreamer-1.0 REQUIRED)
PKG_CHECK_MODULES(GSTREAMER_BASE gstreamer-base-1.0 REQUIRED)
PKG_CHECK_MODULES(GSTREAMER_BASE_APP gstreamer-app-1.0 REQUIRED)
PKG_CHECK_MODULES(MTP libmtp)



SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)

IF( NOT DEFINED CMAKE_BUILD_TYPE OR NOT CMAKE_BUILD_TYPE ) 
	MESSAGE("Use standard build type \"Release\"")
	SET(CMAKE_BUILD_TYPE "Release")
ENDIF()

FIND_PACKAGE(Qt5 COMPONENTS Core Widgets Sql Network DBus Network Xml REQUIRED)
FIND_PACKAGE(Qt5LinguistTools REQUIRED)

SET(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTOUIC ON)
SET(CMAKE_INCLUDE_CURRENT_DIR ON)

INCLUDE_DIRECTORIES(${Qt5Core_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Widgets_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Xml_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Sql_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5DBus_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Qt5Network_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${GSTREAMER_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${GLIB_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${GOBJECT_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${GSTREAMER_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${GSTREAMER_BASE_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${TAGLIB_INCLUDE_DIRS})

INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src)
INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/src)

ADD_DEFINITIONS(${Qt5Core_DEFINITIONS})
ADD_DEFINITIONS(${QT_DEFINITIONS})
ADD_DEFINITIONS(-DLIB_INSTALL_DIR="${CMAKE_INSTALL_PREFIX}/lib/sayonara")


IF(WIN32)
    MESSAGE("Windows: host Will compile without dbus and shutdown support")

ELSE()
    MESSAGE("No Windows: Will compile with dbus and shutdown support")
    ADD_DEFINITIONS(-DWITH_DBUS)
    SET(WIN32 0)
ENDIF()


IF(${MTP_FOUND})
    MESSAGE("Will compile with MTP support")
    ADD_DEFINITIONS(-DWITH_MTP)
ELSE()
    MESSAGE("Will compile without MTP support")
ENDIF()


LINK_DIRECTORIES(${GSTREAMER_LIBRARY_DIRS})

IF(WIN32)
	LINK_DIRECTORIES(${GIO_LIBRARY_DIRS})
ENDIF()


ADD_SUBDIRECTORY(Application)
ADD_SUBDIRECTORY(GUI)
ADD_SUBDIRECTORY(Helper)
ADD_SUBDIRECTORY(Database)
ADD_SUBDIRECTORY(Interfaces)
ADD_SUBDIRECTORY(Components)
ADD_SUBDIRECTORY(Languages)
ADD_SUBDIRECTORY(3rdParty)

SET(SOURCES
    Main.cpp
)

ADD_EXECUTABLE(${PROJECT_NAME} ${SOURCES} ${QM_FILES})

#FILE(GLOB_RECURSE HeaderFiles "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
#ADD_CUSTOM_TARGET(headers SOURCES ${HeaderFiles})

IF(WIN32)
	SET(OS_LIBRARIES
	    api-ms-win-core-winrt-l1-1-0
	    api-ms-win-core-winrt-string-l1-1-0
	    ${GIO_LIBRARIES}
	)
ENDIF()


TARGET_LINK_LIBRARIES(${PROJECT_NAME}
    say_application
    say_gui_resources
    say_lang
    ${OS_LIBRARIES}
)


IF(WIN32)
	INSTALL(TARGETS ${PROJECT_NAME} DESTINATION .)
ELSE()
	INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin)
ENDIF()


