SET(SOURCES
    apr.cpp
    client_annotate.cpp
    client_cat.cpp
    client.cpp
    client_diff.cpp
    client_ls.cpp
    client_modify.cpp
    client_property.cpp
    client_status.cpp
    context.cpp
    datetime.cpp
    dirent.cpp
    entry.cpp
    exception.cpp
    log_entry.cpp
    path.cpp
    pool.cpp
    revision.cpp
    status.cpp
    targets.cpp
    url.cpp
    version_check.cpp
    wc.cpp
    lock_entry.cpp
    client_lock.cpp
    info_entry.cpp
    client_impl.cpp
    contextdata.cpp
    commititem.cpp
    repository.cpp
    repositorydata.cpp
    repositorylistener.cpp
    svnstream.cpp
    diff_data.cpp
    svnfilestream.cpp
    stringarray.cpp
    diffoptions.cpp
    conflictdescription.cpp
    conflictresult.cpp
    client_merge.cpp
    cache/LogCache.cpp
    cache/ReposLog.cpp
    cache/DatabaseException.hpp
    cache/DatabaseException.cpp
    )

MESSAGE(STATUS "QT4 found? ${QT4_FOUND}")

IF (SQLITE_FOUND AND NOT QT4_FOUND)
    MESSAGE(STATUS "use own sqlite3")
    SET(SOURCES
    ${SOURCES}
    cache/sqlite3/qsqlcachedresult.cpp
    cache/sqlite3/qsql_sqlite3.cpp
    cache/sqlite3/qsqlcachedresult.h
    cache/sqlite3/qsql_sqlite3.h
    )
ENDIF (SQLITE_FOUND AND NOT QT4_FOUND)

IF (QT4_FOUND)
    ADD_DEFINITIONS(-DNO_SQLITE3)
ENDIF (QT4_FOUND)

SET(CACHEINST_HEADERS
    cache/LogCache.hpp
    cache/ReposLog.hpp
    cache/DatabaseException.hpp
)

SET(INST_HEADERS
    annotate_line.hpp
    apr.hpp
    check.hpp
    client.hpp
    commititem.hpp
    context.hpp
    context_listener.hpp
    datetime.hpp
    dirent.hpp
    entry.hpp
    exception.hpp
    info_entry.hpp
    lock_entry.hpp
    log_entry.hpp
    path.hpp
    pool.hpp
    repository.hpp
    repositorylistener.hpp
    revision.hpp
    smart_pointer.hpp
    shared_pointer.hpp
    status.hpp
    svnfilestream.hpp
    svnstream.hpp
    svnqttypes.hpp
    targets.hpp
    url.hpp
    version_check.hpp
    wc.hpp
    stringarray.hpp
    diffoptions.hpp
    conflictdescription.hpp
    conflictresult.hpp
    )

FILE(GLOB svnhdr RELATIVE  ${CMAKE_CURRENT_SOURCE_DIR} "*.hpp")
SET(svnhdr ${svnhdr} ${CACHE_INST_HEADERS})

IF(QT4_FOUND)
    MESSAGE(STATUS "Qt: ${QT_LIBRARY_DIR}")
    MESSAGE(STATUS "Qt: ${QT_QTCORE_LIBRARY}")
    SET(TOUTF8 "toUtf8")
    SET(FROMUTF8 "fromUtf8")
    SET(QLIST "QList")
    SET(TOASCII "toAscii")
    SET(HOMEDIR "homePath")
    SET(svnqt-name svnqt-qt4)
    SET(QDATABASE "QSqlDatabase")
    SET(QLONG "qlonglong")
ELSE(QT4_FOUND)
    IF(QT_FOUND)
        SET(TOUTF8 "utf8")
        SET(FROMUTF8 "fromUtf8")
        SET(QLIST "QValueList")
        SET(TOASCII "latin1")
        SET(HOMEDIR "homeDirPath")
        SET(QDATABASE "QSqlDatabase*")
        SET(QLONG "Q_LLONG")
    ENDIF(QT_FOUND)
    SET(svnqt-name svnqt)
ENDIF(QT4_FOUND)

IF (HAVE_GCC_VISIBILITY)
    SET(_SVNQT_EXPORT "__attribute__ ((visibility(\"default\")))")
    SET(_SVNQT_NOEXPORT "__attribute__ ((visibility(\"hidden\")))")
ENDIF (HAVE_GCC_VISIBILITY)
IF (WIN32)
    SET(_SVNQT_EXPORT "__declspec(dllexport)")
ENDIF (WIN32)

CONFIGURE_FILE(
    "${CMAKE_CURRENT_SOURCE_DIR}/svnqt_defines.hpp.in"
    "${CMAKE_CURRENT_BINARY_DIR}/svnqt_defines.hpp"
    IMMEDIATE
    @ONLY)

SET(INST_HEADERS ${INST_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/svnqt_defines.hpp)
INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_BINARY_DIR})

ADD_LIBRARY(${svnqt-name} SHARED ${SOURCES} ${svnhdr})
IF(WIN32)
    ADD_DEFINITIONS(-D_USE_32BIT_TIME_T)
