# cmake helps to compile "libodsstream"
# please install the cmake package depending on your linux distribution
# and type in the libodsstream root directory :
# cmake .
# make
# make install
cmake_minimum_required(VERSION 2.6)

PROJECT(libodsstream CXX C)

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)


IF(NOT USEQT4)
  IF(NOT USEQT5)
    SET (USEQT5 1)
  ENDIF(NOT USEQT5)
ENDIF(NOT USEQT4)

# Project version
# 

SET (LIBODSSTREAM_MAJOR_VERSION 0)
SET (LIBODSSTREAM_MINOR_VERSION 7)
SET (LIBODSSTREAM_PATCH_LEVEL   0)
SET (LIBODSSTREAM_VERSION
  "${LIBODSSTREAM_MAJOR_VERSION}.${LIBODSSTREAM_MINOR_VERSION}.${LIBODSSTREAM_PATCH_LEVEL}")
SET (LIBODSSTREAM_LIB_NAME "libodsstream")
SET (LIBODSSTREAM_LIB_VERSION ${LIBODSSTREAM_VERSION})
SET (LIBODSSTREAM_LIB_SOVERSION ${LIBODSSTREAM_MAJOR_VERSION})

#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
if (CMAKE_VERSION VERSION_LESS "3.1")
    if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
        set (CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}")
    endif ()
else ()
    set (CMAKE_CXX_STANDARD 14)
endif ()

if (NOT CMAKE_INSTALL_PREFIX)
  SET (CMAKE_INSTALL_PREFIX /usr/local)
endif (NOT CMAKE_INSTALL_PREFIX)

if (NOT CMAKE_BUILD_TYPE)
#SET(CMAKE_BUILD_TYPE "Release")
#SET(CMAKE_BUILD_TYPE "RelWithDebInfo")
SET( CMAKE_BUILD_TYPE "Debug")
endif (NOT CMAKE_BUILD_TYPE)
MESSAGE("CMAKE_BUILD_TYPE : ${CMAKE_BUILD_TYPE}")

IF(CMAKE_BUILD_TYPE MATCHES "Release")
  MESSAGE("compiling as release version")
  ADD_DEFINITIONS("-DQT_NO_DEBUG_OUTPUT")
ENDIF( CMAKE_BUILD_TYPE MATCHES "Release" )

IF(CMAKE_BUILD_TYPE MATCHES "Debug")
  MESSAGE("compiling as debug version")
  set (MAKE_TEST 1)
ENDIF( CMAKE_BUILD_TYPE MATCHES "Debug" )

IF(CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
  MESSAGE("compiling as release with debug info version")
ENDIF( CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo" )

set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG -DQT_NO_DEBUG -Wall -Wextra")

SET(CPACK_CMAKE_GENERATOR "Unix Makefiles")
SET(CPACK_GENERATOR "STGZ;TGZ;TZ")
SET(CPACK_OUTPUT_CONFIG_FILE "./CPackConfig.cmake")
#SET(CPACK_PACKAGE_DESCRIPTION_FILE ${LIBODSSTREAM_SOURCE_DIR}/COPYING)
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "library to read and write ODS files using streams")
SET(CPACK_PACKAGE_EXECUTABLES "libodsstream")
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "libodsstream-${LIBODSSTREAM_VERSION}")
SET(CPACK_SYSTEM_NAME "Linux-i686")
SET(CPACK_PACKAGE_FILE_NAME "libodsstream-${LIBODSSTREAM_VERSION}-${CPACK_SYSTEM_NAME}")
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "libodsstream ${LIBODSSTREAM_VERSION}")
SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "libodsstream ${LIBODSSTREAM_VERSION}")
SET(CPACK_PACKAGE_NAME "libodsstream")
SET(CPACK_PACKAGE_VENDOR "PAPPSO")
SET(CPACK_PACKAGE_VERSION ${LIBODSSTREAM_VERSION})
SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/debian/copyright)
SET(CPACK_RESOURCE_FILE_README ${CMAKE_SOURCE_DIR}/README)
SET(CPACK_RESOURCE_FILE_WELCOME ${CMAKE_SOURCE_DIR}/README)
SET(CPACK_SOURCE_GENERATOR "TGZ;TZ")
SET(CPACK_SOURCE_OUTPUT_CONFIG_FILE "./CPackSourceConfig.cmake")
SET(CPACK_SOURCE_STRIP_FILES "")
SET(CPACK_SYSTEM_NAME "Linux-i686")
SET(CPACK_TOPLEVEL_TAG "Linux-i686")
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "libodsstream-${LIBODSSTREAM_VERSION}")


