diff --git a/.gitignore b/.gitignore index c0b8dbb2d78794eeb4bbf1002660db9d26aa21a4..8600ed0dc72a4e93a02d1ca2e2efb1a9b403daa2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,26 @@ +# CLion generated files +cpp/cmake-build-debug/ +cpp/cmake-build-release/ +cpp/cmake_build +cpp/.idea/ + .idea/ .ycm_extra_conf.py __pycache__ +# vscode generated files +.vscode + .env build cmake-build-debug cmake-build-release cmake_build + +# Compiled source +*.a +*.so +*.so.* *.o *.lo *.tar.gz diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 00a206484fb7a02ae0a734ffe04033072c5a0f5f..6fcb31a257e5708b7cb4b665101850f5872476e8 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -4,10 +4,32 @@ # Proprietary and confidential. #------------------------------------------------------------------------------- -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.14) +message(STATUS "Building using CMake version: ${CMAKE_VERSION}") +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}") project(vecwise_engine LANGUAGES CUDA CXX) +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}) 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") @@ -32,16 +54,6 @@ else() set(VECWISE_BUILD_ARCH unknown) endif() -if(DEFINED UNIX) - message("building vecwise on Unix") - set(VECWISE_BUILD_SYSTEM macos) -elseif(DEFINED APPLE) - message("building vecwise on MacOS") - set(VECWISE_BUILD_SYSTEM unix) -else() - message("unknown OS") - set(VECWISE_BUILD_SYSTEM unknown) -endif () if(CMAKE_BUILD_TYPE STREQUAL "Release") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -fPIC -DELPP_THREAD_SAFE") @@ -54,7 +66,19 @@ if (GPU_VERSION STREQUAL "ON") add_definitions("-DENABLE_LICENSE") endif () -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/" ${CMAKE_MODULE_PATH}) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +if (BUILD_UNIT_TEST) + option(MEGASEARCH_BUILD_TESTS "Build the megasearch test suite" ON) +endif(BUILD_UNIT_TEST) + +include(ExternalProject) +include(ThirdPartyPackages) + +include_directories(${MEGASEARCH_SOURCE_DIR}) +link_directories(${MEGASEARCH_BINARY_DIR}) + +## Following should be check set(VECWISE_ENGINE_INCLUDE ${PROJECT_SOURCE_DIR}/include) set(VECWISE_ENGINE_SRC ${PROJECT_SOURCE_DIR}/src) @@ -73,6 +97,7 @@ link_directories(${VECWISE_THIRD_PARTY_BUILD}/lib64) #execute_process(COMMAND bash build.sh # WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/third_party) + add_subdirectory(src) add_subdirectory(test_client) diff --git a/cpp/build.sh b/cpp/build.sh index f03b411bbbe4a881c85cb27881d10d811a91e81c..fde83360ba6443ef5b166f98b46231fa43867906 100755 --- a/cpp/build.sh +++ b/cpp/build.sh @@ -4,8 +4,9 @@ BUILD_TYPE="Debug" BUILD_UNITTEST="off" BUILD_GPU="OFF" INSTALL_PREFIX=$(pwd)/megasearch +MAKE_CLEAN="OFF" -while getopts "p:t:uhg" arg +while getopts "p:t:uhgr" arg do case $arg in t) @@ -21,6 +22,12 @@ do g) BUILD_GPU="ON" ;; + r) + if [[ -d cmake_build ]]; then + rm ./cmake_build -r + MAKE_CLEAN="ON" + fi + ;; h) # help echo " @@ -28,9 +35,11 @@ parameter: -t: build type -u: building unit test options -p: install prefix +-g: build GPU version +-r: remove previous build directory usage: -./build.sh -t \${BUILD_TYPE} [-u] [-h] +./build.sh -t \${BUILD_TYPE} [-u] [-h] [-g] [-r] " exit 0 ;; @@ -41,27 +50,29 @@ usage: esac done -if [[ -d cmake_build ]]; then - rm cmake_build -r +if [[ ! -d cmake_build ]]; then + mkdir cmake_build + MAKE_CLEAN="ON" fi -rm -rf ./cmake_build -mkdir cmake_build cd cmake_build CUDA_COMPILER=/usr/local/cuda/bin/nvcc -CMAKE_CMD="cmake -DBUILD_UNIT_TEST=${BUILD_UNITTEST} \ --DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} --DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ --DCMAKE_CUDA_COMPILER=${CUDA_COMPILER} \ --DGPU_VERSION=${BUILD_GPU} \ -$@ ../" -echo ${CMAKE_CMD} +if [[ ${MAKE_CLEAN} = "ON" ]]; then + CMAKE_CMD="cmake -DBUILD_UNIT_TEST=${BUILD_UNITTEST} \ + -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} + -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ + -DCMAKE_CUDA_COMPILER=${CUDA_COMPILER} \ + -DGPU_VERSION=${BUILD_GPU} \ + $@ ../" + echo ${CMAKE_CMD} -${CMAKE_CMD} + ${CMAKE_CMD} + make clean +fi -make clean && make -j || exit 1 +make -j || exit 1 if [[ ${BUILD_TYPE} != "Debug" ]]; then strip src/vecwise_server diff --git a/cpp/cmake/Modules/ConfigureGoogleTest.cmake b/cpp/cmake/Modules/ConfigureGoogleTest.cmake deleted file mode 100644 index d2f2f2c666de61a6bffa17928371697cb3e200cb..0000000000000000000000000000000000000000 --- a/cpp/cmake/Modules/ConfigureGoogleTest.cmake +++ /dev/null @@ -1,59 +0,0 @@ -set(GTEST_ROOT "${CMAKE_BINARY_DIR}/googletest") - -set(GTEST_CMAKE_ARGS "") - # " -Dgtest_build_samples=ON" - # " -DCMAKE_VERBOSE_MAKEFILE=ON") - -if(NOT CMAKE_CXX11_ABI) - message(STATUS "GTEST: Disabling the GLIBCXX11 ABI") - list(APPEND GTEST_CMAKE_ARGS " -DCMAKE_C_FLAGS=-D_GLIBCXX_USE_CXX11_ABI=0") - list(APPEND GTEST_CMAKE_ARGS " -DCMAKE_CXX_FLAGS=-D_GLIBCXX_USE_CXX11_ABI=0") -elseif(CMAKE_CXX11_ABI) - message(STATUS "GTEST: Enabling the GLIBCXX11 ABI") - list(APPEND GTEST_CMAKE_ARGS " -DCMAKE_C_FLAGS=-D_GLIBCXX_USE_CXX11_ABI=1") - list(APPEND GTEST_CMAKE_ARGS " -DCMAKE_CXX_FLAGS=-D_GLIBCXX_USE_CXX11_ABI=1") -endif(NOT CMAKE_CXX11_ABI) - -configure_file("${CMAKE_SOURCE_DIR}/cmake/Templates/GoogleTest.CMakeLists.txt.cmake" - "${GTEST_ROOT}/CMakeLists.txt") - -file(MAKE_DIRECTORY "${GTEST_ROOT}/build") -file(MAKE_DIRECTORY "${GTEST_ROOT}/install") - -execute_process(COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} . - RESULT_VARIABLE GTEST_CONFIG - WORKING_DIRECTORY ${GTEST_ROOT}) - -if(GTEST_CONFIG) - message(FATAL_ERROR "Configuring GoogleTest failed: " ${GTEST_CONFIG}) -endif(GTEST_CONFIG) - -set(PARALLEL_BUILD -j) -if($ENV{PARALLEL_LEVEL}) - set(NUM_JOBS $ENV{PARALLEL_LEVEL}) - set(PARALLEL_BUILD "${PARALLEL_BUILD}${NUM_JOBS}") -endif($ENV{PARALLEL_LEVEL}) - -if(${NUM_JOBS}) - if(${NUM_JOBS} EQUAL 1) - message(STATUS "GTEST BUILD: Enabling Sequential CMake build") - elseif(${NUM_JOBS} GREATER 1) - message(STATUS "GTEST BUILD: Enabling Parallel CMake build with ${NUM_JOBS} jobs") - endif(${NUM_JOBS} EQUAL 1) -else() - message(STATUS "GTEST BUILD: Enabling Parallel CMake build with all threads") -endif(${NUM_JOBS}) - -execute_process(COMMAND ${CMAKE_COMMAND} --build .. -- ${PARALLEL_BUILD} - RESULT_VARIABLE GTEST_BUILD - WORKING_DIRECTORY ${GTEST_ROOT}/build) - -if(GTEST_BUILD) - message(FATAL_ERROR "Building GoogleTest failed: " ${GTEST_BUILD}) -endif(GTEST_BUILD) - -message(STATUS "GoogleTest installed here: " ${GTEST_ROOT}/install) -set(GTEST_INCLUDE_DIR "${GTEST_ROOT}/install/include") -set(GTEST_LIBRARY_DIR "${GTEST_ROOT}/install/lib") -set(GTEST_FOUND TRUE) - diff --git a/cpp/cmake/Templates/GoogleTest.CMakeLists.txt.cmake b/cpp/cmake/Templates/GoogleTest.CMakeLists.txt.cmake deleted file mode 100644 index fe0035e240c2647c8bfa66959afa3459e9e62350..0000000000000000000000000000000000000000 --- a/cpp/cmake/Templates/GoogleTest.CMakeLists.txt.cmake +++ /dev/null @@ -1,12 +0,0 @@ -cmake_minimum_required(VERSION 3.12) - -include(ExternalProject) - -ExternalProject_Add(GoogleTest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG release-1.8.0 - SOURCE_DIR "${GTEST_ROOT}/googletest" - BINARY_DIR "${GTEST_ROOT}/build" - INSTALL_DIR "${GTEST_ROOT}/install" - CMAKE_ARGS ${GTEST_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX=${GTEST_ROOT}/install) - diff --git a/cpp/src/license/LicenseLibrary.cpp b/cpp/src/license/LicenseLibrary.cpp index 669810552e734e066f9f489822473eea5a6c7a07..d67d7cdcd47a7008468e6c8b80446f19dad8fa08 100644 --- a/cpp/src/license/LicenseLibrary.cpp +++ b/cpp/src/license/LicenseLibrary.cpp @@ -324,7 +324,7 @@ LicenseLibrary::GPUinfoFileDeserialization(const std::string &path, } ServerError -LicenseLibrary::GetDateTime(char *cha, time_t &data_time) { +LicenseLibrary::GetDateTime(const char *cha, time_t &data_time) { tm tm_; int year, month, day; sscanf(cha, "%d-%d-%d", &year, &month, &day); diff --git a/cpp/src/license/LicenseLibrary.h b/cpp/src/license/LicenseLibrary.h index a4202b1a0bc2ac7c6fc3bbabb64adeed0cf1d46f..d5e97ac8a37f458dfd49c41c0871f6536f243ab8 100644 --- a/cpp/src/license/LicenseLibrary.h +++ b/cpp/src/license/LicenseLibrary.h @@ -92,7 +92,7 @@ class LicenseLibrary { std::map &uuid_encrption_map); static ServerError - GetDateTime(char *cha, time_t &data_time); + GetDateTime(const char *cha, time_t &data_time); private: diff --git a/cpp/unittest/license/license_library_tests.cpp b/cpp/unittest/license/license_library_tests.cpp index f47ce5a43f4669eddb2764dabb16a8be84c50a59..c68f243d4e40280d0392368db141f8e7d251becb 100644 --- a/cpp/unittest/license/license_library_tests.cpp +++ b/cpp/unittest/license/license_library_tests.cpp @@ -128,8 +128,8 @@ TEST(LicenseLibraryTest, LICENSE_FILE_TEST) { // 11.GetDateTime time_t starting_time; time_t end_time; - char *string_starting_time = "2019-05-10"; - char *string_end_time = "2022-05-10"; + const char *string_starting_time = "2019-05-10"; + const char *string_end_time = "2022-05-10"; err = server::LicenseLibrary::GetDateTime(string_starting_time, starting_time); ASSERT_EQ(err, server::SERVER_SUCCESS); err = server::LicenseLibrary::GetDateTime(string_end_time, end_time);