CMakeLists.txt 6.1 KB
Newer Older
J
jinhai 已提交
1 2 3 4 5 6
#-------------------------------------------------------------------------------
# Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved
# Unauthorized copying of this file, via any medium is strictly prohibited.
# Proprietary and confidential.
#-------------------------------------------------------------------------------

Z
zhiru 已提交
7 8
cmake_minimum_required(VERSION 3.14)
message(STATUS "Building using CMake version: ${CMAKE_VERSION}")
J
jinhai 已提交
9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
MACRO (GET_CURRENT_TIME CURRENT_TIME)
    execute_process(COMMAND "date" +"%Y-%m-%d %H:%M.%S" OUTPUT_VARIABLE ${CURRENT_TIME})
ENDMACRO (GET_CURRENT_TIME)

GET_CURRENT_TIME(BUILD_TIME)
string(REGEX REPLACE "\n" "" BUILD_TIME ${BUILD_TIME})
message(STATUS "Build time = ${BUILD_TIME}")

MACRO (GET_GIT_BRANCH_NAME GIT_BRANCH_NAME)
    execute_process(COMMAND "git" symbolic-ref --short HEAD OUTPUT_VARIABLE ${GIT_BRANCH_NAME})
ENDMACRO (GET_GIT_BRANCH_NAME)

GET_GIT_BRANCH_NAME(GIT_BRANCH_NAME)
string(REGEX REPLACE "\n" "" GIT_BRANCH_NAME ${GIT_BRANCH_NAME})

set(MEGASEARCH_VERSION "${GIT_BRANCH_NAME}")
26 27
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]" MEGASEARCH_VERSION "${MEGASEARCH_VERSION}")
message(STATUS "Build version = ${MEGASEARCH_VERSION}")
28 29 30 31 32 33 34 35

if(CMAKE_BUILD_TYPE STREQUAL "Release")
    set(BUILD_TYPE "release")
else()
    set(BUILD_TYPE "debug")
endif()
message(STATUS "Build type = ${BUILD_TYPE}")

36
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.macro ${CMAKE_CURRENT_SOURCE_DIR}/version.h)
Z
zhiru 已提交
37

38
project(megasearch VERSION "${MEGASEARCH_VERSION}")
X
xj.lin 已提交
39 40
project(vecwise_engine LANGUAGES CUDA CXX)

Z
zhiru 已提交
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
# Ensure that a default make is set
if("${MAKE}" STREQUAL "")
    if(NOT MSVC)
        find_program(MAKE make)
    endif()
endif()

set(GCC_VERSION 5.3.0)
set(GCC_DIR "${CMAKE_CURRENT_BINARY_DIR}/gcc")
set(GCC_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/gcc/gcc_build")
set(GCC_TAR_NAME "${GCC_BUILD_DIR}/gcc-${GCC_VERSION}.tar.gz")
if (NOT EXISTS ${GCC_TAR_NAME})
    file(MAKE_DIRECTORY ${GCC_BUILD_DIR})
    file(DOWNLOAD http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-${GCC_VERSION}/${GCC_TAR_NAME}
            ${GCC_TAR_NAME})
    message(STATUS "Building GCC-${GCC_VERSION} from source")
    execute_process(
            COMMAND
            "${CMAKE_COMMAND} -E tar -xf ${GCC_TAR_NAME}"
            COMMAND
            "./configure --prefix=${GCC_DIR} --with-local-prefix=${GCC_DIR}
            --enable-languages=cxx,fortran
            --enable-checking=release
            --disable-bootstrap"
            COMMAND
            "${MAKE} -j4"
            COMMAND
            "${MAKE} install"
            RESULT_VARIABLE	_status
            #OUTPUT_QUIET
            #ERROR_QUIET
            WORKING_DIRECTORY ${GCC_BUILD_DIR})
endif ()

Z
zhiru 已提交
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
set(MEGASEARCH_VERSION_MAJOR "${megasearch_VERSION_MAJOR}")
set(MEGASEARCH_VERSION_MINOR "${megasearch_VERSION_MINOR}")
set(MEGASEARCH_VERSION_PATCH "${megasearch_VERSION_PATCH}")

if(MEGASEARCH_VERSION_MAJOR STREQUAL ""
        OR MEGASEARCH_VERSION_MINOR STREQUAL ""
        OR MEGASEARCH_VERSION_PATCH STREQUAL "")
    message(FATAL_ERROR "Failed to determine MegaSearch version from '${MEGASEARCH_VERSION}'")
endif()

message(STATUS "MegaSearch version: "
        "${MEGASEARCH_VERSION_MAJOR}.${MEGASEARCH_VERSION_MINOR}.${MEGASEARCH_VERSION_PATCH} "
        "(full: '${MEGASEARCH_VERSION}')")

set(MEGASEARCH_SOURCE_DIR ${PROJECT_SOURCE_DIR})
set(MEGASEARCH_BINARY_DIR ${PROJECT_BINARY_DIR})

X
xj.lin 已提交
92 93 94 95 96
find_package(CUDA)
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -Xcompiler -fPIC -std=c++11 -D_FORCE_INLINES -arch sm_60 --expt-extended-lambda")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -O0 -g")
message("CUDA_TOOLKIT_ROOT_DIR=${CUDA_TOOLKIT_ROOT_DIR}")
message("CUDA_NVCC_FLAGS=${CUDA_NVCC_FLAGS}")
J
jinhai 已提交
97

