find_package(Qt COMPONENTS QtCore QtNetwork REQUIRED)
find_package(OpenSSL REQUIRED)

# We need libcrypto if not compiling under Windows
IF(NOT WIN32)
  find_library(OPENSSL_CRYPTO_LIBS NAMES crypto)
  IF(OPENSSL_CRYPTO_LIBS)
    set(OPENSSL_LIBRARIES
      ${OPENSSL_LIBRARIES}
      ${OPENSSL_CRYPTO_LIBS}
     )
  ELSE(OPENSSL_CRYPTO_LIBS)
    MESSAGE(FATAL_ERROR "Could NOT find OpenSSL libcrypto")
  ENDIF(OPENSSL_CRYPTO_LIBS)
ENDIF(NOT WIN32)

# Do not link unneeded Qt parts
set(QT_DONT_USE_QTGUI 1)
include(${QT_USE_FILE})

include_directories(
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${CMAKE_CURRENT_BINARY_DIR}
  ${QT_INCLUDES}
  ${OPENSSL_INCLUDE_DIR}
 )
add_definitions( -DBUILD_KCAOSSL_LIB )

# Get library source version
add_custom_target(version
  COMMAND ${CMAKE_COMMAND}
    -D SRC=${CMAKE_CURRENT_SOURCE_DIR}/version.h.in
    -D DST=${CMAKE_CURRENT_BINARY_DIR}/version.h
    -D OUT=${CMAKE_CURRENT_BINARY_DIR}
    -P ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/version.cmake
  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..
 )

# Set C++ standard depending on compiler version
IF(${CMAKE_COMPILER_IS_GNUCXX})
  IF(${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER "4.6")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
  ELSEIF(${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER "4.7")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
  ELSE(${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER "4.6")
    message(ERROR "Compiler does not support at least c++0x!")
  ENDIF(${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER "4.6")
ENDIF(${CMAKE_COMPILER_IS_GNUCXX})

# Configure project
set(GENERIC_LIB_VERSION "2.1.0")
set(GENERIC_LIB_SOVERSION "2.1")

set(kca_ossl_SRCS
  opensslexception.cpp
  signingexception.cpp
  extension.cpp
  key.cpp
  utils.cpp
  request.cpp
  certificate.cpp
 )

add_library( kca_ossl-2 SHARED ${kca_ossl_SRCS} )
target_link_libraries(kca_ossl-2
  ${QT_QTCORE_LIBRARY}
  ${QT_QTNETWORK_LIBRARY}
  ${OPENSSL_LIBRARIES}
 )
set_target_properties(kca_ossl-2 PROPERTIES
  VERSION ${GENERIC_LIB_VERSION}
  SOVERSION ${GENERIC_LIB_SOVERSION}
 )
add_dependencies(kca_ossl-2 version)

install(TARGETS kca_ossl-2
  LIBRARY DESTINATION lib
 )
install(FILES
    export.h
    common.h
    certificate.h
    key.h
    request.h
    opensslexception.h
    signingexception.h
  DESTINATION ${INCLUDE_INSTALL_DIR}/kca_ossl-2
  COMPONENT Devel
 )

add_subdirectory(tests)