ELSE(WIN32)
    SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib${LIB_SUFFIX})
    SET_TARGET_PROPERTIES(${svnqt-name}
        PROPERTIES
        COMPILE_FLAGS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS})
ENDIF(WIN32)

#for a libtool like .la file
#SET(LIBLA_CURRENT 4)
#SET(LIBLA_REVISION 0)
#SET(LIBLA_AGE 0)

#MATH(EXPR LIB_MAJOR '${LIBLA_CURRENT}-${LIBLA_AGE}')
#SET(LIB_MINOR ${LIBLA_AGE})
#SET(LIB_RELEASE ${LIBLA_REVISION})

SET(LIB_MAJOR 4)
SET(LIB_MINOR 2)
SET(LIB_RELEASE 0)

SET(_soversion ${LIB_MAJOR}.${LIB_MINOR}.${LIB_RELEASE})

SET_TARGET_PROPERTIES(${svnqt-name} PROPERTIES
    SOVERSION ${LIB_MAJOR}
    VERSION ${_soversion})

SET(ALL_LINKFLAGS ${APR_EXTRA_LIBFLAGS})
SET(ALL_LINKFLAGS "${ALL_LINKFLAGS} ${APU_EXTRA_LIBFLAGS}")
SET_TARGET_PROPERTIES(${svnqt-name} PROPERTIES LINK_FLAGS "${ALL_LINKFLAGS} ${LINK_NO_UNDEFINED}")
TARGET_LINK_LIBRARIES(${svnqt-name} ${QT_LIBRARIES} ${SUBVERSION_ALL_LIBS})

IF (SQLITE_FOUND AND NOT QT4_FOUND)
    TARGET_LINK_LIBRARIES(${svnqt-name} ${SQLITE_LIBRARIES})
    INCLUDE_DIRECTORIES(SQLITE_INCLUDE_DIR)
ELSE (SQLITE_FOUND AND NOT QT4_FOUND)
    TARGET_LINK_LIBRARIES(${svnqt-name} ${QT_QTSQL_LIBRARY})
ENDIF (SQLITE_FOUND AND NOT QT4_FOUND)

IF (WIN32)
    TARGET_LINK_LIBRARIES( ${svnqt-name} wsock32.lib  )
ENDIF (WIN32)

# Just a small linking test
IF (BUILD_TESTS)
    ADD_EXECUTABLE(testlink testmain.cpp)
    TARGET_LINK_LIBRARIES(testlink ${svnqt-name})
ENDIF (BUILD_TESTS)

# install rules
# in win32 we don't install it
IF(NOT WIN32)
    INSTALL(TARGETS ${svnqt-name} DESTINATION ${LIB_INSTALL_DIR})
    INSTALL(FILES ${INST_HEADERS} DESTINATION include/${svnqt-name})
    INSTALL(FILES ${CACHEINST_HEADERS} DESTINATION include/${svnqt-name}/cache)

    # and a libtool file
#    GET_TARGET_PROPERTY(_target_location ${svnqt-name} LOCATION)

#    GET_FILENAME_COMPONENT(_laname ${_target_location} NAME_WE)
#   GET_FILENAME_COMPONENT(_soname ${_target_location} NAME)
#   SET(_laname ${LIBRARY_OUTPUT_PATH}/${_laname}.la)
#
#   FILE(WRITE ${_laname} "# libsvnqt.la - a libtool library file, generated by cmake \n")
#   FILE(APPEND ${_laname} "# The name that we can dlopen(3).\n")
#   FILE(APPEND ${_laname} "dlname='${_soname}.${LIB_MAJOR}'\n")
#   FILE(APPEND ${_laname} "# Names of this library\n")
#   FILE(APPEND ${_laname} "library_names='${_soname}.${LIB_MAJOR}.${LIB_MINOR}.${LIB_RELEASE} ${_soname}.${LIB_MAJOR} ${_soname}'\n")
#   FILE(APPEND ${_laname} "# The name of the static archive\n")
#   FILE(APPEND ${_laname} "old_library=''\n")
#   FILE(APPEND ${_laname} "# Libraries that this one depends upon.\n")
#   FILE(APPEND ${_laname} "dependency_libs=''\n")
#   FILE(APPEND ${_laname} "# Version information for ${_soname}\n")
#   FILE(APPEND ${_laname} "current=${LIBLA_CURRENT}\nage=${LIBLA_AGE}\nrevision=${LIBLA_REVISION}\n")
#   FILE(APPEND ${_laname} "# Is this an already installed library?\ninstalled=yes\n")
#   FILE(APPEND ${_laname} "# Should we warn about portability when linking against -modules?\nshouldnotlink=no\n")
#   FILE(APPEND ${_laname} "# Files to dlopen/dlpreopen\ndlopen=''\ndlpreopen=''\n")
#   FILE(APPEND ${_laname} "# Directory that this library needs to be installed in:\n")
#   FILE(APPEND ${_laname} "libdir='${LIB_INSTALL_DIR}'\n")
#   INSTALL(FILES ${_laname} DESTINATION ${LIB_INSTALL_DIR})
ENDIF(NOT WIN32)

IF (BUILD_TESTS)
  ADD_SUBDIRECTORY(tests)
  ADD_SUBDIRECTORY(cache/test)
ENDIF (BUILD_TESTS)