SET(CPACK_SOURCE_IGNORE_FILES 
  ".*\\\\.tar\\\\.gz"
  "moc_.*cxx"
  "\\\\.#.*"
  ".*\\\\.aux"
  ".*\\\\.bbl"
  ".*\\\\.blg"
  ".*\\\\.log"
  ".*\\\\.out"
  ".*\\\\.toc"
  "/devel_archives/"
  "/doc\\\\/html/"
  "/doc\\\\/latex/"
  "Makefile"
  "install_manifest.txt"
  "CMakeCache.txt"
  "CPackConfig.cmake"
  "CPackSourceConfig.cmake"
  "/CMakeFiles/"
  "/_CPack_Packages/"
  "/Debug/"
  "/Release/"
  "/tests/"
  "/\\\\.externalToolBuilders/"
  "/\\\\.git/"
  "/\\\\.kdev4/"
  "/\\\\.settings/"
  "Makefile"
  "\\\\.gitignore"
  "\\\\.cdtbuild"
  "\\\\.cdtproject"
  "\\\\.project"
  "\\\\.cproject"
  "/win32/"
  "/win64/"
  "/build/"
  "/buildwin64/"
  "/cbuild/"
  "/bin/"
  "/buildmingw/"
  "test\\\\.ods"
  "buildwin32.cmd"
  "libodsstream.so"
  "OpenDocument-v1.0-os.pdf"
  )
# to create a TGZ archive of the  source code type shell command
# cpack -G TGZ --config CPackSourceConfig.cmake 

# dpkg-buildpackage -rfakeroot -k7BEF3B25

#.dput.cf
#[olivier-langella]
#fqdn = ppa.launchpad.net
#method = ftp
#incoming = ~olivier-langella/ubuntu/
#login = olivier-langella
#allow_unsigned_uploads = 0
#
#  debuild -S -sa
# dput -f olivier-langella *changes


#dch -Dstretch "message"
#cmake ..
#make deb
# scp libodsstream* proteus:/var/www/apt/incoming
# scp ods2tsv* proteus:/var/www/apt/incoming
# reprepro -Vb /var/www/apt processincoming default


#dpkg-deb -x libodsstream-qt4_0.3.0-3_amd64.deb libodsstream-qt4_0.3.0-3
#dpkg-gensymbols -v0 -plibodsstream-qt4 -Plibodsstream-qt4_0.3.0-3 -Osymbols
#cp symbols ../debian/libodsstream-qt4.symbols
#dpkg-deb -x libodsstream-qt5_0.3.0-3_amd64.deb libodsstream-qt5_0.3.0-3
#dpkg-gensymbols -v0 -plibodsstream-qt5 -Plibodsstream-qt5_0.3.0-3 -Osymbols
#cp symbols ../debian/libodsstream-qt5.symbols

#MESSAGE("configuring file ${LIBODSSTREAM_SOURCE_DIR}/src/config.h.cmake")

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



SET(CPACK_PACKAGE_EXECUTABLES "libodsstream" "libodsstream")


# for debian package :
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Olivier Langella <olivier.langella@u-psud.fr>")
SET(DEBIAN_PACKAGE_BUILDS_DEPENDS "Olivier Langella <olivier.langella@u-psud.fr>")


INCLUDE(CPack)

add_subdirectory (src)

add_subdirectory (doc)

add_custom_target(targz
	cpack -G TGZ --config CPackSourceConfig.cmake && tar xvfz libodsstream-${LIBODSSTREAM_VERSION}.tar.gz
	WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
	COMMENT "Creating .tar.gz" VERBATIM
)


add_custom_target(deb
	cd libodsstream-${LIBODSSTREAM_VERSION} && dpkg-buildpackage 
	DEPENDS targz
	WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
	COMMENT "Creating Debian package" VERBATIM
)

add_custom_target(lintian
    lintian -IEi --pedantic ${changesdeb}
    DEPENDS deb
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
    COMMENT "lintian check" VERBATIM
)

IF(MAKE_TEST)
  ENABLE_TESTING()
  INCLUDE(CTest)
  IF (BUILD_TESTING)
    ADD_SUBDIRECTORY(test)
  ENDIF(BUILD_TESTING)
ENDIF(MAKE_TEST)



# Install cmake module
INSTALL(FILES modules/FindOdsstream.cmake DESTINATION share/cmake/Modules)
# Install cmake config
configure_file (${CMAKE_SOURCE_DIR}/modules/OdsstreamConfig.cmake ${CMAKE_SOURCE_DIR}/OdsstreamConfig.cmake)
INSTALL(FILES ${CMAKE_SOURCE_DIR}/OdsstreamConfig.cmake DESTINATION lib${LIB_SUFFIX}/cmake/odsstream)
