CMakeLists.txt 4.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

Z
zhiru 已提交
10 11 12 13 14
set(MEGASEARCH_VERSION "0.1.0")

string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" MEGASEARCH_BASE_VERSION "${MEGASEARCH_VERSION}")

project(megasearch VERSION "${MEGASEARCH_BASE_VERSION}")
X
xj.lin 已提交
15 16
project(vecwise_engine LANGUAGES CUDA CXX)

Z
zhiru 已提交
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
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 已提交
34 35 36 37 38
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 已提交
39

X
xj.lin 已提交
40 41 42 43
if (GPU_VERSION STREQUAL "ON")
    add_definitions("-DGPU_VERSION")
endif ()

J
jinhai 已提交
44
set(CMAKE_CXX_STANDARD 14)
Z
zhiru 已提交
45
set(CMAKE_CXX_STANDARD_REQUIRED on)
J
jinhai 已提交
46 47 48 49 50 51 52 53 54 55 56 57 58 59

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 已提交
60
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -fPIC -DELPP_THREAD_SAFE -fopenmp")
Y
yu yunfeng 已提交
61 62 63 64
    if (GPU_VERSION STREQUAL "ON")
        set(ENABLE_LICENSE "ON")
        add_definitions("-DENABLE_LICENSE")
    endif ()
J
jinhai 已提交
65
else()
Z
zhiru 已提交
66
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -fPIC -DELPP_THREAD_SAFE -fopenmp")
J
jinhai 已提交
67 68
endif()

Z
zhiru 已提交
69 70 71 72


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

Z
zhiru 已提交
73 74 75
if (BUILD_UNIT_TEST)
    option(MEGASEARCH_BUILD_TESTS "Build the megasearch test suite" ON)
endif(BUILD_UNIT_TEST)
Z
zhiru 已提交
76 77 78 79 80 81 82 83 84 85

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

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

## Following should be check
J
jinhai 已提交
86 87 88

set(VECWISE_ENGINE_INCLUDE ${PROJECT_SOURCE_DIR}/include)
set(VECWISE_ENGINE_SRC ${PROJECT_SOURCE_DIR}/src)
Z
zhiru 已提交
89 90
#set(VECWISE_THIRD_PARTY ${CMAKE_CURRENT_SOURCE_DIR}/third_party)
#set(VECWISE_THIRD_PARTY_BUILD ${CMAKE_CURRENT_SOURCE_DIR}/third_party/build)
J
jinhai 已提交
91 92 93 94 95

add_compile_definitions(PROFILER=${PROFILER})

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

G
groot 已提交
98
link_directories(${CMAKE_CURRRENT_BINARY_DIR})
Z
zhiru 已提交
99 100
#link_directories(${VECWISE_THIRD_PARTY_BUILD}/lib)
#link_directories(${VECWISE_THIRD_PARTY_BUILD}/lib64)
101 102
#execute_process(COMMAND bash build.sh
#                WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/third_party)
J
jinhai 已提交
103

Z
zhiru 已提交
104
add_subdirectory(src)
J
jinhai 已提交
105 106

if (BUILD_UNIT_TEST)
J
jinhai 已提交
107
    add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/unittest)
J
jinhai 已提交
108
endif(BUILD_UNIT_TEST)
Y
yu yunfeng 已提交
109

G
groot 已提交
110
add_custom_target(Clean-All COMMAND ${CMAKE_BUILD_TOOL} clean)
111 112 113

#install
install(FILES
X
xj.lin 已提交
114 115
        scripts/start_server.sh
        scripts/stop_server.sh
116 117 118 119 120 121 122
        DESTINATION
        scripts)
install(FILES
        conf/server_config.yaml
        conf/vecwise_engine_log.conf
        DESTINATION
        conf)
Z
zhiru 已提交
123 124

config_summary()