cmake_minimum_required(VERSION 2.8.12)

set(LTRAPI_MODULE_PROJECT           ltrapi)
set(LTRAPI_MODULE_USE_TIMER         ON)
set(LTRAPI_MODULE_NO_LTRAPI         ON)
set(LTRAPI_MODULE_USE_KD_STORESLOTS ON)
set(LTRAPI_MODULE_USE_DOXYGEN_DOC   ON)
set(LTRAPI_MODULE_EXPORT_SYMBOL     "LTRAPIWIN_EXPORTS")
set(LTRAPI_MODULE_FUNC_DECLARATION  LTRAPIWIN_DllExport)
set(LTRAPI_MODULE_DESCR_ENG         "Library for manage connections and control LTR Server")
set(LTRAPI_MODULE_DESCR_RUS         "Библиотека для установки соединения и управления программой LTR Server")

set(LTRAPI_MODULE_DOC_ABOUT_FILE    doc/about.md.in)
set(LTRAPI_MODULE_DOC_INPUT_FILES   ltrapidefine.h ltrapitypes.h doc/gen_descr.md doc/ver2.md)



if(WIN32)
    set(LTRAPI_MODULE_LIBS Ws2_32)
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "QNX")
    #в QNX для работы с API-сокетов нужно подключать отдельно библиотеку socket
    set(LTRAPI_MODULE_LIBS socket)
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "QNX4")
    set(LTRAPI_MODULE_LIBS socket3r.lib)
endif(WIN32)

set(LTRAPI_MODULE_SETUP_HEADERS lwintypes.h
    ltrapidefine.h
    ltrapitypes.h
    ltrapi_compat_defs.h
    ltrd_protocol_defs.h
    ${LTRAPI_INCLUDE_DIR}/ltrapi_config.h)

set(LTRAPI_MODULE_SOURCES channel.c)
set(LTRAPI_MODULE_HEADERS channel.h)


if(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 4)
    set(LTRAPI_MODULE_LINKER_FLAGS  "/IMPLIB:ltrapi_.lib")
endif(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 4)

include(${LTRAPI_MODULE_CMAKE_TEMPLATE})


# Так как раньше в Windows функции экспортировались по ординалам,
# то необходимо сохранять порядок функций.
# Так как MSVC при экспорте по именам всега упорядочивает их по алфавиту,
# то приходится компилировать ltrapi два раза с разными def-файлами
# (один раз для .dll в нужном порядке, а для .lib - по именам)
if(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 4)
    unset(LTRAPI_MODULE_PROJECT)
    unset(LTRAPI_MODULE_NAME)
    unset(LTRAPI_COMPILE_DEFINITIONS)
    unset(LTRAPI_MODULE_SOURCES)
    unset(LTRAPI_MODULE_HEADERS)
    unset(LTRAPI_MODULE_SETUP_HEADERS)
    unset(LTRAPI_MODULE_LINKER_FLAGS)
    unset(LTRAPI_MODULE_USE_DOXYGEN_DOC)


    set(LTRAPI_MODULE_PROJECT ltrapi_lib)
    set(LTRAPI_MODULE_NO_STD_SRC ON)
    set(LTRAPI_MODULE_DISABLE_INSTALL ON)
    set(LTRAPI_MODULE_SOURCES channel.c ltrapi.c ltrapi_lib.def)
    set(LTRAPI_MODULE_HEADERS channel.h ltrapi.h)
    set(LTRAPI_MODULE_DISABLE_BORLAND ON)
    set(LTRAPI_MODULE_LINKER_FLAGS  "/IMPLIB:ltrapi.lib")
    include(${LTRAPI_MODULE_CMAKE_TEMPLATE})

    add_dependencies(ltrapi ltrapi_lib)
endif(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 4)







