CMAKE_MINIMUM_REQUIRED(VERSION 3.0.0)
if(COMMAND cmake_policy)
    cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
project(dxfaktura)
set(PROJECT_VERSION "1.00.0")

find_package(PkgConfig)

if(APPLE)
option(ENABLE_OSX_BUNDLE "Package dxfaktura as an OSX bundle (ignored on other platforms)." ON)
endif(APPLE)

if(UNIX)
    if(BSD)
        set(CMAKE_THREAD_LIBS -pthread)
        set(CMAKE_USE_PTHREADS ON)
        set(CMAKE_EXE_LINKER_FLAGS -pthread)
    endif(BSD)
endif(UNIX)

SET(DXFAKTURA_LIBS "")
SET(DXFAKTURA_INCLUDE_DIRS "")

if(CMAKE_BUILD_TYPE MATCHES Debug)
add_definitions(-DDEBUG)
endif(CMAKE_BUILD_TYPE MATCHES Debug)

if(NOT WIN32)
# Source distribution
set(ARCHIVE_NAME dxfaktura-${PROJECT_VERSION})
add_custom_target(dist COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR} &&
    rm -rf ${ARCHIVE_NAME} &&
    svn export . ${ARCHIVE_NAME} &&
    tar czf ${ARCHIVE_NAME}.tar.gz ${ARCHIVE_NAME} &&
    rm -rf ${ARCHIVE_NAME}
)
endif(NOT WIN32)

configure_file(config.h.cmake
               ${CMAKE_CURRENT_BINARY_DIR}/config.h
)
include_directories(${CMAKE_CURRENT_BINARY_DIR}
 ${CMAKE_CURRENT_SOURCE_DIR}
 ${CMAKE_CURRENT_SOURCE_DIR}/src
 ${CMAKE_BINARY_DIR}
)

add_definitions(-DHAVE_CONFIG_H)

add_subdirectory(data)

set(SOURCES
src/dxfaktura.cpp
src/dxutils.cpp
src/preferences.cpp
src/dialogs/aboutdialog.cpp
src/dialogs/firmydialog.cpp
src/dialogs/firmadialog.cpp
src/dialogs/adresardialog.cpp
src/dialogs/adresadialog.cpp
src/dialogs/printfadialog.cpp
src/dialogs/fakturadialog.cpp
src/dialogs/fatypdialog.cpp
src/dialogs/bankadialog.cpp
src/dialogs/polozkadialog.cpp
src/dialogs/polozkamodel.cpp
src/dialogs/uhradadialog.cpp
src/dialogs/helpdialog.cpp
src/dialogs/optionsdialog.cpp
src/dialogs/printseznamfadialog.cpp
src/dialogs/printprijmyvydajedialog.cpp
src/dialogs/editordialog.cpp
src/dialogs/previewdialog.cpp
src/dialogs/findreplacedialog.cpp
src/dialogs/emailfadialog.cpp
src/dialogs/fauhradadialog.cpp
src/utils/faparser.cpp
src/items/famodel.cpp
src/items/dxitem.cpp
src/items/faktury.cpp
src/items/prijate.cpp
src/items/vydane.cpp
src/widgets/helpbrowser.cpp
src/smtp/emailaddress.cpp
src/smtp/mimeattachment.cpp
src/smtp/mimecontentformatter.cpp
src/smtp/mimefile.cpp
src/smtp/mimehtml.cpp
src/smtp/mimeinlinefile.cpp
src/smtp/mimemessage.cpp
src/smtp/mimemultipart.cpp
src/smtp/mimepart.cpp
src/smtp/mimetext.cpp
src/smtp/quotedprintable.cpp
src/smtp/smtpclient.cpp
)

set(HEADERS
src/dxfaktura.h
src/dialogs/aboutdialog.h
src/dialogs/firmydialog.h
src/dialogs/firmadialog.h
src/dialogs/adresardialog.h
src/dialogs/adresadialog.h
src/dialogs/printfadialog.h
src/dialogs/fakturadialog.h
src/dialogs/fatypdialog.h
src/dialogs/bankadialog.h
src/dialogs/polozkadialog.h
src/dialogs/polozkamodel.h
src/dialogs/uhradadialog.h
src/dialogs/helpdialog.h
src/dialogs/optionsdialog.h
src/dialogs/printseznamfadialog.h
src/dialogs/printprijmyvydajedialog.h
src/dialogs/editordialog.h
src/dialogs/previewdialog.h
src/dialogs/findreplacedialog.h
src/dialogs/emailfadialog.h
src/dialogs/fauhradadialog.h
src/items/famodel.h
src/items/vydane.h
src/items/prijate.h
src/smtp/emailaddress.h
src/smtp/mimeattachment.h
src/smtp/mimecontentformatter.h
src/smtp/mimefile.h
src/smtp/mimehtml.h
src/smtp/mimeinlinefile.h
src/smtp/mimemessage.h
src/smtp/mimemultipart.h
src/smtp/mimepart.h
src/smtp/mimetext.h
src/smtp/quotedprintable.h
src/smtp/smtpclient.h
src/smtp/SmtpMime
)

