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}
    )
add_custom_target(check)

# Install
# You can override the directory in which we install QML imports
# by setting QT_IMPORTS_DIR to a path on the cmake command line
if(QT_IMPORTS_DIR)
  set(qt_imports_dir ${QT_IMPORTS_DIR})
else()
  # Query qmake directly because of
  # https://bugs.launchpad.net/ubuntu/+source/cmake/+bug/894805
  _qt4_query_qmake(QT_INSTALL_IMPORTS qt_imports_dir)
endif()
set(IMPORT_INSTALL_DIR ${qt_imports_dir}/bamf)
set(INCLUDE_INSTALL_DIR include/QtBamf)
message(STATUS "Installing imports in ${IMPORT_INSTALL_DIR}")

## 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}
    )
