diff --git a/build/Makefile b/Makefile similarity index 88% rename from build/Makefile rename to Makefile index 6132356..c2aa365 100644 --- a/build/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ oss_endpoint := $(shell [[ -f $$HOME/.ossutilconfig ]] && sed 's;^endpoint=(.*); oss_id := $(shell [[ -f $$HOME/.ossutilconfig ]] && sed 's;^accessKeyID=(.*);\1;p' -rn $$HOME/.ossutilconfig) oss_secret := $(shell [[ -f $$HOME/.ossutilconfig ]] && sed 's;^accessKeySecret=(.*);\1;p' -rn $$HOME/.ossutilconfig) -docker_cmd := docker run -v $$PWD/../docker/run.sh:/usr/src/third-party/run.sh -v $$PWD/packages:/data +docker_cmd := docker run -v $$PWD/docker/run.sh:/usr/src/third-party/run.sh -v $$PWD/build/packages:/data ifneq ($(oss_endpoint),) docker_cmd += -e OSS_ENDPOINT=$(oss_endpoint) -e OSS_ID=$(oss_id) -e OSS_SECRET=$(oss_secret) endif diff --git a/README.md b/README.md index e2ac603..32be797 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ * googlebenchmark * googletest * gperf + * inja * jemalloc * ldap * libcurl @@ -27,6 +28,7 @@ * lz4 * lzma * mstch + * nlohmann/json * openssl * proxygen * rocksdb @@ -34,6 +36,7 @@ * simdjson * snappy * sodium + * valijson * wangle * zlib * zstd diff --git a/project/CMakeLists.txt b/project/CMakeLists.txt index 1e7c999..c72a99e 100644 --- a/project/CMakeLists.txt +++ b/project/CMakeLists.txt @@ -216,6 +216,7 @@ set(ALL_TARGETS googlebenchmark googletest gperf + inja jemalloc ldap libcurl @@ -226,6 +227,7 @@ set(ALL_TARGETS lz4 lzma mstch + nlohmann-json openssl proxygen robin-hood-hashing @@ -240,6 +242,7 @@ set(ALL_TARGETS zlib zstd utf8proc + valijson llvm arrow datasketches @@ -348,6 +351,10 @@ maybe_add_dependencies(re2 abseil) maybe_add_dependencies(grpc protobuf re2 c-ares openssl) maybe_add_dependencies(faiss openblas) +# JSON +maybe_add_dependencies(valijson nlohmann-json) +maybe_add_dependencies(inja nlohmann-json) + add_custom_target( clean-all DEPENDS ${CLEAN_TARGETS} diff --git a/project/externals/inja.cmake b/project/externals/inja.cmake new file mode 100644 index 0000000..84a20a0 --- /dev/null +++ b/project/externals/inja.cmake @@ -0,0 +1,40 @@ +# Copyright (c) 2025 vesoft inc. All rights reserved. +# +# This source code is licensed under MIT License. + +set(name inja) +set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) +ExternalProject_Add( + ${name} + URL https://github.com/pantor/inja/archive/34514c2658f809404b9a165591f242ee10250519.zip + URL_HASH MD5=f537dae8df3993c89f2d677953d2b08a + DOWNLOAD_NAME ${name}-master-2025-03-19.zip + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} + TMP_DIR ${BUILD_INFO_DIR} + STAMP_DIR ${BUILD_INFO_DIR} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + SOURCE_DIR ${source_dir} + CMAKE_ARGS + ${common_cmake_args} + -DINJA_USE_EMBEDDED_JSON=OFF + -DBUILD_TESTING=OFF + -DBUILD_BENCHMARK=OFF + -DCMAKE_BUILD_TYPE=Release + BUILD_IN_SOURCE 1 + BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} + INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install + LOG_CONFIGURE TRUE + LOG_BUILD TRUE + LOG_INSTALL TRUE +) + +ExternalProject_Add_Step(${name} clean + EXCLUDE_FROM_MAIN TRUE + ALWAYS TRUE + DEPENDEES configure + COMMAND make clean -j + COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build + WORKING_DIRECTORY ${source_dir} +) + +ExternalProject_Add_StepTargets(${name} clean) diff --git a/project/externals/nlohmann-json.cmake b/project/externals/nlohmann-json.cmake new file mode 100644 index 0000000..3bd591e --- /dev/null +++ b/project/externals/nlohmann-json.cmake @@ -0,0 +1,40 @@ +# Copyright (c) 2025 vesoft inc. All rights reserved. +# +# This source code is licensed under MIT License. + +set(name nlohmann-json) +set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) +ExternalProject_Add( + ${name} + URL https://github.com/nlohmann/json/archive/3a5703931ad70852b668a46cac34354d1b264442.zip + URL_HASH MD5=8c83312dd3fbf657e144be77799cfeba + DOWNLOAD_NAME ${name}-develop-2025-03-29.tar.gz + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} + TMP_DIR ${BUILD_INFO_DIR} + STAMP_DIR ${BUILD_INFO_DIR} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + SOURCE_DIR ${source_dir} + CMAKE_ARGS + ${common_cmake_args} + -DNLOHMANN_JSON_CONFIG_INSTALL_DIR=${CMAKE_INSTALL_PREFIX}/lib/cmake/nlohmann_json + -DJSON_BuildTests=OFF + -DJSON_Install=ON + -DCMAKE_BUILD_TYPE=Release + BUILD_IN_SOURCE 1 + BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} + INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install + LOG_CONFIGURE TRUE + LOG_BUILD TRUE + LOG_INSTALL TRUE +) + +ExternalProject_Add_Step(${name} clean + EXCLUDE_FROM_MAIN TRUE + ALWAYS TRUE + DEPENDEES configure + COMMAND make clean -j + COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build + WORKING_DIRECTORY ${source_dir} +) + +ExternalProject_Add_StepTargets(${name} clean) diff --git a/project/externals/valijson.cmake b/project/externals/valijson.cmake new file mode 100644 index 0000000..875e194 --- /dev/null +++ b/project/externals/valijson.cmake @@ -0,0 +1,40 @@ +# Copyright (c) 2025 vesoft inc. All rights reserved. +# +# This source code is licensed under BSD-2-Clause License. + +set(name valijson) +set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) +ExternalProject_Add( + ${name} + URL https://github.com/tristanpenman/valijson/archive/refs/tags/v1.0.4.tar.gz + URL_HASH MD5=8149558a10e73dc39a7a6baef1b3d19c + DOWNLOAD_NAME ${name}-1.0.4.tar.gz + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} + TMP_DIR ${BUILD_INFO_DIR} + STAMP_DIR ${BUILD_INFO_DIR} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + SOURCE_DIR ${source_dir} + CMAKE_ARGS + ${common_cmake_args} + -Dvalijson_USE_EXCEPTIONS=ON + -Dvalijson_BUILD_EXAMPLES=OFF + -Dvalijson_BUILD_TESTS=OFF + -DCMAKE_BUILD_TYPE=Release + BUILD_IN_SOURCE 1 + BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} + INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install + LOG_CONFIGURE TRUE + LOG_BUILD TRUE + LOG_INSTALL TRUE +) + +ExternalProject_Add_Step(${name} clean + EXCLUDE_FROM_MAIN TRUE + ALWAYS TRUE + DEPENDEES configure + COMMAND make clean -j + COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build + WORKING_DIRECTORY ${source_dir} +) + +ExternalProject_Add_StepTargets(${name} clean)