
#find zlib
FIND_PACKAGE(ZLIB REQUIRED)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/modules)
FIND_PACKAGE(QuaZip REQUIRED)

INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
#INCLUDE_DIRECTORIES(${QUAZIP_INCLUDE_DIRS})


#SET (QT_USE_QTXMLPATTERNS true)



SET(CPP_FILES 
  odsstream/reader/odscell.cpp
  odsstream/odsexception.h 
  odsstream/saxreader/saxhandlercontentxml.cpp 
  odsstream/odsdocreader.cpp
  odsstream/structure/stylesxml.cpp
  odsstream/structure/contentxml.cpp
  odsstream/structure/metaxml.cpp
  odsstream/structure/manifestxml.cpp
  odsstream/odsdocwriter.cpp
  odsstream/tsvdirectorywriter.cpp
  odsstream/tsvoutputstream.cpp
  odsstream/odstablecellstyle.cpp
  odsstream/odstablecellstyleref.cpp
)



SET(ODS2CSV_CPP_FILES 
  ods2csv.cpp
)

SET(ODS2CSV_MOC_HDRS
  ods2csv.h
)


configure_file (${CMAKE_SOURCE_DIR}/src/config.h.cmake ${CMAKE_SOURCE_DIR}/src/config.h)

IF (USEQT5)
    MESSAGE ("LIBODSSTREAM_LIB_SOVERSION: ${LIBODSSTREAM_LIB_SOVERSION}")
  #qt5-default qtbase5-dev
  FIND_PACKAGE( Qt5Core REQUIRED )
  FIND_PACKAGE( Qt5Xml REQUIRED )
  FIND_PACKAGE( Qt5Gui REQUIRED )

  # Build the static lib
  ADD_LIBRARY(odsstream-static-qt5 STATIC ${CPP_FILES})
  target_include_directories (odsstream-static-qt5 PUBLIC ${Qt5Xml_INCLUDES} ${Qt5Core_INCLUDES} ${Qt5Gui_INCLUDES})
    
    SET_TARGET_PROPERTIES(odsstream-static-qt5
      PROPERTIES OUTPUT_NAME odsstream-qt5
      CLEAN_DIRECT_OUTPUT 1
      CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS} ${Qt5Xml_EXECUTABLE_COMPILE_FLAGS} ${Qt5Gui_EXECUTABLE_COMPILE_FLAGS}"
    )
  TARGET_LINK_LIBRARIES(odsstream-static-qt5 ${Qt5Xml_LIBRARIES} ${Qt5Gui_LIBRARIES}  ${QUAZIP_QT5_LIBRARIES} ${Qt5Core_LIBRARIES})

  # Build the shared lib
  ADD_LIBRARY(odsstream-shared-qt5 SHARED ${CPP_FILES})
  target_include_directories (odsstream-shared-qt5 PUBLIC ${Qt5Xml_INCLUDES} ${Qt5Core_INCLUDES} ${Qt5Gui_INCLUDES})
  SET_TARGET_PROPERTIES(odsstream-shared-qt5 PROPERTIES 
    OUTPUT_NAME odsstream-qt5
    VERSION ${LIBODSSTREAM_LIB_VERSION}
    SOVERSION ${LIBODSSTREAM_LIB_SOVERSION}
    CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS} ${Qt5Xml_EXECUTABLE_COMPILE_FLAGS} ${Qt5Gui_EXECUTABLE_COMPILE_FLAGS}"
    CLEAN_DIRECT_OUTPUT 1
    )
  TARGET_LINK_LIBRARIES(odsstream-shared-qt5 PUBLIC ${Qt5Xml_LIBRARIES} ${Qt5Gui_LIBRARIES} ${QUAZIP_QT5_LIBRARIES} )

  # Install libs
  INSTALL(TARGETS odsstream-shared-qt5 LIBRARY DESTINATION lib${LIB_SUFFIX})
  INSTALL(TARGETS odsstream-static-qt5 DESTINATION lib${LIB_SUFFIX})
  
 SET (PAPPSOMSPP_INCLUDE_DIR "${PAPPSOMSPP_DIR}/src")
# SET (PAPPSOMSPP_QT5_LIBRARY "${PAPPSOMSPP_DIR}/build/src/libpappsomspp-qt5.so")
# SET (PAPPSOMSPP_QT4_LIBRARY "${PAPPSOMSPP_DIR}/build/src/libpappsomspp-qt4.so")
  
  QT5_WRAP_CPP( ODS2CSV_MOC_SRCS ${ODS2CSV_MOC_HDRS} )
  ADD_EXECUTABLE(ods2csv ${ODS2CSV_CPP_FILES} ${ODS2CSV_MOC_SRCS})
  target_include_directories (ods2csv PUBLIC ${Qt5Core_INCLUDES} "${CMAKE_SOURCE_DIR}/src" )
  SET_TARGET_PROPERTIES(ods2csv
      PROPERTIES OUTPUT_NAME ods2tsv
      CLEAN_DIRECT_OUTPUT 1
      CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}"
    )
  TARGET_LINK_LIBRARIES(ods2csv odsstream-shared-qt5 ${Qt5Core_LIBRARIES})

  INSTALL(PROGRAMS ${CMAKE_BINARY_DIR}/src/ods2tsv DESTINATION bin)

