## Polkit Qt Library

cmake_minimum_required(VERSION 2.6.0)

set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")

SET(QT_MIN_VERSION "4.4.0")

FIND_PACKAGE(Qt4 REQUIRED)
find_package(Automoc4 REQUIRED)

include (${QT_USE_FILE})
include (InstallSettings)
find_package(Policykit)
find_package(DBus)

if (POLICYKIT_FOUND AND DBUS_FOUND)
    include_directories(
          ${CMAKE_CURRENT_BINARY_DIR}
          ${POLICYKIT_INCLUDE_DIRS}
          ${CMAKE_CURRENT_SOURCE_DIR}
          ${CMAKE_CURRENT_SOURCE_DIR}/includes
    )

    set(CMAKE_MAJOR_POLKITQT_VERSION 0 CACHE INT "PolkitQt's major version number" FORCE)
    set(CMAKE_MINOR_POLKITQT_VERSION 9 CACHE INT "PolkitQt's minor version number" FORCE)
    set(CMAKE_RELEASE_POLKITQT_VERSION 4 CACHE INT "PolkitQt's release version number" FORCE)
    set(CMAKE_POLKITQT_VERSION_STRING "${CMAKE_MAJOR_POLKITQT_VERSION}.${CMAKE_MINOR_POLKITQT_VERSION}.${CMAKE_RELEASE_POLKITQT_VERSION}" CACHE STRING "PolkitQt version string" FORCE)

    configure_file(polkitqtversion.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/polkitqtversion.h)

    set(polkit_qt_core_SRCS
        auth.cpp
        context.cpp
    )

    set(polkit_qt_gui_SRCS
        action.cpp
        actionbutton.cpp
        actionbuttons.cpp
    )

    automoc4_add_library(polkit-qt-core SHARED ${polkit_qt_core_SRCS})
    automoc4_add_library(polkit-qt-gui SHARED ${polkit_qt_gui_SRCS})

    target_link_libraries(polkit-qt-core
        ${QT_QTCORE_LIBRARY}
        ${QT_QTDBUS_LIBRARY}
        ${QT_QTXML_LIBRARY}
        ${POLICYKIT_LIBRARIES}
        ${DBUS_LIBRARIES}
    )

    target_link_libraries(polkit-qt-gui
        polkit-qt-core
        ${QT_QTCORE_LIBRARY}
        ${QT_QTGUI_LIBRARY}
        ${QT_QTDBUS_LIBRARY}
        ${POLICYKIT_LIBRARIES}
    )

    set_target_properties(polkit-qt-core PROPERTIES VERSION ${CMAKE_POLKITQT_VERSION_STRING}
                                    SOVERSION ${CMAKE_MAJOR_POLKITQT_VERSION}
                                    DEFINE_SYMBOL MAKE_POLKIT_QT_LIB
                          )
                          
    set_target_properties(polkit-qt-gui PROPERTIES VERSION ${CMAKE_POLKITQT_VERSION_STRING}
                                    SOVERSION ${CMAKE_MAJOR_POLKITQT_VERSION}
                                    DEFINE_SYMBOL MAKE_POLKIT_QT_LIB
                          )
                          
    install(TARGETS polkit-qt-core ${INSTALL_TARGETS_DEFAULT_ARGS})
    install(TARGETS polkit-qt-gui ${INSTALL_TARGETS_DEFAULT_ARGS})

    install(FILES
        action.h
        auth.h
        context.h
        actionbutton.h
        actionbuttons.h
      export.h
      ${CMAKE_CURRENT_BINARY_DIR}/polkitqtversion.h
        
      includes/Action
        includes/Auth
        includes/Context
        includes/ActionButton
        includes/ActionButtons
        DESTINATION
        ${INCLUDE_INSTALL_DIR}/PolicyKit/polkit-qt COMPONENT Devel)

    # Pkgconfig
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/polkit-qt.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/polkit-qt.pc @ONLY)
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/polkit-qt.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig )
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/polkit-qt-core.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/polkit-qt-core.pc @ONLY)
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/polkit-qt-core.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig )
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/polkit-qt-gui.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/polkit-qt-gui.pc @ONLY)
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/polkit-qt-gui.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig )

    if (BUILD_EXAMPLES)
        add_subdirectory(examples)
    endif (BUILD_EXAMPLES)

    add_subdirectory(cmake)

else(POLICYKIT_FOUND AND DBUS_FOUND)
    if (DBUS_FOUND)
        message(STATUS "PolicyKit was not found on your system. Skipping compilation of polkit-qt")
    else (DBUS_FOUND)
        message(STATUS "D-Bus was not found on your system. Skipping compilation of polkit-qt")
    endif (DBUS_FOUND)
endif(POLICYKIT_FOUND AND DBUS_FOUND)