X
xj.lin 已提交
98 99 100 101
if (GPU_VERSION STREQUAL "ON")
    add_definitions("-DGPU_VERSION")
endif ()

J
jinhai 已提交
102
set(CMAKE_CXX_STANDARD 14)
Z
zhiru 已提交
103
set(CMAKE_CXX_STANDARD_REQUIRED on)
J
jinhai 已提交
104 105 106 107 108 109 110 111 112 113 114 115 116 117

if(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)")
    message("building vecwise_engine on x86 architecture")
    set(VECWISE_BUILD_ARCH x86_64)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(ppc)")
    message("building vecwise_engine on ppc architecture")
    set(VECWISE_BUILD_ARCH ppc64le)
else()
    message("unknown processor type")
    message("CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}")
    set(VECWISE_BUILD_ARCH unknown)
endif()

if(CMAKE_BUILD_TYPE STREQUAL "Release")
Z
zhiru 已提交
118
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -fPIC -DELPP_THREAD_SAFE -fopenmp")
G
groot 已提交
119 120 121 122
     if (GPU_VERSION STREQUAL "ON")
         set(ENABLE_LICENSE "ON")
         add_definitions("-DENABLE_LICENSE")
     endif ()
J
jinhai 已提交
123
else()
Z
zhiru 已提交
124
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -fPIC -DELPP_THREAD_SAFE -fopenmp")
J
jinhai 已提交
125 126
endif()

Z
zhiru 已提交
127 128 129 130


set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

Z
zhiru 已提交
131 132 133
#if (BUILD_UNIT_TEST)
#    option(MEGASEARCH_BUILD_TESTS "Build the megasearch test suite" ON)
#endif(BUILD_UNIT_TEST)
Z
zhiru 已提交
134 135 136 137 138 139 140 141 142 143

include(ExternalProject)
include(DefineOptions)
include(BuildUtils)
include(ThirdPartyPackages)

include_directories(${MEGASEARCH_SOURCE_DIR})
link_directories(${MEGASEARCH_BINARY_DIR})

## Following should be check
J
jinhai 已提交
144 145 146

set(VECWISE_ENGINE_INCLUDE ${PROJECT_SOURCE_DIR}/include)
set(VECWISE_ENGINE_SRC ${PROJECT_SOURCE_DIR}/src)
Z
zhiru 已提交
147 148
#set(VECWISE_THIRD_PARTY ${CMAKE_CURRENT_SOURCE_DIR}/third_party)
#set(VECWISE_THIRD_PARTY_BUILD ${CMAKE_CURRENT_SOURCE_DIR}/third_party/build)
J
jinhai 已提交
149 150 151 152 153

add_compile_definitions(PROFILER=${PROFILER})

include_directories(${VECWISE_ENGINE_INCLUDE})
include_directories(${VECWISE_ENGINE_SRC})
Z
zhiru 已提交
154
#include_directories(${VECWISE_THIRD_PARTY_BUILD}/include)
J
jinhai 已提交
155

G
groot 已提交
156
link_directories(${CMAKE_CURRRENT_BINARY_DIR})
Z
zhiru 已提交
157 158
#link_directories(${VECWISE_THIRD_PARTY_BUILD}/lib)
#link_directories(${VECWISE_THIRD_PARTY_BUILD}/lib64)
159 160
#execute_process(COMMAND bash build.sh
#                WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/third_party)
J
jinhai 已提交
161

Z
zhiru 已提交
162
add_subdirectory(src)
J
jinhai 已提交
163 164

if (BUILD_UNIT_TEST)
J
jinhai 已提交
165
    add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/unittest)
J
jinhai 已提交
166
endif(BUILD_UNIT_TEST)
Y
yu yunfeng 已提交
167

G
groot 已提交
168
add_custom_target(Clean-All COMMAND ${CMAKE_BUILD_TOOL} clean)
169 170 171

#install
install(FILES
X
xj.lin 已提交
172 173
        scripts/start_server.sh
        scripts/stop_server.sh
174 175 176 177 178 179 180
        DESTINATION
        scripts)
install(FILES
        conf/server_config.yaml
        conf/vecwise_engine_log.conf
        DESTINATION
        conf)
Z
zhiru 已提交
181 182

config_summary()