cmake_minimum_required(VERSION 2.6)

# cmake 2.6 proposed to add this policy
if(COMMAND cmake_policy)
  if(POLICY CMP0017)
    cmake_policy(SET CMP0017 NEW)
  endif(POLICY CMP0017)
endif(COMMAND cmake_policy)

project(libkcaossl)

set(GENERIC_LIB_VERSION "1.3.49")
set(GENERIC_LIB_SOVERSION "1")

set(QTCOMPONENTS QtCore)

IF(WITH_QtNetwork) # OR QT_QTNETWORK_LIB)
  set(QTCOMPONENTS ${QTCOMPONENTS} QtNetwork)
  add_definitions( -DUSE_QTNETWORK )
ENDIF(WITH_QtNetwork) # OR QT_QTNETWORK_LIB)

find_package(Qt4 COMPONENTS ${QTCOMPONENTS} 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)

################################################################################

set(kca_ossl_LIB_SRCS
  x509attribute.cpp
  x509extension.cpp
  x509name.cpp
  certificate.cpp
  request.cpp
  revocationlist.cpp
  utils.cpp
 )

set(kca_ossl_LIB_HDRS
  certificate.h
  request.h
  revocationlist.h
  x509attribute.h
  x509extension.h
  x509name.h
 )

# call moc for library headers
QT4_WRAP_CPP( KCA_OSSL_H_MOC ${kca_ossl_LIB_HDRS} )

# Do not link to QtGui
set(QT_DONT_USE_QTGUI 1)

include(${QT_USE_FILE})

include_directories( ${QT_INCLUDES} ${OPENSSL_INCLUDE_DIR} )

add_definitions( -DMAKE_KCAOSSL_LIB )

add_library( kca_ossl-1 SHARED ${kca_ossl_LIB_SRCS} ${KCA_OSSL_H_MOC} )

target_link_libraries( kca_ossl-1 ${QT_LIBRARIES} ${OPENSSL_LIBRARIES} )

set_target_properties( kca_ossl-1 PROPERTIES
  VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION}
 )

install( TARGETS kca_ossl-1 LIBRARY DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS} )

install( FILES ${kca_ossl_LIB_HDRS}
    commons.h
    kca_ossl_export.h
  DESTINATION ${INCLUDE_INSTALL_DIR}/kca_ossl-1
  COMPONENT Devel
 )

add_subdirectory(tests)

################################################################################

add_subdirectory(doc)
