project(kradio5 CXX)

cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
cmake_policy(SET CMP0063 NEW)
cmake_policy(SET CMP0071 NEW)
cmake_policy(SET CMP0054 NEW)

ENABLE_LANGUAGE(C CXX)

# Locate extra-cmake-modules version 0.0.11 and make it a required package
find_package(ECM 5.10.0 REQUIRED NO_MODULE)

# Set value of CMAKE_MODULE_PATH variable where cmake will search for modules
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})

# include KF5 directories
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings)
include(FeatureSummary)
include(ECMInstallIcons)

include (FindPkgConfig)
include (FindBoost)

list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

SET(KRADIO_VERSION "5.0.0-beta1")

MESSAGE(STATUS "Compiling KRadio5-${KRADIO_VERSION}")



########################################################################
#       Check if libboost is available                                 #
########################################################################

find_package( Boost 1.55.0 REQUIRED)

########################################################################
#       KDE/QT Libs                                                    #
########################################################################

# Locate Qt5, make it required package and use QtWidgets and QtCore modules
find_package(Qt5 REQUIRED COMPONENTS Widgets Core Multimedia )

# Locate KF5, make it required package 
find_package(KF5 REQUIRED COMPONENTS  CoreAddons XmlGui I18n KIO WindowSystem WidgetsAddons KDELibs4Support )


########################################################################

find_package(Gettext)
if(NOT GETTEXT_MSGFMT_EXECUTABLE)
    message(STATUS "msgfmt not found. Translations will *not* be installed")
endif()
include(MacroProcessPoFiles)

########################################################################

ADD_DEFINITIONS (
    -DKRADIO_VERSION="${KRADIO_VERSION}"
    -DQT_STRICT_ITERATORS
    -DQT_NO_CAST_FROM_BYTEARRAY
    -DQT_USE_QSTRINGBUILDER
    -DQT_USE_FAST_OPERATOR_PLUS
    -DQT_NO_URL_CAST_FROM_STRING
    -DQT_NO_CAST_TO_ASCII
    -Wall
    -Wextra    
)

option(WITH_KRADIO_FIXMES "Enable FIXME warnings" OFF)
IF(WITH_KRADIO_FIXMES)
    ADD_DEFINITIONS( -DKRADIO_ENABLE_FIXMES )
ENDIF(WITH_KRADIO_FIXMES)

option(WITH_KRADIO_PROFILERS "Enable the runtime profilers" OFF)
if(WITH_KRADIO_PROFILERS)
    add_definitions(-DKRADIO_ENABLE_PROFILERS)
endif()

INCLUDE_DIRECTORIES(
    ${Boost_INCLUDE_DIRS}
    ${CMAKE_CURRENT_BINARY_DIR}/src
    ${CMAKE_CURRENT_SOURCE_DIR}/src
    ${CMAKE_CURRENT_SOURCE_DIR}/interfaces
    ${CMAKE_CURRENT_SOURCE_DIR}/radiostations
)

SET(INSTALL_TARGETS_DEFAULT_ARGS LIBRARY DESTINATION "${LIB_INSTALL_DIR}/kradio5/plugins")





ADD_SUBDIRECTORY(icons)
ADD_SUBDIRECTORY(plugins)
ADD_SUBDIRECTORY(presets)
ADD_SUBDIRECTORY(po)
ADD_SUBDIRECTORY(convert-presets)

########################################################################
#     The lines below only affect the executable, no plugins!          #
########################################################################

file(GLOB kradio_radiostation_sources
    ${CMAKE_CURRENT_SOURCE_DIR}/radiostations/*.cpp
)

file(GLOB kradio_interfaces_sources
    ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/*_interfaces.cpp
)

file(GLOB kradio_main_sources
    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp
)


file(GLOB kradio5_UIs
    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.ui
    ${CMAKE_CURRENT_SOURCE_DIR}/radiostations/*.ui
    ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/*.ui
)

ki18n_wrap_ui(kradio_main_sources
    ${kradio5_UIs}
)

add_executable(kradio5
    ${kradio_interfaces_sources}
    ${kradio_radiostation_sources}
    ${kradio_main_sources}
)

SET_TARGET_PROPERTIES(kradio5
    PROPERTIES
    LINK_FLAGS    " -Wl,--export-dynamic "
)

TARGET_LINK_LIBRARIES(kradio5
    Qt5::Core
    Qt5::Widgets
    Qt5::Multimedia
    KF5::XmlGui
    KF5::CoreAddons
    KF5::KIOWidgets
    KF5::KIOCore
    KF5::WidgetsAddons
    KF5::I18n
    KF5::WindowSystem
    KF5::KDELibs4Support
)

INSTALL(TARGETS kradio5)

SET(documentation_files
    README
    README.PVR
    README.your-help-is-wanted
    ChangeLog
    AUTHORS
    COPYING
    FAQ
)

INSTALL(
	FILES       ${documentation_files}
    DESTINATION ${SHARE_INSTALL_PREFIX}/doc/kradio5/
)

INSTALL(
    FILES       kradio5.desktop
    DESTINATION ${XDG_APPS_INSTALL_DIR}
)


feature_summary(WHAT ALL)

