cmake_minimum_required(VERSION 2.8)
project(Sibelia CXX)
add_subdirectory(libdivsufsort-2.0.1)
set(CMAKE_BUILD_TYPE Release)
if(STATIC_LINKAGE)
	list(APPEND CMAKE_C_FLAGS "-static-libgcc")
	list(APPEND CMAKE_CXX_FLAGS "-static-libgcc -static-libstdc++")
endif()

include_directories(${Sibelia_SOURCE_DIR}/include ${libdivsufsort_BINARY_DIR}/include)
add_executable(Sibelia sibelia.cpp postprocessor.cpp indexedsequence.cpp util.cpp outputgenerator.cpp blockfinder.cpp blockinstance.cpp bifurcationstorage.cpp bulgeremoval.cpp dnasequence.cpp edge.cpp fasta.cpp serialization.cpp synteny.cpp test/unrolledlisttest.cpp platform.cpp stranditerator.cpp vertexenumeration.cpp resource.cpp)
target_link_libraries(Sibelia divsufsort)
set(CMAKE_PROJECT_NAME Sibelia)
set(ROOT_DIR "${CMAKE_SOURCE_DIR}/../")

if(WIN32)
	install(TARGETS Sibelia RUNTIME DESTINATION bin)
	install(DIRECTORY utils DESTINATION .)
	install(DIRECTORY ${ROOT_DIR}/examples/ DESTINATION examples)
	install(FILES ${ROOT_DIR}/NEWS.md ${ROOT_DIR}/ANNOTATION.md ${ROOT_DIR}/README.md ${ROOT_DIR}/USAGE.md ${ROOT_DIR}/INSTALL.md ${ROOT_DIR}/SIBELIA.md ${ROOT_DIR}/C-SIBELIA.md ${ROOT_DIR}/LICENSE.txt DESTINATION .)
else()
	set(LIB_DIR "lib/Sibelia")
	set(SHARE_DIR "share/Sibelia")
	set(DOC_DIR "share/Sibelia/doc")
	install(TARGETS Sibelia RUNTIME DESTINATION bin)
	install(FILES ${ROOT_DIR}/NEWS.md ${ROOT_DIR}/ANNOTATION.md ${ROOT_DIR}/README.md ${ROOT_DIR}/USAGE.md ${ROOT_DIR}/INSTALL.md ${ROOT_DIR}/SIBELIA.md ${ROOT_DIR}/C-SIBELIA.md ${ROOT_DIR}/LICENSE.txt DESTINATION ${DOC_DIR})
	install(DIRECTORY ${ROOT_DIR}/examples/ DESTINATION ${DOC_DIR}/examples)

	if(NOT ONLY_SIBELIA)
		include(ExternalProject)
		externalproject_add(lagan URL "${CMAKE_SOURCE_DIR}/lagan" PREFIX lagan CONFIGURE_COMMAND "" BUILD_COMMAND make BUILD_IN_SOURCE 1 INSTALL_COMMAND "")
		externalproject_get_property(lagan SOURCE_DIR)
		install(PROGRAMS csibelia/C-Sibelia.py DESTINATION bin)
		install(PROGRAMS annotation/snpEffAnnotate.py DESTINATION bin)
		install(DIRECTORY annotation/snpEff DESTINATION ${LIB_DIR})
		install(DIRECTORY utils DESTINATION ${SHARE_DIR})
		install(DIRECTORY ${SOURCE_DIR} DESTINATION ${LIB_DIR} FILE_PERMISSIONS USE_SOURCE_PERMISSIONS DIRECTORY_PERMISSIONS USE_SOURCE_PERMISSIONS REGEX "${SOURCE_DIR}/Readmes|Makefile|${SOURCE_DIR}/src" EXCLUDE)
	endif()

endif()

set(CPACK_NSIS_MODIFY_PATH "ON")
set(CPACK_SOURCE_IGNORE_FILES "\\\\.git.*;/build/.+;${CPACK_SOURCE_IGNORE_FILES};")
set(CPACK_RESOURCE_FILE_LICENSE "${ROOT_DIR}/LICENSE.txt")
set(CPACK_PACKAGE_NAME "Sibelia")
set(CPACK_PACKAGE_VENDOR "Saint Petersburg Academical University")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Sibelia is a tool for finding synteny blocks in closely related genomes")
set(CPACK_PACKAGE_VERSION_MAJOR "3")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_PATCH "7")
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Sibelia")
set(CMAKE_SOURCE_DIR ${ROOT_DIR})
include(CPack)
