1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
project(simka)
cmake_minimum_required(VERSION 2.6)
################################################################################
# The version number.
################################################################################
SET (gatb-tool_VERSION_MAJOR 1)
SET (gatb-tool_VERSION_MINOR 5)
SET (gatb-tool_VERSION_PATCH 2)
IF (DEFINED MAJOR)
SET (gatb-tool_VERSION_MAJOR ${MAJOR})
ENDIF()
IF (DEFINED MINOR)
SET (gatb-tool_VERSION_MINOR ${MINOR})
ENDIF()
IF (DEFINED PATCH)
SET (gatb-tool_VERSION_PATCH ${PATCH})
ENDIF()
set (gatb-tool-version ${gatb-tool_VERSION_MAJOR}.${gatb-tool_VERSION_MINOR}.${gatb-tool_VERSION_PATCH})
# However, continuous integration has priority over local compilation
IF (DEFINED JENKINS_TAG)
SET (gatb-tool-version ${JENKINS_TAG})
ENDIF()
################################################################################
# Define cmake modules directory
################################################################################
SET (GATB_CORE_HOME ${PROJECT_SOURCE_DIR}/thirdparty/gatb-core/gatb-core)
SET (CMAKE_MODULE_PATH ${GATB_CORE_HOME}/cmake)
################################################################################
# THIRD PARTIES
################################################################################
# We don't want to install some GATB-CORE artifacts
SET (GATB_CORE_EXCLUDE_TOOLS 1)
SET (GATB_CORE_EXCLUDE_TESTS 1)
SET (GATB_CORE_EXCLUDE_EXAMPLES 1)
# GATB CORE
#include (GatbCore)
include(GNUInstallDirs)
link_directories (/usr/${CMAKE_INSTALL_LIBDIR}/hdf5/serial)
################################################################################
# TOOL
################################################################################
# we get compilation definitions from the gatb-core part
add_definitions (${gatb-core-flags})
# we add a new compilation variable
if (PRINTALL)
#SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPRINTALL -wno-error" )
endif()
unset(CMAKE_CXX_FLAGS)
set(CMAKE_CXX_FLAGS "-Wno-error -O2 -g -Wunused-result")
# we give the headers directories from :
# - from project source
# - from GATB-CORE source
# - from simka source
include_directories (include ${gatb-core-includes} ${PROJECT_SOURCE_DIR}/src/core ${PROJECT_SOURCE_DIR}/src/minikc ${PROJECT_SOURCE_DIR}/src)
list (APPEND KSIZE_DEFAULT_LIST 32 64 96 128 160 192 224 256)
# we generate one file per template specialization
FOREACH (KSIZE ${KSIZE_DEFAULT_LIST})
configure_file (
${PROJECT_SOURCE_DIR}/src/core/SimkaAlgorithmTemplate.cpp.in
${PROJECT_BINARY_DIR}/src/core/template/SimkaAlgorithmTemplate_${KSIZE}.cpp
)
ENDFOREACH ()
# we define the files to be compiled
file (GLOB_RECURSE ProjectFiles src/core/Simka* ${PROJECT_BINARY_DIR}/src/core/template/*.cpp)
file (GLOB_RECURSE SimkaMinFiles src/simkaMin/MurmurHash3.h src/simkaMin/MurmurHash3.cpp src/simkaMin/*.hpp)# ${PROJECT_BINARY_DIR}/src/core/template/*.cpp)
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
set(PROJECT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin)
add_executable (simka src/SimkaPotara.cpp ${ProjectFiles})
target_link_libraries (simka gatbcore hdf5 z)
add_executable (simkaCountProcess src/minikc/SimkaCountProcess.cpp ${ProjectFiles})
target_link_libraries (simkaCountProcess gatbcore hdf5 z)
add_executable (simkaCount src/SimkaCount.cpp ${ProjectFiles})
target_link_libraries (simkaCount gatbcore hdf5 z)
add_executable (simkaMerge src/SimkaMerge.cpp ${ProjectFiles})
target_link_libraries (simkaMerge gatbcore hdf5 z)
add_executable (simkaMinCore src/simkaMin/SimkaMin.cpp ${SimkaMinFiles})
target_link_libraries (simkaMinCore gatbcore hdf5 z pthread)
################################################################################
# PACKAGING
################################################################################
SET (CPACK_PACKAGE_DESCRIPTION_SUMMARY "gatb-tool ${PROJECT_NAME}")
SET (CPACK_PACKAGE_VENDOR "Genscale team (INRIA)")
SET (CPACK_PACKAGE_VERSION_MAJOR "${gatb-tool_VERSION_MAJOR}")
SET (CPACK_PACKAGE_VERSION_MINOR "${gatb-tool_VERSION_MINOR}")
SET (CPACK_PACKAGE_VERSION_PATCH "${gatb-tool_VERSION_PATCH}")
SET (CPACK_PACKAGE_VERSION "${gatb-tool-version}")
# We chose the kind of archive we want to generate
SET (CPACK_GENERATOR "TGZ")
SET (CPACK_SOURCE_GENERATOR "TGZ")
# We ignore unwanted files for the source archive
SET (CPACK_SOURCE_IGNORE_FILES
"^${PROJECT_SOURCE_DIR}/\\.git/" ;
"^${PROJECT_SOURCE_DIR}/\\.gitmodules" ;
"^${PROJECT_SOURCE_DIR}/\\.gitignore" ;
"^${PROJECT_SOURCE_DIR}/build/" ;
"^${PROJECT_SOURCE_DIR}/dependency/" ;
"^${GATB_CORE_HOME}/\\.cproject" ;
"^${GATB_CORE_HOME}/\\.git/" ;
"^${GATB_CORE_HOME}/\\.project" ;
"^${GATB_CORE_HOME}/\\.gitignore"
)
# For creating the BINARY package we include the files we want
INSTALL (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin DESTINATION .)
INSTALL (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/example DESTINATION .)
INSTALL (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/simkaMin DESTINATION .)
INSTALL (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scripts DESTINATION . FILES_MATCHING REGEX ".*\\.(py|r)$" PATTERN "jenkins" EXCLUDE)
INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.md DESTINATION .)
INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE DESTINATION .)
# We include the "bin" tag into binary archive file name
set (CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-bin-${CMAKE_SYSTEM_NAME})
# To be done at the end.
INCLUDE (CPack)
|