project(libQtBamf)
cmake_minimum_required(VERSION 2.8)

# Dependencies
include(FindPkgConfig)
find_package(Qt4 REQUIRED)

# Build flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wall -std=c++0x")

# Sources
## QtBamf
set(QtBamf_SRCS
    bamf-application.cpp
    bamf-application-proxy.cpp
    bamf-control.cpp
    bamf-control-proxy.cpp
    bamf-factory.cpp
    bamf-indicator.cpp
    bamf-indicator-proxy.cpp
    bamf-matcher.cpp
    bamf-matcher-proxy.cpp
    bamf-view.cpp
    bamf-view-proxy.cpp
    bamf-window.cpp
    bamf-window-proxy.cpp
    )

set(QtBamf_MOC_HDRS
    bamf-application.h
    bamf-application-proxy.h
    bamf-control.h
    bamf-control-proxy.h
    bamf-factory.h
    bamf-indicator.h
    bamf-indicator-proxy.h
    bamf-list.h
    bamf-matcher.h
    bamf-matcher-proxy.h
    bamf-view.h
    bamf-view-proxy.h
    bamf-window.h
    bamf-window-proxy.h
    )

qt4_wrap_cpp(QtBamf_MOC_SRCS ${QtBamf_MOC_HDRS})

## QtBamfQml
set(QtBamfQml_SRCS
    bamf-plugin.cpp
    )

set(QtBamfQml_MOC_HDRS
    bamf-plugin.h
    )

qt4_wrap_cpp(QtBamfQml_MOC_SRCS ${QtBamfQml_MOC_HDRS})

# Build
add_definitions(-DQT_NO_KEYWORDS)

include_directories(
    ${CMAKE_CURRENT_BINARY_DIR}
    ${QT_INCLUDE_DIR}
    ${QT_QTCORE_INCLUDE_DIR}
    ${QT_QTGUI_INCLUDE_DIR}
    ${QT_QTDBUS_INCLUDE_DIR}
    ${QT_QTDECLARATIVE_INCLUDE_DIR}
    )

## QtBamf
add_library(QtBamf SHARED ${QtBamf_SRCS} ${QtBamf_MOC_SRCS})

set_target_properties(QtBamf PROPERTIES
    SOVERSION 1
    VERSION 1.0.0
    )

target_link_libraries(QtBamf
    ${QT_QTCORE_LIBRARIES}
    ${QT_QTDBUS_LIBRARIES}
    )

## QtBamfQml
add_library(QtBamfQml SHARED ${QtBamfQml_SRCS} ${QtBamfQml_MOC_SRCS})

target_link_libraries(QtBamfQml
    QtBamf
    ${QT_QTDECLARATIVE_LIBRARIES}
    )

## test
add_executable(test test.cpp)
target_link_libraries(test
    QtBamf
    ${QT_QTCORE_LIBRARIES}
    ${QT_QTGUI_LIBRARIES}
    ${QT_QTDECLARATIVE_LIBRARIES}
    )

# Install
set(IMPORT_INSTALL_DIR lib/qt4/imports/bamf)
set(INCLUDE_INSTALL_DIR include/QtBamf)

## QtBamf
install(TARGETS QtBamf
    LIBRARY DESTINATION lib${LIB_SUFFIX}
    )

install(FILES
    bamf-application.h
    bamf-control.h
    bamf-factory.h
    bamf-indicator.h
    bamf-list.h
    bamf-matcher.h
    bamf-view.h
    bamf-window.h
    DESTINATION ${INCLUDE_INSTALL_DIR}
    )

# FIXME: Generate from ${CMAKE_INSTALL_PREFIX}
install(FILES libqtbamf.pc
    DESTINATION lib/pkgconfig
    )

## QtBamfQml
install(TARGETS QtBamfQml
    LIBRARY DESTINATION ${IMPORT_INSTALL_DIR}
    )

install(FILES qmldir
    DESTINATION ${IMPORT_INSTALL_DIR}
    )
