CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)

FIND_PACKAGE(Qt4 REQUIRED)
FIND_PACKAGE(Boost REQUIRED)

SET(KEYCHAIN-SOURCES
  keychain.cpp
  default_keychain.cpp)

INCLUDE(${QT_USE_FILE})

IF(APPLE)
  FIND_LIBRARY(SECURITY Security)
  LIST(APPEND KEYCHAIN-SOURCES mac_keychain.cpp)
ELSEIF(UNIX)
  # Find Gnome Keyring
  FIND_PACKAGE(PkgConfig REQUIRED)
  pkg_check_modules(GNOME_KEYRING gnome-keyring-1>=0.8)
  IF(NOT GNOME_KEYRING_FOUND)
    MESSAGE("Gnome keyring not found")
    ADD_DEFINITIONS(-DNO_GNOME_KEYRING)
  ELSE(NOT GNOME_KEYRING_FOUND)
    pkg_check_modules(GLIB2 REQUIRED glib-2.0)
    LIST(APPEND KEYCHAIN-SOURCES gnome_keychain.cpp)
  ENDIF(NOT GNOME_KEYRING_FOUND)

  # Find KDE4 KWallet dbus interface
  FIND_FILE(KWALLET_INTERFACE
    org.kde.KWallet.xml
    PATHS /usr/share/dbus-1/interfaces)

  IF(${KWALLET_INTERFACE} MATCHES "KWALLET_INTERFACE-NOTFOUND")
    SET(KWALLET_INTERFACE_NOTFOUND TRUE)
  ENDIF(${KWALLET_INTERFACE} MATCHES "KWALLET_INTERFACE-NOTFOUND")

  IF(KWALLET_INTERFACE_NOTFOUND)
    MESSAGE("KWallet interface not found")
    ADD_DEFINITIONS(-DNO_KWALLET)
  ELSE(KWALLET_INTERFACE_NOTFOUND)
    LIST(APPEND KEYCHAIN-SOURCES kwallet_keychain.cpp)
    SET(QT_USE_QTDBUS 1)
    QT4_ADD_DBUS_INTERFACE(KWALLET_INTERFACE-SOURCES ${KWALLET_INTERFACE} kwallet)
  ENDIF(KWALLET_INTERFACE_NOTFOUND)
ENDIF(APPLE)

INCLUDE_DIRECTORIES(
  ${CMAKE_CURRENT_BINARY_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${GNOME_KEYRING_INCLUDE_DIRS}
  ${CMAKE_CURRENT_SOURCE_DIR}/..
  ${CMAKE_CURRENT_BINARY_DIR}/..
)

ADD_LIBRARY(keychain STATIC
  ${KEYCHAIN-SOURCES}
  ${KWALLET_INTERFACE-SOURCES})

TARGET_LINK_LIBRARIES(keychain
  ${QT_LIBRARIES}
  ${SECURITY}
  ${GNOME_KEYRING_LIBRARIES}
)

IF(NOT KWALLET_INTERFACE_NOTFOUND)
  TARGET_LINK_LIBRARIES(keychain
    ${QT_DBUS_LIBRARY}
    ${QT_QTDBUS_LIBRARY}
  )

  INCLUDE_DIRECTORIES(${QT_QTDBUS_INCLUDE_DIR})
ENDIF(NOT KWALLET_INTERFACE_NOTFOUND)

LINK_DIRECTORIES(${GNOME_KEYRING_LIBRARY_DIRS})