ENDIF(USEQT5)

IF (USEQT4)
  #qt5-default qtbase5-dev
  FIND_PACKAGE( Qt4 COMPONENTS QTCORE QTXML QTGUI REQUIRED )
  
  MESSAGE ("QT_DEFINITIONS ${QT_DEFINITIONS}" )
  MESSAGE ("QT_INCLUDE_DIR ${QT_INCLUDE_DIR}" )
  MESSAGE ("QT_QTCORE_INCLUDE_DIR ${QT_QTCORE_INCLUDE_DIR}" )
  MESSAGE ("QT_QTXML_INCLUDE_DIR ${QT_QTXML_INCLUDE_DIR}" )
  

  # Build the static lib
  ADD_LIBRARY(odsstream-static-qt4 STATIC ${CPP_FILES})
  if (NOT CMAKE_VERSION VERSION_LESS 2.8.12)
       target_include_directories (odsstream-static-qt4 PUBLIC ${QUAZIP_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR} ${QT_QTXML_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR})
   else()
       include_directories(${QUAZIP_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR} ${QT_QTXML_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR})
   endif()
  IF (MINGW)
    SET_TARGET_PROPERTIES(odsstream-static-qt4
      PROPERTIES OUTPUT_NAME odsstream-qt4
      CLEAN_DIRECT_OUTPUT 1
      )
  ELSE (MINGW)
    SET_TARGET_PROPERTIES(odsstream-static-qt4
      PROPERTIES OUTPUT_NAME odsstream-qt4
      CLEAN_DIRECT_OUTPUT 1
      COMPILE_DEFINITIONS "${QT_DEFINITIONS}"
      #INCLUDE_DIRECTORIES "${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}"
      )
  ENDIF (MINGW)
  TARGET_LINK_LIBRARIES(odsstream-static-qt4 ${LIBS} ${QT_QTCORE_LIBRARY} ${QT_QTXML_LIBRARY}  ${QUAZIP_QT4_LIBRARIES} ${QT_QTGUI_LIBRARY})

  # Build the shared lib
  ADD_LIBRARY(odsstream-shared-qt4 SHARED ${CPP_FILES})
  if (NOT CMAKE_VERSION VERSION_LESS 2.8.12)
    target_include_directories (odsstream-shared-qt4 PUBLIC ${QUAZIP_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR} ${QT_QTXML_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR})

   else()
       include_directories(${QUAZIP_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR} ${QT_QTXML_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR})
   endif()
  IF(MINGW)
    SET_TARGET_PROPERTIES(odsstream-shared-qt4
      PROPERTIES OUTPUT_NAME odsstream-qt4
      CLEAN_DIRECT_OUTPUT 1
      VERSION ${LIBODSSTREAM_VERSION}
      SOVERSION ${LIBODSSTREAM_MAJOR_VERSION}
      #INCLUDE_DIRECTORIES "${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}"
      )
  ELSE (MINGW)
    SET_TARGET_PROPERTIES(odsstream-shared-qt4
      PROPERTIES OUTPUT_NAME odsstream-qt4
      CLEAN_DIRECT_OUTPUT 1
      VERSION ${LIBODSSTREAM_VERSION}
      SOVERSION ${LIBODSSTREAM_MAJOR_VERSION}
      COMPILE_DEFINITIONS "${QT_DEFINITIONS}"
      #INCLUDE_DIRECTORIES "${QT_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}"
      )
  ENDIF (MINGW)
  TARGET_LINK_LIBRARIES(odsstream-shared-qt4 ${LIBS} ${QT_QTCORE_LIBRARY} ${QT_QTXML_LIBRARY}  ${QUAZIP_QT4_LIBRARIES} ${QT_QTGUI_LIBRARY})

  # Install libs
  INSTALL(TARGETS odsstream-shared-qt4 LIBRARY DESTINATION lib${LIB_SUFFIX})
  INSTALL(TARGETS odsstream-static-qt4 DESTINATION lib${LIB_SUFFIX})

ENDIF(USEQT4)



# Install headers
INSTALL(DIRECTORY odsstream/ DESTINATION include/odsstream FILES_MATCHING PATTERN "*.h")