set(RESOURCES
dxfaktura.qrc
)

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Widgets)
add_definitions(${Qt5Widgets_DEFINITIONS})
list(APPEND DXFAKTURA_LIBS ${Qt5Widgets_LIBRARIES})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
find_package(Qt5Network)
add_definitions(${Qt5Network_DEFINITIONS})
list(APPEND DXFAKTURA_LIBS ${Qt5Network_LIBRARIES})
find_package(Qt5Sql)
add_definitions(${Qt5Sql_DEFINITIONS})
list(APPEND DXFAKTURA_LIBS ${Qt5Sql_LIBRARIES})
find_package(Qt5Help)
add_definitions(${Qt5Help_DEFINITIONS})
list(APPEND DXFAKTURA_LIBS ${Qt5Help_LIBRARIES})
find_package(Qt5WebKitWidgets)
add_definitions(${Qt5WebKitWidgets_DEFINITIONS})
list(APPEND DXFAKTURA_LIBS ${Qt5WebKitWidgets_LIBRARIES})
find_package(Qt5PrintSupport)
add_definitions(${Qt5PrintSupport_DEFINITIONS})
list(APPEND DXFAKTURA_LIBS ${Qt5PrintSupport_LIBRARIES})
include_directories(
${Qt5Widgets_INCLUDE_DIRS}
${Qt5Network_INCLUDE_DIRS}
${Qt5Sql_INCLUDE_DIRS}
${Qt5Help_INCLUDE_DIRS}
${Qt5WebKitWidgets_INCLUDE_DIRS}
${Qt5PrintSupport_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}
${DXFAKTURA_INCLUDE_DIRS}
 .
)
qt5_add_resources(RESOURCES_ADD ${RESOURCES})

if(APPLE)
    find_library(COCOA_LIBRARY Cocoa)
    if(ENABLE_OSX_BUNDLE)
        set(PROGNAME dxfaktura)
        set(MACOSX_BUNDLE_ICON_FILE dxfaktura.icns)
        set(MACOSX_BUNDLE_SHORT_VERSION_STRING 1.00.0)
        set(MACOSX_BUNDLE_VERSION 1.00.0)
        set(MACOSX_BUNDLE_LONG_VERSION_STRING Version 1.00.0)
        set(SOURCES ${SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/data/icons/dxfaktura.icns)
        add_executable(dxfaktura MACOSX_BUNDLE ${SOURCES} ${MOC_SRCS} ${RESOURCES_ADD})
        set(dxfaktura_RESOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/dxfaktura.app/Contents/Resources)
        ADD_CUSTOM_COMMAND(TARGET dxfaktura POST_BUILD
        COMMAND mkdir ARGS -p ${dxfaktura_RESOURCE_DIR}
        COMMAND cp ARGS -f ${CMAKE_CURRENT_SOURCE_DIR}/resources/images/${MACOSX_BUNDLE_ICON_FILE} ${dxfaktura_RESOURCE_DIR}
        COMMENT Setting up resources)
    else()
        set(SOURCES ${SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/data/icons/dxfaktura.icns)
        add_executable(dxfaktura ${SOURCES} ${MOC_SRCS} ${RESOURCES_ADD})
    endif(ENABLE_OSX_BUNDLE)
    target_link_libraries(dxfaktura ${DXFAKTURA_LIBS} ${COCOA_LIBRARY})
    install(TARGETS dxfaktura DESTINATION bin)
else()
    if(MINGW)
        # resource compilation for MinGW
        add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/windxfaktura.o
                        COMMAND ${CMAKE_RC_COMPILER} -I${CMAKE_CURRENT_SOURCE_DIR} -i${CMAKE_CURRENT_SOURCE_DIR}/src/dxfaktura.rc
                        -o ${CMAKE_CURRENT_BINARY_DIR}/windxfaktura.o )
        set(SOURCES ${SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/windxfaktura.o)
    else(MINGW)
        set(SOURCES ${SOURCES} src/dxfaktura.rc)
    endif(MINGW)

    add_executable(dxfaktura ${SOURCES} ${MOC_SRCS} ${RESOURCES_ADD})
    if(WIN32)
        target_link_libraries(dxfaktura "-Wl,--subsystem,windows -mwindows" ${DXFAKTURA_LIBS})
    else(WIN32)
        target_link_libraries(dxfaktura ${DXFAKTURA_LIBS})
    endif(WIN32)

    install(TARGETS dxfaktura DESTINATION bin)
endif(APPLE)

message(STATUS "dxfaktura")
if(ENABLE_OSX_BUNDLE)
    message(STATUS "Install prefix:                             dxfaktura.app bundle")
else()
    message(STATUS "Install prefix:                             ${CMAKE_INSTALL_PREFIX}")
endif(ENABLE_OSX_BUNDLE)



