mirror of
https://github.com/typesense/typesense.git
synced 2025-05-17 12:12:35 +08:00
Tweak cmake build.
- Download files only if they aren't already on disk - Trim H2O build: use OpenSSL
This commit is contained in:
parent
c698c3be1a
commit
dde18c92da
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,6 +1,6 @@
|
||||
.idea
|
||||
*.iml
|
||||
external
|
||||
external*
|
||||
build
|
||||
cmake-build-debug
|
||||
cmake-build-release
|
@ -3,9 +3,10 @@ project(typesense)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -std=c++11 -O0")
|
||||
set(DEP_ROOT_DIR ${CMAKE_SOURCE_DIR}/external-${CMAKE_SYSTEM_NAME})
|
||||
|
||||
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/)
|
||||
file(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/external)
|
||||
if(NOT EXISTS ${DEP_ROOT_DIR})
|
||||
file(MAKE_DIRECTORY ${DEP_ROOT_DIR})
|
||||
endif()
|
||||
|
||||
include(cmake/For.cmake)
|
||||
@ -23,21 +24,21 @@ FILE(GLOB HEADER_FILES include/*)
|
||||
FILE(GLOB SRC_FILES src/*.cpp)
|
||||
|
||||
include_directories(include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/external/${FOR_NAME})
|
||||
include_directories(${CMAKE_SOURCE_DIR}/external/${GTEST_NAME}/googletest/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/external/${H2O_NAME}/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/external/${H2O_NAME}/build/libressl-build/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/external/${ROCKSDB_NAME}/include)
|
||||
include_directories(${DEP_ROOT_DIR}/${FOR_NAME})
|
||||
include_directories(${DEP_ROOT_DIR}/${GTEST_NAME}/googletest/include)
|
||||
include_directories(${DEP_ROOT_DIR}/${H2O_NAME}/include)
|
||||
include_directories(${DEP_ROOT_DIR}/${H2O_NAME}/build/libressl-build/include)
|
||||
include_directories(${DEP_ROOT_DIR}/${ROCKSDB_NAME}/include)
|
||||
|
||||
link_directories(${CMAKE_SOURCE_DIR}/external/${GTEST_NAME}/googletest/build)
|
||||
link_directories(${CMAKE_SOURCE_DIR}/external/${FOR_NAME})
|
||||
link_directories(${CMAKE_SOURCE_DIR}/external/${H2O_NAME}/build)
|
||||
link_directories(${CMAKE_SOURCE_DIR}/external/${H2O_NAME}/build/libressl-build/lib)
|
||||
link_directories(${CMAKE_SOURCE_DIR}/external/${ROCKSDB_NAME})
|
||||
link_directories(${DEP_ROOT_DIR}/${GTEST_NAME}/googletest/build)
|
||||
link_directories(${DEP_ROOT_DIR}/${FOR_NAME})
|
||||
link_directories(${DEP_ROOT_DIR}/${H2O_NAME}/build)
|
||||
link_directories(${DEP_ROOT_DIR}/${H2O_NAME}/build/libressl-build/lib)
|
||||
link_directories(${DEP_ROOT_DIR}/${ROCKSDB_NAME})
|
||||
|
||||
add_executable(typesense-server ${HEADER_FILES} ${SRC_FILES} src/main/server.cpp)
|
||||
add_executable(search ${HEADER_FILES} ${SRC_FILES} src/main/main.cpp)
|
||||
add_executable(benchmark ${HEADER_FILES} ${SRC_FILES} src/main/benchmark.cpp)
|
||||
add_executable(typesense-server ${SRC_FILES} src/main/server.cpp)
|
||||
add_executable(search ${SRC_FILES} src/main/main.cpp)
|
||||
add_executable(benchmark ${SRC_FILES} src/main/benchmark.cpp)
|
||||
add_executable(typesense_test test/array_test.cpp test/sorted_array_test.cpp test/art_test.cpp
|
||||
test/collection_test.cpp test/collection_manager_test.cpp test/topster_test.cpp ${SRC_FILES})
|
||||
|
||||
|
2
build.sh
2
build.sh
@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
PROJECT_DIR=`dirname $0`
|
||||
|
||||
if [ "$1" == "--clean" ]; then
|
||||
if [ "$1" = "--clean" ]; then
|
||||
rm -rf $PROJECT_DIR/build
|
||||
mkdir $PROJECT_DIR/build
|
||||
fi
|
||||
|
@ -2,15 +2,19 @@
|
||||
|
||||
set(FOR_VERSION 49611808d08d4e47116aa2a3ddcabeb418f405f7)
|
||||
set(FOR_NAME libfor-${FOR_VERSION})
|
||||
set(FOR_TAR_PATH ${CMAKE_SOURCE_DIR}/external/${FOR_NAME}.tar.gz)
|
||||
set(FOR_TAR_PATH ${DEP_ROOT_DIR}/${FOR_NAME}.tar.gz)
|
||||
|
||||
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/${FOR_NAME})
|
||||
message(STATUS "Downloading and extracting libfor...")
|
||||
if(NOT EXISTS ${FOR_TAR_PATH})
|
||||
message(STATUS "Downloading libfor...")
|
||||
file(DOWNLOAD https://github.com/cruppstahl/libfor/archive/${FOR_VERSION}.tar.gz ${FOR_TAR_PATH})
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvzf ${FOR_TAR_PATH} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/external/)
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/${FOR_NAME}/libfor.a)
|
||||
if(NOT EXISTS ${DEP_ROOT_DIR}/${FOR_NAME})
|
||||
message(STATUS "Extracting libfor...")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvzf ${FOR_TAR_PATH} WORKING_DIRECTORY ${DEP_ROOT_DIR})
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${DEP_ROOT_DIR}/${FOR_NAME}/libfor.a)
|
||||
message("Building libfor locally...")
|
||||
execute_process(COMMAND make WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/external/${FOR_NAME}/)
|
||||
endif()
|
||||
execute_process(COMMAND make WORKING_DIRECTORY ${DEP_ROOT_DIR}/${FOR_NAME}/)
|
||||
endif()
|
||||
|
@ -2,20 +2,24 @@
|
||||
|
||||
set(GTEST_VERSION 1.8.0)
|
||||
set(GTEST_NAME googletest-release-${GTEST_VERSION})
|
||||
set(GTEST_TAR_PATH ${CMAKE_SOURCE_DIR}/external/${GTEST_NAME}.tar.gz)
|
||||
set(GTEST_TAR_PATH ${DEP_ROOT_DIR}/${GTEST_NAME}.tar.gz)
|
||||
|
||||
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/${GTEST_NAME})
|
||||
message(STATUS "Downloading and extracting Google Test...")
|
||||
if(NOT EXISTS ${GTEST_TAR_PATH})
|
||||
message(STATUS "Downloading Google Test...")
|
||||
file(DOWNLOAD https://github.com/google/googletest/archive/release-${GTEST_VERSION}.tar.gz ${GTEST_TAR_PATH})
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvzf ${GTEST_TAR_PATH} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/external/)
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/googletest-release-${GTEST_VERSION}/googletest/build)
|
||||
if(NOT EXISTS ${DEP_ROOT_DIR}/${GTEST_NAME})
|
||||
message(STATUS "Extracting Google Test...")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvzf ${GTEST_TAR_PATH} WORKING_DIRECTORY ${DEP_ROOT_DIR})
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${DEP_ROOT_DIR}/googletest-release-${GTEST_VERSION}/googletest/build)
|
||||
message("Configuring Google Test...")
|
||||
file(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/external/googletest-release-${GTEST_VERSION}/googletest/build)
|
||||
file(MAKE_DIRECTORY ${DEP_ROOT_DIR}/googletest-release-${GTEST_VERSION}/googletest/build)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND}
|
||||
"-H${CMAKE_SOURCE_DIR}/external/googletest-release-${GTEST_VERSION}/googletest"
|
||||
"-B${CMAKE_SOURCE_DIR}/external/googletest-release-${GTEST_VERSION}/googletest/build"
|
||||
"-H${DEP_ROOT_DIR}/googletest-release-${GTEST_VERSION}/googletest"
|
||||
"-B${DEP_ROOT_DIR}/googletest-release-${GTEST_VERSION}/googletest/build"
|
||||
RESULT_VARIABLE
|
||||
GOOGLETEST_CONFIGURE)
|
||||
if(NOT GOOGLETEST_CONFIGURE EQUAL 0)
|
||||
@ -24,7 +28,7 @@ if(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/googletest-release-${GTEST_VERSION}/g
|
||||
|
||||
message("Building Google Test locally...")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} --build
|
||||
"${CMAKE_SOURCE_DIR}/external/googletest-release-${GTEST_VERSION}/googletest/build"
|
||||
"${DEP_ROOT_DIR}/googletest-release-${GTEST_VERSION}/googletest/build"
|
||||
RESULT_VARIABLE
|
||||
GOOGLETEST_BUILD)
|
||||
if(NOT GOOGLETEST_BUILD EQUAL 0)
|
||||
|
@ -2,21 +2,26 @@
|
||||
|
||||
set(H2O_VERSION 2.0.4)
|
||||
set(H2O_NAME h2o-${H2O_VERSION})
|
||||
set(H2O_TAR_PATH ${CMAKE_SOURCE_DIR}/external/${H2O_NAME}.tar.gz)
|
||||
set(H2O_TAR_PATH ${DEP_ROOT_DIR}/${H2O_NAME}.tar.gz)
|
||||
|
||||
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/${H2O_NAME})
|
||||
message(STATUS "Downloading and extracting ${H2O_NAME}...")
|
||||
if(NOT EXISTS ${H2O_TAR_PATH})
|
||||
message(STATUS "Downloading ${H2O_NAME}...")
|
||||
file(DOWNLOAD https://github.com/h2o/h2o/archive/v${H2O_VERSION}.tar.gz ${H2O_TAR_PATH})
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvzf ${H2O_TAR_PATH} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/external/)
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/${H2O_NAME}/build)
|
||||
if(NOT EXISTS ${DEP_ROOT_DIR}/${H2O_NAME})
|
||||
message(STATUS "Extracting ${H2O_NAME}...")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvzf ${H2O_TAR_PATH} WORKING_DIRECTORY ${DEP_ROOT_DIR}/)
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${DEP_ROOT_DIR}/${H2O_NAME}/build/h2o)
|
||||
message("Configuring ${H2O_NAME}...")
|
||||
file(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/external/${H2O_NAME}/build)
|
||||
file(MAKE_DIRECTORY ${DEP_ROOT_DIR}/${H2O_NAME}/build)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND}
|
||||
"-DWITH_BUNDLED_SSL=on"
|
||||
"-H${CMAKE_SOURCE_DIR}/external/${H2O_NAME}"
|
||||
"-B${CMAKE_SOURCE_DIR}/external/${H2O_NAME}/build"
|
||||
"-DWITH_BUNDLED_SSL=off"
|
||||
"-DWITH_MRUBY=off"
|
||||
"-H${DEP_ROOT_DIR}/${H2O_NAME}"
|
||||
"-B${DEP_ROOT_DIR}/${H2O_NAME}/build"
|
||||
RESULT_VARIABLE
|
||||
H2O_CONFIGURE)
|
||||
if(NOT H2O_CONFIGURE EQUAL 0)
|
||||
@ -25,7 +30,7 @@ if(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/${H2O_NAME}/build)
|
||||
|
||||
message("Building ${H2O_NAME} locally...")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} --build
|
||||
"${CMAKE_SOURCE_DIR}/external/${H2O_NAME}/build"
|
||||
"${DEP_ROOT_DIR}/${H2O_NAME}/build"
|
||||
RESULT_VARIABLE
|
||||
H2O_BUILD)
|
||||
if(NOT H2O_BUILD EQUAL 0)
|
||||
|
@ -2,16 +2,19 @@
|
||||
|
||||
set(ROCKSDB_VERSION 4.11.2)
|
||||
set(ROCKSDB_NAME rocksdb-${ROCKSDB_VERSION})
|
||||
set(ROCKSDB_TAR_PATH ${CMAKE_SOURCE_DIR}/external/${ROCKSDB_NAME}.tar.gz)
|
||||
set(ROCKSDB_TAR_PATH ${DEP_ROOT_DIR}/${ROCKSDB_NAME}.tar.gz)
|
||||
|
||||
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/${ROCKSDB_NAME})
|
||||
message(STATUS "Downloading and extracting ${ROCKSDB_NAME}...")
|
||||
if(NOT EXISTS ${ROCKSDB_TAR_PATH})
|
||||
message(STATUS "Downloading ${ROCKSDB_NAME}...")
|
||||
file(DOWNLOAD https://github.com/facebook/rocksdb/archive/v${ROCKSDB_VERSION}.tar.gz ${ROCKSDB_TAR_PATH})
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvzf ${ROCKSDB_TAR_PATH} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/external/)
|
||||
endif()
|
||||
|
||||
if( (NOT EXISTS ${CMAKE_SOURCE_DIR}/external/${ROCKSDB_NAME}/librocksdb.so) AND
|
||||
(NOT EXISTS ${CMAKE_SOURCE_DIR}/external/${ROCKSDB_NAME}/librocksdb.dylib) )
|
||||
if(NOT EXISTS ${DEP_ROOT_DIR}/${ROCKSDB_NAME})
|
||||
message(STATUS "Extracting ${ROCKSDB_NAME}...")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvzf ${ROCKSDB_TAR_PATH} WORKING_DIRECTORY ${DEP_ROOT_DIR}/)
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${DEP_ROOT_DIR}/${ROCKSDB_NAME}/librocksdb.so)
|
||||
message("Building ${ROCKSDB_NAME} locally...")
|
||||
execute_process(COMMAND make "shared_lib" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/external/${ROCKSDB_NAME}/)
|
||||
execute_process(COMMAND make "shared_lib" WORKING_DIRECTORY ${DEP_ROOT_DIR}/${ROCKSDB_NAME}/)
|
||||
endif()
|
Loading…
x
Reference in New Issue
Block a user