├── .env ├── .github └── workflows │ ├── build.yml │ └── docker.yml ├── .gitignore ├── Makefile ├── README.md ├── build.sh ├── cxx-compiler-abi-version.sh ├── docker ├── Makefile ├── buildx │ ├── centos-7.Dockerfile │ ├── centos-8.Dockerfile │ ├── rockylinux-8.Dockerfile │ ├── ubuntu-1604.Dockerfile │ ├── ubuntu-1804.Dockerfile │ ├── ubuntu-2004.Dockerfile │ ├── ubuntu-2204.Dockerfile │ └── ubuntu-2404.Dockerfile ├── oss-upload.sh └── run.sh ├── install-third-party.sh └── project ├── CMakeLists.txt ├── check-so-libs.sh ├── cmake ├── ExternalProjectGit.cmake ├── FindAutoconf.cmake ├── FindAutoconfArchive.cmake ├── FindAutomake.cmake └── FindLibtool.cmake ├── externals ├── abseil.cmake ├── annoy.cmake ├── arrow.cmake ├── autoconf-archive.cmake ├── autoconf.cmake ├── automake.cmake ├── berkeleydb.cmake ├── bison.cmake ├── boost.cmake ├── breakpad.cmake ├── bzip2.cmake ├── c-ares.cmake ├── cachelib.cmake ├── capstone.cmake ├── config_guess.sh ├── cppjieba.cmake ├── cyrus-sasl.cmake ├── datasketches.cmake ├── date.cmake ├── double-conversion.cmake ├── duckdb.cmake ├── eigen.cmake ├── faiss.cmake ├── fatal.cmake ├── fizz.cmake ├── flex.cmake ├── fmt.cmake ├── folly.cmake ├── gettext.cmake ├── gflags.cmake ├── glog.cmake ├── googlebenchmark.cmake ├── googletest.cmake ├── gperf.cmake ├── grpc.cmake ├── hnswlib.cmake ├── inja.cmake ├── jemalloc.cmake ├── jwt-cpp.cmake ├── ldap.cmake ├── libcurl.cmake ├── libdwarf.cmake ├── libev.cmake ├── libevent.cmake ├── libtool.cmake ├── libunwind.cmake ├── libxml2.cmake ├── limonp.cmake ├── llvm.cmake ├── lz4.cmake ├── lzma.cmake ├── mstch.cmake ├── nlohmann-json.cmake ├── openblas.cmake ├── openssl.cmake ├── pkg.m4 ├── pkgconf.cmake ├── protobuf.cmake ├── protoc-gen-go-grpc.cmake ├── protoc-gen-go.cmake ├── protoc-gen-grpc-java.cmake ├── proxygen.cmake ├── re2.cmake ├── robin-hood-hashing.cmake ├── rocksdb.cmake ├── s2geometry.cmake ├── simdjson.cmake ├── snappy.cmake ├── sodium.cmake ├── sparsemap.cmake ├── utf8proc.cmake ├── valijson.cmake ├── wangle.cmake ├── xsimd.cmake ├── yaml-cpp.cmake ├── zlib.cmake └── zstd.cmake └── patches ├── arrow-18.0.0.patch ├── breakpad-aarch64.patch ├── bzip2-1.0.8.patch ├── cachelib-2022-12-26.patch ├── duckdb-0.6.1.patch ├── fbthrift-2022-12-26.patch ├── fizz-2022-12-26.patch ├── fmt-9.1.0.patch ├── folly-2022-12-26.patch ├── glog-0.6.0.patch ├── libev-4.33.patch ├── lss-2021-12-20.tgz ├── proxygen-2022-12-26.patch ├── rocksdb-7.8.3.patch ├── s2geometry-0.10.0.patch ├── s2geometry-0.9.0.patch └── snappy-1.1.9.patch /.env: -------------------------------------------------------------------------------- 1 | VERSION=5.1 2 | URL_BASE=https://oss-cdn.nebula-graph.com.cn/third-party 3 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | paths-ignore: 8 | - 'docker/buildx/**.Dockerfile' 9 | workflow_run: 10 | workflows: 11 | - docker 12 | branches: 13 | - master 14 | types: 15 | - completed 16 | conclusion: success 17 | 18 | concurrency: 19 | group: ${{ github.ref }} 20 | cancel-in-progress: true 21 | 22 | defaults: 23 | run: 24 | shell: bash 25 | 26 | env: 27 | VERSION: 5.1 28 | URL_BASE: https://minio.vesoft-inc.com/rc-build/third-party 29 | 30 | jobs: 31 | build_and_upload: 32 | runs-on: 33 | - self-hosted 34 | - Linux 35 | - Large 36 | - ${{ matrix.arch }} 37 | strategy: 38 | fail-fast: false 39 | matrix: 40 | os: 41 | - centos7 42 | - centos8 43 | #- ubuntu1604 44 | #- ubuntu1804 45 | - ubuntu2004 46 | - ubuntu2204 47 | - ubuntu2404 48 | arch: 49 | - x64 50 | - arm64 51 | container: 52 | image: vesoft/third-party-build:${{ matrix.os }} 53 | steps: 54 | - uses: webiny/action-post-run@3.1.0 55 | with: 56 | run: find . -mindepth 1 -delete 57 | - uses: actions/checkout@v4 58 | - name: Set up environment 59 | if: matrix.os == 'centos7' 60 | run: | 61 | export URL=https://raw.githubusercontent.com/vesoft-inc/nebula-gears/master/install 62 | bash <(curl -Ls $URL) 63 | install-gcc --version=9.5.0 64 | - name: Pre-Build 65 | run: | 66 | mkdir -p _build 67 | sed -i "s#^URL_BASE=.*#URL_BASE=$URL_BASE#" .env 68 | sed -i "s#^VERSION=.*#VERSION=$VERSION#" .env 69 | cat .env 70 | - name: Build 71 | run: | 72 | if [[ "${{ matrix.os }}" == "centos7" ]]; then 73 | export TOOLSET_GCC_DIR=/opt/vesoft/toolset/gcc/9.5.0 74 | export CC=${TOOLSET_GCC_DIR}/bin/gcc 75 | export CXX=${TOOLSET_GCC_DIR}/bin/g++ 76 | export PATH=${TOOLSET_GCC_DIR}/bin:${PATH} 77 | export LD_LIBRARY_PATH=${TOOLSET_GCC_DIR}/lib64:$LD_LIBRARY_PATH 78 | fi 79 | build_package=1 ../build.sh 80 | working-directory: _build/ 81 | - name: Setup MinIO 82 | uses: vesoft-inc/.github/actions/setup-minio@master 83 | with: 84 | minio_url: ${{ secrets.MINIO_ENDPOINT }} 85 | access_key: ${{ secrets.MINIO_KEY }} 86 | secret_key: ${{ secrets.MINIO_SECRET }} 87 | - name: Copy dir to MinIO 88 | run: mc cp -r _build/packages/ minio/rc-build/third-party/$VERSION/ 89 | - uses: vesoft-inc/.github/actions/upload-to-oss@master 90 | with: 91 | key-id: ${{ secrets.OSS_ID }} 92 | key-secret: ${{ secrets.OSS_SECRET }} 93 | endpoint: ${{ secrets.OSS_ENDPOINT }} 94 | bucket: nebula-graph 95 | asset-path: _build/packages 96 | target-path: third-party/${{ env.VERSION }} 97 | 98 | repo-dispatch: 99 | needs: build_and_upload 100 | runs-on: ubuntu-latest 101 | steps: 102 | - uses: peter-evans/repository-dispatch@v3 103 | with: 104 | token: ${{ secrets.GH_PAT }} 105 | repository: vesoft-inc/nebula-dev-docker 106 | event-type: nebula-third-party-build 107 | client-payload: |- 108 | { 109 | "version": "${{ env.VERSION }}" 110 | } 111 | -------------------------------------------------------------------------------- /.github/workflows/docker.yml: -------------------------------------------------------------------------------- 1 | name: docker 2 | 3 | on: 4 | workflow_dispatch: 5 | push: 6 | branches: 7 | - 'master' 8 | paths: 9 | - 'docker/buildx/**.Dockerfile' 10 | 11 | concurrency: 12 | group: ${{ github.ref }} 13 | cancel-in-progress: true 14 | 15 | defaults: 16 | run: 17 | shell: bash 18 | 19 | jobs: 20 | docker: 21 | runs-on: ubuntu-latest 22 | strategy: 23 | fail-fast: false 24 | matrix: 25 | os: 26 | - centos-7 27 | - centos-8 28 | - ubuntu-2004 29 | - ubuntu-2204 30 | - ubuntu-2404 31 | steps: 32 | - name: Setup environment variables 33 | id: vars 34 | run: | 35 | echo "TAG=$(echo ${{ matrix.os }} | tr -d '-')" >> $GITHUB_OUTPUT 36 | - uses: actions/checkout@v4 37 | - uses: docker/login-action@v3 38 | with: 39 | username: ${{ secrets.DOCKER_USERNAME }} 40 | password: ${{ secrets.DOCKER_PASSWORD }} 41 | - uses: docker/setup-qemu-action@v3 42 | - uses: docker/setup-buildx-action@v3 43 | - uses: docker/build-push-action@v6 44 | with: 45 | context: . 46 | file: ./docker/buildx/${{ matrix.os }}.Dockerfile 47 | platforms: linux/amd64,linux/arm64 48 | tags: vesoft/third-party-build:${{ steps.vars.outputs.TAG }} 49 | push: true 50 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | # Executables 30 | *.exe 31 | *.out 32 | *.app 33 | 34 | build 35 | !build/Makefile 36 | build.log 37 | tarballs 38 | install 39 | nebula-third-party-src-* 40 | 41 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | tags=centos-7 centos-8 rockylinux-8 ubuntu-1604 ubuntu-1804 ubuntu-2004 ubuntu-2204 2 | 3 | all: $(tags) 4 | 5 | .PHONY: all 6 | 7 | print: 8 | @echo $(tags) 9 | 10 | oss_endpoint := $(shell [[ -f $$HOME/.ossutilconfig ]] && sed 's;^endpoint=(.*);\1;p' -rn $$HOME/.ossutilconfig) 11 | oss_id := $(shell [[ -f $$HOME/.ossutilconfig ]] && sed 's;^accessKeyID=(.*);\1;p' -rn $$HOME/.ossutilconfig) 12 | oss_secret := $(shell [[ -f $$HOME/.ossutilconfig ]] && sed 's;^accessKeySecret=(.*);\1;p' -rn $$HOME/.ossutilconfig) 13 | 14 | docker_cmd := docker run -v $$PWD/docker/run.sh:/usr/src/third-party/run.sh -v $$PWD/build/packages:/data 15 | ifneq ($(oss_endpoint),) 16 | docker_cmd += -e OSS_ENDPOINT=$(oss_endpoint) -e OSS_ID=$(oss_id) -e OSS_SECRET=$(oss_secret) 17 | endif 18 | ifneq ($(USE_GCC_VERSIONS),) 19 | docker_cmd += -e USE_GCC_VERSIONS=$(USE_GCC_VERSIONS) 20 | endif 21 | 22 | %: 23 | @echo '******************' Build Nebula Third Party For $* '********************' 24 | @$(docker_cmd) --rm -it vesoft/third-party-build:$* ./run.sh 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Provides 2 | * berkeleydb 3 | * bison 4 | * boost 5 | * breakpad 6 | * bzip2 7 | * capstone 8 | * date 9 | * double-conversion 10 | * fatal 11 | * fbthrift 12 | * fizz 13 | * flex 14 | * fmt 15 | * folly 16 | * gflags 17 | * glog 18 | * googlebenchmark 19 | * googletest 20 | * gperf 21 | * inja 22 | * jemalloc 23 | * jwt-cpp 24 | * ldap 25 | * libcurl 26 | * libdwarf 27 | * libevent 28 | * libunwind 29 | * lz4 30 | * lzma 31 | * mstch 32 | * nlohmann-json 33 | * openssl 34 | * proxygen 35 | * rocksdb 36 | * s2geometry 37 | * simdjson 38 | * snappy 39 | * sodium 40 | * valijson 41 | * wangle 42 | * yaml-cpp 43 | * zlib 44 | * zstd 45 | * robin-hood-hashing 46 | * libev 47 | * xsimd 48 | * duckdb 49 | * utf8proc 50 | * apache-arrow 51 | * cppjieba 52 | * limonp 53 | 54 | # How to Build 55 | 56 | ## Build Requirements 57 | 58 | * Access to the Internet 59 | * Platform: x86_64 or aarch64(i.e. arm64v8), `uname -m` 60 | * OS: Linux 3.10+, `uname -r` 61 | * Compiler: GCC 7.5.0+, `g++ --version` 62 | * libc: glibc 2.17+, `ldd --version` 63 | * Build tools: CMake 3.5+, `cmake --version` 64 | 65 | Other dependencies: 66 | * Python 3+ 67 | 68 | **NOTE**: 69 | * If you run `ls /usr/include/ | grep python`, output `python3.*m` instead of `python3.*`. And if build failed because of `fatal error: pyconfig.h: No such file or directory`, You can `cd /usr/include` and `ln -s python3.*m python3.*` (replace with your version). 70 | 71 | ## Build Third Party 72 | 73 | ### Prepare 74 | ```shell 75 | $ git clone https://github.com/vesoft-inc/nebula-third-party.git 76 | $ path=$(pwd)/nebula-third-party 77 | $ mkdir build && cd build 78 | ``` 79 | 80 | ### Native Build 81 | ```shell 82 | $ build_package=1 $path/build.sh 83 | $ ls 84 | install/ tarballs/ packages/ nebula-third-party-src-5.0.tgz 85 | $ ls packages 86 | vesoft-third-party-5.0-x86_64-libc-xxx-gcc-xxx-abi-11.sh 87 | 88 | # You could also specify an install prefix 89 | $ build_package=1 $path/build.sh /opt/vesoft/third-party/5.0 90 | ``` 91 | 92 | ### Docker-based Build 93 | The docker-based build is for building pre-built packages of third parties. For each target(OS or glibc), it uses different version of GCC to perform the build. 94 | ```shell 95 | # Print all targets 96 | $ make -C $path/build print 97 | centos-7 centos-8 rockylinux-8 ubuntu-1604 ubuntu-1804 ubuntu-2004 ubuntu-2204 98 | 99 | # Build specific target 100 | $ make -C $path/build centos-7 101 | 102 | # Build all targets 103 | $ make -C $path/build all 104 | 105 | # Build with specified versions of GCC 106 | $ USE_GCC_VERSIONS=7.5.0,10.1.0 make -C $path/build 107 | 108 | # All built packages resides in packages/ 109 | $ ls packages 110 | vesoft-third-party-5.0-x86_64-libc-xxx-gcc-xxx-abi-11.sh ... 111 | ``` 112 | 113 | **NOTE**: 114 | * If OSS credential were setup properly in `$HOME/.ossutilconfig`, all built packages will be uploaded to `oss://nebula-graph/third-party/5.0` 115 | * Invoke with `make -ik` to continue to build the next target even if some target fails. 116 | * Packages for different architectures(x86_64, aarch64) need to be built separately on the target machine. 117 | * It's always a bad idea to run a Docker container whose native kernel is newer than the hosting system's, e.g. Ubuntu 1804 container on Centos 7 host. 118 | * Currently, available GCC versions are: 7.5.0, 8.3.0, 9.1.0, 9.2.0, 9.3.0 and 10.1.0. 119 | * Currently, available glibc versions are: 2.17(Centos 7), 2.23(Ubuntu 16.04), 2.27(Ubuntu 18.04), 2.31(Ubuntu 20.04) and 2.32(Ubuntu 20.10). 120 | 121 | 122 | ## Build the Docker Images 123 | ```shell 124 | $ make -C $path/docker 125 | ``` 126 | 127 | **NOTE**: 128 | * Rules are the same as building the third parties. 129 | * All docker images will be pushed to vesoft/third-party-build. 130 | * You should have logged in DockerHub in advance and have write access to the repository vesoft/third-party-build. 131 | * Images for different architectures(x86_64, aarch64) need to be built separately on the target machine. 132 | 133 | 134 | # How to Install Pre-built Packages 135 | You could invoke the `install-third-party.sh` script to install a pre-built package of third party. It automatically chooses an applicable version for your environment, 136 | according to the version of GCC and glibc. 137 | 138 | ```bash 139 | # Check the GCC version 140 | $ g++ --version 141 | g++ (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2) 142 | ... 143 | 144 | # Check the glibc version 145 | $ ldd --version 146 | ldd (GNU libc) 2.29 147 | ... 148 | 149 | # Download and install 150 | $ nebula-third-party/install-third-party.sh 151 | ... 152 | $ ls /opt/vesoft/third-party/5.0 153 | version-info bin/ include/ lib/ lib64 share/ 154 | 155 | # Check the version info of the installed package 156 | $ cat /opt/vesoft/third-party/5.0/version-info 157 | Package : Nebula Third Party 158 | Version : 5.0 159 | glibc : 2.27 160 | Arch : x86_64 161 | Compiler : GCC 8.3.0 162 | C++ ABI : 11 163 | Vendor : VEsoft Inc. 164 | 165 | # Install to customized directory 166 | $ nebula-third-party/install-third-party.sh --prefix=/path/to/install 167 | 168 | # Install with a customized GCC 169 | $ CXX=/path/to/gcc/bin/g++ nebula-third-party/install-third-party.sh 170 | ``` 171 | 172 | **NOTE**: 173 | * Because `sudo` doesn't pass environment variables by default, you need pass `CXX` with the `-E` option if you are using a non-default compiler setup. Like, 174 | `sudo -E CXX=/path/to/g++ install-third-party.sh --prefix=/opt/vesoft/third-party/5.0` 175 | * Nebula Graph requires C++17 support to build. Although GCC 7.x announces to fully support C++17, it does not stablize until GCC 9.x. Please refer to [here](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99952) as an example. We suggest to use GCC 9.x or higher to build Nebula Graph. Otherwise, please ensure that you use a compiler which matches the one used to build the pre-built package. 176 | * the deps of the NeoKylin on mips64el 177 | - glibc-static.mips64el 178 | - glibc-n32-devel.mips64el 179 | - gperf 180 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | # 3 | # Copyright (c) 2019 vesoft inc. All rights reserved. 4 | # 5 | # This source code is licensed under Apache 2.0 License. 6 | 7 | 8 | # Use CC and CXX environment variables to use custom compilers. 9 | 10 | start_time=$(date +%s) 11 | 12 | # Always use bash 13 | shell=$(basename $(readlink /proc/$$/exe)) 14 | if [ ! x$shell = x"bash" ] && [ x$shell != x"qemu-aarch64"* ] 15 | then 16 | bash $0 $@ 17 | exit $? 18 | fi 19 | 20 | this_dir=$(dirname $(readlink -f $0)) 21 | 22 | # CMake and GCC version checking 23 | function version_cmp { 24 | mapfile -t left < <( echo $1 | tr . '\n' ) 25 | mapfile -t right < <( echo $2 | tr . '\n') 26 | local i 27 | for i in ${!left[@]} 28 | do 29 | local lv=${left[$i]} 30 | local rv=${right[$i]} 31 | [[ -z $rv ]] && { echo $lv; return; } 32 | [[ $lv -ne $rv ]] && { echo $((lv - rv)); return; } 33 | done 34 | ((i++)) 35 | rv=${right[$i]} 36 | [[ ${#right[@]} -gt ${#left[@]} ]] && { echo $((0-rv)); return; } 37 | } 38 | 39 | function check_cmake { 40 | hash cmake &> /dev/null || { echo "No cmake found." 1>&2 ; return 1; } 41 | local cmake_version=$(cmake --version | head -1 | cut -d ' ' -f 3) 42 | local least_cmake_version=3.14.0 43 | if [[ $(version_cmp $cmake_version $least_cmake_version) -lt 0 ]] 44 | then 45 | echo "cmake $least_cmake_version or higher required, but only found $cmake_version" 1>&2 46 | return 1 47 | fi 48 | return 0 49 | } 50 | 51 | function check_cxx { 52 | # TODO To consider clang++ 53 | local cxx_cmd 54 | hash g++ &> /dev/null && cxx_cmd=g++ 55 | [[ -n $CXX ]] && cxx_cmd=$CXX 56 | [[ -z $cxx_cmd ]] && { echo "No C++ compiler found" 1>&2; exit 1; } 57 | cxx_version=$($cxx_cmd -dumpfullversion -dumpversion 2>/dev/null) 58 | local least_cxx_version=7.5.0 59 | if [[ $(version_cmp $cxx_version $least_cxx_version) -lt 0 ]] 60 | then 61 | echo "g++ $least_cxx_version or higher required, but you have $cxx_version" 1>&2 62 | exit 1 63 | fi 64 | } 65 | 66 | check_cxx 67 | 68 | source $this_dir/.env 69 | 70 | # Directories setup 71 | cur_dir=`pwd` 72 | source_dir=$this_dir/project 73 | build_root=$cur_dir 74 | build_dir=$build_root/build 75 | package_dir=$build_root/packages 76 | prefix=$1 77 | install_dir=${prefix:-$build_root/install} 78 | download_dir=$build_root/tarballs 79 | source_tar_name=nebula-third-party-src-$VERSION.tgz 80 | source_url=$URL_BASE/${source_tar_name} 81 | logfile=$build_root/build.log 82 | cxx_cmd=${CXX:-g++} 83 | gcc_version=$(${CXX:-g++} -dumpfullversion -dumpversion) 84 | abi_version=$($this_dir/cxx-compiler-abi-version.sh) 85 | libc_version=$(ldd --version | head -1 | cut -d ' ' -f4 | cut -d '-' -f1) 86 | 87 | export PATH=$install_dir/bin:$PATH 88 | export PKG_CONFIG_PATH=$install_dir/lib/pkgconfig:$install_dir/lib64/pkgconfig:$PKG_CONFIG_PATH 89 | 90 | # Exit on any failure here after 91 | set -e 92 | set -o pipefail 93 | 94 | trap '[[ $? -ne 0 ]] && echo "Building failed, see $logfile for more details." 1>&2' EXIT 95 | 96 | # Allow to customize compilers 97 | [[ -n ${CC} ]] && C_COMPILER_ARG="-DCMAKE_C_COMPILER=${CC}" 98 | [[ -n ${CXX} ]] && CXX_COMPILER_ARG="-DCMAKE_CXX_COMPILER=${CXX}" 99 | [[ ${disable_cxx11_abi} -ne 0 ]] && DISABLE_CXX11_ABI="-DDISABLE_CXX11_ABI=1" 100 | export disable_cxx11_abi 101 | 102 | # Download source archives if necessary 103 | mkdir -p $build_root 104 | cd $build_root 105 | 106 | if [[ -f $source_tar_name ]] 107 | then 108 | checksum=$(md5sum $source_tar_name | cut -d ' ' -f 1) 109 | fi 110 | 111 | # NOTE Please adjust the expected checksum once the source tarball changed 112 | if [[ ! $checksum = d466687c0f2946fd300e8c2bca42a5d7 ]] 113 | then 114 | rm -f $source_tar_name 115 | hash wget &> /dev/null && download_cmd="wget -c" 116 | if [[ -z $download_cmd ]] 117 | then 118 | echo "'wget' not found for downloading" 1>&2; 119 | elif ! bash -c "$download_cmd $source_url" 120 | then 121 | # Resort to the builtin download method of cmake on failure 122 | echo "Download from $source_url failed." 1>&2 123 | else 124 | echo "Source of third party was downdloaded to $build_root" 125 | echo -n "Extracting into $download_dir..." 126 | tar -xzf $source_tar_name 127 | echo "done" 128 | fi 129 | else 130 | tar -xzf $source_tar_name 131 | fi 132 | 133 | # Check cmake 134 | if ! check_cmake; then 135 | echo "Need to build cmake" 136 | mkdir -p $build_dir/build-info 137 | cmake_log_file=$build_dir/build-info/cmake-build.log 138 | cmake_source_tar=$build_root/tarballs/cmake-v3.21.4.tar.gz 139 | # Check the downloaded source tarball 140 | if [[ -f $cmake_source_tar ]]; then 141 | cmake_checksum=$(md5sum $cmake_source_tar | cut -d ' ' -f 1) 142 | fi 143 | if [[ ! $cmake_checksum = 3747c1a51d4a7ad61f08862481437264 ]]; then 144 | # Try to download cmake tar ball 145 | hash wget &> /dev/null && download_cmd="wget -c" 146 | cmake_source_url="https://gitlab.kitware.com/cmake/cmake/-/archive/v3.21.4/cmake-v3.21.4.tar.gz" 147 | mkdir -p $build_root/tarballs 148 | cd $build_root/tarballs 149 | if [[ -z $download_cmd ]]; then 150 | echo "'wget' not found for downloading" 1>&2 151 | exit 1 152 | elif ! bash -c "$download_cmd $cmake_source_url"; then 153 | echo "Download from $cmake_source_url failed." 1>&2 154 | exit 1 155 | fi 156 | echo "cmake source code was downloaded to $build_root/tarballs" 1>&2 157 | fi 158 | 159 | # Extracting the cmake source file 160 | echo -n "Extracting cmake source into $build_root/build/cmake/source..." 1>&2 161 | mkdir -p $build_root/build/cmake 162 | cd $build_root/build/cmake 163 | if ! mkdir -p source && tar -xzf $cmake_source_tar -C ./source --strip-components=1; then 164 | echo "corrupted" 1>&2 165 | exit 1 166 | fi 167 | echo "done" 1>&2 168 | 169 | # Building the cmake 170 | echo "Building cmake from the source code..." 1>&2 171 | cd source 172 | if ! bash -c "./bootstrap --prefix=$install_dir -- -DCMAKE_USE_OPENSSL=OFF && make -j install" 2&> $cmake_log_file; then 173 | echo "Failed to build cmake" 174 | echo " -- Please check $cmake_log_file for detail" 175 | exit 1 176 | fi 177 | cmake_cmd="$install_dir/bin/cmake" 178 | else 179 | cmake_cmd=`which cmake` 180 | fi 181 | echo "Will use this cmake: '$cmake_cmd'" 182 | 183 | # Build and install 184 | mkdir -p $build_dir $install_dir $package_dir 185 | cd $build_dir 186 | 187 | echo "Starting building third-party libraries" 188 | 189 | [[ -z ${isa} ]] && isa=generic 190 | 191 | $cmake_cmd -DDOWNLOAD_DIR=$download_dir \ 192 | -DCMAKE_INSTALL_PREFIX=$install_dir \ 193 | -DUSE_ISA=${isa} \ 194 | ${C_COMPILER_ARG} ${CXX_COMPILER_ARG} \ 195 | ${DISABLE_CXX11_ABI} \ 196 | $source_dir |& tee $logfile 197 | 198 | make |& \ 199 | tee -a $logfile | \ 200 | { grep --line-buffered 'Creating\|^Scanning\|Performing\|Completed\|CMakeFiles.*Error' || true; } 201 | end_time=$(date +%s) 202 | 203 | # We are going to keep the build files so that next time it does not have to 204 | # re-build everything. If you want to rebuild everything, simply remove the 205 | # build directory 206 | #cd $OLDPWD && rm -rf $build_dir 207 | 208 | # Remove all libtool files 209 | find $install_dir -name '*.la' | xargs rm -f 210 | 211 | # Remove big unneeded binaries 212 | binaries+=(openssl gss-client dump_syms_mac) 213 | binaries+=(uuclient sim_client) 214 | binaries+=(sclient compile_et) 215 | binaries+=(c_rehash gflags_completions.sh) 216 | binaries+=(curl curl-config) 217 | 218 | binaries+=(proxygen_{echo,push,proxy,static,curl}) 219 | 220 | binaries+=(db_{archive,checkpoint,deadlock,dump,hotbackup,load}) 221 | binaries+=(db_{log_verify,printlog,recover,replicate,stat,upgrade,verify}) 222 | 223 | binaries+=(bzip2 bunzip2 bzip2recover bz{cat,cmp,diff,less,more,grep,egrep,fgrep}) 224 | binaries+=(lz4 lz4c lz4cat unlz4 lz{cat,cmp,diff,less,more,grep,egrep,fgrep}) 225 | binaries+=(lzma unlzma lzma{dec,info}) 226 | binaries+=(zstd zstdgrep) 227 | binaries+=(xz unxz xz{cat,cmp,dec,diff,less,more,grep,egrep,fgrep}) 228 | 229 | for file in ${binaries[@]} 230 | do 231 | rm -f $install_dir/bin/$file 232 | done 233 | 234 | binaries=() 235 | binaries+=(slap{acl,add,auth,cat,dn,index,passwd,schema,test}) 236 | for file in ${binaries[@]} 237 | do 238 | rm -f $install_dir/sbin/$file 239 | done 240 | 241 | binaries=() 242 | binaries+=(slapd) 243 | for file in ${binaries[@]} 244 | do 245 | rm -f $install_dir/libexec/$file 246 | done 247 | 248 | # Strip executables 249 | for file in $install_dir/bin/* 250 | do 251 | file $file | grep ELF >/dev/null && strip --strip-unneeded $file 252 | done 253 | 254 | # Remove unneeded static libraries 255 | #libs+=(libmstch.a libmustache_lib.a) 256 | #for lib in ${libs[@]} 257 | #do 258 | # rm -f $install_dir/lib/$lib 259 | # rm -f $install_dir/lib64/$lib 260 | #done 261 | 262 | # Remove CMake configs of boost 263 | rm -rf $install_dir/lib/cmake/[Bb]oost* 264 | 265 | if [[ $isa == "generic" ]]; then 266 | march=$(uname -m) 267 | else 268 | march=$isa 269 | fi 270 | 271 | cat > $install_dir/version-info < $exec_file < /dev/null || { echo "xz: Command not found"; exit 1; } 291 | 292 | [[ \$# -ne 0 ]] && prefix=\$(echo "\$@" | sed 's;.*--prefix=(\S*).*;\1;p' -rn) 293 | if [[ $isa = "generic" ]] 294 | then 295 | prefix=\${prefix:-/opt/vesoft/third-party/$VERSION} 296 | else 297 | prefix=\${prefix:-/opt/vesoft/third-party/$isa/$VERSION} 298 | fi 299 | mkdir -p \$prefix 300 | 301 | [[ -w \$prefix ]] || { echo "\$prefix: No permission to write"; exit 1; } 302 | 303 | archive_offset=\$(awk '/^__start_of_archive__$/{print NR+1; exit 0;}' \$0) 304 | rm -rf \$prefix/* 305 | tail -n+\$archive_offset \$0 | tar --no-same-owner --numeric-owner -xJf - -C \$prefix 306 | 307 | echo "Nebula Third Party has been installed to \$prefix" 308 | 309 | exit 0 310 | 311 | __start_of_archive__ 312 | EOF 313 | cd $install_dir 314 | tar -cJf - * >> $exec_file 315 | chmod 0755 $exec_file 316 | cd $OLDPWD 317 | } 318 | 319 | [[ $build_package -ne 0 ]] && make_package 320 | 321 | echo 322 | echo "Third parties have been successfully installed to $install_dir" 323 | echo "$((end_time - start_time)) seconds been taken." 324 | -------------------------------------------------------------------------------- /cxx-compiler-abi-version.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | # Copyright (c) 2019 vesoft inc. All rights reserved. 4 | # 5 | # This source code is licensed under Apache 2.0 License. 6 | 7 | set -e 8 | abi="unknown" 9 | cxx_cmd=${CXX:-g++} 10 | link_flags="-std=c++14 -static-libstdc++ -static-libgcc" 11 | [[ $disable_cxx11_abi -ne 0 ]] && extra_flags="$extra_flags -D_GLIBCXX_USE_CXX11_ABI=0" 12 | tmpdir=$(mktemp -q -d /tmp/nebula-compiler-test.XXXX 2>/dev/null) 13 | object=$tmpdir/a.out.o 14 | 15 | $cxx_cmd $link_flags $extra_flags -g -x c++ - -c -o $object > /dev/null < 17 | void foobar(std::string) { 18 | } 19 | EOF 20 | 21 | string=$(nm -C $object | sed -nr 's/.*foobar.*(std.*string).*/\1/p') 22 | 23 | [[ $string = 'std::__cxx11::basic_string' ]] && abi=11 24 | [[ $string = 'std::string' ]] && abi=98 25 | 26 | echo $abi 27 | -------------------------------------------------------------------------------- /docker/Makefile: -------------------------------------------------------------------------------- 1 | tags=centos-7 centos-8 rockylinux-8 ubuntu-1604 ubuntu-1804 ubuntu-2004 ubuntu-2204 2 | 3 | all: $(tags) 4 | .PHONY: all 5 | 6 | print: 7 | @echo $(tags) 8 | 9 | build-%: buildx/%.Dockerfile 10 | @echo '******************' Build Nebula Third Party Docker For $*-$(arch) '********************' 11 | @docker build --no-cache -t vesoft/third-party-build:$* -f buildx/$*.Dockerfile . 12 | 13 | push-%: build-% 14 | @echo '******************' Pushing image $* '********************' 15 | @docker push vesoft/third-party-build:$* 16 | 17 | %: push-% ; 18 | -------------------------------------------------------------------------------- /docker/buildx/centos-7.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM centos:7 2 | SHELL ["/bin/bash", "-c"] 3 | ARG GOLANG_VERSION=1.21.6 4 | RUN sed -i 's/^mirrorlist=/#mirrorlist=/g' /etc/yum.repos.d/CentOS-Base.repo && \ 5 | sed -i "s|^#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-Base.repo && \ 6 | yum install -y epel-release && yum update -y && \ 7 | yum install -y make \ 8 | git \ 9 | m4 \ 10 | curl \ 11 | wget \ 12 | unzip \ 13 | which \ 14 | xz \ 15 | patch \ 16 | python \ 17 | python-devel \ 18 | python3 \ 19 | python3-devel \ 20 | redhat-lsb-core \ 21 | perl-Data-Dumper \ 22 | perl-Thread-Queue \ 23 | readline-devel \ 24 | ncurses-devel \ 25 | zlib-devel \ 26 | gcc \ 27 | gcc-c++ \ 28 | libtool \ 29 | autoconf \ 30 | autoconf-archive \ 31 | automake \ 32 | bison \ 33 | flex \ 34 | gperf \ 35 | gettext \ 36 | ninja-build \ 37 | && yum clean all \ 38 | && rm -rf /var/cache/yum 39 | RUN if ! [ -x "$(command -v ninja)" ]; then ln -s $(which ninja-build) /usr/bin/ninja; fi 40 | 41 | # Install cmake 42 | RUN wget https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-$(uname -m).sh \ 43 | && chmod +x cmake-3.23.5-linux-$(uname -m).sh \ 44 | && ./cmake-3.23.5-linux-$(uname -m).sh --skip-license --prefix=/usr/local \ 45 | && rm cmake-3.23.5-linux-$(uname -m).sh 46 | 47 | # Install golang 48 | RUN ARCH="$(uname -m)"; \ 49 | case "${ARCH}" in \ 50 | x86_64) GOARCH='amd64';; \ 51 | aarch64) GOARCH='arm64';; \ 52 | *) echo "Unsupported architecture: ${ARCH}" && exit 1;; \ 53 | esac; \ 54 | curl -L https://go.dev/dl/go${GOLANG_VERSION}.linux-${GOARCH}.tar.gz -o go.tar.gz && \ 55 | tar -C /usr/local -xzf go.tar.gz && \ 56 | rm go.tar.gz 57 | ENV PATH="/usr/local/go/bin:${PATH}" 58 | 59 | # Install ossutil 60 | RUN curl https://gosspublic.alicdn.com/ossutil/install.sh | bash 61 | 62 | # Install MinIO Client 63 | RUN if [ "$(uname -m)" = "aarch64" ]; then \ 64 | curl -O https://dl.min.io/client/mc/release/linux-arm64/mc; \ 65 | else \ 66 | curl -O https://dl.min.io/client/mc/release/linux-amd64/mc; \ 67 | fi \ 68 | && chmod +x mc \ 69 | && mv mc /usr/local/bin 70 | 71 | ENV PACKAGE_DIR=/usr/src/third-party 72 | RUN mkdir -p ${PACKAGE_DIR} 73 | WORKDIR ${PACKAGE_DIR} 74 | -------------------------------------------------------------------------------- /docker/buildx/centos-8.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM centos:8 2 | SHELL ["/bin/bash", "-c"] 3 | ARG GOLANG_VERSION=1.21.6 4 | RUN cd /etc/yum.repos.d/ && \ 5 | sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* && \ 6 | sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* 7 | 8 | RUN yum install -y epel-release yum-utils && yum config-manager --set-enabled powertools && yum update -y \ 9 | && yum install -y make \ 10 | git \ 11 | m4 \ 12 | curl \ 13 | wget \ 14 | unzip \ 15 | which \ 16 | xz \ 17 | patch \ 18 | python3 \ 19 | python3-devel \ 20 | redhat-lsb-core \ 21 | perl-Data-Dumper \ 22 | perl-Thread-Queue \ 23 | readline-devel \ 24 | ncurses-devel \ 25 | zlib-devel \ 26 | gcc \ 27 | gcc-c++ \ 28 | libtool \ 29 | autoconf \ 30 | autoconf-archive \ 31 | automake \ 32 | bison \ 33 | flex \ 34 | gperf \ 35 | gettext \ 36 | libstdc++-devel \ 37 | && yum --enablerepo=powertools install -y ninja-build \ 38 | && yum clean all && rm -rf /var/cache/yum 39 | 40 | # Install cmake 41 | RUN wget https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-$(uname -m).sh \ 42 | && chmod +x cmake-3.23.5-linux-$(uname -m).sh \ 43 | && ./cmake-3.23.5-linux-$(uname -m).sh --skip-license --prefix=/usr/local \ 44 | && rm cmake-3.23.5-linux-$(uname -m).sh 45 | 46 | # Install golang 47 | RUN ARCH="$(uname -m)"; \ 48 | case "${ARCH}" in \ 49 | x86_64) GOARCH='amd64';; \ 50 | aarch64) GOARCH='arm64';; \ 51 | *) echo "Unsupported architecture: ${ARCH}" && exit 1;; \ 52 | esac; \ 53 | curl -L https://go.dev/dl/go${GOLANG_VERSION}.linux-${GOARCH}.tar.gz -o go.tar.gz && \ 54 | tar -C /usr/local -xzf go.tar.gz && \ 55 | rm go.tar.gz 56 | ENV PATH="/usr/local/go/bin:${PATH}" 57 | 58 | # Install ossutil 59 | RUN curl https://gosspublic.alicdn.com/ossutil/install.sh | bash 60 | 61 | # Install MinIO Client 62 | RUN if [ "$(uname -m)" = "aarch64" ]; then \ 63 | curl -O https://dl.min.io/client/mc/release/linux-arm64/mc; \ 64 | else \ 65 | curl -O https://dl.min.io/client/mc/release/linux-amd64/mc; \ 66 | fi \ 67 | && chmod +x mc \ 68 | && mv mc /usr/local/bin 69 | 70 | ENV PACKAGE_DIR=/usr/src/third-party 71 | RUN mkdir -p ${PACKAGE_DIR} 72 | WORKDIR ${PACKAGE_DIR} 73 | 74 | -------------------------------------------------------------------------------- /docker/buildx/rockylinux-8.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rockylinux:8 2 | SHELL ["/bin/bash", "-c"] 3 | ARG GOLANG_VERSION=1.21.6 4 | RUN yum install -y epel-release yum-utils && yum config-manager --set-enabled powertools && yum update -y \ 5 | && yum install -y make \ 6 | git \ 7 | m4 \ 8 | curl \ 9 | wget \ 10 | unzip \ 11 | which \ 12 | xz \ 13 | patch \ 14 | python3 \ 15 | python3-devel \ 16 | redhat-lsb-core \ 17 | perl-Data-Dumper \ 18 | perl-Thread-Queue \ 19 | readline-devel \ 20 | ncurses-devel \ 21 | zlib-devel \ 22 | gcc \ 23 | gcc-c++ \ 24 | libtool \ 25 | autoconf \ 26 | autoconf-archive \ 27 | automake \ 28 | bison \ 29 | flex \ 30 | gperf \ 31 | gettext \ 32 | && yum --enablerepo=powertools install -y ninja-build \ 33 | && yum clean all && rm -rf /var/cache/yum 34 | 35 | # Install cmake 36 | RUN wget https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-$(uname -m).sh \ 37 | && chmod +x cmake-3.23.5-linux-$(uname -m).sh \ 38 | && ./cmake-3.23.5-linux-$(uname -m).sh --skip-license --prefix=/usr/local \ 39 | && rm cmake-3.23.5-linux-$(uname -m).sh 40 | 41 | # Install golang 42 | RUN ARCH="$(uname -m)"; \ 43 | case "${ARCH}" in \ 44 | x86_64) GOARCH='amd64';; \ 45 | aarch64) GOARCH='arm64';; \ 46 | *) echo "Unsupported architecture: ${ARCH}" && exit 1;; \ 47 | esac; \ 48 | curl -L https://go.dev/dl/go${GOLANG_VERSION}.linux-${GOARCH}.tar.gz -o go.tar.gz && \ 49 | tar -C /usr/local -xzf go.tar.gz && \ 50 | rm go.tar.gz 51 | ENV PATH="/usr/local/go/bin:${PATH}" 52 | 53 | # Install ossutil 54 | RUN curl https://gosspublic.alicdn.com/ossutil/install.sh | bash 55 | 56 | # Install MinIO Client 57 | RUN if [ "$(uname -m)" = "aarch64" ]; then \ 58 | curl -O https://dl.min.io/client/mc/release/linux-arm64/mc; \ 59 | else \ 60 | curl -O https://dl.min.io/client/mc/release/linux-amd64/mc; \ 61 | fi \ 62 | && chmod +x mc \ 63 | && mv mc /usr/local/bin 64 | 65 | ENV PACKAGE_DIR=/usr/src/third-party 66 | RUN mkdir -p ${PACKAGE_DIR} 67 | WORKDIR ${PACKAGE_DIR} 68 | 69 | -------------------------------------------------------------------------------- /docker/buildx/ubuntu-1604.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | ARG DEBIAN_FRONTEND=noninteractive 3 | RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone 4 | SHELL ["/bin/bash", "-c"] 5 | RUN apt-get update \ 6 | && apt-get install -y make \ 7 | git \ 8 | m4 \ 9 | curl \ 10 | wget \ 11 | unzip \ 12 | xz-utils \ 13 | patch \ 14 | python3 \ 15 | python3-dev \ 16 | lsb-core \ 17 | libz-dev \ 18 | build-essential \ 19 | libreadline-dev \ 20 | ncurses-dev \ 21 | libtool \ 22 | automake \ 23 | autoconf \ 24 | autoconf-archive \ 25 | autotools-dev \ 26 | bison \ 27 | flex \ 28 | gperf \ 29 | gettext \ 30 | ninja-build \ 31 | && apt-get clean \ 32 | && rm -rf /var/lib/apt/lists/* 33 | 34 | # Install cmake 35 | RUN wget https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-$(uname -m).sh \ 36 | && chmod +x cmake-3.23.5-linux-$(uname -m).sh \ 37 | && ./cmake-3.23.5-linux-$(uname -m).sh --skip-license --prefix=/usr/local \ 38 | && rm cmake-3.23.5-linux-$(uname -m).sh 39 | 40 | # Install ossutil 41 | RUN curl https://gosspublic.alicdn.com/ossutil/install.sh | bash 42 | 43 | # Install MinIO Client 44 | RUN if [ "$(uname -m)" = "aarch64" ]; then \ 45 | curl -O https://dl.min.io/client/mc/release/linux-arm64/mc; \ 46 | else \ 47 | curl -O https://dl.min.io/client/mc/release/linux-amd64/mc; \ 48 | fi \ 49 | && chmod +x mc \ 50 | && mv mc /usr/local/bin 51 | 52 | ENV PACKAGE_DIR=/usr/src/third-party 53 | RUN mkdir -p ${PACKAGE_DIR} 54 | WORKDIR ${PACKAGE_DIR} 55 | 56 | -------------------------------------------------------------------------------- /docker/buildx/ubuntu-1804.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:18.04 2 | ARG DEBIAN_FRONTEND=noninteractive 3 | RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone 4 | SHELL ["/bin/bash", "-c"] 5 | RUN apt-get update \ 6 | && apt-get install -y make \ 7 | git \ 8 | m4 \ 9 | curl \ 10 | wget \ 11 | unzip \ 12 | xz-utils \ 13 | patch \ 14 | python3 \ 15 | python3-dev \ 16 | lsb-core \ 17 | libz-dev \ 18 | build-essential \ 19 | libreadline-dev \ 20 | ncurses-dev \ 21 | libtool \ 22 | automake \ 23 | autoconf \ 24 | autoconf-archive \ 25 | autotools-dev \ 26 | bison \ 27 | flex \ 28 | gperf \ 29 | gettext \ 30 | ninja-build \ 31 | && apt-get clean \ 32 | && rm -rf /var/lib/apt/lists/* 33 | 34 | # Install cmake 35 | RUN wget https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-$(uname -m).sh \ 36 | && chmod +x cmake-3.23.5-linux-$(uname -m).sh \ 37 | && ./cmake-3.23.5-linux-$(uname -m).sh --skip-license --prefix=/usr/local \ 38 | && rm cmake-3.23.5-linux-$(uname -m).sh 39 | 40 | # Install ossutil 41 | RUN curl https://gosspublic.alicdn.com/ossutil/install.sh | bash 42 | 43 | # Install MinIO Client 44 | RUN if [ "$(uname -m)" = "aarch64" ]; then \ 45 | curl -O https://dl.min.io/client/mc/release/linux-arm64/mc; \ 46 | else \ 47 | curl -O https://dl.min.io/client/mc/release/linux-amd64/mc; \ 48 | fi \ 49 | && chmod +x mc \ 50 | && mv mc /usr/local/bin 51 | 52 | ENV PACKAGE_DIR=/usr/src/third-party 53 | RUN mkdir -p ${PACKAGE_DIR} 54 | WORKDIR ${PACKAGE_DIR} 55 | -------------------------------------------------------------------------------- /docker/buildx/ubuntu-2004.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | SHELL ["/bin/bash", "-c"] 3 | ARG GOLANG_VERSION=1.21.6 4 | RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone 5 | ARG DEBIAN_FRONTEND=noninteractive 6 | RUN apt update \ 7 | && apt install -y make \ 8 | git \ 9 | m4 \ 10 | curl \ 11 | wget \ 12 | unzip \ 13 | xz-utils \ 14 | patch \ 15 | python3 \ 16 | python3-dev \ 17 | lsb-core \ 18 | libz-dev \ 19 | build-essential \ 20 | libreadline-dev \ 21 | ncurses-dev \ 22 | libtool \ 23 | automake \ 24 | autoconf \ 25 | autoconf-archive \ 26 | autotools-dev \ 27 | bison \ 28 | flex \ 29 | gperf \ 30 | gettext \ 31 | ninja-build \ 32 | && apt clean \ 33 | && rm -rf /var/lib/apt/lists/* 34 | 35 | # Install cmake 36 | RUN wget https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-$(uname -m).sh \ 37 | && chmod +x cmake-3.23.5-linux-$(uname -m).sh \ 38 | && ./cmake-3.23.5-linux-$(uname -m).sh --skip-license --prefix=/usr/local \ 39 | && rm cmake-3.23.5-linux-$(uname -m).sh 40 | 41 | # Install golang 42 | RUN ARCH="$(uname -m)"; \ 43 | case "${ARCH}" in \ 44 | x86_64) GOARCH='amd64';; \ 45 | aarch64) GOARCH='arm64';; \ 46 | *) echo "Unsupported architecture: ${ARCH}" && exit 1;; \ 47 | esac; \ 48 | curl -L https://go.dev/dl/go${GOLANG_VERSION}.linux-${GOARCH}.tar.gz -o go.tar.gz && \ 49 | tar -C /usr/local -xzf go.tar.gz && \ 50 | rm go.tar.gz 51 | ENV PATH="/usr/local/go/bin:${PATH}" 52 | 53 | # Install ossutil 54 | RUN curl https://gosspublic.alicdn.com/ossutil/install.sh | bash 55 | 56 | # Install MinIO Client 57 | RUN if [ "$(uname -m)" = "aarch64" ]; then \ 58 | curl -O https://dl.min.io/client/mc/release/linux-arm64/mc; \ 59 | else \ 60 | curl -O https://dl.min.io/client/mc/release/linux-amd64/mc; \ 61 | fi \ 62 | && chmod +x mc \ 63 | && mv mc /usr/local/bin 64 | 65 | ENV PACKAGE_DIR=/usr/src/third-party 66 | RUN mkdir -p ${PACKAGE_DIR} 67 | WORKDIR ${PACKAGE_DIR} 68 | -------------------------------------------------------------------------------- /docker/buildx/ubuntu-2204.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:22.04 2 | SHELL ["/bin/bash", "-c"] 3 | ARG DEBIAN_FRONTEND=noninteractive 4 | ARG GOLANG_VERSION=1.21.6 5 | RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone 6 | RUN apt update \ 7 | && apt install -y make \ 8 | git \ 9 | m4 \ 10 | curl \ 11 | wget \ 12 | unzip \ 13 | xz-utils \ 14 | patch \ 15 | python3 \ 16 | python3-dev \ 17 | lsb-core \ 18 | zlib1g-dev \ 19 | build-essential \ 20 | libreadline-dev \ 21 | libncurses-dev \ 22 | cmake \ 23 | libtool \ 24 | automake \ 25 | autoconf \ 26 | autoconf-archive \ 27 | autotools-dev \ 28 | bison \ 29 | flex \ 30 | gperf \ 31 | gettext \ 32 | ninja-build \ 33 | && apt clean \ 34 | && rm -rf /var/lib/apt/lists/* 35 | 36 | # Install cmake 37 | RUN wget https://github.com/Kitware/CMake/releases/download/v3.23.5/cmake-3.23.5-linux-$(uname -m).sh \ 38 | && chmod +x cmake-3.23.5-linux-$(uname -m).sh \ 39 | && ./cmake-3.23.5-linux-$(uname -m).sh --skip-license --prefix=/usr/local \ 40 | && rm cmake-3.23.5-linux-$(uname -m).sh 41 | 42 | # Install golang 43 | RUN ARCH="$(uname -m)"; \ 44 | case "${ARCH}" in \ 45 | x86_64) GOARCH='amd64';; \ 46 | aarch64) GOARCH='arm64';; \ 47 | *) echo "Unsupported architecture: ${ARCH}" && exit 1;; \ 48 | esac; \ 49 | curl -L https://go.dev/dl/go${GOLANG_VERSION}.linux-${GOARCH}.tar.gz -o go.tar.gz && \ 50 | tar -C /usr/local -xzf go.tar.gz && \ 51 | rm go.tar.gz 52 | ENV PATH="/usr/local/go/bin:${PATH}" 53 | 54 | # Install ossutil 55 | RUN curl https://gosspublic.alicdn.com/ossutil/install.sh | bash 56 | 57 | # Install MinIO Client 58 | RUN if [ "$(uname -m)" = "aarch64" ]; then \ 59 | curl -O https://dl.min.io/client/mc/release/linux-arm64/mc; \ 60 | else \ 61 | curl -O https://dl.min.io/client/mc/release/linux-amd64/mc; \ 62 | fi \ 63 | && chmod +x mc \ 64 | && mv mc /usr/local/bin 65 | 66 | ENV PACKAGE_DIR=/usr/src/third-party 67 | RUN mkdir -p ${PACKAGE_DIR} 68 | WORKDIR ${PACKAGE_DIR} 69 | -------------------------------------------------------------------------------- /docker/buildx/ubuntu-2404.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:24.04 2 | SHELL ["/bin/bash", "-c"] 3 | ARG DEBIAN_FRONTEND=noninteractive 4 | ARG GOLANG_VERSION=1.21.6 5 | RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone 6 | RUN apt update \ 7 | && apt install -y make \ 8 | git \ 9 | m4 \ 10 | curl \ 11 | wget \ 12 | unzip \ 13 | xz-utils \ 14 | patch \ 15 | python3 \ 16 | python3-dev \ 17 | lsb-release \ 18 | zlib1g-dev \ 19 | build-essential \ 20 | libreadline-dev \ 21 | libncurses-dev \ 22 | cmake \ 23 | libtool \ 24 | automake \ 25 | autoconf \ 26 | autoconf-archive \ 27 | autotools-dev \ 28 | bison \ 29 | flex \ 30 | gperf \ 31 | gettext \ 32 | autopoint \ 33 | ninja-build \ 34 | groff-base \ 35 | texinfo \ 36 | && apt clean \ 37 | && rm -rf /var/lib/apt/lists/* 38 | 39 | # Install golang 40 | RUN ARCH="$(uname -m)"; \ 41 | case "${ARCH}" in \ 42 | x86_64) GOARCH='amd64';; \ 43 | aarch64) GOARCH='arm64';; \ 44 | *) echo "Unsupported architecture: ${ARCH}" && exit 1;; \ 45 | esac; \ 46 | curl -L https://go.dev/dl/go${GOLANG_VERSION}.linux-${GOARCH}.tar.gz -o go.tar.gz && \ 47 | tar -C /usr/local -xzf go.tar.gz && \ 48 | rm go.tar.gz 49 | ENV PATH="/usr/local/go/bin:${PATH}" 50 | 51 | # Install ossutil 52 | RUN curl https://gosspublic.alicdn.com/ossutil/install.sh | bash 53 | 54 | # Install MinIO Client 55 | RUN if [ "$(uname -m)" = "aarch64" ]; then \ 56 | curl -O https://dl.min.io/client/mc/release/linux-arm64/mc; \ 57 | else \ 58 | curl -O https://dl.min.io/client/mc/release/linux-amd64/mc; \ 59 | fi \ 60 | && chmod +x mc \ 61 | && mv mc /usr/local/bin 62 | 63 | ENV PACKAGE_DIR=/usr/src/third-party 64 | RUN mkdir -p ${PACKAGE_DIR} 65 | WORKDIR ${PACKAGE_DIR} 66 | -------------------------------------------------------------------------------- /docker/oss-upload.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | [[ $# -lt 2 ]] && echo "$0 " && exit 1 4 | 5 | CMD="ossutil64 -e ${OSS_ENDPOINT} -i ${OSS_ID} -k ${OSS_SECRET}" 6 | OSS_BASE=oss://nebula-graph 7 | OSS_SUBDIR=$1 8 | shift 9 | 10 | for file in $@ 11 | do 12 | ${CMD} -f cp ${file} ${OSS_BASE}/${OSS_SUBDIR}/$(basename ${file}) 13 | done 14 | -------------------------------------------------------------------------------- /docker/run.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | this_dir=$(dirname $(readlink -f $0)) 4 | build_root=$(pwd) 5 | package_dir=$build_root/packages 6 | version=5.0 7 | 8 | function atexit() { 9 | compgen -G $package_dir/vesoft-third-party-*.sh &> /dev/null 10 | if [[ $? -ne 0 ]] 11 | then 12 | exit 1 13 | fi 14 | 15 | cp -v $package_dir/vesoft-third-party-*.sh /data 16 | [[ -n $OSS_ENDPOINT ]] && ${this_dir}/oss-upload.sh third-party/$version $package_dir/vesoft-third-party-*.sh 17 | } 18 | 19 | trap atexit EXIT 20 | 21 | set -e 22 | 23 | arch=$(uname -m) 24 | 25 | nebula-gears-update 26 | 27 | git clone --depth=1 https://github.com/vesoft-inc/nebula-third-party.git 28 | 29 | gcc_versions=${USE_GCC_VERSIONS:-7.5.0,8.3.0,9.1.0,9.2.0,9.3.0,10.1.0} 30 | install-gcc --version=$gcc_versions 31 | 32 | install-cmake 33 | source /opt/vesoft/toolset/cmake/enable 34 | 35 | for v in $(echo $gcc_versions | tr ',' ' ') 36 | do 37 | source /opt/vesoft/toolset/gcc/$v/enable 38 | rm -rf /opt/vesoft/third-party 39 | build_package=1 disable_cxx11_abi=0 nebula-third-party/build.sh /opt/vesoft/third-party/$version 40 | if [[ $arch = 'x86_64' ]] 41 | then 42 | rm -rf ./build 43 | rm -rf /opt/vesoft/third-party 44 | build_package=1 disable_cxx11_abi=1 nebula-third-party/build.sh /opt/vesoft/third-party/$version 45 | fi 46 | source /opt/vesoft/toolset/gcc/$v/disable 47 | done 48 | -------------------------------------------------------------------------------- /install-third-party.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | # Copyright (c) 2019 vesoft inc. All rights reserved. 4 | # 5 | # This source code is licensed under Apache 2.0 License. 6 | 7 | # Usage: install-third-party.sh --prefix=/opt/vesoft/third-party 8 | 9 | [[ $(uname) = Linux ]] || { 10 | echo "Only Linux is supported" 11 | exit 1 12 | } 13 | 14 | # Always use bash 15 | shell=$(basename $(readlink /proc/$$/exe)) 16 | if [ ! x$shell = x"bash" ] && [[ x$shell != x"qemu-aarch64"* ]] 17 | then 18 | bash $0 $@ 19 | exit $? 20 | fi 21 | 22 | this_dir=$(dirname $(readlink -f $0)) 23 | cxx_cmd=${CXX:-g++} 24 | 25 | source $this_dir/.env 26 | 27 | # We consider two derivatives: Red Hat and Debian 28 | # Place preset libc versions of each from newer to older 29 | libc_preset_versions=( 2.39 2.35 2.31 2.28 2.17 ) 30 | gcc_preset_versions=( 13.3.0 11.4.0 9.5.0 9.4.0 8.5.0 ) 31 | 32 | selected_libc_version= 33 | selected_gcc_version= 34 | selected_archive= 35 | this_libc_version=$(ldd --version | head -1 | cut -d ')' -f 2 | cut -d ' ' -f 2) 36 | this_gcc_version=$($cxx_cmd -dumpfullversion -dumpversion) 37 | this_abi_version=$($this_dir/cxx-compiler-abi-version.sh) 38 | 39 | hash wget &>/dev/null || { 40 | echo "'wget' not fould, please install it first" 1>&2 41 | exit 1 42 | } 43 | 44 | download_cmd="wget -c" 45 | if [[ -t 1 ]] 46 | then 47 | wget --help | grep -q '\--show-progress' && \ 48 | download_cmd="$download_cmd -q --show-progress" || \ 49 | download_cmd="$download_cmd --progress=bar:force:noscroll" 50 | else 51 | download_cmd="$download_cmd -q" 52 | fi 53 | 54 | function version_cmp { 55 | mapfile -t left < <( echo $1 | tr . '\n' ) 56 | mapfile -t right < <( echo $2 | tr . '\n') 57 | local i 58 | for i in ${!left[@]} 59 | do 60 | local lv=${left[$i]} 61 | local rv=${right[$i]} 62 | [[ -z $rv ]] && { echo $lv; return; } 63 | [[ $lv -ne $rv ]] && { echo $((lv - rv)); return; } 64 | done 65 | ((i++)) 66 | rv=${right[$i]} 67 | [[ ${#right[@]} -gt ${#left[@]} ]] && { echo $((0-rv)); return; } 68 | } 69 | 70 | # Find the maximum version not greater than the system one 71 | function select_by_version { 72 | local this_version=$1 73 | shift 1 74 | local candidates="$@" 75 | for v in $candidates 76 | do 77 | if [[ $(version_cmp $v $this_version) -le 0 ]] 78 | then 79 | echo $v 80 | break 81 | fi 82 | done 83 | } 84 | 85 | selected_libc_version=$(select_by_version $this_libc_version "${libc_preset_versions[@]}") 86 | selected_gcc_version=$(select_by_version $this_gcc_version "${gcc_preset_versions[@]}") 87 | 88 | [[ -z $selected_libc_version ]] && { 89 | echo "No prebuilt third-party found for your environment: libc-$this_libc_version, GCC-$this_gcc_version, ABI $this_abi_version" 1>&2 90 | exit 1 91 | } 92 | 93 | selected_archive=vesoft-third-party-$VERSION-$(uname -m)-libc-$selected_libc_version-gcc-$selected_gcc_version-abi-$this_abi_version.sh 94 | 95 | url=$URL_BASE/$VERSION/$selected_archive 96 | echo "Downloading $selected_archive..." 97 | $download_cmd $url 98 | [[ $? -ne 0 ]] && { 99 | echo "Downloading $selected_archive failed" 1>&2 100 | exit 1 101 | } 102 | 103 | bash $selected_archive $@ && rm -rf $selected_archive 104 | -------------------------------------------------------------------------------- /project/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.23.1) #Limited by faiss 2 | if(POLICY CMP0114) 3 | cmake_policy(SET CMP0114 OLD) 4 | endif() 5 | 6 | # Not to pull submodules when an empty string is given 7 | if(POLICY CMP0097) 8 | cmake_policy(SET CMP0097 NEW) 9 | endif() 10 | 11 | if(POLICY CMP0135) #Since cmake 3.24 it will make some download warning 12 | cmake_policy(SET CMP0135 OLD) 13 | endif() 14 | 15 | project("Nebula Third Party" C CXX) 16 | 17 | set(CXX_STANDARD 17) 18 | set(CXX_STANDARD_REQUIRED ON) 19 | 20 | # Required CMake modules 21 | include(ExternalProject) 22 | include(CheckIncludeFileCXX) 23 | include(cmake/ExternalProjectGit.cmake) 24 | 25 | # Get number of physical CPU cores and megabytes of available memory 26 | if ("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "x86_64") 27 | cmake_host_system_information(RESULT num_cores QUERY NUMBER_OF_PHYSICAL_CORES) 28 | elseif ("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "aarch64" OR "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "mips64") 29 | cmake_host_system_information(RESULT num_cores QUERY NUMBER_OF_LOGICAL_CORES) 30 | endif() 31 | cmake_host_system_information(RESULT available_memory_mb QUERY AVAILABLE_PHYSICAL_MEMORY) 32 | 33 | execute_process( 34 | COMMAND ldd --version 35 | COMMAND head -1 36 | COMMAND cut -d ")" -f 2 37 | COMMAND cut -d " " -f 2 38 | OUTPUT_VARIABLE GLIBC_VERSION 39 | OUTPUT_STRIP_TRAILING_WHITESPACE 40 | ) 41 | 42 | file(STRINGS /etc/os-release DISTRO_NAME REGEX "^NAME=") 43 | file(STRINGS /etc/os-release DISTRO_VERSION_ID REGEX "^VERSION_ID=") 44 | string(REGEX REPLACE "^NAME=\"(.*)\"$" "\\1" DISTRO_NAME ${DISTRO_NAME}) 45 | string(REGEX REPLACE "^VERSION_ID=\"(.*)\"$" "\\1" DISTRO_VERSION_ID ${DISTRO_VERSION_ID}) 46 | 47 | # Guess the number of building jobs based on the available memories 48 | set(jobs_by_cpu ${num_cores}) 49 | math(EXPR jobs_by_mem "${available_memory_mb} / 1024 / 2") 50 | if (jobs_by_mem EQUAL 0) 51 | set(jobs_by_mem 1) 52 | endif() 53 | 54 | # Set the number of building jobs to min(jobs_by_mem, jobs_by_cpu), 55 | # iff BUILDING_JOBS_NUM has not been set or set to 0. 56 | if (NOT BUILDING_JOBS_NUM OR BUILDING_JOBS_NUM EQUAL 0) 57 | set(BUILDING_JOBS_NUM ${jobs_by_cpu}) 58 | if (BUILDING_JOBS_NUM GREATER jobs_by_mem) 59 | set(BUILDING_JOBS_NUM ${jobs_by_mem}) 60 | endif() 61 | endif() 62 | 63 | # BerkeleyDB dirs 64 | set(BERKELEYDB_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib/berkeleydb-5.1.29) 65 | set(BERKELEYDB_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/include/berkeleydb-5.1.29) 66 | 67 | message(STATUS "Number of online physcial CPU cores: ${num_cores}") 68 | message(STATUS "Available physical memory: ${available_memory_mb} MB") 69 | message(STATUS "Building third party with ${BUILDING_JOBS_NUM} jobs") 70 | message(STATUS "Glibc version: ${GLIBC_VERSION}") 71 | message(STATUS "Linux distribution name: ${DISTRO_NAME}") 72 | message(STATUS "Linux distribution version ID: ${DISTRO_VERSION_ID}") 73 | 74 | if (NOT DOWNLOAD_DIR) 75 | set(DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/tarballs) 76 | endif() 77 | set(BUILD_INFO_DIR ${CMAKE_CURRENT_BINARY_DIR}/build-info) 78 | set(BUILDING_PATH "${CMAKE_INSTALL_PREFIX}/bin:${CMAKE_INSTALL_PREFIX}/sbin:$ENV{PATH}") 79 | set(ACLOCAL_PATH "${CMAKE_INSTALL_PREFIX}/share/aclocal") 80 | 81 | # the GCC of NeoKylin V5 on mips64 is provided by NeoKylin and needs to use the binutils of the GCC tool too 82 | if (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "mips64") 83 | set(MIPS_LINK_FLAGS "-fuse-ld=bfd") 84 | endif() 85 | 86 | # Retrieve path and soname of libstdc++ 87 | execute_process( 88 | COMMAND ${CMAKE_CXX_COMPILER} --print-file-name=libstdc++.so 89 | OUTPUT_VARIABLE libstdcxx_path 90 | OUTPUT_STRIP_TRAILING_WHITESPACE 91 | ) 92 | execute_process( 93 | COMMAND readelf -d ${libstdcxx_path} 94 | COMMAND grep SONAME 95 | COMMAND sed "s/.*\\[\\(.*\\)\\]/\\1/" 96 | OUTPUT_VARIABLE LIB_STDCXX_SONAME 97 | OUTPUT_STRIP_TRAILING_WHITESPACE 98 | ) 99 | execute_process( 100 | COMMAND ${CMAKE_CXX_COMPILER} --print-file-name=${LIB_STDCXX_SONAME} 101 | OUTPUT_VARIABLE libstdcxx_path 102 | OUTPUT_STRIP_TRAILING_WHITESPACE 103 | ) 104 | get_filename_component(LIB_STDCXX_DIR ${libstdcxx_path} DIRECTORY CACHE) 105 | 106 | # Retrieve path and soname of libgcc 107 | execute_process( 108 | COMMAND ${CMAKE_CXX_COMPILER} --print-file-name=libgcc_s.so.1 109 | OUTPUT_VARIABLE libgcc_path 110 | OUTPUT_STRIP_TRAILING_WHITESPACE 111 | ) 112 | execute_process( 113 | COMMAND readelf -d ${libgcc_path} 114 | COMMAND grep SONAME 115 | COMMAND sed "s/.*\\[\\(.*\\)\\]/\\1/" 116 | OUTPUT_VARIABLE LIB_GCC_SONAME 117 | OUTPUT_STRIP_TRAILING_WHITESPACE 118 | ) 119 | execute_process( 120 | COMMAND ${CMAKE_CXX_COMPILER} --print-file-name=${LIB_GCC_SONAME} 121 | OUTPUT_VARIABLE libgcc_path 122 | OUTPUT_STRIP_TRAILING_WHITESPACE 123 | ) 124 | get_filename_component(LIB_GCC_DIR ${libgcc_path} DIRECTORY CACHE) 125 | 126 | message(STATUS "MIPS_LINK_FLAGS: ${MIPS_LINK_FLAGS}") 127 | 128 | set(extra_lib_dirs "-L${CMAKE_INSTALL_PREFIX}/lib -L${CMAKE_INSTALL_PREFIX}/lib64") 129 | set(extra_link_libs "${MIPS_LINK_FLAGS} ${extra_lib_dirs} -static-libstdc++ -static-libgcc -pthread -ldl") 130 | if (${DISABLE_CXX11_ABI}) 131 | set(extra_cpp_flags "-D_GLIBCXX_USE_CXX11_ABI=0") 132 | else() 133 | set(extra_cpp_flags "-D_GLIBCXX_USE_CXX11_ABI=1") 134 | endif() 135 | 136 | set(ISA_FLAGS "") 137 | if (NOT ${USE_ISA} STREQUAL "" AND NOT ${USE_ISA} STREQUAL "generic") 138 | set(ISA_FLAGS "-march=${USE_ISA}") 139 | endif() 140 | 141 | if(GLIBC_VERSION VERSION_LESS 2.17) 142 | set(extra_link_libs "${extra_link_libs} -lrt") 143 | endif() 144 | 145 | set(common_cmake_args 146 | -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} 147 | "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" 148 | "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}" 149 | "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fPIC ${extra_cpp_flags} ${ISA_FLAGS}" 150 | "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -fno-omit-frame-pointer -fPIC ${ISA_FLAGS}" 151 | "-DCMAKE_EXE_LINKER_FLAGS=${extra_link_libs} -Wl,-rpath=\$ORIGIN/../lib:\$ORIGIN/../lib64" 152 | -DCMAKE_SHARED_LINKER_FLAGS=-Wl,-rpath=\$ORIGIN:\$ORIGIN/../3rd:\$ORIGIN/../lib64:\$ORIGIN/../lib 153 | -DCMAKE_INCLUDE_PATH=${CMAKE_INSTALL_PREFIX}/include 154 | "-DCMAKE_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/lib64" 155 | -DBUILD_SHARED_LIBS=ON 156 | ) 157 | 158 | set(common_configure_args 159 | --prefix=${CMAKE_INSTALL_PREFIX} 160 | ) 161 | 162 | set(ld_flags 163 | "-L${CMAKE_INSTALL_PREFIX}/lib" 164 | "-L${CMAKE_INSTALL_PREFIX}/lib64" 165 | "-L${BERKELEYDB_LIB_DIR}" 166 | ) 167 | if (EXISTS "/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}") 168 | set(ld_flags 169 | "${ld_flags}" 170 | "-L/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}" 171 | ) 172 | endif() 173 | if (EXISTS "/usr/lib64/${CMAKE_LIBRARY_ARCHITECTURE}") 174 | set(ld_flags 175 | "${ld_flags}" 176 | "-L/usr/lib64/${CMAKE_LIBRARY_ARCHITECTURE}" 177 | ) 178 | endif() 179 | set(ld_flags 180 | "${ld_flags}" 181 | "${extra_link_libs}" 182 | ) 183 | string(JOIN " " ld_flags ${ld_flags}) 184 | set(common_configure_envs 185 | "env" 186 | "CC=${CMAKE_C_COMPILER}" 187 | "CXX=${CMAKE_CXX_COMPILER}" 188 | "CFLAGS=${CMAKE_C_FLAGS} -fcommon -fno-omit-frame-pointer -fPIC -O2 -D_DEFAULT_SOURCE -D_GNU_SOURCE ${extra_cpp_flags} ${ISA_FLAGS}" 189 | "CXXFLAGS=${CMAKE_CXX_FLAGS} -fcommon -fno-omit-frame-pointer -fPIC -O2 -D_DEFAULT_SOURCE -D_GNU_SOURCE ${extra_cpp_flags} ${ISA_FLAGS}" 190 | "CPPFLAGS=-isystem ${CMAKE_INSTALL_PREFIX}/include -I${BERKELEYDB_INCLUDE_DIR} ${extra_cpp_flags}" 191 | "LDFLAGS=-Wl,-rpath=\\\\$\\$ORIGIN ${ld_flags}" 192 | "LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/lib64" 193 | "PATH=${BUILDING_PATH}" 194 | "ACLOCAL_PATH=${ACLOCAL_PATH}" 195 | ) 196 | 197 | set(ALL_TARGETS 198 | abseil 199 | annoy 200 | arrow 201 | berkeleydb 202 | bison 203 | boost 204 | #breakpad 205 | bzip2 206 | #cachelib 207 | cppjieba 208 | cyrus-sasl 209 | c-ares 210 | datasketches 211 | date 212 | double-conversion 213 | duckdb 214 | eigen 215 | faiss 216 | fatal 217 | fizz 218 | flex 219 | fmt 220 | folly 221 | gflags 222 | glog 223 | googlebenchmark 224 | googletest 225 | gperf 226 | grpc 227 | hnswlib 228 | inja 229 | jemalloc 230 | jwt-cpp 231 | ldap 232 | libcurl 233 | libdwarf 234 | libev 235 | libevent 236 | libunwind 237 | libxml2 238 | limonp 239 | llvm 240 | lz4 241 | lzma 242 | mstch 243 | nlohmann-json 244 | openblas 245 | openssl 246 | protobuf 247 | protoc-gen-go 248 | protoc-gen-go-grpc 249 | protoc-gen-grpc-java 250 | proxygen 251 | re2 252 | robin-hood-hashing 253 | rocksdb 254 | s2geometry 255 | simdjson 256 | snappy 257 | sodium 258 | sparsemap 259 | utf8proc 260 | valijson 261 | wangle 262 | xsimd 263 | yaml-cpp 264 | zlib 265 | zstd 266 | ) 267 | 268 | list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake) 269 | 270 | CHECK_INCLUDE_FILE_CXX(elf.h ELF_INCLUDE_FOUND) 271 | if (NOT ELF_INCLUDE_FOUND) 272 | message(FATAL_ERROR "Cannot find elf.h. Make sure you have it installed") 273 | endif() 274 | 275 | find_package(Libtool 2.4.2 QUIET) 276 | if (NOT Libtool_FOUND) 277 | list(APPEND ALL_TARGETS libtool) 278 | endif() 279 | 280 | find_package(Autoconf 2.69 QUIET) 281 | if (NOT Autoconf_FOUND) 282 | list(APPEND ALL_TARGETS autoconf) 283 | endif() 284 | 285 | find_package(AutoconfArchive QUIET) 286 | if (NOT AutoconfArchive_FOUND) 287 | list(APPEND ALL_TARGETS autoconf-archive) 288 | endif() 289 | 290 | find_package(Automake 1.13.4 QUIET) 291 | if (NOT Automake_FOUND) 292 | list(APPEND ALL_TARGETS automake) 293 | endif() 294 | 295 | find_package(Gettext QUIET) 296 | if (NOT Gettext_FOUND) 297 | list(APPEND ALL_TARGETS gettext) 298 | endif() 299 | 300 | foreach(target ${ALL_TARGETS}) 301 | include(externals/${target}.cmake) 302 | list(APPEND CLEAN_TARGETS ${target}-clean) 303 | endforeach() 304 | 305 | macro(maybe_add_dependencies depender) 306 | if (TARGET ${depender}) 307 | foreach (dependee ${ARGN}) 308 | if (TARGET ${dependee}) 309 | add_dependencies(${depender} ${dependee}) 310 | endif() 311 | endforeach() 312 | endif() 313 | endmacro() 314 | 315 | maybe_add_dependencies(autoconf-archive autoconf) 316 | maybe_add_dependencies(automake autoconf autoconf-archive) 317 | maybe_add_dependencies(libtool automake) 318 | 319 | maybe_add_dependencies(glog libtool libunwind) 320 | maybe_add_dependencies(gettext libtool) 321 | maybe_add_dependencies(bison gettext libtool) 322 | maybe_add_dependencies(flex libtool) 323 | maybe_add_dependencies(zlib libtool) 324 | maybe_add_dependencies(lzma gettext) 325 | maybe_add_dependencies(libev gettext) 326 | maybe_add_dependencies(libevent libtool openssl) 327 | maybe_add_dependencies(libcurl libtool openssl) 328 | # maybe_add_dependencies(date libcurl) 329 | maybe_add_dependencies(gperf libtool) 330 | maybe_add_dependencies(cyrus-sasl openssl berkeleydb automake libtool) 331 | maybe_add_dependencies(ldap berkeleydb libtool openssl cyrus-sasl) 332 | 333 | maybe_add_dependencies(boost zlib bzip2 lzma) 334 | maybe_add_dependencies(mstch boost) 335 | 336 | maybe_add_dependencies(glog gflags) 337 | 338 | maybe_add_dependencies(googlebenchmark googletest) 339 | 340 | maybe_add_dependencies(s2geometry googletest glog openssl abseil) 341 | 342 | maybe_add_dependencies(folly glog boost double-conversion openssl libevent lzma zstd snappy lz4 libunwind fmt sodium jemalloc libdwarf) 343 | maybe_add_dependencies(fizz folly) 344 | maybe_add_dependencies(wangle folly fizz) 345 | maybe_add_dependencies(proxygen wangle libunwind gperf) 346 | maybe_add_dependencies(rocksdb snappy zlib zstd bzip2 lz4 lzma libunwind) 347 | maybe_add_dependencies(cachelib fbthrift sparsemap fizz googletest) 348 | 349 | # RocksDB has its own copy of gtest, which may conflict with ours 350 | # Here we build gtest after rocksdb intentionally 351 | maybe_add_dependencies(googletest rocksdb gflags) 352 | 353 | maybe_add_dependencies(arrow openssl xsimd llvm boost jemalloc zstd utf8proc protobuf re2 libxml2 libcurl googletest) 354 | maybe_add_dependencies(protobuf zlib abseil) 355 | maybe_add_dependencies(re2 abseil) 356 | maybe_add_dependencies(grpc protobuf re2 c-ares openssl) 357 | maybe_add_dependencies(faiss openblas) 358 | 359 | # JSON 360 | maybe_add_dependencies(valijson nlohmann-json) 361 | maybe_add_dependencies(inja nlohmann-json) 362 | 363 | maybe_add_dependencies(jwt-cpp openssl) 364 | 365 | maybe_add_dependencies(cppjieba limonp) 366 | 367 | add_custom_target( 368 | clean-all 369 | DEPENDS ${CLEAN_TARGETS} 370 | ) 371 | 372 | add_custom_target( 373 | pack-tarballs 374 | COMMAND 375 | tar czvf nebula-third-party-src-5.0.tgz tarballs 376 | COMMAND 377 | md5sum nebula-third-party-src-5.0.tgz 378 | WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/.. 379 | ) 380 | -------------------------------------------------------------------------------- /project/check-so-libs.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | # Copyright (c) 2021 vesoft inc. All rights reserved. 4 | # 5 | # This source code is licensed under Apache 2.0 License. 6 | 7 | if (( $# < 1 )); then 8 | echo "Usage: $0 " 9 | exit 1 10 | fi 11 | 12 | install_dir=$1 13 | if [ -e $install_dir/lib ]; then 14 | # llvm need generate some shared library for following reasons, do not check them here 15 | # 1. it generate libLTO.so libRemarks.so even configured build static library 16 | # 2. reduce binary size: tools configured to linked shared library: libclang.so, libLLVM.so 17 | so_in_lib=`find $install_dir/lib -name '*.so' | grep -v "libLTO.so\|libRemarks.so\|libclang\|libLLVM\|libc++"` 18 | fi 19 | if [ -e $install_dir/lib64 ]; then 20 | so_in_lib64=`find $install_dir/lib64 -name *.so` 21 | fi 22 | 23 | if [[ -n $so_in_lib ]]; then 24 | echo "==> ERROR: found shared libraries in $install_dir/lib" 25 | exit 1 26 | fi 27 | 28 | if [[ -n $so_in_lib64 ]]; then 29 | echo "==> ERROR: found shared libraries in $install_dir/lib64" 30 | exit 1 31 | fi 32 | 33 | exit 0 34 | -------------------------------------------------------------------------------- /project/cmake/ExternalProjectGit.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 Vesoft Inc. All rights reserved 2 | 3 | # 4 | # This macro adds local file support to the git support in ExternalProject_Add 5 | # If there is an existing archive file, it will use it instead of clone the 6 | # git repo 7 | # 8 | # In addition to all arguments support by ExternalProject_Add git support, 9 | # this macro adds two new arguments 10 | # 11 | # ARCHIVE_FILE -- The archive file name for the git repo 12 | # ARCHIVE_MD5 -- The md5sum code of teh archive file 13 | # 14 | macro(ExternalProject_Add_Git proj_name) 15 | set(oneValueGitArgs GIT_REPOSITORY GIT_TAG GIT_REMOTE_NAME GIT_SHALLOW) 16 | set(oneValueOtherArgs ARCHIVE_FILE ARCHIVE_MD5 17 | PREFIX TMP_DIR STAMP_DIR DOWNLOAD_DIR SOURCE_DIR BINARY_DIR 18 | INSTALL_DIR SOURCE_SUBDIR 19 | CMAKE_COMMAND CMAKE_GENERATOR CMAKE_GENERATOR_PLATFORM 20 | CMAKE_GENERATOR_TOOLSET CMAKE_GENERATOR_INSTANCE 21 | UPDATE_DISCONNECTED BUILD_IN_SOURCE BUILD_ALWAYS 22 | TEST_BEFORE_INSTALL TEST_EXCLUDE_FROM_MAIN 23 | LOG_DOWNLOAD LOG_UPDATE LOG_CONFIGURE LOG_BUILD LOG_INSTALL LOG_TEST 24 | EXCLUDE_FROM_ALL LIST_SEPARATOR) 25 | set(oneValueArgs ${oneValueGitArgs} ${oneValueOtherArgs}) 26 | set(multiValueGitArgs GIT_SUBMODULES GIT_CONFIG) 27 | set(multiValueOtherArgs UPDATE_COMMAND PATCH_COMMAND CONFIGURE_COMMAND BUILD_COMMAND 28 | INSTALL_COMMAND TEST_COMMAND COMMAND 29 | CMAKE_ARGS CMAKE_CACHE_ARGS CMAKE_CACHE_DEFAULT_ARGS 30 | BUILD_BYPRODUCTS 31 | DEPENDS STEP_TARGETS INDEPENDENT_STEP_TARGETS) 32 | set(multiValueArgs ${multiValueGitArgs} ${multiValueOtherArgs}) 33 | 34 | cmake_parse_arguments(EPAG "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) 35 | 36 | if (EPAG_UNPARSED_ARGUMENTS) 37 | message(FATAL_ERROR "${proj_name} - Unsupported arguments: ${EPAG_UNPARSED_ARGUMENTS}") 38 | endif() 39 | 40 | set(args ${proj_name}) 41 | set(gitClone FALSE) 42 | if (EPAG_ARCHIVE_FILE AND EPAG_ARCHIVE_MD5) 43 | execute_process( 44 | COMMAND echo "${EPAG_ARCHIVE_MD5} ${EPAG_ARCHIVE_FILE}" 45 | OUTPUT_FILE cachelib.md5 46 | WORKING_DIRECTORY ${DOWNLOAD_DIR} 47 | ) 48 | 49 | execute_process( 50 | COMMAND md5sum -c cachelib.md5 --status 51 | RESULT_VARIABLE archiveFound 52 | WORKING_DIRECTORY ${DOWNLOAD_DIR} 53 | ) 54 | 55 | execute_process( 56 | COMMAND rm cachelib.md5 57 | WORKING_DIRECTORY ${DOWNLOAD_DIR} 58 | ) 59 | 60 | if (archiveFound EQUAL 0) 61 | message(STATUS "${proj_name}: Use archived file") 62 | execute_process( 63 | COMMAND 64 | mkdir -p ${source_dir} 65 | COMMAND 66 | tar -C ${source_dir} --overwrite 67 | -zxf ${EPAG_ARCHIVE_FILE} 68 | WORKING_DIRECTORY ${DOWNLOAD_DIR} 69 | ) 70 | list(APPEND args DOWNLOAD_COMMAND "" 71 | DOWNLOAD_NAME ${EPAG_ARCHIVE_FILE}) 72 | else() 73 | set(gitClone TRUE) 74 | endif() 75 | else () 76 | set(gitClone TRUE) 77 | endif() 78 | 79 | if (gitClone) 80 | message(STATUS "${proj_name}: Clone from the repository") 81 | foreach(arg IN LISTS oneValueGitArgs multiValueGitArgs) 82 | if (EPAG_${arg}) 83 | list(APPEND args ${arg} ${EPAG_${arg}}) 84 | endif() 85 | endforeach() 86 | endif() 87 | 88 | foreach(arg IN LISTS oneValueOtherArgs multiValueOtherArgs) 89 | if (EPAG_${arg}) 90 | list(APPEND args ${arg} ${EPAG_${arg}}) 91 | endif() 92 | endforeach() 93 | 94 | ExternalProject_Add(${args}) 95 | 96 | if (gitClone) 97 | ExternalProject_Add_Step(${proj_name} pre-patch 98 | DEPENDEES update 99 | DEPENDERS patch 100 | COMMAND 101 | git checkout -- * 102 | WORKING_DIRECTORY ${source_dir} 103 | ) 104 | endif() 105 | endmacro() 106 | -------------------------------------------------------------------------------- /project/cmake/FindAutoconf.cmake: -------------------------------------------------------------------------------- 1 | find_program(Autoconf_EXECUTABLE NAMES autoconf DOC "Path to the autconf executable") 2 | if (Autoconf_EXECUTABLE) 3 | execute_process( 4 | OUTPUT_VARIABLE Autoconf_VERSION 5 | OUTPUT_STRIP_TRAILING_WHITESPACE 6 | COMMAND "autoconf" "--version" 7 | COMMAND "head" "-1" 8 | COMMAND "cut" "-d" " " "-f4" 9 | ) 10 | endif() 11 | 12 | include(FindPackageHandleStandardArgs) 13 | find_package_handle_standard_args(Autoconf REQUIRED_VARS Autoconf_EXECUTABLE 14 | VERSION_VAR Autoconf_VERSION) 15 | -------------------------------------------------------------------------------- /project/cmake/FindAutoconfArchive.cmake: -------------------------------------------------------------------------------- 1 | find_path(AutoconfArchive_DIR NAMES aclocal/ax_prefix_config_h.m4 PATHS /usr/share) 2 | include(FindPackageHandleStandardArgs) 3 | find_package_handle_standard_args(AutoconfArchive REQUIRED_VARS AutoconfArchive_DIR) 4 | -------------------------------------------------------------------------------- /project/cmake/FindAutomake.cmake: -------------------------------------------------------------------------------- 1 | find_program(Automake_EXECUTABLE NAMES automake DOC "Path to the automake executable") 2 | if (Automake_EXECUTABLE) 3 | execute_process( 4 | OUTPUT_VARIABLE Automake_VERSION 5 | OUTPUT_STRIP_TRAILING_WHITESPACE 6 | COMMAND "automake" "--version" 7 | COMMAND "head" "-1" 8 | COMMAND "cut" "-d" " " "-f4" 9 | ) 10 | endif() 11 | 12 | include(FindPackageHandleStandardArgs) 13 | find_package_handle_standard_args(Automake REQUIRED_VARS Automake_EXECUTABLE 14 | VERSION_VAR Automake_VERSION) 15 | -------------------------------------------------------------------------------- /project/cmake/FindLibtool.cmake: -------------------------------------------------------------------------------- 1 | find_program(Libtool_EXECUTABLE NAMES libtool libtoolize DOC "Path to the libtool executable") 2 | if (Libtool_EXECUTABLE) 3 | execute_process( 4 | OUTPUT_VARIABLE Libtool_VERSION 5 | OUTPUT_STRIP_TRAILING_WHITESPACE 6 | COMMAND ${Libtool_EXECUTABLE} "--version" 7 | COMMAND "head" "-1" 8 | COMMAND "cut" "-d" " " "-f4" 9 | ) 10 | endif() 11 | 12 | include(FindPackageHandleStandardArgs) 13 | find_package_handle_standard_args(Libtool REQUIRED_VARS Libtool_EXECUTABLE 14 | VERSION_VAR Libtool_VERSION) 15 | -------------------------------------------------------------------------------- /project/externals/abseil.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name abseil) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/abseil/abseil-cpp/archive/refs/tags/20230802.1.tar.gz 10 | URL_HASH MD5=84665b6daa5dda7c9082b1a00057457a 11 | DOWNLOAD_NAME abseil-2022.06.23.1.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DCMAKE_BUILD_TYPE=Release 20 | BUILD_IN_SOURCE 1 21 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 22 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 23 | LOG_CONFIGURE TRUE 24 | LOG_BUILD TRUE 25 | LOG_INSTALL TRUE 26 | ) 27 | 28 | ExternalProject_Add_Step(${name} clean 29 | EXCLUDE_FROM_MAIN TRUE 30 | ALWAYS TRUE 31 | DEPENDEES configure 32 | COMMAND make clean -j 33 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 34 | WORKING_DIRECTORY ${source_dir} 35 | ) 36 | 37 | ExternalProject_Add_StepTargets(${name} clean) 38 | -------------------------------------------------------------------------------- /project/externals/annoy.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 [Your Company] 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name annoy) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/spotify/annoy/archive/refs/tags/v1.17.3.tar.gz 10 | URL_HASH MD5=44105496a41bb7cc47959ce8afbe2eb0 11 | DOWNLOAD_NAME annoy-1.17.3.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND "" 18 | BUILD_COMMAND "" 19 | INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ${source_dir}/src ${CMAKE_INSTALL_PREFIX}/include/annoy 20 | LOG_CONFIGURE TRUE 21 | LOG_BUILD TRUE 22 | LOG_INSTALL TRUE 23 | ) 24 | 25 | ExternalProject_Add_Step(${name} clean 26 | EXCLUDE_FROM_MAIN TRUE 27 | ALWAYS TRUE 28 | DEPENDEES configure 29 | COMMAND ${CMAKE_COMMAND} -E remove_directory ${source_dir} 30 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 31 | WORKING_DIRECTORY ${source_dir} 32 | ) 33 | 34 | ExternalProject_Add_StepTargets(${name} clean) 35 | 36 | -------------------------------------------------------------------------------- /project/externals/arrow.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | # This source code is licensed under Apache 2.0 License. 5 | set(name arrow) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | 8 | if(DISTRO_NAME STREQUAL "CentOS Linux" AND DISTRO_VERSION_ID STREQUAL "7") 9 | set(USE_LLVM_CXX ON) 10 | else() 11 | set(USE_LLVM_CXX OFF) 12 | endif() 13 | 14 | set(ARROW_CMAKE_ARGS 15 | -DProtobuf_SOURCE=SYSTEM 16 | -Dre2_SOURCE=SYSTEM 17 | -DBoost_ROOT=${CMAKE_INSTALL_PREFIX} 18 | -DGTest_ROOT=${CMAKE_INSTALL_PREFIX} 19 | -DOPENSSL_ROOT_DIR=${CMAKE_INSTALL_PREFIX} 20 | -DLLVM_ROOT=${CMAKE_INSTALL_PREFIX} 21 | -Dutf8proc_ROOT=${CMAKE_INSTALL_PREFIX} 22 | -DARROW_IPC=ON 23 | -DARROW_JSON=ON 24 | -DARROW_COMPUTE=ON 25 | -DARROW_GANDIVA=ON 26 | -DARROW_TESTING=ON 27 | -DARROW_FILESYSTEM=ON 28 | -DARROW_HDFS=ON 29 | -DARROW_S3=ON 30 | -DARROW_AZURE=ON 31 | -DARROW_GCS=ON 32 | -DARROW_CSV=ON 33 | -DARROW_JEMALLOC=OFF 34 | -DARROW_BUILD_TESTS=OFF 35 | -DARROW_BUILD_BENCHMARKS=OFF 36 | -DARROW_BUILD_STATIC=OFF 37 | -DARROW_BUILD_SHARED=ON 38 | -DARROW_TEST_MEMCHECK=OFF 39 | -DARROW_PYTHON=OFF 40 | -DARROW_PARQUET=ON 41 | -DARROW_ORC=ON 42 | -DARROW_DATASET=ON 43 | -DUSE_LLVM_CXX=${USE_LLVM_CXX} 44 | -DCMAKE_SHARED_LINKER_FLAGS=-Wl,-rpath=\$ORIGIN:\$ORIGIN/../3rd 45 | -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} 46 | ) 47 | 48 | ExternalProject_Add( 49 | ${name} 50 | URL https://github.com/apache/arrow/archive/refs/tags/apache-arrow-18.0.0.tar.gz 51 | URL_HASH MD5=4a6dfd10649ab03caf71d740edff4889 52 | DOWNLOAD_NAME apache-arrow-18.0.0.tar.gz 53 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 54 | TMP_DIR ${BUILD_INFO_DIR} 55 | STAMP_DIR ${BUILD_INFO_DIR} 56 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 57 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-18.0.0.patch 58 | CONFIGURE_COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" ${ARROW_CMAKE_ARGS} ./cpp 59 | BUILD_COMMAND 60 | "${MakeEnvs}" 61 | make -e -s -j${BUILDING_JOBS_NUM} 62 | BUILD_IN_SOURCE 1 63 | INSTALL_COMMAND make install 64 | LOG_CONFIGURE TRUE 65 | LOG_BUILD TRUE 66 | LOG_INSTALL TRUE 67 | ) 68 | 69 | ExternalProject_Add_Step(${name} clean 70 | EXCLUDE_FROM_MAIN TRUE 71 | ALWAYS TRUE 72 | DEPENDEES configure 73 | COMMAND make clean -j 74 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 75 | WORKING_DIRECTORY ${source_dir} 76 | ) 77 | 78 | ExternalProject_Add_StepTargets(${name} clean) 79 | -------------------------------------------------------------------------------- /project/externals/autoconf-archive.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name autoconf-archive) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://ftp.gnu.org/gnu/autoconf-archive/autoconf-archive-2022.09.03.tar.xz 10 | URL_HASH MD5=7f80979c121ecbe119ebf98f42ad198f 11 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 12 | TMP_DIR ${BUILD_INFO_DIR} 13 | STAMP_DIR ${BUILD_INFO_DIR} 14 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 15 | SOURCE_DIR ${source_dir} 16 | CONFIGURE_COMMAND 17 | ${common_configure_envs} 18 | "LIBS=${LIBS}" 19 | ./configure ${common_configure_args} 20 | BUILD_IN_SOURCE 1 21 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 22 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 23 | LOG_CONFIGURE TRUE 24 | LOG_BUILD TRUE 25 | LOG_INSTALL TRUE 26 | ) 27 | 28 | ExternalProject_Add_Step(${name} clean 29 | EXCLUDE_FROM_MAIN TRUE 30 | ALWAYS TRUE 31 | DEPENDEES configure 32 | COMMAND make clean -j 33 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 34 | WORKING_DIRECTORY ${source_dir} 35 | ) 36 | 37 | ExternalProject_Add_StepTargets(${name} clean) 38 | 39 | add_custom_command( 40 | TARGET ${name} POST_BUILD 41 | COMMAND install -m 0644 ${CMAKE_SOURCE_DIR}/externals/pkg.m4 ${CMAKE_INSTALL_PREFIX}/share/aclocal 42 | ) 43 | -------------------------------------------------------------------------------- /project/externals/autoconf.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name autoconf) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz 10 | URL_HASH MD5=f64e38d671fdec06077a41eb4d5ee476 11 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 12 | TMP_DIR ${BUILD_INFO_DIR} 13 | STAMP_DIR ${BUILD_INFO_DIR} 14 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 15 | SOURCE_DIR ${source_dir} 16 | CONFIGURE_COMMAND 17 | ${common_configure_envs} 18 | "LIBS=${LIBS}" 19 | ./configure ${common_configure_args} 20 | BUILD_IN_SOURCE 1 21 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 22 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 23 | LOG_CONFIGURE TRUE 24 | LOG_BUILD TRUE 25 | LOG_INSTALL TRUE 26 | ) 27 | 28 | ExternalProject_Add_Step(${name} clean 29 | EXCLUDE_FROM_MAIN TRUE 30 | ALWAYS TRUE 31 | DEPENDEES configure 32 | COMMAND make clean -j 33 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 34 | WORKING_DIRECTORY ${source_dir} 35 | ) 36 | 37 | ExternalProject_Add_StepTargets(${name} clean) 38 | -------------------------------------------------------------------------------- /project/externals/automake.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name automake) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.xz 10 | URL_HASH MD5=4017e96f89fca45ca946f1c5db6be714 11 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 12 | TMP_DIR ${BUILD_INFO_DIR} 13 | STAMP_DIR ${BUILD_INFO_DIR} 14 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 15 | SOURCE_DIR ${source_dir} 16 | CONFIGURE_COMMAND 17 | ${common_configure_envs} 18 | "LIBS=${LIBS}" 19 | ./configure ${common_configure_args} 20 | BUILD_IN_SOURCE 1 21 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 22 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 23 | LOG_CONFIGURE TRUE 24 | LOG_BUILD TRUE 25 | LOG_INSTALL TRUE 26 | ) 27 | 28 | ExternalProject_Add_Step(${name} clean 29 | EXCLUDE_FROM_MAIN TRUE 30 | ALWAYS TRUE 31 | DEPENDEES configure 32 | COMMAND make clean -j 33 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 34 | WORKING_DIRECTORY ${source_dir} 35 | ) 36 | 37 | ExternalProject_Add_StepTargets(${name} clean) 38 | -------------------------------------------------------------------------------- /project/externals/berkeleydb.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name berkeleydb) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source/) 7 | execute_process( 8 | COMMAND ${CMAKE_SOURCE_DIR}/externals/config_guess.sh 9 | OUTPUT_VARIABLE sys_info 10 | ) 11 | ExternalProject_Add( 12 | ${name} 13 | URL http://download.oracle.com/berkeley-db/db-5.1.29.tar.gz 14 | URL_HASH MD5=a94ea755ab695bc04f82b94d2e24a1ef 15 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name}/ 16 | TMP_DIR ${BUILD_INFO_DIR} 17 | STAMP_DIR ${BUILD_INFO_DIR} 18 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 19 | SOURCE_DIR ${source_dir} 20 | CONFIGURE_COMMAND 21 | ${common_configure_envs} 22 | "LIBS=${LIBS}" 23 | ./build_unix/../dist/configure 24 | ${common_configure_args} 25 | --enable-shared=yes 26 | --libdir=${BERKELEYDB_LIB_DIR} 27 | --includedir=${BERKELEYDB_INCLUDE_DIR} 28 | --build=${sys_info} 29 | BUILD_IN_SOURCE 1 30 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 31 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 32 | LOG_CONFIGURE TRUE 33 | LOG_BUILD TRUE 34 | LOG_INSTALL TRUE 35 | ) 36 | 37 | ExternalProject_Add_Step(${name} clean 38 | EXCLUDE_FROM_MAIN TRUE 39 | ALWAYS TRUE 40 | DEPENDEES configure 41 | COMMAND make clean -j 42 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 43 | WORKING_DIRECTORY ${source_dir} 44 | ) 45 | 46 | ExternalProject_Add_StepTargets(${name} clean) 47 | -------------------------------------------------------------------------------- /project/externals/bison.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name bison) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL http://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz 10 | URL_HASH MD5=c28f119f405a2304ff0a7ccdcc629713 11 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 12 | TMP_DIR ${BUILD_INFO_DIR} 13 | STAMP_DIR ${BUILD_INFO_DIR} 14 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 15 | SOURCE_DIR ${source_dir} 16 | CONFIGURE_COMMAND 17 | ${common_configure_envs} 18 | ./configure ${common_configure_args} --quiet 19 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 20 | BUILD_IN_SOURCE 1 21 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 22 | LOG_CONFIGURE TRUE 23 | LOG_BUILD TRUE 24 | LOG_INSTALL TRUE 25 | ) 26 | 27 | ExternalProject_Add_Step(${name} clean 28 | EXCLUDE_FROM_MAIN TRUE 29 | ALWAYS TRUE 30 | DEPENDEES configure 31 | COMMAND make clean -j 32 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 33 | WORKING_DIRECTORY ${source_dir} 34 | ) 35 | 36 | ExternalProject_Add_StepTargets(${name} clean) 37 | -------------------------------------------------------------------------------- /project/externals/boost.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name boost) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | execute_process( 8 | COMMAND 9 | ${CMAKE_CXX_COMPILER} -print-file-name=libstdc++.so 10 | OUTPUT_VARIABLE glibcxx_path 11 | OUTPUT_STRIP_TRAILING_WHITESPACE 12 | ) 13 | if (NOT ${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "mips64") 14 | get_filename_component(glibcxx_dir ${glibcxx_path} DIRECTORY) 15 | set(BOOST_ENV_COMMAND 16 | "env" 17 | "LD_LIBRARY_PATH=${glibcxx_dir}" 18 | ) 19 | endif() 20 | 21 | ExternalProject_Add( 22 | ${name} 23 | URL https://cytranet.dl.sourceforge.net/project/boost/boost/1.81.0/boost_1_81_0.tar.gz 24 | URL_HASH MD5=4bf02e84afb56dfdccd1e6aec9911f4b 25 | DOWNLOAD_NAME boost-1.81.0.tar.gz 26 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 27 | TMP_DIR ${BUILD_INFO_DIR} 28 | STAMP_DIR ${BUILD_INFO_DIR} 29 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 30 | SOURCE_DIR ${source_dir} 31 | CONFIGURE_COMMAND 32 | ./bootstrap.sh 33 | --without-icu 34 | --with-libraries=context,thread,system,filesystem,graph,program_options,regex,iostreams,date_time,python 35 | --prefix=${CMAKE_INSTALL_PREFIX} 36 | #--without-libraries=wave,nowide,chrono,atomic,fiber,type_erasure,exception,timer,contract,math,locale,json,test,stacktrace,mpi,log,graph,graph_parallel 37 | BUILD_COMMAND 38 | ${BOOST_ENV_COMMAND} 39 | ./b2 install 40 | -d0 41 | -j${BUILDING_JOBS_NUM} 42 | --prefix=${CMAKE_INSTALL_PREFIX} 43 | --disable-icu 44 | include=${CMAKE_INSTALL_PREFIX}/include 45 | linkflags=-L${CMAKE_INSTALL_PREFIX}/lib 46 | "cxxflags=-fPIC ${extra_cpp_flags} ${ISA_FLAGS}" 47 | runtime-link=shared 48 | link=shared 49 | variant=release 50 | BUILD_IN_SOURCE 1 51 | INSTALL_COMMAND rm -rf ${CMAKE_INSTALL_PREFIX}/lib/cmake/boost* ${CMAKE_INSTALL_PREFIX}/lib/cmake/Boost* 52 | LOG_CONFIGURE TRUE 53 | LOG_BUILD TRUE 54 | LOG_INSTALL TRUE 55 | ) 56 | 57 | ExternalProject_Add_Step(${name} setup-compiler 58 | DEPENDEES configure 59 | DEPENDERS build 60 | COMMAND 61 | echo "using gcc : : ${CMAKE_CXX_COMPILER} $" 62 | > ${source_dir}/tools/build/src/user-config.jam 63 | WORKING_DIRECTORY ${source_dir} 64 | ) 65 | 66 | ExternalProject_Add_Step(${name} trim 67 | DEPENDEES install 68 | COMMAND 69 | bash -c "rm -rf ${CMAKE_INSTALL_PREFIX}/include/boost/{wave,log,atomic,test,fusion,geometry,gil,phoenix,spirit,beast,asio,compute,polygon,proto,units,metaparse,qvm,vmd,xpressive}" 70 | WORKING_DIRECTORY ${source_dir} 71 | ) 72 | 73 | ExternalProject_Add_Step(${name} clean 74 | EXCLUDE_FROM_MAIN TRUE 75 | ALWAYS TRUE 76 | DEPENDEES configure 77 | COMMAND ./b2 clean 78 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 79 | WORKING_DIRECTORY ${source_dir} 80 | ) 81 | 82 | ExternalProject_Add_StepTargets(${name} clean) 83 | -------------------------------------------------------------------------------- /project/externals/breakpad.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name breakpad) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | 8 | if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "aarch64" AND ${GLIBC_VERSION} VERSION_LESS 2.20) 9 | set(patch_command "patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-aarch64.patch") 10 | endif() 11 | 12 | ExternalProject_Add( 13 | ${name} 14 | URL http://github.com/google/breakpad/archive/refs/tags/v2022.07.12.tar.gz 15 | URL_HASH MD5=d5bcfd3f7b361ef5bda96123c3abdd0a 16 | DOWNLOAD_NAME breakpad-2022.07.12.tar.gz 17 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 18 | TMP_DIR ${BUILD_INFO_DIR} 19 | STAMP_DIR ${BUILD_INFO_DIR} 20 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 21 | SOURCE_DIR ${source_dir} 22 | PATCH_COMMAND bash -c "${patch_command}" 23 | CONFIGURE_COMMAND 24 | ${common_configure_envs} 25 | ./configure ${common_configure_args} 26 | --quiet 27 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 28 | BUILD_IN_SOURCE 1 29 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 30 | LOG_CONFIGURE TRUE 31 | LOG_BUILD TRUE 32 | LOG_INSTALL TRUE 33 | ) 34 | 35 | # The original repo for lss is https://chromium.googlesource.com/linux-syscall-support 36 | # For the well-known reason, you cannot download it successfully every time. Because 37 | # the code is not changing frequently, we pack it so that we don't have to download. 38 | ExternalProject_Add_Step(${name} post-download 39 | DEPENDEES download 40 | DEPENDERS update 41 | ALWAYS FALSE 42 | COMMAND 43 | tar -C src/third_party/. -zxf ${CMAKE_SOURCE_DIR}/patches/lss-2021-12-20.tgz 44 | WORKING_DIRECTORY ${source_dir} 45 | ) 46 | 47 | ExternalProject_Add_Step(${name} clean 48 | EXCLUDE_FROM_MAIN TRUE 49 | ALWAYS TRUE 50 | DEPENDEES configure 51 | COMMAND make clean -j 52 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 53 | WORKING_DIRECTORY ${source_dir} 54 | ) 55 | 56 | ExternalProject_Add_StepTargets(${name} clean) 57 | -------------------------------------------------------------------------------- /project/externals/bzip2.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name bzip2) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz 10 | URL_HASH MD5=67e051268d0c475ea773822f7500d0e5 11 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 12 | TMP_DIR ${BUILD_INFO_DIR} 13 | STAMP_DIR ${BUILD_INFO_DIR} 14 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 15 | SOURCE_DIR ${source_dir} 16 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-1.0.8.patch 17 | CONFIGURE_COMMAND "" 18 | BUILD_COMMAND make CFLAGS=-fPIC -s -j${BUILDING_JOBS_NUM} -f Makefile-libbz2_so 19 | BUILD_IN_SOURCE 1 20 | INSTALL_COMMAND make -s install PREFIX=${CMAKE_INSTALL_PREFIX} -f Makefile-libbz2_so 21 | LOG_CONFIGURE TRUE 22 | LOG_BUILD TRUE 23 | LOG_INSTALL TRUE 24 | ) 25 | 26 | ExternalProject_Add_Step(${name} clean 27 | EXCLUDE_FROM_MAIN TRUE 28 | ALWAYS TRUE 29 | DEPENDEES configure 30 | COMMAND make clean -j 31 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 32 | WORKING_DIRECTORY ${source_dir} 33 | ) 34 | 35 | ExternalProject_Add_StepTargets(${name} clean) 36 | -------------------------------------------------------------------------------- /project/externals/c-ares.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name c-ares) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/c-ares/c-ares/releases/download/cares-1_24_0/c-ares-1.24.0.tar.gz 10 | URL_HASH MD5=25b872ee1c3bee8ff5f49b5f31307002 11 | DOWNLOAD_NAME c-ares-1.24.0.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DCMAKE_BUILD_TYPE=Release 20 | -DCARES_SHARED=ON 21 | -DCARES_BUILD_TOOLS=OFF 22 | -DCARES_SYMBOL_HIDING=ON 23 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 24 | BUILD_IN_SOURCE 1 25 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 26 | LOG_CONFIGURE TRUE 27 | LOG_BUILD TRUE 28 | LOG_INSTALL TRUE 29 | ) 30 | 31 | ExternalProject_Add_Step(${name} clean 32 | EXCLUDE_FROM_MAIN TRUE 33 | ALWAYS TRUE 34 | DEPENDEES configure 35 | COMMAND make clean -j 36 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 37 | WORKING_DIRECTORY ${source_dir} 38 | ) 39 | 40 | ExternalProject_Add_StepTargets(${name} clean) 41 | -------------------------------------------------------------------------------- /project/externals/cachelib.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name cachelib) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | set(version "2022.12.26") 8 | 9 | ExternalProject_Add( 10 | ${name} 11 | URL http://github.com/facebook/cachelib/archive/refs/tags/v${version}.00.tar.gz 12 | URL_HASH MD5=6ff1cc495ab500d5b1053248f069a087 13 | DOWNLOAD_NAME cachelib-${version}.tar.gz 14 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 15 | TMP_DIR ${BUILD_INFO_DIR} 16 | STAMP_DIR ${BUILD_INFO_DIR} 17 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 18 | SOURCE_DIR ${source_dir} 19 | SOURCE_SUBDIR cachelib 20 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-2022-12-26.patch 21 | CMAKE_ARGS 22 | ${common_cmake_args} 23 | -DCMAKE_BUILD_TYPE=Release 24 | -DBoost_NO_BOOST_CMAKE=ON 25 | -DBUILD_TESTS=OFF 26 | "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -Wno-error=deprecated-declarations ${extra_cpp_flags}" 27 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 28 | BUILD_IN_SOURCE 1 29 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 30 | LOG_CONFIGURE TRUE 31 | LOG_BUILD TRUE 32 | LOG_INSTALL TRUE 33 | ) 34 | 35 | ExternalProject_Add_Step(${name} clean 36 | EXCLUDE_FROM_MAIN TRUE 37 | ALWAYS TRUE 38 | DEPENDEES configure 39 | COMMAND make clean -j 40 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 41 | WORKING_DIRECTORY ${source_dir} 42 | ) 43 | 44 | ExternalProject_Add_StepTargets(${name} clean) 45 | 46 | -------------------------------------------------------------------------------- /project/externals/capstone.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name capstone) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/aquynh/capstone/archive/4.0.2.tar.gz 10 | URL_HASH MD5=8894344c966a948f1248e66c91b53e2c 11 | DOWNLOAD_NAME capstone-4.0.2.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DCAPSTONE_X86_SUPPORT=ON 20 | -DCAPSTONE_ARM_SUPPORT=OFF 21 | -DCAPSTONE_ARM64_SUPPORT=OFF 22 | -DCAPSTONE_M680X_SUPPORT=OFF 23 | -DCAPSTONE_M68K_SUPPORT=OFF 24 | -DCAPSTONE_MIPS_SUPPORT=OFF 25 | -DCAPSTONE_MOS65XX_SUPPORT=OFF 26 | -DCAPSTONE_PPC_SUPPORT=OFF 27 | -DCAPSTONE_SPARC_SUPPORT=OFF 28 | -DCAPSTONE_SYSZ_SUPPORT=OFF 29 | -DCAPSTONE_XCORE_SUPPORT=OFF 30 | -DCAPSTONE_TMS320C64X_SUPPORT=OFF 31 | -DCAPSTONE_M680X_SUPPORT=OFF 32 | -DCAPSTONE_EVM_SUPPORT=OFF 33 | -DCAPSTONE_BUILD_DIET=OFF 34 | -DCAPSTONE_X86_REDUCE=OFF 35 | -DCAPSTONE_BUILD_TESTS=OFF 36 | -DCAPSTONE_BUILD_STATIC=ON 37 | -DCAPSTONE_BUILD_SHARED=OFF 38 | -DCMAKE_BUILD_TYPE=Release 39 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 40 | BUILD_IN_SOURCE 1 41 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 42 | LOG_CONFIGURE TRUE 43 | LOG_BUILD TRUE 44 | LOG_INSTALL TRUE 45 | ) 46 | 47 | ExternalProject_Add_Step(${name} clean 48 | EXCLUDE_FROM_MAIN TRUE 49 | ALWAYS TRUE 50 | DEPENDEES configure 51 | COMMAND make clean -j 52 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 53 | WORKING_DIRECTORY ${source_dir} 54 | ) 55 | 56 | ExternalProject_Add_StepTargets(${name} clean) 57 | -------------------------------------------------------------------------------- /project/externals/config_guess.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | sh -c "$(curl -fsSL 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD')" 4 | -------------------------------------------------------------------------------- /project/externals/cppjieba.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2025 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name cppjieba) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/yanyiwu/cppjieba/archive/refs/tags/v5.6.0.zip 10 | URL_HASH MD5=75a5d2fd598460e4d5c864df2fbb9688 11 | DOWNLOAD_NAME ${name}-5.6.0.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND "" 18 | BUILD_COMMAND "" 19 | INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_PREFIX}/include 20 | COMMAND ${CMAKE_COMMAND} -E copy_directory ${source_dir}/include ${CMAKE_INSTALL_PREFIX}/include 21 | BUILD_IN_SOURCE 1 22 | LOG_CONFIGURE TRUE 23 | LOG_BUILD TRUE 24 | LOG_INSTALL TRUE 25 | ) 26 | 27 | ExternalProject_Add_Step(${name} clean 28 | EXCLUDE_FROM_MAIN TRUE 29 | ALWAYS TRUE 30 | DEPENDEES configure 31 | COMMAND make clean 32 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 33 | WORKING_DIRECTORY ${source_dir} 34 | ) 35 | 36 | ExternalProject_Add_StepTargets(${name} clean) 37 | -------------------------------------------------------------------------------- /project/externals/cyrus-sasl.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name cyrus-sasl) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/cyrusimap/cyrus-sasl/archive/refs/tags/cyrus-sasl-2.1.28.tar.gz 10 | URL_HASH MD5=7dcf3919b3085a1d09576438171bda91 11 | DOWNLOAD_NAME cyrus-sasl-2.1.28.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND 18 | ${common_configure_envs} 19 | ./autogen.sh ${common_configure_args} 20 | --disable-static 21 | --enable-shared 22 | --disable-scram 23 | --disable-digest 24 | --disable-sample 25 | --with-openssl=${CMAKE_INSTALL_PREFIX} 26 | --with-bdb-incdir=${BERKELEYDB_INCLUDE_DIR} 27 | --with-bdb-libdir=${BERKELEYDB_LIB_DIR} 28 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 29 | BUILD_IN_SOURCE 1 30 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 31 | LOG_CONFIGURE TRUE 32 | LOG_BUILD TRUE 33 | LOG_INSTALL TRUE 34 | ) 35 | 36 | ExternalProject_Add_Step(${name} clean 37 | EXCLUDE_FROM_MAIN TRUE 38 | ALWAYS TRUE 39 | DEPENDEES configure 40 | COMMAND make clean -j 41 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 42 | WORKING_DIRECTORY ${source_dir} 43 | ) 44 | 45 | ExternalProject_Add_StepTargets(${name} clean) 46 | -------------------------------------------------------------------------------- /project/externals/datasketches.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name datasketches) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/apache/datasketches-cpp/archive/refs/tags/4.1.0.tar.gz 10 | URL_HASH MD5=d2b8d5ab5f379f1afd5fbf86ac5cfaf1 11 | DOWNLOAD_NAME ${name}-4.1.0.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | BUILD_IN_SOURCE 0 18 | CMAKE_ARGS 19 | ${common_cmake_args} 20 | -DBUILD_TESTS=OFF 21 | -DWITH_PYTHON=OFF 22 | LOG_CONFIGURE TRUE 23 | LOG_BUILD TRUE 24 | LOG_INSTALL TRUE 25 | ) 26 | 27 | ExternalProject_Add_Step(${name} clean 28 | EXCLUDE_FROM_MAIN TRUE 29 | ALWAYS TRUE 30 | DEPENDEES configure 31 | COMMAND make clean -j 32 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 33 | WORKING_DIRECTORY ${source_dir} 34 | ) 35 | 36 | ExternalProject_Add_StepTargets(${name} clean) 37 | -------------------------------------------------------------------------------- /project/externals/date.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name date) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/HowardHinnant/date/archive/refs/tags/v3.0.1.tar.gz 10 | URL_HASH MD5=78902f47f7931a3ae8a320e0dea1f20a 11 | DOWNLOAD_NAME date-3.0.1.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DUSE_SYSTEM_TZ_DB=ON 20 | -DBUILD_TZ_LIB=ON 21 | -DENABLE_DATE_TESTING=OFF 22 | -DBUILD_SHARED_LIBS=ON 23 | -DCMAKE_BUILD_TYPE=Release 24 | BUILD_IN_SOURCE 1 25 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 26 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 27 | LOG_CONFIGURE TRUE 28 | LOG_BUILD TRUE 29 | LOG_INSTALL TRUE 30 | ) 31 | 32 | ExternalProject_Add_Step(${name} clean 33 | EXCLUDE_FROM_MAIN TRUE 34 | ALWAYS TRUE 35 | DEPENDEES configure 36 | COMMAND make clean -j 37 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 38 | WORKING_DIRECTORY ${source_dir} 39 | ) 40 | 41 | ExternalProject_Add_StepTargets(${name} clean) 42 | -------------------------------------------------------------------------------- /project/externals/double-conversion.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name double-conversion) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/google/double-conversion/archive/v3.2.1.tar.gz 10 | URL_HASH MD5=ccdcf76f6df822fb5488425e85707e55 11 | DOWNLOAD_NAME double-conversion-3.2.1.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DCMAKE_BUILD_TYPE=Release 20 | BUILD_IN_SOURCE 1 21 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 22 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 23 | LOG_CONFIGURE TRUE 24 | LOG_BUILD TRUE 25 | LOG_INSTALL TRUE 26 | ) 27 | 28 | ExternalProject_Add_Step(${name} clean 29 | EXCLUDE_FROM_MAIN TRUE 30 | ALWAYS TRUE 31 | DEPENDEES configure 32 | COMMAND make clean -j 33 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 34 | WORKING_DIRECTORY ${source_dir} 35 | ) 36 | 37 | ExternalProject_Add_StepTargets(${name} clean) 38 | -------------------------------------------------------------------------------- /project/externals/duckdb.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | # TODO Upgrade to take advantage of optimization 6 | 7 | set(name duckdb) 8 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 9 | set(make_envs "env" "GEN=ninja" "BUILD_JEMALLOC=1") 10 | ExternalProject_Add( 11 | ${name} 12 | URL https://github.com/duckdb/duckdb/archive/refs/tags/v0.6.1.tar.gz 13 | URL_HASH MD5=a1498ddceed95e448b9eb5a1f99fe467 14 | DOWNLOAD_NAME duckdb-0.6.1.tar.gz 15 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 16 | TMP_DIR ${BUILD_INFO_DIR} 17 | STAMP_DIR ${BUILD_INFO_DIR} 18 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 19 | SOURCE_DIR ${source_dir} 20 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-0.6.1.patch 21 | CONFIGURE_COMMAND sed -i "s/DBUILD_JEMALLOC_EXTENSION=1/DBUILD_JEMALLOC_EXTENSION=0/" ${source_dir}/Makefile 22 | BUILD_COMMAND 23 | "${make_envs}" 24 | make -e -s -j${BUILDING_JOBS_NUM} 25 | BUILD_IN_SOURCE 1 26 | INSTALL_COMMAND "" 27 | LOG_CONFIGURE TRUE 28 | LOG_BUILD TRUE 29 | LOG_INSTALL TRUE 30 | ) 31 | 32 | ExternalProject_Add_Step(${name} custom-install 33 | ALWAYS TRUE 34 | DEPENDEES build 35 | DEPENDERS install 36 | COMMAND python3 scripts/amalgamation.py --extended 37 | COMMAND mkdir -p ${CMAKE_INSTALL_PREFIX}/include/duckdb 38 | COMMAND cp src/amalgamation/duckdb.hpp ${CMAKE_INSTALL_PREFIX}/include/duckdb/. 39 | COMMAND cp build/release/src/libduckdb_static.a ${CMAKE_INSTALL_PREFIX}/lib/ 40 | COMMAND cp build/release/third_party/fmt/libduckdb_fmt.a ${CMAKE_INSTALL_PREFIX}/lib/ 41 | COMMAND cp build/release/third_party/miniz/libduckdb_miniz.a ${CMAKE_INSTALL_PREFIX}/lib/ 42 | COMMAND cp build/release/third_party/re2/libduckdb_re2.a ${CMAKE_INSTALL_PREFIX}/lib/ 43 | COMMAND cp build/release/third_party/hyperloglog/libduckdb_hyperloglog.a ${CMAKE_INSTALL_PREFIX}/lib/ 44 | COMMAND cp build/release/third_party/utf8proc/libduckdb_utf8proc.a ${CMAKE_INSTALL_PREFIX}/lib/ 45 | COMMAND cp build/release/third_party/fastpforlib/libduckdb_fastpforlib.a ${CMAKE_INSTALL_PREFIX}/lib/ 46 | COMMAND cp build/release/third_party/libpg_query/libduckdb_pg_query.a ${CMAKE_INSTALL_PREFIX}/lib/ 47 | COMMAND cp build/release/third_party/fsst/libduckdb_fsst.a ${CMAKE_INSTALL_PREFIX}/lib/ 48 | COMMAND cp build/release/third_party/mbedtls/libduckdb_mbedtls.a ${CMAKE_INSTALL_PREFIX}/lib/ 49 | COMMAND cp build/release/extension/parquet/libparquet_extension.a ${CMAKE_INSTALL_PREFIX}/lib/ 50 | WORKING_DIRECTORY ${source_dir} 51 | LOG TRUE 52 | ) 53 | 54 | ExternalProject_Add_Step(${name} clean 55 | EXCLUDE_FROM_MAIN TRUE 56 | ALWAYS TRUE 57 | DEPENDEES configure 58 | COMMAND make clean -j 59 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 60 | WORKING_DIRECTORY ${source_dir} 61 | ) 62 | 63 | ExternalProject_Add_StepTargets(${name} clean) 64 | -------------------------------------------------------------------------------- /project/externals/eigen.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under MIT License. 4 | 5 | set(name eigen) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip 10 | URL_HASH MD5=a83cb9a2cbba2dd52c137ac62d33d847 11 | DOWNLOAD_NAME eigen-3.4.0.zip 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | BUILD_IN_SOURCE 0 18 | CMAKE_ARGS 19 | ${common_cmake_args} 20 | -DCMAKE_BUILD_TYPE=Release 21 | LOG_CONFIGURE TRUE 22 | LOG_BUILD TRUE 23 | LOG_INSTALL TRUE 24 | ) 25 | 26 | ExternalProject_Add_Step(${name} clean 27 | EXCLUDE_FROM_MAIN TRUE 28 | ALWAYS TRUE 29 | DEPENDEES configure 30 | COMMAND make clean -j 31 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 32 | WORKING_DIRECTORY ${source_dir} 33 | ) 34 | 35 | ExternalProject_Add_StepTargets(${name} clean) 36 | -------------------------------------------------------------------------------- /project/externals/faiss.cmake: -------------------------------------------------------------------------------- 1 | set(name faiss) 2 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 3 | 4 | # Detect if the current platform is x86 5 | if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64") 6 | set(FAISS_OPT_LEVEL "-DFAISS_OPT_LEVEL=avx512") 7 | else() 8 | set(FAISS_OPT_LEVEL "") 9 | endif() 10 | 11 | ExternalProject_Add( 12 | ${name} 13 | URL https://github.com/facebookresearch/faiss/archive/refs/tags/v1.8.0.tar.gz 14 | URL_HASH MD5=fc6de8d8fdffca8ed3ff1944c9ec634d 15 | DOWNLOAD_NAME faiss-1.8.0.tar.gz 16 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 17 | TMP_DIR ${BUILD_INFO_DIR} 18 | STAMP_DIR ${BUILD_INFO_DIR} 19 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 20 | SOURCE_DIR ${source_dir} 21 | CMAKE_ARGS 22 | ${common_cmake_args} 23 | -DFAISS_ENABLE_GPU=OFF 24 | -DFAISS_ENABLE_PYTHON=OFF 25 | -DBUILD_TESTING=OFF 26 | -DBUILD_SHARED_LIBS=ON 27 | -DCMAKE_BUILD_TYPE=Release 28 | ${FAISS_OPT_LEVEL} 29 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 30 | BUILD_IN_SOURCE 1 31 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 32 | LOG_CONFIGURE TRUE 33 | LOG_BUILD TRUE 34 | LOG_INSTALL TRUE 35 | ) 36 | 37 | ExternalProject_Add_Step(${name} clean 38 | EXCLUDE_FROM_MAIN TRUE 39 | ALWAYS TRUE 40 | DEPENDEES configure 41 | COMMAND make clean -j 42 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 43 | WORKING_DIRECTORY ${source_dir} 44 | ) 45 | 46 | ExternalProject_Add_StepTargets(${name} clean) 47 | -------------------------------------------------------------------------------- /project/externals/fatal.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name fatal) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/facebook/fatal/archive/refs/tags/v2022.12.26.00.tar.gz 10 | URL_HASH MD5=81822966656945913c487fa45405c784 11 | DOWNLOAD_NAME fatal-2022-12-26.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND "" 18 | BUILD_COMMAND install -d ${CMAKE_INSTALL_PREFIX}/include 19 | BUILD_IN_SOURCE 1 20 | INSTALL_COMMAND cp -r fatal ${CMAKE_INSTALL_PREFIX}/include 21 | LOG_CONFIGURE TRUE 22 | LOG_BUILD TRUE 23 | LOG_INSTALL TRUE 24 | ) 25 | 26 | ExternalProject_Add_Step(${name} clean 27 | EXCLUDE_FROM_MAIN TRUE 28 | ALWAYS TRUE 29 | DEPENDEES configure 30 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 31 | WORKING_DIRECTORY ${source_dir} 32 | ) 33 | 34 | ExternalProject_Add_StepTargets(${name} clean) 35 | -------------------------------------------------------------------------------- /project/externals/fizz.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name fizz) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/facebookincubator/fizz/archive/refs/tags/v2022.12.26.00.tar.gz 10 | URL_HASH MD5=74eeed172e4b5bb8d990828e9787527d 11 | DOWNLOAD_NAME fizz-2022-12-26.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | SOURCE_SUBDIR fizz 18 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-2022-12-26.patch 19 | CMAKE_ARGS 20 | ${common_cmake_args} 21 | -DBUILD_TESTS=OFF 22 | -DBoost_NO_BOOST_CMAKE=ON 23 | -DBUILD_EXAMPLES=OFF 24 | -DCMAKE_BUILD_TYPE=Release 25 | -DOPENSSL_ROOT_DIR=${CMAKE_INSTALL_PREFIX} 26 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 27 | BUILD_IN_SOURCE 1 28 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 29 | LOG_CONFIGURE TRUE 30 | LOG_BUILD TRUE 31 | LOG_INSTALL TRUE 32 | ) 33 | 34 | ExternalProject_Add_Step(${name} clean 35 | EXCLUDE_FROM_MAIN TRUE 36 | ALWAYS TRUE 37 | DEPENDEES configure 38 | COMMAND make clean -j 39 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 40 | WORKING_DIRECTORY 41 | ) 42 | 43 | ExternalProject_Add_StepTargets(${name} clean) 44 | -------------------------------------------------------------------------------- /project/externals/flex.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name flex) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz 10 | URL_HASH MD5=2882e3179748cc9f9c23ec593d6adc8d 11 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 12 | TMP_DIR ${BUILD_INFO_DIR} 13 | STAMP_DIR ${BUILD_INFO_DIR} 14 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 15 | SOURCE_DIR ${source_dir} 16 | CONFIGURE_COMMAND 17 | ${common_configure_envs} 18 | ./configure ${common_configure_args} 19 | --enable-static --disable-shared 20 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 21 | BUILD_IN_SOURCE 1 22 | INSTALL_COMMAND make -s install 23 | LOG_CONFIGURE TRUE 24 | LOG_BUILD TRUE 25 | LOG_INSTALL TRUE 26 | ) 27 | 28 | ExternalProject_Add_Step(${name} clean 29 | EXCLUDE_FROM_MAIN TRUE 30 | ALWAYS TRUE 31 | DEPENDEES configure 32 | COMMAND make clean -j 33 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 34 | WORKING_DIRECTORY ${source_dir} 35 | ) 36 | 37 | ExternalProject_Add_StepTargets(${name} clean) 38 | -------------------------------------------------------------------------------- /project/externals/fmt.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name fmt) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/fmtlib/fmt/archive/refs/tags/9.1.0.tar.gz 10 | URL_HASH MD5=21fac48cae8f3b4a5783ae06b443973a 11 | DOWNLOAD_NAME fmt-9.1.0.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-9.1.0.patch 18 | CONFIGURE_COMMAND "" 19 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 20 | BUILD_IN_SOURCE 1 21 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 22 | LOG_CONFIGURE TRUE 23 | LOG_BUILD TRUE 24 | LOG_INSTALL TRUE 25 | ) 26 | 27 | ExternalProject_Add_Step(${name} mannual-configure 28 | DEPENDEES download update patch 29 | DEPENDERS build 30 | COMMAND ${CMAKE_COMMAND} 31 | ${common_cmake_args} 32 | -DCMAKE_BUILD_TYPE=Release 33 | -DBUILD_TESTS=OFF 34 | -DFMT_TEST=OFF 35 | -DFMT_FUZZ=OFF 36 | -DFMT_INSTALL=ON 37 | . 38 | WORKING_DIRECTORY 39 | ) 40 | 41 | ExternalProject_Add_Step(${name} clean 42 | EXCLUDE_FROM_MAIN TRUE 43 | ALWAYS TRUE 44 | DEPENDEES configure 45 | COMMAND make clean -j 46 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 47 | WORKING_DIRECTORY /wangle 48 | ) 49 | 50 | ExternalProject_Add_StepTargets(${name} clean) 51 | -------------------------------------------------------------------------------- /project/externals/folly.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name folly) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/facebook/folly/archive/refs/tags/v2022.12.26.00.tar.gz 10 | URL_HASH MD5=faad7452421564f7cc8cd1a705bdbaa7 11 | DOWNLOAD_NAME folly-2022-12-26.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-2022-12-26.patch 18 | CMAKE_ARGS 19 | ${common_cmake_args} 20 | -DCMAKE_BUILD_TYPE=Release 21 | -DBoost_NO_BOOST_CMAKE=ON 22 | "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -fPIC -D__STDC_FORMAT_MACROS=1 -DFOLLY_HAVE_CLOCK_GETTIME -D__USE_POSIX199309 ${extra_cpp_flags} ${ISA_FLAGS}" 23 | -DPACKAGE_VERSION=2022.12.26 24 | -DFOLLY_CXX_FLAGS=-Wno-error 25 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 26 | BUILD_IN_SOURCE 1 27 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install/strip 28 | LOG_CONFIGURE TRUE 29 | LOG_BUILD TRUE 30 | LOG_INSTALL TRUE 31 | ) 32 | 33 | ExternalProject_Add_Step(${name} clean 34 | EXCLUDE_FROM_MAIN TRUE 35 | ALWAYS TRUE 36 | DEPENDEES configure 37 | COMMAND make clean -j 38 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 39 | WORKING_DIRECTORY ${source_dir} 40 | ) 41 | 42 | ExternalProject_Add_StepTargets(${name} clean) 43 | -------------------------------------------------------------------------------- /project/externals/gettext.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name gettext) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL http://ftp.gnu.org/gnu/gettext/gettext-0.21.tar.gz 10 | URL_HASH MD5=28b1cd4c94a74428723ed966c38cf479 11 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 12 | TMP_DIR ${BUILD_INFO_DIR} 13 | STAMP_DIR ${BUILD_INFO_DIR} 14 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 15 | SOURCE_DIR ${source_dir} 16 | CONFIGURE_COMMAND 17 | ${common_configure_envs} 18 | ./configure ${common_configure_args} 19 | --enable-shared --disable-static 20 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 21 | BUILD_IN_SOURCE 1 22 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 23 | LOG_CONFIGURE TRUE 24 | LOG_BUILD TRUE 25 | LOG_INSTALL TRUE 26 | ) 27 | 28 | ExternalProject_Add_Step(${name} clean 29 | EXCLUDE_FROM_MAIN TRUE 30 | ALWAYS TRUE 31 | DEPENDEES configure 32 | COMMAND make clean -j 33 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 34 | WORKING_DIRECTORY ${source_dir} 35 | ) 36 | 37 | ExternalProject_Add_StepTargets(${name} clean) 38 | -------------------------------------------------------------------------------- /project/externals/gflags.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name gflags) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/gflags/gflags/archive/v2.2.2.tar.gz 10 | URL_HASH MD5=1a865b93bacfa963201af3f75b7bd64c 11 | DOWNLOAD_NAME gflags-2.2.2.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DCMAKE_BUILD_TYPE=Release 20 | BUILD_IN_SOURCE 1 21 | ) 22 | 23 | ExternalProject_Add_Step(${name} clean 24 | EXCLUDE_FROM_MAIN TRUE 25 | ALWAYS TRUE 26 | DEPENDEES configure 27 | COMMAND make clean -j 28 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 29 | WORKING_DIRECTORY ${source_dir} 30 | ) 31 | 32 | ExternalProject_Add_StepTargets(${name} clean) 33 | -------------------------------------------------------------------------------- /project/externals/glog.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name glog) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/google/glog/archive/refs/tags/v0.6.0.tar.gz 10 | URL_HASH MD5=c98a6068bc9b8ad9cebaca625ca73aa2 11 | DOWNLOAD_NAME glog-0.6.0.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DCMAKE_BUILD_TYPE=Release 20 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 21 | BUILD_IN_SOURCE 1 22 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 23 | LOG_CONFIGURE TRUE 24 | LOG_BUILD TRUE 25 | LOG_INSTALL TRUE 26 | ) 27 | 28 | ExternalProject_Add_Step(${name} clean 29 | EXCLUDE_FROM_MAIN TRUE 30 | ALWAYS TRUE 31 | DEPENDEES configure 32 | COMMAND make clean -j 33 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 34 | WORKING_DIRECTORY ${source_dir} 35 | ) 36 | 37 | ExternalProject_Add_StepTargets(${name} clean) 38 | -------------------------------------------------------------------------------- /project/externals/googlebenchmark.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name googlebenchmark) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/google/benchmark/archive/refs/tags/v1.7.1.tar.gz 10 | URL_HASH MD5=0459a6c530df9851bee6504c3e37c2e7 11 | DOWNLOAD_NAME googlebenchmark-1.7.1.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | UPDATE_COMMAND "" 18 | CMAKE_ARGS 19 | ${common_cmake_args} 20 | -DBENCHMARK_ENABLE_GTEST_TESTS=OFF 21 | -DCMAKE_BUILD_TYPE=Release 22 | "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -Wno-error=unused-parameter" 23 | BUILD_IN_SOURCE 1 24 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 25 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 26 | LOG_CONFIGURE TRUE 27 | LOG_BUILD TRUE 28 | LOG_INSTALL TRUE 29 | ) 30 | 31 | ExternalProject_Add_Step(${name} clean 32 | EXCLUDE_FROM_MAIN TRUE 33 | ALWAYS TRUE 34 | DEPENDEES configure 35 | COMMAND make clean -j 36 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 37 | WORKING_DIRECTORY ${source_dir} 38 | ) 39 | 40 | ExternalProject_Add_StepTargets(${name} clean) 41 | -------------------------------------------------------------------------------- /project/externals/googletest.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name googletest) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/google/googletest/archive/refs/tags/release-1.12.1.tar.gz 10 | URL_HASH MD5=e82199374acdfda3f425331028eb4e2a 11 | DOWNLOAD_NAME googletest-1.12.1.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | BUILD_IN_SOURCE 1 18 | CMAKE_ARGS 19 | ${common_cmake_args} 20 | -DCMAKE_BUILD_TYPE=Release 21 | -DCMAKE_CXX_FLAGS=-std=c++17 22 | LOG_CONFIGURE TRUE 23 | LOG_BUILD TRUE 24 | LOG_INSTALL TRUE 25 | ) 26 | 27 | ExternalProject_Add_Step(${name} clean 28 | EXCLUDE_FROM_MAIN TRUE 29 | ALWAYS TRUE 30 | DEPENDEES configure 31 | COMMAND make clean -j 32 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 33 | WORKING_DIRECTORY ${source_dir} 34 | ) 35 | 36 | ExternalProject_Add_StepTargets(${name} clean) 37 | -------------------------------------------------------------------------------- /project/externals/gperf.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name gperf) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL http://ftpmirror.gnu.org/gperf/gperf-3.1.tar.gz 10 | URL_HASH MD5=9e251c0a618ad0824b51117d5d9db87e 11 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 12 | TMP_DIR ${BUILD_INFO_DIR} 13 | STAMP_DIR ${BUILD_INFO_DIR} 14 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 15 | SOURCE_DIR ${source_dir} 16 | CONFIGURE_COMMAND 17 | ${common_configure_envs} 18 | "LIBS=-static-libstdc++ -static-libgcc" 19 | ./configure ${common_configure_args} 20 | --disable-shared --enable-static 21 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 22 | BUILD_IN_SOURCE 1 23 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 24 | LOG_CONFIGURE TRUE 25 | LOG_BUILD TRUE 26 | LOG_INSTALL TRUE 27 | ) 28 | 29 | ExternalProject_Add_Step(${name} clean 30 | EXCLUDE_FROM_MAIN TRUE 31 | ALWAYS TRUE 32 | DEPENDEES configure 33 | COMMAND make clean -j 34 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 35 | WORKING_DIRECTORY ${source_dir} 36 | ) 37 | 38 | ExternalProject_Add_StepTargets(${name} clean) 39 | -------------------------------------------------------------------------------- /project/externals/grpc.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name grpc) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/grpc/grpc/archive/refs/tags/v1.60.0.tar.gz 10 | URL_HASH MD5=64832f5ba092d160132a8b8be28b0487 11 | DOWNLOAD_NAME grpc-1.60.0.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DCMAKE_BUILD_TYPE=Release 20 | -DgRPC_ZLIB_PROVIDER=package 21 | -DgRPC_CARES_PROVIDER=package 22 | -DgRPC_RE2_PROVIDER=package 23 | -DgRPC_SSL_PROVIDER=package 24 | -DgRPC_PROTOBUF_PROVIDER=package 25 | -DgRPC_ABSL_PROVIDER=package 26 | BUILD_COMMAND env LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}:${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/lib64 make -s -j${BUILDING_JOBS_NUM} 27 | BUILD_IN_SOURCE 1 28 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 29 | LOG_CONFIGURE TRUE 30 | LOG_BUILD TRUE 31 | LOG_INSTALL TRUE 32 | ) 33 | 34 | ExternalProject_Add_Step(${name} clean 35 | EXCLUDE_FROM_MAIN TRUE 36 | ALWAYS TRUE 37 | DEPENDEES configure 38 | COMMAND make clean -j 39 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 40 | WORKING_DIRECTORY ${source_dir} 41 | ) 42 | 43 | ExternalProject_Add_StepTargets(${name} clean) 44 | -------------------------------------------------------------------------------- /project/externals/hnswlib.cmake: -------------------------------------------------------------------------------- 1 | set(name hnswlib) 2 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 3 | ExternalProject_Add( 4 | ${name} 5 | URL https://github.com/nmslib/hnswlib/archive/refs/tags/v0.8.0.zip 6 | URL_HASH MD5=7d162011152e7cb68dfee85f7347abda 7 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 8 | TMP_DIR ${BUILD_INFO_DIR} 9 | STAMP_DIR ${BUILD_INFO_DIR} 10 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 11 | SOURCE_DIR ${source_dir} 12 | INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory ${source_dir}/hnswlib ${CMAKE_INSTALL_PREFIX}/include/hnswlib 13 | LOG_CONFIGURE TRUE 14 | LOG_BUILD TRUE 15 | LOG_INSTALL TRUE 16 | ) 17 | 18 | ExternalProject_Add_Step(${name} clean 19 | EXCLUDE_FROM_MAIN TRUE 20 | ALWAYS TRUE 21 | DEPENDEES configure 22 | COMMAND make clean -j 23 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 24 | WORKING_DIRECTORY ${source_dir} 25 | ) 26 | 27 | ExternalProject_Add_StepTargets(${name} clean) 28 | -------------------------------------------------------------------------------- /project/externals/inja.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2025 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under MIT License. 4 | 5 | set(name inja) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/pantor/inja/archive/34514c2658f809404b9a165591f242ee10250519.zip 10 | URL_HASH MD5=f537dae8df3993c89f2d677953d2b08a 11 | DOWNLOAD_NAME ${name}-master-2025-03-19.zip 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DINJA_USE_EMBEDDED_JSON=OFF 20 | -DBUILD_TESTING=OFF 21 | -DBUILD_BENCHMARK=OFF 22 | -DCMAKE_BUILD_TYPE=Release 23 | BUILD_IN_SOURCE 1 24 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 25 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 26 | LOG_CONFIGURE TRUE 27 | LOG_BUILD TRUE 28 | LOG_INSTALL TRUE 29 | ) 30 | 31 | ExternalProject_Add_Step(${name} clean 32 | EXCLUDE_FROM_MAIN TRUE 33 | ALWAYS TRUE 34 | DEPENDEES configure 35 | COMMAND make clean -j 36 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 37 | WORKING_DIRECTORY ${source_dir} 38 | ) 39 | 40 | ExternalProject_Add_StepTargets(${name} clean) 41 | -------------------------------------------------------------------------------- /project/externals/jemalloc.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name jemalloc) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | 8 | if ("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "aarch64") 9 | # Set page size to 64KB 10 | set(page_size_opts "--with-lg-page=16") 11 | endif() 12 | 13 | ExternalProject_Add( 14 | ${name} 15 | URL https://github.com/jemalloc/jemalloc/archive/refs/tags/5.3.0.tar.gz 16 | URL_HASH MD5=594dd8e0a1e8c1ef8a1b210a1a5aff5b 17 | DOWNLOAD_NAME jemalloc-5.3.0.tar.gz 18 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 19 | TMP_DIR ${BUILD_INFO_DIR} 20 | STAMP_DIR ${BUILD_INFO_DIR} 21 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 22 | SOURCE_DIR ${source_dir} 23 | CONFIGURE_COMMAND 24 | ${common_configure_envs} 25 | ./autogen.sh ${common_configure_args} 26 | --enable-stats --enable-prof 27 | --with-version=5.3.0-0-gdeadbeaf # jemalloc relies on this option to set various version related macros 28 | ${page_size_opts} 29 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 30 | BUILD_IN_SOURCE 1 31 | INSTALL_COMMAND make -s install_bin install_include install_lib_shared -j${BUILDING_JOBS_NUM} 32 | LOG_CONFIGURE TRUE 33 | LOG_BUILD TRUE 34 | LOG_INSTALL TRUE 35 | ) 36 | 37 | ExternalProject_Add_Step(${name} clean 38 | EXCLUDE_FROM_MAIN TRUE 39 | ALWAYS TRUE 40 | DEPENDEES configure 41 | COMMAND make clean -j 42 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 43 | WORKING_DIRECTORY ${source_dir} 44 | ) 45 | 46 | ExternalProject_Add_StepTargets(${name} clean) 47 | -------------------------------------------------------------------------------- /project/externals/jwt-cpp.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2025 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under MIT License. 4 | 5 | set(name jwt-cpp) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/Thalhammer/jwt-cpp/releases/download/v0.7.1/${name}-v0.7.1.zip 10 | URL_HASH MD5=b14a16c45c5000b69be9d888d5d03cb2 11 | DOWNLOAD_NAME ${name}-v0.7.1.zip 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DJWT_BUILD_EXAMPLES=OFF 20 | -DJWT_DISABLE_PICOJSON=ON 21 | -DJWT_SSL_LIBRARY=OpenSSL 22 | -DCMAKE_BUILD_TYPE=Release 23 | BUILD_IN_SOURCE 1 24 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 25 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 26 | LOG_CONFIGURE TRUE 27 | LOG_BUILD TRUE 28 | LOG_INSTALL TRUE 29 | ) 30 | 31 | ExternalProject_Add_Step(${name} clean 32 | EXCLUDE_FROM_MAIN TRUE 33 | ALWAYS TRUE 34 | DEPENDEES configure 35 | COMMAND make clean -j 36 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 37 | WORKING_DIRECTORY ${source_dir} 38 | ) 39 | 40 | ExternalProject_Add_StepTargets(${name} clean) 41 | -------------------------------------------------------------------------------- /project/externals/ldap.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name ldap) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.6.3.tgz 10 | URL_HASH MD5=6b7229396b335dd5ab2d24841d7f4b53 11 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 12 | TMP_DIR ${BUILD_INFO_DIR} 13 | STAMP_DIR ${BUILD_INFO_DIR} 14 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 15 | SOURCE_DIR ${source_dir} 16 | CONFIGURE_COMMAND 17 | ${common_configure_envs} 18 | ./configure 19 | ${common_configure_args} 20 | --enable-syslog 21 | --enable-modules=no 22 | --enable-shared=yes 23 | --enable-static=no 24 | --with-tls 25 | BUILD_IN_SOURCE 1 26 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 27 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 28 | LOG_CONFIGURE TRUE 29 | LOG_BUILD TRUE 30 | LOG_INSTALL TRUE 31 | ) 32 | 33 | # update before configure 34 | # ExternalProject_Add_Step(${name} updateldconfig 35 | # DEPENDEES download 36 | # DEPENDERS configure 37 | # COMMAND 38 | # echo "${BERKELEYDB_LIB_DIR}" 39 | # >> /etc/ld.so.conf 40 | # COMMAND ldconfig -v 41 | # WORKING_DIRECTORY ${source_dir} 42 | # ) 43 | ExternalProject_Add_Step(${name} clean 44 | EXCLUDE_FROM_MAIN TRUE 45 | ALWAYS TRUE 46 | DEPENDEES configure 47 | COMMAND make clean -j 48 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 49 | WORKING_DIRECTORY ${source_dir} 50 | ) 51 | 52 | ExternalProject_Add_StepTargets(${name} clean) 53 | -------------------------------------------------------------------------------- /project/externals/libcurl.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name libcurl) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/curl/curl/archive/refs/tags/curl-7_87_0.tar.gz 10 | URL_HASH MD5=ade16c73e4a4d42bc526e852757660f4 11 | DOWNLOAD_NAME curl-7.87.0.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DCMAKE_BUILD_TYPE=Release 20 | -DOPENSSL_ROOT_DIR=${CMAKE_INSTALL_PREFIX} 21 | -DBUILD_CURL_EXE=OFF 22 | -DUSE_LIBIDN2=OFF 23 | -DCURL_DISABLE_LDAP=ON 24 | -DCURL_DISABLE_LDAPS=ON 25 | BUILD_IN_SOURCE 1 26 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 27 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 28 | LOG_CONFIGURE TRUE 29 | LOG_BUILD TRUE 30 | LOG_INSTALL TRUE 31 | ) 32 | 33 | ExternalProject_Add_Step(${name} clean 34 | EXCLUDE_FROM_MAIN TRUE 35 | ALWAYS TRUE 36 | DEPENDEES configure 37 | COMMAND make clean -j 38 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 39 | WORKING_DIRECTORY ${source_dir} 40 | ) 41 | 42 | ExternalProject_Add_StepTargets(${name} clean) 43 | -------------------------------------------------------------------------------- /project/externals/libdwarf.cmake: -------------------------------------------------------------------------------- 1 | set(name libdwarf) 2 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 3 | ExternalProject_Add( 4 | ${name} 5 | URL https://www.prevanders.net/libdwarf-0.9.0.tar.xz 6 | URL_HASH MD5=4b36d4b3031f8937b7c408d2eed221ed 7 | DOWNLOAD_NAME libdwarf-0.9.0.tar.xz 8 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 9 | TMP_DIR ${BUILD_INFO_DIR} 10 | STAMP_DIR ${BUILD_INFO_DIR} 11 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 12 | SOURCE_DIR ${source_dir} 13 | CONFIGURE_COMMAND 14 | ${common_configure_envs} 15 | ./configure ${common_configure_args} 16 | --enable-shared --disable-static 17 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 18 | BUILD_IN_SOURCE 1 19 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 20 | LOG_CONFIGURE TRUE 21 | LOG_BUILD TRUE 22 | LOG_INSTALL TRUE 23 | ) 24 | 25 | ExternalProject_Add_Step(${name} clean 26 | EXCLUDE_FROM_MAIN TRUE 27 | ALWAYS TRUE 28 | DEPENDEES configure 29 | COMMAND make clean -j 30 | WORKING_DIRECTORY ${source_dir} 31 | ) 32 | 33 | ExternalProject_Add_StepTargets(${name} clean) 34 | -------------------------------------------------------------------------------- /project/externals/libev.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name libev) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | #ExternalProject_Add_Git( 8 | ExternalProject_Add( 9 | ${name} 10 | URL https://github.com/kindy/libev/archive/refs/heads/master.zip 11 | URL_HASH MD5=02c06be6ec31c9fc5e148fb6c49a7af7 # 4.33 12 | DOWNLOAD_NAME libev-4.33.zip 13 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 14 | TMP_DIR ${BUILD_INFO_DIR} 15 | STAMP_DIR ${BUILD_INFO_DIR} 16 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 17 | SOURCE_DIR ${source_dir} 18 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-4.33.patch 19 | CONFIGURE_COMMAND 20 | "env" 21 | "CC=${CMAKE_C_COMPILER}" 22 | "CFLAGS=${CMAKE_C_FLAGS} -fPIC -O2" 23 | "CPPFLAGS=-isystem ${CMAKE_INSTALL_PREFIX}/include" 24 | "PATH=${BUILDING_PATH}" 25 | ./src/configure --prefix=${CMAKE_INSTALL_PREFIX} 26 | --disable-static 27 | --enable-shared 28 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 29 | BUILD_IN_SOURCE 1 30 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} PREFIX=${CMAKE_INSTALL_PREFIX} 31 | LOG_CONFIGURE TRUE 32 | LOG_BUILD TRUE 33 | LOG_INSTALL TRUE 34 | ) 35 | 36 | # Because we modify the file Makefile.am, we need to rerun autoconfig before 37 | # we can run configure 38 | ExternalProject_Add_Step(${name} pre-configure 39 | DEPENDEES patch 40 | DEPENDERS configure 41 | ALWAYS FALSE 42 | COMMAND 43 | autoreconf -ivf 44 | WORKING_DIRECTORY ${source_dir}/src 45 | ) 46 | 47 | ExternalProject_Add_Step(${name} clean 48 | EXCLUDE_FROM_MAIN TRUE 49 | ALWAYS TRUE 50 | DEPENDEES configure 51 | COMMAND make clean -j 52 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 53 | WORKING_DIRECTORY ${source_dir} 54 | ) 55 | 56 | ExternalProject_Add_StepTargets(${name} clean) 57 | -------------------------------------------------------------------------------- /project/externals/libevent.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name libevent) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz 10 | URL_HASH MD5=b5333f021f880fe76490d8a799cd79f4 11 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 12 | TMP_DIR ${BUILD_INFO_DIR} 13 | STAMP_DIR ${BUILD_INFO_DIR} 14 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 15 | SOURCE_DIR ${source_dir} 16 | CMAKE_ARGS 17 | ${common_cmake_args} 18 | -DCMAKE_BUILD_TYPE=Release 19 | -DEVENT__LIBRARY_TYPE=SHARED 20 | -DEVENT__DISABLE_OPENSSL=ON 21 | -DEVENT__DISABLE_TESTS=ON 22 | -DEVENT__DISABLE_BENCHMARK=ON 23 | -DEVENT__DISABLE_SAMPLES=ON 24 | -DEVENT__DISABLE_REGRESS=ON 25 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 26 | BUILD_IN_SOURCE 1 27 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 28 | LOG_CONFIGURE TRUE 29 | LOG_BUILD TRUE 30 | LOG_INSTALL TRUE 31 | ) 32 | 33 | ExternalProject_Add_Step(${name} clean 34 | EXCLUDE_FROM_MAIN TRUE 35 | ALWAYS TRUE 36 | DEPENDEES configure 37 | COMMAND make clean -j 38 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 39 | WORKING_DIRECTORY ${source_dir} 40 | ) 41 | 42 | ExternalProject_Add_StepTargets(${name} clean) 43 | -------------------------------------------------------------------------------- /project/externals/libtool.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name libtool) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://ftp.gnu.org/gnu/libtool/libtool-2.4.7.tar.xz 10 | URL_HASH MD5=2fc0b6ddcd66a89ed6e45db28fa44232 11 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 12 | TMP_DIR ${BUILD_INFO_DIR} 13 | STAMP_DIR ${BUILD_INFO_DIR} 14 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 15 | SOURCE_DIR ${source_dir} 16 | CONFIGURE_COMMAND 17 | ${common_configure_envs} 18 | "LIBS=${LIBS}" 19 | ./configure ${common_configure_args} 20 | --enable-ltdl-install 21 | --enable-shared=no 22 | --enable-static=yes 23 | BUILD_IN_SOURCE 1 24 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 25 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 26 | LOG_CONFIGURE TRUE 27 | LOG_BUILD TRUE 28 | LOG_INSTALL TRUE 29 | ) 30 | 31 | ExternalProject_Add_Step(${name} clean 32 | EXCLUDE_FROM_MAIN TRUE 33 | ALWAYS TRUE 34 | DEPENDEES configure 35 | COMMAND make clean -j 36 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 37 | WORKING_DIRECTORY ${source_dir} 38 | ) 39 | 40 | ExternalProject_Add_StepTargets(${name} clean) 41 | -------------------------------------------------------------------------------- /project/externals/libunwind.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name libunwind) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL http://download.savannah.nongnu.org/releases/libunwind/libunwind-1.6.2.tar.gz 10 | URL_HASH MD5=f625b6a98ac1976116c71708a73dc44a 11 | DOWNLOAD_NAME libunwind-1.6.2.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND 18 | ${common_configure_envs} 19 | ./configure ${common_configure_args} 20 | --disable-minidebuginfo 21 | --enable-shared --disable-static 22 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 23 | BUILD_IN_SOURCE 1 24 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 25 | LOG_CONFIGURE TRUE 26 | LOG_BUILD TRUE 27 | LOG_INSTALL TRUE 28 | ) 29 | 30 | ExternalProject_Add_Step(${name} clean 31 | EXCLUDE_FROM_MAIN TRUE 32 | ALWAYS TRUE 33 | DEPENDEES configure 34 | COMMAND make clean -j 35 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 36 | WORKING_DIRECTORY ${source_dir} 37 | ) 38 | 39 | ExternalProject_Add_StepTargets(${name} clean) 40 | -------------------------------------------------------------------------------- /project/externals/libxml2.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name libxml2) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | 8 | ExternalProject_Add( 9 | ${name} 10 | URL https://github.com/GNOME/libxml2/archive/refs/tags/v2.13.4.tar.gz 11 | URL_HASH MD5=69d7c63c7fe5858ba7a462f303939c4a 12 | DOWNLOAD_NAME libxml2-v2.13.4.tar.gz 13 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 14 | TMP_DIR ${BUILD_INFO_DIR} 15 | STAMP_DIR ${BUILD_INFO_DIR} 16 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 17 | SOURCE_DIR ${source_dir} 18 | CMAKE_ARGS 19 | ${common_cmake_args} 20 | -DCMAKE_BUILD_TYPE=Release 21 | -DBUILD_SHARED_LIBS=ON 22 | -DLIBXML2_WITH_ICONV=OFF 23 | -DLIBXML2_WITH_LZMA=OFF 24 | -DLIBXML2_WITH_PYTHON=OFF 25 | -DLIBXML2_WITH_ZLIB=OFF 26 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 27 | BUILD_IN_SOURCE 1 28 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 29 | LOG_CONFIGURE TRUE 30 | LOG_BUILD TRUE 31 | LOG_INSTALL TRUE 32 | ) 33 | 34 | ExternalProject_Add_Step(${name} clean 35 | EXCLUDE_FROM_MAIN TRUE 36 | ALWAYS TRUE 37 | DEPENDEES configure 38 | COMMAND make clean -j 39 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 40 | WORKING_DIRECTORY ${source_dir} 41 | ) 42 | 43 | ExternalProject_Add_StepTargets(${name} clean) 44 | -------------------------------------------------------------------------------- /project/externals/limonp.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2025 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name limonp) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/yanyiwu/limonp/archive/refs/tags/v1.0.1.tar.gz 10 | URL_HASH MD5=33971c4d56440ac5be06fb00274350b6 11 | DOWNLOAD_NAME ${name}-1.0.1.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND "" 18 | BUILD_COMMAND "" 19 | INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_PREFIX}/include 20 | COMMAND ${CMAKE_COMMAND} -E copy_directory ${source_dir}/include ${CMAKE_INSTALL_PREFIX}/include 21 | BUILD_IN_SOURCE 0 22 | ) 23 | 24 | ExternalProject_Add_Step(${name} clean 25 | EXCLUDE_FROM_MAIN TRUE 26 | ALWAYS TRUE 27 | DEPENDEES configure 28 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 29 | WORKING_DIRECTORY ${source_dir} 30 | ) 31 | 32 | ExternalProject_Add_StepTargets(${name} clean) 33 | -------------------------------------------------------------------------------- /project/externals/llvm.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name llvm) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | set(LLVM_ENV_COMMAND 8 | "env" 9 | "LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/lib64:${BERKELEYDB_LIB_DIR}:$ENV{LD_LIBRARY_PATH}" 10 | ) 11 | 12 | ExternalProject_Add( 13 | ${name} 14 | URL https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.7/llvm-project-15.0.7.src.tar.xz 15 | URL_HASH MD5=bac436dbd5d37e38d3da75b03629053c 16 | DOWNLOAD_NAME llvm-project-15.0.7.src.tar.xz 17 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 18 | TMP_DIR ${BUILD_INFO_DIR} 19 | STAMP_DIR ${BUILD_INFO_DIR} 20 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 21 | CONFIGURE_COMMAND 22 | ${CMAKE_COMMAND} -S llvm -B build -G Ninja 23 | -DCMAKE_BUILD_TYPE=Release 24 | -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} 25 | -DLLVM_ENABLE_PROJECTS='clang' 26 | -DLLVM_ENABLE_RUNTIMES='libcxx\\$libcxxabi' 27 | -DLLVM_ENABLE_RTTI=ON 28 | -DLLVM_BUILD_LLVM_DYLIB=ON 29 | -DLLVM_LINK_LLVM_DYLIB=ON 30 | -DLLVM_INCLUDE_BENCHMARKS=OFF 31 | -DLLVM_INCLUDE_EXAMPLES=OFF 32 | -DLLVM_INCLUDE_TESTS=OFF 33 | -DLLVM_PARALLEL_COMPILE_JOBS=${BUILDING_JOBS_NUM} 34 | -DLLVM_PARALLEL_LINK_JOBS=${BUILDING_JOBS_NUM} 35 | 36 | BUILD_COMMAND ${LLVM_ENV_COMMAND} ninja -C build install 37 | BUILD_IN_SOURCE 1 38 | INSTALL_COMMAND "" 39 | LOG_CONFIGURE TRUE 40 | LOG_BUILD TRUE 41 | LOG_INSTALL TRUE 42 | ) 43 | 44 | ExternalProject_Add_Step(${name} clean 45 | EXCLUDE_FROM_MAIN TRUE 46 | ALWAYS TRUE 47 | DEPENDEES configure 48 | COMMAND ninja clean -j 49 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 50 | WORKING_DIRECTORY ${source_dir} 51 | ) 52 | 53 | ExternalProject_Add_StepTargets(${name} clean) 54 | -------------------------------------------------------------------------------- /project/externals/lz4.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name lz4) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/lz4/lz4/archive/v1.9.4.tar.gz 10 | URL_HASH MD5=e9286adb64040071c5e23498bf753261 11 | DOWNLOAD_NAME lz4-1.9.4.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND "" 18 | BUILD_COMMAND "" 19 | BUILD_IN_SOURCE 1 20 | INSTALL_COMMAND 21 | make install -s 22 | "MOREFLAGS=-fPIC ${ISA_FLAGS}" 23 | "LN_S=ln -sf" 24 | BUILD_STATIC=no 25 | -j${BUILDING_JOBS_NUM} 26 | PREFIX=${CMAKE_INSTALL_PREFIX} 27 | LOG_CONFIGURE TRUE 28 | LOG_BUILD TRUE 29 | LOG_INSTALL TRUE 30 | ) 31 | 32 | ExternalProject_Add_Step(${name} clean 33 | EXCLUDE_FROM_MAIN TRUE 34 | ALWAYS TRUE 35 | DEPENDEES build 36 | COMMAND make clean -j 37 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 38 | WORKING_DIRECTORY ${source_dir} 39 | ) 40 | 41 | ExternalProject_Add_StepTargets(${name} clean) 42 | -------------------------------------------------------------------------------- /project/externals/lzma.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name lzma) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://tukaani.org/xz/xz-5.4.0.tar.xz 10 | URL_HASH MD5=3518b2c6e00400f4df5dd8d2a70fc2a9 11 | DOWNLOAD_NAME lzma-5.4.0.tar.xz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND 18 | ${common_configure_envs} 19 | ./configure ${common_configure_args} 20 | --enable-shared --disable-static 21 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 22 | BUILD_IN_SOURCE 1 23 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} PREFIX=${CMAKE_INSTALL_PREFIX} 24 | LOG_CONFIGURE TRUE 25 | LOG_BUILD TRUE 26 | LOG_INSTALL TRUE 27 | ) 28 | 29 | ExternalProject_Add_Step(${name} clean 30 | EXCLUDE_FROM_MAIN TRUE 31 | ALWAYS TRUE 32 | DEPENDEES configure 33 | COMMAND make clean -j 34 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 35 | WORKING_DIRECTORY ${source_dir} 36 | ) 37 | 38 | ExternalProject_Add_StepTargets(${name} clean) 39 | -------------------------------------------------------------------------------- /project/externals/mstch.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name mstch) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/no1msd/mstch/archive/1.0.2.tar.gz 10 | URL_HASH MD5=306e7fead7480884f698ab47a6082e18 11 | DOWNLOAD_NAME mstch-1.0.2.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DBoost_NO_BOOST_CMAKE=ON 20 | -DCMAKE_BUILD_TYPE=Release 21 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 22 | BUILD_IN_SOURCE 1 23 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 24 | LOG_CONFIGURE TRUE 25 | LOG_BUILD TRUE 26 | LOG_INSTALL TRUE 27 | ) 28 | 29 | ExternalProject_Add_Step(${name} clean 30 | EXCLUDE_FROM_MAIN TRUE 31 | ALWAYS TRUE 32 | DEPENDEES configure 33 | COMMAND make clean -j 34 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 35 | WORKING_DIRECTORY ${source_dir} 36 | ) 37 | 38 | ExternalProject_Add_StepTargets(${name} clean) 39 | -------------------------------------------------------------------------------- /project/externals/nlohmann-json.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2025 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under MIT License. 4 | 5 | set(name nlohmann-json) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/nlohmann/json/archive/3a5703931ad70852b668a46cac34354d1b264442.zip 10 | URL_HASH MD5=8c83312dd3fbf657e144be77799cfeba 11 | DOWNLOAD_NAME ${name}-develop-2025-03-29.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DNLOHMANN_JSON_CONFIG_INSTALL_DIR=${CMAKE_INSTALL_PREFIX}/lib/cmake/nlohmann_json 20 | -DJSON_BuildTests=OFF 21 | -DJSON_Install=ON 22 | -DCMAKE_BUILD_TYPE=Release 23 | BUILD_IN_SOURCE 1 24 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 25 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 26 | LOG_CONFIGURE TRUE 27 | LOG_BUILD TRUE 28 | LOG_INSTALL TRUE 29 | ) 30 | 31 | ExternalProject_Add_Step(${name} clean 32 | EXCLUDE_FROM_MAIN TRUE 33 | ALWAYS TRUE 34 | DEPENDEES configure 35 | COMMAND make clean -j 36 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 37 | WORKING_DIRECTORY ${source_dir} 38 | ) 39 | 40 | ExternalProject_Add_StepTargets(${name} clean) 41 | -------------------------------------------------------------------------------- /project/externals/openblas.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name openblas) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/OpenMathLib/OpenBLAS/archive/refs/tags/v0.3.27.tar.gz 10 | URL_HASH MD5=ef71c66ffeb1ab0f306a37de07d2667f 11 | DOWNLOAD_NAME openblas-0.3.27.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | PATCH_COMMAND "" 18 | CONFIGURE_COMMAND "" 19 | BUILD_COMMAND make NO_LAPACKE=1 NO_AFFINITY=1 NO_WARMUP=1 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1 TARGET=GENERIC NUM_THREADS=8 20 | BUILD_IN_SOURCE 1 21 | INSTALL_COMMAND make PREFIX=${CMAKE_INSTALL_PREFIX} install 22 | LOG_CONFIGURE TRUE 23 | LOG_BUILD TRUE 24 | LOG_INSTALL TRUE 25 | ) 26 | 27 | ExternalProject_Add_Step(${name} clean 28 | EXCLUDE_FROM_MAIN TRUE 29 | ALWAYS TRUE 30 | DEPENDEES configure 31 | COMMAND make clean -j 32 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 33 | WORKING_DIRECTORY ${source_dir} 34 | ) 35 | 36 | ExternalProject_Add_StepTargets(${name} clean) 37 | 38 | -------------------------------------------------------------------------------- /project/externals/openssl.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name openssl) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | 8 | if (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "mips64") 9 | set(openssl_config_command 10 | "./Configure" 11 | "linux64-mips64" 12 | ) 13 | else() 14 | set(openssl_config_command "./config") 15 | endif() 16 | 17 | ExternalProject_Add( 18 | ${name} 19 | URL https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1s.tar.gz 20 | URL_HASH MD5=7e79a7560dee77c0758baa33c61af4b4 21 | DOWNLOAD_NAME openssl-1.1.1s.tar.gz 22 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 23 | TMP_DIR ${BUILD_INFO_DIR} 24 | STAMP_DIR ${BUILD_INFO_DIR} 25 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 26 | SOURCE_DIR ${source_dir} 27 | CONFIGURE_COMMAND 28 | ${common_configure_envs} 29 | ${openssl_config_command} threads --prefix=${CMAKE_INSTALL_PREFIX} 30 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 31 | BUILD_IN_SOURCE 1 32 | INSTALL_COMMAND make -s install_sw -j${BUILDING_JOBS_NUM} 33 | LOG_CONFIGURE TRUE 34 | LOG_BUILD TRUE 35 | LOG_INSTALL TRUE 36 | ) 37 | 38 | ExternalProject_Add_Step(${name} clean 39 | EXCLUDE_FROM_MAIN TRUE 40 | ALWAYS TRUE 41 | DEPENDEES configure 42 | COMMAND make clean -j 43 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 44 | WORKING_DIRECTORY ${source_dir} 45 | ) 46 | 47 | ExternalProject_Add_StepTargets(${name} clean) 48 | -------------------------------------------------------------------------------- /project/externals/pkg.m4: -------------------------------------------------------------------------------- 1 | # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- 2 | # serial 11 (pkg-config-0.29.1) 3 | 4 | dnl Copyright © 2004 Scott James Remnant . 5 | dnl Copyright © 2012-2015 Dan Nicholson 6 | dnl 7 | dnl This program is free software; you can redistribute it and/or modify 8 | dnl it under the terms of the GNU General Public License as published by 9 | dnl the Free Software Foundation; either version 2 of the License, or 10 | dnl (at your option) any later version. 11 | dnl 12 | dnl This program is distributed in the hope that it will be useful, but 13 | dnl WITHOUT ANY WARRANTY; without even the implied warranty of 14 | dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | dnl General Public License for more details. 16 | dnl 17 | dnl You should have received a copy of the GNU General Public License 18 | dnl along with this program; if not, write to the Free Software 19 | dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 20 | dnl 02111-1307, USA. 21 | dnl 22 | dnl As a special exception to the GNU General Public License, if you 23 | dnl distribute this file as part of a program that contains a 24 | dnl configuration script generated by Autoconf, you may include it under 25 | dnl the same distribution terms that you use for the rest of that 26 | dnl program. 27 | 28 | dnl PKG_PREREQ(MIN-VERSION) 29 | dnl ----------------------- 30 | dnl Since: 0.29 31 | dnl 32 | dnl Verify that the version of the pkg-config macros are at least 33 | dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's 34 | dnl installed version of pkg-config, this checks the developer's version 35 | dnl of pkg.m4 when generating configure. 36 | dnl 37 | dnl To ensure that this macro is defined, also add: 38 | dnl m4_ifndef([PKG_PREREQ], 39 | dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) 40 | dnl 41 | dnl See the "Since" comment for each macro you use to see what version 42 | dnl of the macros you require. 43 | m4_defun([PKG_PREREQ], 44 | [m4_define([PKG_MACROS_VERSION], [0.29.1]) 45 | m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, 46 | [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) 47 | ])dnl PKG_PREREQ 48 | 49 | dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) 50 | dnl ---------------------------------- 51 | dnl Since: 0.16 52 | dnl 53 | dnl Search for the pkg-config tool and set the PKG_CONFIG variable to 54 | dnl first found in the path. Checks that the version of pkg-config found 55 | dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is 56 | dnl used since that's the first version where most current features of 57 | dnl pkg-config existed. 58 | AC_DEFUN([PKG_PROG_PKG_CONFIG], 59 | [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) 60 | m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) 61 | m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) 62 | AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) 63 | AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) 64 | AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) 65 | 66 | if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then 67 | AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) 68 | fi 69 | if test -n "$PKG_CONFIG"; then 70 | _pkg_min_version=m4_default([$1], [0.9.0]) 71 | AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) 72 | if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then 73 | AC_MSG_RESULT([yes]) 74 | else 75 | AC_MSG_RESULT([no]) 76 | PKG_CONFIG="" 77 | fi 78 | fi[]dnl 79 | ])dnl PKG_PROG_PKG_CONFIG 80 | 81 | dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) 82 | dnl ------------------------------------------------------------------- 83 | dnl Since: 0.18 84 | dnl 85 | dnl Check to see whether a particular set of modules exists. Similar to 86 | dnl PKG_CHECK_MODULES(), but does not set variables or print errors. 87 | dnl 88 | dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) 89 | dnl only at the first occurence in configure.ac, so if the first place 90 | dnl it's called might be skipped (such as if it is within an "if", you 91 | dnl have to call PKG_CHECK_EXISTS manually 92 | AC_DEFUN([PKG_CHECK_EXISTS], 93 | [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl 94 | if test -n "$PKG_CONFIG" && \ 95 | AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then 96 | m4_default([$2], [:]) 97 | m4_ifvaln([$3], [else 98 | $3])dnl 99 | fi]) 100 | 101 | dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) 102 | dnl --------------------------------------------- 103 | dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting 104 | dnl pkg_failed based on the result. 105 | m4_define([_PKG_CONFIG], 106 | [if test -n "$$1"; then 107 | pkg_cv_[]$1="$$1" 108 | elif test -n "$PKG_CONFIG"; then 109 | PKG_CHECK_EXISTS([$3], 110 | [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` 111 | test "x$?" != "x0" && pkg_failed=yes ], 112 | [pkg_failed=yes]) 113 | else 114 | pkg_failed=untried 115 | fi[]dnl 116 | ])dnl _PKG_CONFIG 117 | 118 | dnl _PKG_SHORT_ERRORS_SUPPORTED 119 | dnl --------------------------- 120 | dnl Internal check to see if pkg-config supports short errors. 121 | AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], 122 | [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) 123 | if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then 124 | _pkg_short_errors_supported=yes 125 | else 126 | _pkg_short_errors_supported=no 127 | fi[]dnl 128 | ])dnl _PKG_SHORT_ERRORS_SUPPORTED 129 | 130 | 131 | dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], 132 | dnl [ACTION-IF-NOT-FOUND]) 133 | dnl -------------------------------------------------------------- 134 | dnl Since: 0.4.0 135 | dnl 136 | dnl Note that if there is a possibility the first call to 137 | dnl PKG_CHECK_MODULES might not happen, you should be sure to include an 138 | dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac 139 | AC_DEFUN([PKG_CHECK_MODULES], 140 | [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl 141 | AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl 142 | AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl 143 | 144 | pkg_failed=no 145 | AC_MSG_CHECKING([for $1]) 146 | 147 | _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) 148 | _PKG_CONFIG([$1][_LIBS], [libs], [$2]) 149 | 150 | m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS 151 | and $1[]_LIBS to avoid the need to call pkg-config. 152 | See the pkg-config man page for more details.]) 153 | 154 | if test $pkg_failed = yes; then 155 | AC_MSG_RESULT([no]) 156 | _PKG_SHORT_ERRORS_SUPPORTED 157 | if test $_pkg_short_errors_supported = yes; then 158 | $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` 159 | else 160 | $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` 161 | fi 162 | # Put the nasty error message in config.log where it belongs 163 | echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD 164 | 165 | m4_default([$4], [AC_MSG_ERROR( 166 | [Package requirements ($2) were not met: 167 | 168 | $$1_PKG_ERRORS 169 | 170 | Consider adjusting the PKG_CONFIG_PATH environment variable if you 171 | installed software in a non-standard prefix. 172 | 173 | _PKG_TEXT])[]dnl 174 | ]) 175 | elif test $pkg_failed = untried; then 176 | AC_MSG_RESULT([no]) 177 | m4_default([$4], [AC_MSG_FAILURE( 178 | [The pkg-config script could not be found or is too old. Make sure it 179 | is in your PATH or set the PKG_CONFIG environment variable to the full 180 | path to pkg-config. 181 | 182 | _PKG_TEXT 183 | 184 | To get pkg-config, see .])[]dnl 185 | ]) 186 | else 187 | $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS 188 | $1[]_LIBS=$pkg_cv_[]$1[]_LIBS 189 | AC_MSG_RESULT([yes]) 190 | $3 191 | fi[]dnl 192 | ])dnl PKG_CHECK_MODULES 193 | 194 | 195 | dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], 196 | dnl [ACTION-IF-NOT-FOUND]) 197 | dnl --------------------------------------------------------------------- 198 | dnl Since: 0.29 199 | dnl 200 | dnl Checks for existence of MODULES and gathers its build flags with 201 | dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags 202 | dnl and VARIABLE-PREFIX_LIBS from --libs. 203 | dnl 204 | dnl Note that if there is a possibility the first call to 205 | dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to 206 | dnl include an explicit call to PKG_PROG_PKG_CONFIG in your 207 | dnl configure.ac. 208 | AC_DEFUN([PKG_CHECK_MODULES_STATIC], 209 | [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl 210 | _save_PKG_CONFIG=$PKG_CONFIG 211 | PKG_CONFIG="$PKG_CONFIG --static" 212 | PKG_CHECK_MODULES($@) 213 | PKG_CONFIG=$_save_PKG_CONFIG[]dnl 214 | ])dnl PKG_CHECK_MODULES_STATIC 215 | 216 | 217 | dnl PKG_INSTALLDIR([DIRECTORY]) 218 | dnl ------------------------- 219 | dnl Since: 0.27 220 | dnl 221 | dnl Substitutes the variable pkgconfigdir as the location where a module 222 | dnl should install pkg-config .pc files. By default the directory is 223 | dnl $libdir/pkgconfig, but the default can be changed by passing 224 | dnl DIRECTORY. The user can override through the --with-pkgconfigdir 225 | dnl parameter. 226 | AC_DEFUN([PKG_INSTALLDIR], 227 | [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) 228 | m4_pushdef([pkg_description], 229 | [pkg-config installation directory @<:@]pkg_default[@:>@]) 230 | AC_ARG_WITH([pkgconfigdir], 231 | [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, 232 | [with_pkgconfigdir=]pkg_default) 233 | AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) 234 | m4_popdef([pkg_default]) 235 | m4_popdef([pkg_description]) 236 | ])dnl PKG_INSTALLDIR 237 | 238 | 239 | dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) 240 | dnl -------------------------------- 241 | dnl Since: 0.27 242 | dnl 243 | dnl Substitutes the variable noarch_pkgconfigdir as the location where a 244 | dnl module should install arch-independent pkg-config .pc files. By 245 | dnl default the directory is $datadir/pkgconfig, but the default can be 246 | dnl changed by passing DIRECTORY. The user can override through the 247 | dnl --with-noarch-pkgconfigdir parameter. 248 | AC_DEFUN([PKG_NOARCH_INSTALLDIR], 249 | [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) 250 | m4_pushdef([pkg_description], 251 | [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) 252 | AC_ARG_WITH([noarch-pkgconfigdir], 253 | [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, 254 | [with_noarch_pkgconfigdir=]pkg_default) 255 | AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) 256 | m4_popdef([pkg_default]) 257 | m4_popdef([pkg_description]) 258 | ])dnl PKG_NOARCH_INSTALLDIR 259 | 260 | 261 | dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, 262 | dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) 263 | dnl ------------------------------------------- 264 | dnl Since: 0.28 265 | dnl 266 | dnl Retrieves the value of the pkg-config variable for the given module. 267 | AC_DEFUN([PKG_CHECK_VAR], 268 | [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl 269 | AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl 270 | 271 | _PKG_CONFIG([$1], [variable="][$3]["], [$2]) 272 | AS_VAR_COPY([$1], [pkg_cv_][$1]) 273 | 274 | AS_VAR_IF([$1], [""], [$5], [$4])dnl 275 | ])dnl PKG_CHECK_VAR 276 | 277 | dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, 278 | dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], 279 | dnl [DESCRIPTION], [DEFAULT]) 280 | dnl ------------------------------------------ 281 | dnl 282 | dnl Prepare a "--with-" configure option using the lowercase 283 | dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and 284 | dnl PKG_CHECK_MODULES in a single macro. 285 | AC_DEFUN([PKG_WITH_MODULES], 286 | [ 287 | m4_pushdef([with_arg], m4_tolower([$1])) 288 | 289 | m4_pushdef([description], 290 | [m4_default([$5], [build with ]with_arg[ support])]) 291 | 292 | m4_pushdef([def_arg], [m4_default([$6], [auto])]) 293 | m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) 294 | m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) 295 | 296 | m4_case(def_arg, 297 | [yes],[m4_pushdef([with_without], [--without-]with_arg)], 298 | [m4_pushdef([with_without],[--with-]with_arg)]) 299 | 300 | AC_ARG_WITH(with_arg, 301 | AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, 302 | [AS_TR_SH([with_]with_arg)=def_arg]) 303 | 304 | AS_CASE([$AS_TR_SH([with_]with_arg)], 305 | [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], 306 | [auto],[PKG_CHECK_MODULES([$1],[$2], 307 | [m4_n([def_action_if_found]) $3], 308 | [m4_n([def_action_if_not_found]) $4])]) 309 | 310 | m4_popdef([with_arg]) 311 | m4_popdef([description]) 312 | m4_popdef([def_arg]) 313 | 314 | ])dnl PKG_WITH_MODULES 315 | 316 | dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, 317 | dnl [DESCRIPTION], [DEFAULT]) 318 | dnl ----------------------------------------------- 319 | dnl 320 | dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES 321 | dnl check._[VARIABLE-PREFIX] is exported as make variable. 322 | AC_DEFUN([PKG_HAVE_WITH_MODULES], 323 | [ 324 | PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) 325 | 326 | AM_CONDITIONAL([HAVE_][$1], 327 | [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) 328 | ])dnl PKG_HAVE_WITH_MODULES 329 | 330 | dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, 331 | dnl [DESCRIPTION], [DEFAULT]) 332 | dnl ------------------------------------------------------ 333 | dnl 334 | dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after 335 | dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make 336 | dnl and preprocessor variable. 337 | AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], 338 | [ 339 | PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) 340 | 341 | AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], 342 | [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) 343 | ])dnl PKG_HAVE_DEFINE_WITH_MODULES 344 | -------------------------------------------------------------------------------- /project/externals/pkgconf.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | ExternalProject_Add( 6 | pkgconf 7 | URL https://github.com/pkgconf/pkgconf/archive/refs/tags/pkgconf-1.9.3.tar.gz 8 | URL_HASH MD5=eb873bebfdf2d89f50e8f1a7608ebdab 9 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/pkgconf 10 | TMP_DIR ${BUILD_INFO_DIR} 11 | STAMP_DIR ${BUILD_INFO_DIR} 12 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 13 | SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/pkgconf/source 14 | CMAKE_ARGS ${common_cmake_args} 15 | BUILD_IN_SOURCE 1 16 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 17 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 18 | LOG_CONFIGURE TRUE 19 | LOG_BUILD TRUE 20 | LOG_INSTALL TRUE 21 | ) 22 | 23 | -------------------------------------------------------------------------------- /project/externals/protobuf.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name protobuf) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/protocolbuffers/protobuf/releases/download/v25.1/protobuf-25.1.tar.gz 10 | URL_HASH MD5=105105aae0153d60059e982ead4d1d94 11 | DOWNLOAD_NAME protobuf-25.1.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DCMAKE_BUILD_TYPE=Release 20 | -DCARES_SHARED=ON 21 | -Dprotobuf_BUILD_TESTS=OFF 22 | -Dprotobuf_BUILD_LIBPROTOC=ON 23 | -Dprotobuf_DISABLE_RTTI=OFF 24 | -Dprotobuf_BUILD_SHARED_LIBS=ON 25 | -Dprotobuf_WITH_ZLIB=ON 26 | -Dprotobuf_ABSL_PROVIDER=package 27 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 28 | BUILD_IN_SOURCE 1 29 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 30 | LOG_CONFIGURE TRUE 31 | LOG_BUILD TRUE 32 | LOG_INSTALL TRUE 33 | ) 34 | 35 | ExternalProject_Add_Step(${name} clean 36 | EXCLUDE_FROM_MAIN TRUE 37 | ALWAYS TRUE 38 | DEPENDEES configure 39 | COMMAND make clean -j 40 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 41 | WORKING_DIRECTORY ${source_dir} 42 | ) 43 | 44 | ExternalProject_Add_StepTargets(${name} clean) 45 | -------------------------------------------------------------------------------- /project/externals/protoc-gen-go-grpc.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name protoc-gen-go-grpc) 6 | add_custom_target(${name} ALL 7 | COMMAND env GOBIN=${CMAKE_INSTALL_PREFIX}/bin go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3 8 | COMMENT "Performing ${name} build & install" 9 | ) 10 | -------------------------------------------------------------------------------- /project/externals/protoc-gen-go.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name protoc-gen-go) 6 | add_custom_target(${name} ALL 7 | COMMAND env GOBIN=${CMAKE_INSTALL_PREFIX}/bin go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.32 8 | COMMENT "Performing ${name} build & install" 9 | ) 10 | -------------------------------------------------------------------------------- /project/externals/protoc-gen-grpc-java.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name protoc-gen-grpc-java) 6 | if ("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "x86_64") 7 | set(url "https://repo1.maven.org/maven2/io/grpc/protoc-gen-grpc-java/1.60.0/protoc-gen-grpc-java-1.60.0-linux-x86_64.exe") 8 | set(url_hash 7542dc3182e089921eb5bd9cd254f9ff) 9 | elseif("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "aarch64") 10 | set(url "https://repo1.maven.org/maven2/io/grpc/protoc-gen-grpc-java/1.60.0/protoc-gen-grpc-java-1.60.0-linux-aarch_64.exe") 11 | set(url_hash 6fb580130536557efe766ccae12e56a7) 12 | endif() 13 | ExternalProject_Add( 14 | ${name} 15 | URL ${url} 16 | URL_HASH MD5=${url_hash} 17 | DOWNLOAD_NAME ${name} 18 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 19 | DOWNLOAD_NO_EXTRACT TRUE 20 | CONFIGURE_COMMAND "" 21 | BUILD_COMMAND chmod +x ${DOWNLOAD_DIR}/${name} 22 | INSTALL_COMMAND install -D ${DOWNLOAD_DIR}/${name} ${CMAKE_INSTALL_PREFIX}/bin/${name} 23 | BUILD_IN_SOURCE 1 24 | LOG_CONFIGURE TRUE 25 | LOG_BUILD TRUE 26 | LOG_INSTALL TRUE 27 | ) 28 | -------------------------------------------------------------------------------- /project/externals/proxygen.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name proxygen) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | 8 | ExternalProject_Add( 9 | ${name} 10 | URL https://github.com/facebook/proxygen/archive/refs/tags/v2022.12.26.00.tar.gz 11 | URL_HASH MD5=1a319a813defa37b13a8f43cdd2f0be4 12 | DOWNLOAD_NAME proxygen-2022-12-26.tar.gz 13 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 14 | TMP_DIR ${BUILD_INFO_DIR} 15 | STAMP_DIR ${BUILD_INFO_DIR} 16 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 17 | SOURCE_DIR ${source_dir} 18 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-2022-12-26.patch 19 | CMAKE_ARGS 20 | ${common_cmake_args} 21 | -DBoost_NO_BOOST_CMAKE=ON 22 | -DCMAKE_BUILD_TYPE=Release 23 | -DBUILD_TESTS=OFF 24 | -DBUILD_SAMPLES=OFF 25 | -DPACKAGE_VERSION=2022.12.26 26 | "-DCMAKE_EXE_LINKER_FLAGS=${extra_lib_dirs} -static-libstdc++ -static-libgcc -pthread" 27 | "-DCMAKE_SHARED_LINKER_FLAGS=${extra_lib_dirs} -Wl,-rpath=\$ORIGIN:\$ORIGIN/../3rd" 28 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 29 | BUILD_IN_SOURCE 1 30 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 31 | LOG_CONFIGURE TRUE 32 | LOG_BUILD TRUE 33 | LOG_INSTALL TRUE 34 | ) 35 | 36 | ExternalProject_Add_Step(${name} clean 37 | EXCLUDE_FROM_MAIN TRUE 38 | ALWAYS TRUE 39 | DEPENDEES configure 40 | COMMAND make clean -j 41 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 42 | WORKING_DIRECTORY ${source_dir} 43 | ) 44 | 45 | ExternalProject_Add_StepTargets(${name} clean) 46 | -------------------------------------------------------------------------------- /project/externals/re2.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name re2) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/google/re2/releases/download/2023-11-01/re2-2023-11-01.tar.gz 10 | URL_HASH MD5=45925144c4da1ceba739f149a52bd555 11 | DOWNLOAD_NAME re2-2023-11-01.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DCMAKE_BUILD_TYPE=Release 20 | -DBUILD_SHARED_LIBS=ON 21 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 22 | BUILD_IN_SOURCE 1 23 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 24 | LOG_CONFIGURE TRUE 25 | LOG_BUILD TRUE 26 | LOG_INSTALL TRUE 27 | ) 28 | 29 | ExternalProject_Add_Step(${name} clean 30 | EXCLUDE_FROM_MAIN TRUE 31 | ALWAYS TRUE 32 | DEPENDEES configure 33 | COMMAND make clean -j 34 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 35 | WORKING_DIRECTORY ${source_dir} 36 | ) 37 | 38 | ExternalProject_Add_StepTargets(${name} clean) 39 | -------------------------------------------------------------------------------- /project/externals/robin-hood-hashing.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name robin-hood-hashing) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/martinus/robin-hood-hashing/archive/refs/tags/3.11.5.tar.gz 10 | URL_HASH MD5=a78bd30a7582f25984f8592652836467 11 | DOWNLOAD_NAME robin-hood-hashing-3.11.5.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND mkdir -p ${CMAKE_INSTALL_PREFIX}/include/ 18 | BUILD_COMMAND "" 19 | BUILD_IN_SOURCE 1 20 | INSTALL_COMMAND cp src/include/robin_hood.h ${CMAKE_INSTALL_PREFIX}/include/robin_hood.h 21 | LOG_CONFIGURE TRUE 22 | LOG_BUILD TRUE 23 | LOG_INSTALL TRUE 24 | ) 25 | 26 | ExternalProject_Add_Step(${name} clean 27 | EXCLUDE_FROM_MAIN TRUE 28 | ALWAYS TRUE 29 | DEPENDEES configure 30 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 31 | WORKING_DIRECTORY ${source_dir} 32 | ) 33 | 34 | ExternalProject_Add_StepTargets(${name} clean) 35 | -------------------------------------------------------------------------------- /project/externals/rocksdb.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name rocksdb) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/facebook/rocksdb/archive/refs/tags/v7.8.3.tar.gz 10 | URL_HASH MD5=745d3b15e57e31670b5ea607c5bb82ff 11 | DOWNLOAD_NAME rocksdb-7.8.3.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-7.8.3.patch 18 | UPDATE_COMMAND "" 19 | CMAKE_ARGS 20 | ${common_cmake_args} 21 | -DPORTABLE=ON 22 | -DWITH_SNAPPY=ON 23 | -DWITH_ZSTD=ON 24 | -DWITH_ZLIB=ON 25 | -DWITH_LZ4=ON 26 | -DWITH_BZ2=ON 27 | -DWITH_JEMALLOC=OFF 28 | -DWITH_GFLAGS=OFF 29 | -DWITH_TESTS=OFF 30 | -DWITH_BENCHMARK_TOOLS=OFF 31 | -DWITH_TOOLS=OFF 32 | -DUSE_RTTI=ON 33 | -DFAIL_ON_WARNINGS=OFF 34 | -DCMAKE_BUILD_TYPE=Release 35 | "-DCMAKE_EXE_LINKER_FLAGS=${extra_lib_dirs} -lbz2 -lsnappy -lzstd" 36 | "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -D NPERF_CONTEXT ${ISA_FLAGS}" 37 | "-DCMAKE_SHARED_LINKER_FLAGS=${extra_lib_dirs} -Wl,-rpath=\$ORIGIN:\$ORIGIN/../3rd" 38 | BUILD_IN_SOURCE 1 39 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 40 | INSTALL_COMMAND "" 41 | LOG_CONFIGURE TRUE 42 | LOG_BUILD TRUE 43 | LOG_INSTALL TRUE 44 | ) 45 | 46 | ExternalProject_Add_Step(${name} install-static 47 | DEPENDEES build 48 | DEPENDERS install 49 | ALWAYS false 50 | COMMAND 51 | make -s install -j${BUILDING_JOBS_NUM} 52 | COMMAND 53 | find ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} -name "librocksdb.a" -delete 54 | WORKING_DIRECTORY ${source_dir} 55 | ) 56 | 57 | ExternalProject_Add_Step(${name} clean 58 | EXCLUDE_FROM_MAIN TRUE 59 | ALWAYS TRUE 60 | DEPENDEES configure 61 | COMMAND make clean -j 62 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 63 | WORKING_DIRECTORY ${source_dir} 64 | ) 65 | 66 | ExternalProject_Add_StepTargets(${name} clean) 67 | -------------------------------------------------------------------------------- /project/externals/s2geometry.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name s2geometry) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/google/s2geometry/archive/v0.9.0.tar.gz 10 | URL_HASH MD5=293552c7646193b8b4a01556808fe155 11 | DOWNLOAD_NAME ${name}-0.9.0.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-0.9.0.patch 18 | CMAKE_ARGS 19 | ${common_cmake_args} 20 | -DCMAKE_BUILD_TYPE=Release 21 | -DS2_USE_GLOG=ON 22 | -DBUILD_EXAMPLES=OFF 23 | -DWITH_GLOG=ON 24 | -DWITH_GFLAGS=ON 25 | -DBUILD_SHARED_LIBS=ON 26 | 27 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 28 | BUILD_IN_SOURCE 1 29 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 30 | LOG_CONFIGURE TRUE 31 | LOG_BUILD TRUE 32 | LOG_INSTALL TRUE 33 | ) 34 | 35 | ExternalProject_Add_Step(${name} clean 36 | EXCLUDE_FROM_MAIN TRUE 37 | ALWAYS TRUE 38 | DEPENDEES configure 39 | COMMAND make clean -j 40 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 41 | WORKING_DIRECTORY ${source_dir} 42 | ) 43 | 44 | ExternalProject_Add_StepTargets(${name} clean) 45 | -------------------------------------------------------------------------------- /project/externals/simdjson.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name simdjson) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/simdjson/simdjson/archive/refs/tags/v3.0.1.tar.gz 10 | URL_HASH MD5=993576b47249f2bade2bfb2552b2896a 11 | DOWNLOAD_NAME simdjson-3.0.1.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | UPDATE_COMMAND "" 18 | CMAKE_ARGS 19 | ${common_cmake_args} 20 | -DCMAKE_BUILD_TYPE=Release 21 | -DSIMDJSON_JUST_LIBRARY=ON 22 | -DSIMDJSON_BUILD_STATIC=OFF 23 | BUILD_IN_SOURCE 1 24 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 25 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 26 | LOG_CONFIGURE TRUE 27 | LOG_BUILD TRUE 28 | LOG_INSTALL TRUE 29 | ) 30 | 31 | ExternalProject_Add_Step(${name} clean 32 | EXCLUDE_FROM_MAIN TRUE 33 | ALWAYS TRUE 34 | DEPENDEES configure 35 | COMMAND make clean -j 36 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 37 | WORKING_DIRECTORY ${source_dir} 38 | ) 39 | 40 | ExternalProject_Add_StepTargets(${name} clean) 41 | -------------------------------------------------------------------------------- /project/externals/snappy.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name snappy) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/google/snappy/archive/refs/tags/1.1.9.tar.gz 10 | URL_HASH MD5=213b6324b7790d25f5368629540a172c 11 | DOWNLOAD_NAME snappy-1.1.9.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/${name}-1.1.9.patch 18 | CMAKE_ARGS 19 | ${common_cmake_args} 20 | -DCMAKE_BUILD_TYPE=Release 21 | -DSNAPPY_BUILD_TESTS=OFF 22 | -DSNAPPY_BUILD_BENCHMARKS=OFF 23 | BUILD_IN_SOURCE 1 24 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 25 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} 26 | LOG_CONFIGURE TRUE 27 | LOG_BUILD TRUE 28 | LOG_INSTALL TRUE 29 | ) 30 | 31 | ExternalProject_Add_Step(${name} clean 32 | EXCLUDE_FROM_MAIN TRUE 33 | ALWAYS TRUE 34 | DEPENDEES configure 35 | COMMAND make clean -j 36 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 37 | WORKING_DIRECTORY ${source_dir} 38 | ) 39 | 40 | ExternalProject_Add_StepTargets(${name} clean) 41 | -------------------------------------------------------------------------------- /project/externals/sodium.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name sodium) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz 10 | URL_HASH MD5=3ca9ebc13b6b4735acae0a6a4c4f9a95 11 | DOWNLOAD_NAME libsodium-1.0.18.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND 18 | ${common_configure_envs} 19 | ./configure ${common_configure_args} 20 | --enable-shared --disable-static 21 | BUILD_COMMAND make -s 22 | BUILD_IN_SOURCE 1 23 | INSTALL_COMMAND make -s install 24 | LOG_CONFIGURE TRUE 25 | LOG_BUILD TRUE 26 | LOG_INSTALL TRUE 27 | ) 28 | 29 | ExternalProject_Add_Step(${name} clean 30 | EXCLUDE_FROM_MAIN TRUE 31 | ALWAYS TRUE 32 | DEPENDEES configure 33 | COMMAND make clean -j 34 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 35 | WORKING_DIRECTORY ${source_dir} 36 | ) 37 | 38 | ExternalProject_Add_StepTargets(${name} clean) 39 | -------------------------------------------------------------------------------- /project/externals/sparsemap.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name sparsemap) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/Tessil/sparse-map/archive/refs/tags/v0.6.2.tar.gz 10 | URL_HASH MD5=cb91789500a0b2f14c4550ce814c4463 11 | DOWNLOAD_NAME sparse-map-0.6.2.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -DCMAKE_BUILD_TYPE=Release 20 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 21 | BUILD_IN_SOURCE 1 22 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install/strip 23 | LOG_CONFIGURE TRUE 24 | LOG_BUILD TRUE 25 | LOG_INSTALL TRUE 26 | ) 27 | 28 | ExternalProject_Add_Step(${name} clean 29 | EXCLUDE_FROM_MAIN TRUE 30 | ALWAYS TRUE 31 | DEPENDEES configure 32 | COMMAND make clean -j 33 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 34 | WORKING_DIRECTORY ${source_dir} 35 | ) 36 | 37 | ExternalProject_Add_StepTargets(${name} clean) 38 | -------------------------------------------------------------------------------- /project/externals/utf8proc.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name utf8proc) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/JuliaStrings/utf8proc/archive/refs/tags/v2.8.0.tar.gz 10 | URL_HASH MD5=00de586d00c133bfb3caae335279d741 11 | DOWNLOAD_NAME utf8proc-2.8.0.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS ${common_cmake_args} 18 | BUILD_IN_SOURCE 0 19 | ) 20 | 21 | ExternalProject_Add_Step(${name} clean 22 | EXCLUDE_FROM_MAIN TRUE 23 | ALWAYS TRUE 24 | DEPENDEES configure 25 | COMMAND make clean -j 26 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 27 | WORKING_DIRECTORY ${source_dir} 28 | ) 29 | 30 | ExternalProject_Add_StepTargets(${name} clean) 31 | -------------------------------------------------------------------------------- /project/externals/valijson.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2025 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under BSD-2-Clause License. 4 | 5 | set(name valijson) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/tristanpenman/valijson/archive/refs/tags/v1.0.4.tar.gz 10 | URL_HASH MD5=8149558a10e73dc39a7a6baef1b3d19c 11 | DOWNLOAD_NAME ${name}-1.0.4.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS 18 | ${common_cmake_args} 19 | -Dvalijson_USE_EXCEPTIONS=ON 20 | -Dvalijson_BUILD_EXAMPLES=OFF 21 | -Dvalijson_BUILD_TESTS=OFF 22 | -DCMAKE_BUILD_TYPE=Release 23 | BUILD_IN_SOURCE 1 24 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 25 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install 26 | LOG_CONFIGURE TRUE 27 | LOG_BUILD TRUE 28 | LOG_INSTALL TRUE 29 | ) 30 | 31 | ExternalProject_Add_Step(${name} clean 32 | EXCLUDE_FROM_MAIN TRUE 33 | ALWAYS TRUE 34 | DEPENDEES configure 35 | COMMAND make clean -j 36 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 37 | WORKING_DIRECTORY ${source_dir} 38 | ) 39 | 40 | ExternalProject_Add_StepTargets(${name} clean) 41 | -------------------------------------------------------------------------------- /project/externals/wangle.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name wangle) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/facebook/wangle/archive/refs/tags/v2022.12.26.00.tar.gz 10 | URL_HASH MD5=8e3200855c6382bf40ec2051e467cdab 11 | DOWNLOAD_NAME wangle-2022-12-26.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND "" 18 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} -C wangle 19 | BUILD_IN_SOURCE 1 20 | INSTALL_COMMAND make -s -j${BUILDING_JOBS_NUM} install -C wangle 21 | LOG_CONFIGURE TRUE 22 | LOG_BUILD TRUE 23 | LOG_INSTALL TRUE 24 | ) 25 | 26 | ExternalProject_Add_Step(${name} mannual-configure 27 | DEPENDEES download update patch 28 | DEPENDERS build 29 | COMMAND ${CMAKE_COMMAND} 30 | ${common_cmake_args} 31 | -DBoost_NO_SYSTEM_PATHS=OFF 32 | -DBoost_NO_BOOST_CMAKE=ON 33 | -DCMAKE_BUILD_TYPE=Release 34 | -DBUILD_TESTS=OFF 35 | -DCMAKE_EXE_LINKER_FLAGS=-latomic 36 | -DOPENSSL_ROOT_DIR=${CMAKE_INSTALL_PREFIX} 37 | . 38 | WORKING_DIRECTORY /wangle 39 | ) 40 | 41 | ExternalProject_Add_Step(${name} clean 42 | EXCLUDE_FROM_MAIN TRUE 43 | ALWAYS TRUE 44 | DEPENDEES configure 45 | COMMAND make clean -j 46 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 47 | WORKING_DIRECTORY /wangle 48 | ) 49 | 50 | ExternalProject_Add_StepTargets(${name} clean) 51 | -------------------------------------------------------------------------------- /project/externals/xsimd.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name xsimd) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/xtensor-stack/xsimd/archive/refs/tags/10.0.0.tar.gz 10 | URL_HASH MD5=e0dfed5da51b0d34d02b42f5b2ddf830 11 | DOWNLOAD_NAME xsimd-10.0.0.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CMAKE_ARGS ${common_cmake_args} 18 | BUILD_IN_SOURCE 1 19 | ) 20 | 21 | ExternalProject_Add_Step(${name} clean 22 | EXCLUDE_FROM_MAIN TRUE 23 | ALWAYS TRUE 24 | DEPENDEES configure 25 | COMMAND make clean -j 26 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 27 | WORKING_DIRECTORY ${source_dir} 28 | ) 29 | 30 | ExternalProject_Add_StepTargets(${name} clean) 31 | -------------------------------------------------------------------------------- /project/externals/yaml-cpp.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2025 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under MIT License. 4 | 5 | set(name yaml-cpp) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/jbeder/yaml-cpp/archive/2f86d13775d119edbb69af52e5f566fd65c6953b.zip 10 | URL_HASH MD5=8cba45665536adf41356e964b07d04f2 11 | DOWNLOAD_NAME ${name}-master.zip 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | BUILD_IN_SOURCE 1 18 | CMAKE_ARGS 19 | ${common_cmake_args} 20 | -DCMAKE_BUILD_TYPE=Release 21 | -DYAML_BUILD_SHARED_LIBS=ON 22 | -DYAML_CPP_INSTALL=ON 23 | -DYAML_CPP_BUILD_CONTRIB=OFF 24 | -DYAML_CPP_BUILD_TESTS=OFF 25 | -DYAML_CPP_BUILD_TOOLS=OFF 26 | LOG_CONFIGURE TRUE 27 | LOG_BUILD TRUE 28 | LOG_INSTALL TRUE 29 | ) 30 | 31 | ExternalProject_Add_Step(${name} clean 32 | EXCLUDE_FROM_MAIN TRUE 33 | ALWAYS TRUE 34 | DEPENDEES configure 35 | COMMAND make clean -j 36 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 37 | WORKING_DIRECTORY ${source_dir} 38 | ) 39 | 40 | ExternalProject_Add_StepTargets(${name} clean) 41 | -------------------------------------------------------------------------------- /project/externals/zlib.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | set(name zlib) 6 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 7 | ExternalProject_Add( 8 | ${name} 9 | URL https://github.com/madler/zlib/archive/refs/tags/v1.2.13.tar.gz 10 | URL_HASH MD5=9c7d356c5acaa563555490676ca14d23 11 | DOWNLOAD_NAME zlib-1.2.13.tar.gz 12 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 13 | TMP_DIR ${BUILD_INFO_DIR} 14 | STAMP_DIR ${BUILD_INFO_DIR} 15 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 16 | SOURCE_DIR ${source_dir} 17 | CONFIGURE_COMMAND 18 | "env" 19 | "CC=${CMAKE_C_COMPILER}" 20 | "CFLAGS=${CMAKE_C_FLAGS} -fPIC -O2" 21 | "CPPFLAGS=-isystem ${CMAKE_INSTALL_PREFIX}/include" 22 | "PATH=${BUILDING_PATH}" 23 | ./configure --prefix=${CMAKE_INSTALL_PREFIX} --shared 24 | BUILD_COMMAND make -s -j${BUILDING_JOBS_NUM} 25 | BUILD_IN_SOURCE 1 26 | INSTALL_COMMAND make -s install -j${BUILDING_JOBS_NUM} PREFIX=${CMAKE_INSTALL_PREFIX} 27 | LOG_CONFIGURE TRUE 28 | LOG_BUILD TRUE 29 | LOG_INSTALL TRUE 30 | ) 31 | 32 | ExternalProject_Add_Step(${name} clean 33 | EXCLUDE_FROM_MAIN TRUE 34 | ALWAYS TRUE 35 | DEPENDEES configure 36 | COMMAND make clean -j 37 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 38 | WORKING_DIRECTORY ${source_dir} 39 | ) 40 | 41 | ExternalProject_Add_StepTargets(${name} clean) 42 | -------------------------------------------------------------------------------- /project/externals/zstd.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 vesoft inc. All rights reserved. 2 | # 3 | # This source code is licensed under Apache 2.0 License. 4 | 5 | # TODO Upgrade to take advantage of optimization 6 | set(name zstd) 7 | set(source_dir ${CMAKE_CURRENT_BINARY_DIR}/${name}/source) 8 | set(MakeEnvs "env" "CFLAGS=-fPIC") 9 | ExternalProject_Add( 10 | ${name} 11 | URL https://github.com/facebook/zstd/archive/refs/tags/v1.5.2.tar.gz 12 | URL_HASH MD5=6dc24b78e32e7c99f80c9441e40ff8bc 13 | DOWNLOAD_NAME zstd-1.5.2.tar.gz 14 | PREFIX ${CMAKE_CURRENT_BINARY_DIR}/${name} 15 | TMP_DIR ${BUILD_INFO_DIR} 16 | STAMP_DIR ${BUILD_INFO_DIR} 17 | DOWNLOAD_DIR ${DOWNLOAD_DIR} 18 | SOURCE_DIR ${source_dir} 19 | CONFIGURE_COMMAND "" 20 | BUILD_COMMAND 21 | "${MakeEnvs}" 22 | make -e -s -j${BUILDING_JOBS_NUM} 23 | BUILD_IN_SOURCE 1 24 | INSTALL_COMMAND 25 | make -C lib 26 | -s install-pc install-shared install-includes 27 | -j${BUILDING_JOBS_NUM} 28 | PREFIX=${CMAKE_INSTALL_PREFIX} 29 | LOG_CONFIGURE TRUE 30 | LOG_BUILD TRUE 31 | LOG_INSTALL TRUE 32 | ) 33 | 34 | ExternalProject_Add_Step(${name} clean 35 | EXCLUDE_FROM_MAIN TRUE 36 | ALWAYS TRUE 37 | DEPENDEES configure 38 | COMMAND make clean -j 39 | COMMAND rm -f ${BUILD_INFO_DIR}/${name}-build 40 | WORKING_DIRECTORY ${source_dir} 41 | ) 42 | 43 | ExternalProject_Add_StepTargets(${name} clean) 44 | -------------------------------------------------------------------------------- /project/patches/arrow-18.0.0.patch: -------------------------------------------------------------------------------- 1 | --- a/cpp/cmake_modules/GandivaAddBitcode.cmake 2024-10-16 09:20:06.000000000 +0000 2 | +++ b/cpp/cmake_modules/GandivaAddBitcode.cmake 2024-11-05 10:07:31.339538160 +0000 3 | @@ -30,6 +30,16 @@ 4 | -fms-compatibility-version=${FMS_COMPATIBILITY}) 5 | endif() 6 | 7 | + if (USE_LLVM_CXX) 8 | + message(STATUS "USE LLVM CXX") 9 | + file(GLOB_RECURSE LLVM_CXX_INCLUDE_DIR 10 | + "${LLVM_INCLUDE_DIRS}/*-gnu/c++/v1/__config_site") 11 | + 12 | + list(GET LLVM_CXX_INCLUDE_DIR 0 LLVM_CXX_INCLUDE_DIR) 13 | + get_filename_component(LLVM_CXX_INCLUDE_DIR ${LLVM_CXX_INCLUDE_DIR} DIRECTORY) 14 | + list(APPEND CLANG_OPTIONS -I${LLVM_INCLUDE_DIRS}/c++/v1 -I${LLVM_CXX_INCLUDE_DIR}) 15 | + endif() 16 | + 17 | get_filename_component(SOURCE_BASE ${SOURCE} NAME_WE) 18 | get_filename_component(ABSOLUTE_SOURCE ${SOURCE} ABSOLUTE) 19 | set(BC_FILE ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_BASE}.bc) 20 | --- a/cpp/src/arrow/testing/process.cc 2024-11-05 08:13:47.487969501 +0000 21 | +++ b/cpp/src/arrow/testing/process.cc 2024-11-05 09:27:42.138928785 +0000 22 | @@ -18,7 +18,7 @@ 23 | #include "arrow/testing/process.h" 24 | #include "arrow/result.h" 25 | 26 | -#define BOOST_PROCESS_AVAILABLE 27 | +#undef BOOST_PROCESS_AVAILABLE 28 | #ifdef __EMSCRIPTEN__ 29 | # undef BOOST_PROCESS_AVAILABLE 30 | #endif 31 | -------------------------------------------------------------------------------- /project/patches/breakpad-aarch64.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/src/client/linux/dump_writer_common/thread_info.h b/src/client/linux/dump_writer_common/thread_info.h 2 | --- a/src/client/linux/dump_writer_common/thread_info.h 2022-05-10 04:45:04.000000000 +0000 3 | +++ b/src/client/linux/dump_writer_common/thread_info.h 2023-05-29 09:38:21.045938682 +0000 4 | @@ -32,6 +32,20 @@ 5 | 6 | #include 7 | #include 8 | +struct user_regs_struct 9 | +{ 10 | + unsigned long long regs[31]; 11 | + unsigned long long sp; 12 | + unsigned long long pc; 13 | + unsigned long long pstate; 14 | +}; 15 | + 16 | +struct user_fpsimd_struct 17 | +{ 18 | + __uint128_t vregs[32]; 19 | + unsigned int fpsr; 20 | + unsigned int fpcr; 21 | +}; 22 | 23 | #include "client/linux/dump_writer_common/raw_context_cpu.h" 24 | #include "common/memory_allocator.h" 25 | diff -ur a/src/tools/linux/md2core/minidump-2-core.cc b/src/tools/linux/md2core/minidump-2-core.cc 26 | --- a/src/tools/linux/md2core/minidump-2-core.cc 2022-05-10 04:45:04.000000000 +0000 27 | +++ b/src/tools/linux/md2core/minidump-2-core.cc 2023-05-29 10:10:01.982373549 +0000 28 | @@ -41,6 +41,22 @@ 29 | #include 30 | #include 31 | 32 | +struct user_regs_struct 33 | +{ 34 | + unsigned long long regs[31]; 35 | + unsigned long long sp; 36 | + unsigned long long pc; 37 | + unsigned long long pstate; 38 | +}; 39 | + 40 | +struct user_fpsimd_struct 41 | +{ 42 | + __uint128_t vregs[32]; 43 | + unsigned int fpsr; 44 | + unsigned int fpcr; 45 | +}; 46 | + 47 | + 48 | #include 49 | #include 50 | #include 51 | -------------------------------------------------------------------------------- /project/patches/bzip2-1.0.8.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/Makefile-libbz2_so b/Makefile-libbz2_so 2 | --- a/Makefile-libbz2_so 2019-07-14 01:50:05.000000000 +0800 3 | +++ b/Makefile-libbz2_so 2023-09-21 15:07:59.220363985 +0800 4 | @@ -1,9 +1,9 @@ 5 | 6 | -# This Makefile builds a shared version of the library, 7 | +# This Makefile builds a shared version of the library, 8 | # libbz2.so.1.0.8, with soname libbz2.so.1.0, 9 | -# at least on x86-Linux (RedHat 7.2), 10 | -# with gcc-2.96 20000731 (Red Hat Linux 7.1 2.96-98). 11 | -# Please see the README file for some important info 12 | +# at least on x86-Linux (RedHat 7.2), 13 | +# with gcc-2.96 20000731 (Red Hat Linux 7.1 2.96-98). 14 | +# Please see the README file for some important info 15 | # about building the library like this. 16 | 17 | # ------------------------------------------------------------------ 18 | @@ -13,7 +13,7 @@ 19 | # bzip2/libbzip2 version 1.0.8 of 13 July 2019 20 | # Copyright (C) 1996-2019 Julian Seward 21 | # 22 | -# Please read the WARNING, DISCLAIMER and PATENTS sections in the 23 | +# Please read the WARNING, DISCLAIMER and PATENTS sections in the 24 | # README file. 25 | # 26 | # This program is released under the terms of the license contained 27 | @@ -37,11 +37,19 @@ 28 | all: $(OBJS) 29 | $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.8 $(OBJS) 30 | $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.8 31 | - rm -f libbz2.so.1.0 32 | + rm -f libbz2.so.1.0 libbz2.so 33 | ln -s libbz2.so.1.0.8 libbz2.so.1.0 34 | + ln -s libbz2.so.1.0.8 libbz2.so 35 | 36 | -clean: 37 | - rm -f $(OBJS) bzip2.o libbz2.so.1.0.8 libbz2.so.1.0 bzip2-shared 38 | +install: all 39 | + if ( test ! -d $(PREFIX)/lib ) ; then mkdir -p $(PREFIX)/lib ; fi 40 | + if ( test ! -d $(PREFIX)/include ) ; then mkdir -p $(PREFIX)/include ; fi 41 | + cp -f bzlib.h $(PREFIX)/include 42 | + chmod a+r $(PREFIX)/include/bzlib.h 43 | + cp -f libbz2.so* $(PREFIX)/lib 44 | + 45 | +clean: 46 | + rm -f $(OBJS) bzip2.o libbz2.so.1.0.8 libbz2.so.1.0 libbz2.so bzip2-shared 47 | 48 | blocksort.o: blocksort.c 49 | $(CC) $(CFLAGS) -c blocksort.c 50 | -------------------------------------------------------------------------------- /project/patches/cachelib-2022-12-26.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/cachelib/shm/ShmCommon.h b/cachelib/shm/ShmCommon.h 2 | --- a/cachelib/shm/ShmCommon.h 2022-12-25 17:00:33.000000000 +0800 3 | +++ a/cachelib/shm/ShmCommon.h 2023-01-06 10:03:07.621521164 +0800 4 | @@ -28,6 +28,10 @@ 5 | #include 6 | #pragma GCC diagnostic pop 7 | 8 | +#ifndef MAP_HUGE_SHIFT 9 | +#define MAP_HUGE_SHIFT 26 10 | +#endif 11 | + 12 | /* On Mac OS / FreeBSD, mmap(2) syscall does not support these flags */ 13 | #ifndef MAP_LOCKED 14 | #define MAP_LOCKED 0 15 | diff -ur a/cachelib/allocator/MarginalHitsState-inl.h b/cachelib/allocator/MarginalHitsState-inl.h 16 | --- a/cachelib/allocator/MarginalHitsState-inl.h 2022-12-25 17:00:33.000000000 +0800 17 | +++ b/cachelib/allocator/MarginalHitsState-inl.h 2023-12-12 11:54:16.430563776 +0800 18 | @@ -14,6 +14,8 @@ 19 | * limitations under the License. 20 | */ 21 | 22 | +#include 23 | + 24 | namespace facebook { 25 | namespace cachelib { 26 | template 27 | -------------------------------------------------------------------------------- /project/patches/duckdb-0.6.1.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/CMakeLists.txt b/CMakeLists.txt 2 | --- a/CMakeLists.txt 2022-12-06 14:15:51.000000000 +0800 3 | +++ b/CMakeLists.txt 2023-09-14 10:57:03.633564428 +0800 4 | @@ -216,54 +216,11 @@ 5 | set(SUN TRUE) 6 | endif() 7 | 8 | -find_package(Git) 9 | -if(Git_FOUND) 10 | - if (NOT DEFINED GIT_COMMIT_HASH) 11 | - execute_process( 12 | - COMMAND ${GIT_EXECUTABLE} log -1 --format=%h 13 | - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 14 | - RESULT_VARIABLE GIT_RESULT 15 | - OUTPUT_VARIABLE GIT_COMMIT_HASH 16 | - OUTPUT_STRIP_TRAILING_WHITESPACE) 17 | - endif() 18 | - execute_process( 19 | - COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=0 20 | - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 21 | - OUTPUT_VARIABLE GIT_LAST_TAG 22 | - OUTPUT_STRIP_TRAILING_WHITESPACE) 23 | - execute_process( 24 | - COMMAND ${GIT_EXECUTABLE} describe --tags --long 25 | - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 26 | - OUTPUT_VARIABLE GIT_ITERATION 27 | - OUTPUT_STRIP_TRAILING_WHITESPACE) 28 | -else() 29 | - message("Git NOT FOUND") 30 | -endif() 31 | - 32 | -if(GIT_RESULT EQUAL "0") 33 | - string(REGEX REPLACE "v([0-9]+).[0-9]+.[0-9]+" "\\1" DUCKDB_MAJOR_VERSION "${GIT_LAST_TAG}") 34 | - string(REGEX REPLACE "v[0-9]+.([0-9]+).[0-9]+" "\\1" DUCKDB_MINOR_VERSION "${GIT_LAST_TAG}") 35 | - string(REGEX REPLACE "v[0-9]+.[0-9]+.([0-9]+)" "\\1" DUCKDB_PATCH_VERSION "${GIT_LAST_TAG}") 36 | - string(REGEX REPLACE ".*-([0-9]+)-.*" "\\1" DUCKDB_DEV_ITERATION "${GIT_ITERATION}") 37 | - 38 | - if(DUCKDB_DEV_ITERATION EQUAL 0) 39 | - # on a tag; directly use the version 40 | - set(DUCKDB_VERSION "${GIT_LAST_TAG}") 41 | - else() 42 | - # not on a tag, increment the patch version by one and add a -devX suffix 43 | - math(EXPR DUCKDB_PATCH_VERSION "${DUCKDB_PATCH_VERSION}+1") 44 | - set(DUCKDB_VERSION "v${DUCKDB_MAJOR_VERSION}.${DUCKDB_MINOR_VERSION}.${DUCKDB_PATCH_VERSION}-dev${DUCKDB_DEV_ITERATION}") 45 | - endif() 46 | -else() 47 | - # fallback for when building from tarball 48 | - set(DUCKDB_MAJOR_VERSION 0) 49 | - set(DUCKDB_MINOR_VERSION 0) 50 | - set(DUCKDB_PATCH_VERSION 1) 51 | - set(DUCKDB_DEV_ITERATION 0) 52 | - set(DUCKDB_VERSION "v${DUCKDB_MAJOR_VERSION}.${DUCKDB_MINOR_VERSION}.${DUCKDB_PATCH_VERSION}-dev${DUCKDB_DEV_ITERATION}") 53 | -endif() 54 | - 55 | -message(STATUS "git hash ${GIT_COMMIT_HASH}, version ${DUCKDB_VERSION}") 56 | +set(DUCKDB_MAJOR_VERSION 0) 57 | +set(DUCKDB_MINOR_VERSION 0) 58 | +set(DUCKDB_PATCH_VERSION 1) 59 | +set(DUCKDB_DEV_ITERATION 0) 60 | +set(DUCKDB_VERSION "v${DUCKDB_MAJOR_VERSION}.${DUCKDB_MINOR_VERSION}.${DUCKDB_PATCH_VERSION}-dev${DUCKDB_DEV_ITERATION}") 61 | 62 | option(AMALGAMATION_BUILD 63 | "Build from the amalgamation files, rather than from the normal sources." 64 | diff -ur a/scripts/amalgamation.py b/scripts/amalgamation.py 65 | --- a/scripts/amalgamation.py 2022-12-06 14:15:51.000000000 +0800 66 | +++ b/scripts/amalgamation.py 2023-09-14 10:55:43.448810633 +0800 67 | @@ -257,8 +257,8 @@ 68 | hfile.write("#define DUCKDB_AMALGAMATION 1\n") 69 | if extended_amalgamation: 70 | hfile.write("#define DUCKDB_AMALGAMATION_EXTENDED 1\n") 71 | - hfile.write("#define DUCKDB_SOURCE_ID \"%s\"\n" % git_commit_hash()) 72 | - hfile.write("#define DUCKDB_VERSION \"%s\"\n" % git_dev_version()) 73 | +# hfile.write("#define DUCKDB_SOURCE_ID \"%s\"\n" % git_commit_hash()) 74 | +# hfile.write("#define DUCKDB_VERSION \"%s\"\n" % git_dev_version()) 75 | 76 | for fpath in main_header_files: 77 | hfile.write(write_file(fpath)) 78 | diff -ur a/third_party/thrift/thrift/TApplicationException.h b/third_party/thrift/thrift/TApplicationException.h 79 | --- a/third_party/thrift/thrift/TApplicationException.h 2022-12-06 14:15:51.000000000 +0800 80 | +++ b/third_party/thrift/thrift/TApplicationException.h 2023-12-17 17:10:08.964516203 +0800 81 | @@ -20,6 +20,7 @@ 82 | #ifndef _DUCKDB_THRIFT_TAPPLICATIONEXCEPTION_H_ 83 | #define _DUCKDB_THRIFT_TAPPLICATIONEXCEPTION_H_ 1 84 | 85 | +#include 86 | #include "thrift/Thrift.h" 87 | 88 | namespace duckdb_apache { 89 | -------------------------------------------------------------------------------- /project/patches/fbthrift-2022-12-26.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/thrift/lib/cpp2/async/HeaderServerChannel.h b/thrift/lib/cpp2/async/HeaderServerChannel.h 2 | --- a/thrift/lib/cpp2/async/HeaderServerChannel.h 2021-11-29 14:14:12.000000000 +0800 3 | +++ b/thrift/lib/cpp2/async/HeaderServerChannel.h 2022-10-13 16:22:03.142090462 +0800 4 | @@ -108,7 +108,7 @@ 5 | } 6 | 7 | bool isOneway() const override { 8 | - return header_->getSequenceNumber() == ONEWAY_REQUEST_ID; 9 | + return header_ && header_->getSequenceNumber() == ONEWAY_REQUEST_ID; 10 | } 11 | 12 | bool includeEnvelope() const override { return true; } 13 | diff -ur a/thrift/lib/cpp2/server/IOWorkerContext.h b/thrift/lib/cpp2/server/IOWorkerContext.h 14 | --- a/thrift/lib/cpp2/server/IOWorkerContext.h 2022-12-26 14:14:12.000000000 +0800 15 | +++ b/thrift/lib/cpp2/server/IOWorkerContext.h 2023-01-06 10:19:57.688867465 +0800 16 | @@ -64,7 +64,7 @@ 17 | auto aliveLocked = alive->rlock(); 18 | if (*aliveLocked) { 19 | // IOWorkerContext is still alive and so is replyQueue_ 20 | - queue->startConsumingInternal(&evb); 21 | + queue->startConsuming(&evb); 22 | } 23 | }); 24 | } 25 | diff -ur a/thrift/compiler/generate/json.cc b/thrift/compiler/generate/json.cc 26 | --- a/thrift/compiler/generate/json.cc 2022-12-25 17:00:33.000000000 +0800 27 | +++ b/thrift/compiler/generate/json.cc 2023-12-12 10:57:27.256511493 +0800 28 | @@ -16,6 +16,7 @@ 29 | 30 | #include 31 | 32 | +#include 33 | #include 34 | #include 35 | -------------------------------------------------------------------------------- /project/patches/fizz-2022-12-26.patch: -------------------------------------------------------------------------------- 1 | diff --git a/fizz/experimental/ktls/LinuxKTLS.h b/fizz/experimental/ktls/LinuxKTLS.h 2 | index 45378735..6d7cd69f 100644 3 | --- a/fizz/experimental/ktls/LinuxKTLS.h 4 | +++ b/fizz/experimental/ktls/LinuxKTLS.h 5 | @@ -39,10 +39,11 @@ 6 | 7 | #if defined(__linux__) && !FOLLY_MOBILE 8 | #include 9 | +#include 10 | 11 | // Minimum version of linux uapi headers we require; this is when linux/tls.h 12 | // was introduced 13 | -#if LINUX_VERSION_CODE < 265216 14 | +#if (LINUX_VERSION_CODE < 265216) || (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 27) 15 | #define FIZZ_PLATFORM_CAPABLE_KTLS 0 16 | #else 17 | #define FIZZ_PLATFORM_CAPABLE_KTLS 1 18 | -------------------------------------------------------------------------------- /project/patches/fmt-9.1.0.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/CMakeLists.txt b/CMakeLists.txt 2 | --- a/CMakeLists.txt 2022-08-27 23:57:10.000000000 +0800 3 | +++ b/CMakeLists.txt 2023-08-23 16:42:20.057379157 +0800 4 | @@ -135,18 +135,6 @@ 5 | endif () 6 | message(STATUS "Required features: ${FMT_REQUIRED_FEATURES}") 7 | 8 | -if (FMT_MASTER_PROJECT AND NOT DEFINED CMAKE_CXX_VISIBILITY_PRESET) 9 | - set_verbose(CMAKE_CXX_VISIBILITY_PRESET hidden CACHE STRING 10 | - "Preset for the export of private symbols") 11 | - set_property(CACHE CMAKE_CXX_VISIBILITY_PRESET PROPERTY STRINGS 12 | - hidden default) 13 | -endif () 14 | - 15 | -if (FMT_MASTER_PROJECT AND NOT DEFINED CMAKE_VISIBILITY_INLINES_HIDDEN) 16 | - set_verbose(CMAKE_VISIBILITY_INLINES_HIDDEN ON CACHE BOOL 17 | - "Whether to add a compile flag to hide symbols of inline functions") 18 | -endif () 19 | - 20 | if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") 21 | set(PEDANTIC_COMPILE_FLAGS -pedantic-errors -Wall -Wextra -pedantic 22 | -Wold-style-cast -Wundef 23 | -------------------------------------------------------------------------------- /project/patches/folly-2022-12-26.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/CMake/FindLibDwarf.cmake b/CMake/FindLibDwarf.cmake 2 | --- a/CMake/FindLibDwarf.cmake 2022-12-27 15:59:36.511072945 +0800 3 | +++ b/CMake/FindLibDwarf.cmake 2022-12-27 15:59:59.001018283 +0800 4 | @@ -15,7 +15,7 @@ 5 | # dwarf.h is typically installed in a libdwarf/ subdirectory on Debian-style 6 | # Linux distributions. It is not installed in a libdwarf/ subdirectory on Mac 7 | # systems when installed with Homebrew. Search for it in both locations. 8 | -find_path(LIBDWARF_INCLUDE_DIR NAMES dwarf.h PATH_SUFFIXES libdwarf) 9 | +find_path(LIBDWARF_INCLUDE_DIR NAMES dwarf.h PATH_SUFFIXES libdwarf libdwarf-0) 10 | mark_as_advanced(LIBDWARF_INCLUDE_DIR) 11 | 12 | find_library(LIBDWARF_LIBRARY NAMES dwarf) 13 | diff -ur a/folly/experimental/exception_tracer/ExceptionTracerLib.cpp b/folly/experimental/exception_tracer/ExceptionTracerLib.cpp 14 | --- a/folly/experimental/exception_tracer/ExceptionTracerLib.cpp 2022-12-24 20:17:25.000000000 +0800 15 | +++ b/folly/experimental/exception_tracer/ExceptionTracerLib.cpp 2022-12-27 16:25:58.444339235 +0800 16 | @@ -98,6 +98,7 @@ 17 | #define __builtin_unreachable() 18 | #endif 19 | 20 | +#if 0 21 | namespace __cxxabiv1 { 22 | 23 | void __cxa_throw( 24 | @@ -156,5 +157,6 @@ 25 | } 26 | 27 | } // namespace std 28 | +#endif 29 | 30 | #endif // defined(__GLIBCXX__) 31 | diff -ur a/CMakeLists.txt b/CMakeLists.txt 32 | --- a/CMakeLists.txt 33 | +++ b/CMakeLists.txt 34 | @@ -77,10 +77,14 @@ set(CMAKE_CXX_STANDARD 17) 35 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 36 | 37 | if("${CMAKE_LIBRARY_ARCHITECTURE}" STREQUAL "") 38 | - # CMAKE_LIBRARY_ARCHITECTURE is not always set, so we have to assume 39 | - # arch might be x86_64 40 | - message(WARNING "CMAKE_LIBRARY_ARCHITECTURE not set, assuming x86_64") 41 | - set(IS_X86_64_ARCH ON) 42 | + if(NOT "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "x86_64") 43 | + set(IS_X86_64_ARCH OFF) 44 | + else() 45 | + # CMAKE_LIBRARY_ARCHITECTURE is not always set, so we have to assume 46 | + # arch might be x86_64 47 | + message(WARNING "CMAKE_LIBRARY_ARCHITECTURE not set, assuming x86_64") 48 | + set(IS_X86_64_ARCH ON) 49 | + endif() 50 | else() 51 | string(FIND "${CMAKE_LIBRARY_ARCHITECTURE}" "x86_64" IS_X86_64_ARCH) 52 | if(IS_X86_64_ARCH STREQUAL "-1") 53 | diff -ur a/folly/system/AtFork.cpp b/folly/system/AtFork.cpp 54 | --- a/folly/system/AtFork.cpp 2022-12-24 20:17:25.000000000 +0800 55 | +++ b/folly/system/AtFork.cpp 2023-12-12 10:44:30.560711808 +0800 56 | @@ -16,6 +16,9 @@ 57 | 58 | #include 59 | 60 | +#include 61 | +#include 62 | + 63 | #include 64 | #include 65 | #include 66 | -------------------------------------------------------------------------------- /project/patches/glog-0.6.0.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/CMakeLists.txt b/CMakeLists.txt 2 | --- a/CMakeLists.txt 2022-04-05 06:03:27.000000000 +0800 3 | +++ b/CMakeLists.txt 2023-08-23 16:32:19.116178558 +0800 4 | @@ -60,11 +60,6 @@ 5 | set (CMAKE_DISABLE_FIND_PACKAGE_Threads ON) 6 | endif (NOT WITH_THREADS) 7 | 8 | -set (CMAKE_C_VISIBILITY_PRESET hidden) 9 | -set (CMAKE_CXX_VISIBILITY_PRESET hidden) 10 | -set (CMAKE_POSITION_INDEPENDENT_CODE ON) 11 | -set (CMAKE_VISIBILITY_INLINES_HIDDEN ON) 12 | - 13 | set (CMAKE_DEBUG_POSTFIX d) 14 | set (CMAKE_THREAD_PREFER_PTHREAD 1) 15 | 16 | -------------------------------------------------------------------------------- /project/patches/libev-4.33.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/Makefile.am b/Makefile.am 2 | --- a/src/Makefile.am 2019-10-31 12:02:23.000000000 +0800 3 | +++ b/src/Makefile.am 2022-05-13 21:03:23.137700100 +0800 4 | @@ -10,11 +10,11 @@ 5 | 6 | man_MANS = ev.3 7 | 8 | -include_HEADERS = ev.h ev++.h event.h 9 | +include_HEADERS = ev.h ev++.h 10 | 11 | lib_LTLIBRARIES = libev.la 12 | 13 | -libev_la_SOURCES = ev.c event.c 14 | +libev_la_SOURCES = ev.c 15 | libev_la_LDFLAGS = -version-info $(VERSION_INFO) 16 | 17 | ev.3: ev.pod 18 | -------------------------------------------------------------------------------- /project/patches/lss-2021-12-20.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vesoft-inc/nebula-third-party/20cb347e012922094321f1f5a29b93c2d8eb0921/project/patches/lss-2021-12-20.tgz -------------------------------------------------------------------------------- /project/patches/proxygen-2022-12-26.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/proxygen/lib/utils/ConsistentHash.h b/proxygen/lib/utils/ConsistentHash.h 2 | --- a/proxygen/lib/utils/ConsistentHash.h 2022-12-25 17:00:33.000000000 +0800 3 | +++ b/proxygen/lib/utils/ConsistentHash.h 2023-12-12 14:23:09.206845550 +0800 4 | @@ -8,6 +8,7 @@ 5 | 6 | #pragma once 7 | 8 | +#include 9 | #include 10 | #include 11 | 12 | diff -ur a/proxygen/lib/utils/RendezvousHash.h b/proxygen/lib/utils/RendezvousHash.h 13 | --- a/proxygen/lib/utils/RendezvousHash.h 2022-12-25 17:00:33.000000000 +0800 14 | +++ b/proxygen/lib/utils/RendezvousHash.h 2023-12-12 14:24:00.470176104 +0800 15 | @@ -9,6 +9,7 @@ 16 | #pragma once 17 | 18 | #include 19 | +#include 20 | #include 21 | #include 22 | 23 | -------------------------------------------------------------------------------- /project/patches/rocksdb-7.8.3.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/table/block_based/data_block_hash_index.h b/table/block_based/data_block_hash_index.h 2 | --- a/table/block_based/data_block_hash_index.h 2022-11-29 22:51:03.000000000 +0800 3 | +++ b/table/block_based/data_block_hash_index.h 2023-12-12 11:06:59.473183192 +0800 4 | @@ -5,6 +5,7 @@ 5 | 6 | #pragma once 7 | 8 | +#include 9 | #include 10 | #include 11 | 12 | diff -ur a/trace_replay/trace_replay.h b/trace_replay/trace_replay.h 13 | --- a/trace_replay/trace_replay.h 2022-11-29 22:51:03.000000000 +0800 14 | +++ b/trace_replay/trace_replay.h 2023-12-12 11:19:17.580647984 +0800 15 | @@ -5,6 +5,7 @@ 16 | 17 | #pragma once 18 | 19 | +#include 20 | #include 21 | #include 22 | #include 23 | diff -ur a/util/string_util.h b/util/string_util.h 24 | --- a/util/string_util.h 2022-11-29 22:51:03.000000000 +0800 25 | +++ b/util/string_util.h 2023-12-12 11:21:51.858138573 +0800 26 | @@ -6,6 +6,7 @@ 27 | 28 | #pragma once 29 | 30 | +#include 31 | #include 32 | #include 33 | #include 34 | -------------------------------------------------------------------------------- /project/patches/s2geometry-0.10.0.patch: -------------------------------------------------------------------------------- 1 | diff --color -ur a/CMakeLists.txt b/CMakeLists.txt 2 | --- a/CMakeLists.txt 2019-03-04 16:53:16.000000000 +0000 3 | +++ b/CMakeLists.txt 2022-09-02 11:53:09.106010146 +0000 4 | @@ -19,7 +19,7 @@ 5 | # undefined symbol errors since ABSL_HAVE_STD_STRING_VIEW etc will 6 | # end up defined differently. There is probably a better way to achieve 7 | # this than assuming what absl used. 8 | -set(CMAKE_CXX_STANDARD 11) 9 | +set(CMAKE_CXX_STANDARD 17) 10 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 11 | # No compiler-specific extensions, i.e. -std=c++11, not -std=gnu++11. 12 | set(CMAKE_CXX_EXTENSIONS OFF) 13 | -------------------------------------------------------------------------------- /project/patches/s2geometry-0.9.0.patch: -------------------------------------------------------------------------------- 1 | diff --color -ur a/CMakeLists.txt b/CMakeLists.txt 2 | --- a/CMakeLists.txt 2019-03-04 16:53:16.000000000 +0000 3 | +++ b/CMakeLists.txt 2022-09-02 11:53:09.106010146 +0000 4 | @@ -13,7 +13,7 @@ 5 | set(CMAKE_MACOSX_RPATH TRUE) 6 | endif() 7 | 8 | -set(CMAKE_CXX_STANDARD 11) 9 | +set(CMAKE_CXX_STANDARD 17) 10 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 11 | # No compiler-specific extensions, i.e. -std=c++11, not -std=gnu++11. 12 | set(CMAKE_CXX_EXTENSIONS OFF) 13 | diff --color -ur a/src/s2/encoded_uint_vector.h b/src/s2/encoded_uint_vector.h 14 | --- a/src/s2/encoded_uint_vector.h 2019-03-04 16:53:16.000000000 +0000 15 | +++ b/src/s2/encoded_uint_vector.h 2022-09-02 11:53:34.894113813 +0000 16 | @@ -20,9 +20,9 @@ 17 | 18 | #include 19 | #include 20 | +#include "s2/util/coding/coder.h" 21 | #include "s2/third_party/absl/base/internal/unaligned_access.h" 22 | #include "s2/third_party/absl/types/span.h" 23 | -#include "s2/util/coding/coder.h" 24 | 25 | namespace s2coding { 26 | -------------------------------------------------------------------------------- /project/patches/snappy-1.1.9.patch: -------------------------------------------------------------------------------- 1 | diff -ur a/CMakeLists.txt b/CMakeLists.txt 2 | --- a/CMakeLists.txt 2021-05-04 15:53:34.000000000 -0700 3 | +++ b/CMakeLists.txt 2021-11-14 09:50:53.929196683 -0800 4 | @@ -51,10 +51,6 @@ 5 | string(REGEX REPLACE "/EH[a-z]+" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") 6 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHs-c-") 7 | add_definitions(-D_HAS_EXCEPTIONS=0) 8 | - 9 | - # Disable RTTI. 10 | - string(REGEX REPLACE "/GR" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") 11 | - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-") 12 | else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") 13 | # Use -Wall for clang and gcc. 14 | if(NOT CMAKE_CXX_FLAGS MATCHES "-Wall") 15 | @@ -76,10 +72,6 @@ 16 | # Disable C++ exceptions. 17 | string(REGEX REPLACE "-fexceptions" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") 18 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") 19 | - 20 | - # Disable RTTI. 21 | - string(REGEX REPLACE "-frtti" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") 22 | - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") 23 | endif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") 24 | 25 | # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to make 26 | --------------------------------------------------------------------------------