2023-04-21 14:16:33 +08:00
#!/usr/bin/env bash
# Licensed to the LF AI & Data foundation under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
2024-08-29 14:21:01 +08:00
# Skip the installation and compilation of third-party code,
# if the developer is certain that it has already been done.
if [ [ ${ SKIP_3RDPARTY } -eq 1 ] ] ; then
exit 0
fi
2023-04-21 14:16:33 +08:00
SOURCE = " ${ BASH_SOURCE [0] } "
while [ -h " $SOURCE " ] ; do # resolve $SOURCE until the file is no longer a symlink
DIR = " $( cd -P " $( dirname " $SOURCE " ) " && pwd ) "
SOURCE = " $( readlink " $SOURCE " ) "
[ [ $SOURCE != /* ] ] && SOURCE = " $DIR / $SOURCE " # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
2024-02-20 19:16:52 +08:00
BUILD_OPENDAL = "OFF"
while getopts "o:" arg; do
case $arg in
o)
BUILD_OPENDAL = $OPTARG
; ;
esac
done
2023-04-21 14:16:33 +08:00
ROOT_DIR = " $( cd -P " $( dirname " $SOURCE " ) /.. " && pwd ) "
CPP_SRC_DIR = " ${ ROOT_DIR } /internal/core "
BUILD_OUTPUT_DIR = " ${ ROOT_DIR } /cmake_build "
if [ [ ! -d ${ BUILD_OUTPUT_DIR } ] ] ; then
mkdir ${ BUILD_OUTPUT_DIR }
fi
source ${ ROOT_DIR } /scripts/setenv.sh
pushd ${ BUILD_OUTPUT_DIR }
export CONAN_REVISIONS_ENABLED = 1
2023-08-21 09:56:20 +08:00
export CXXFLAGS = "-Wno-error=address -Wno-error=deprecated-declarations"
export CFLAGS = "-Wno-error=address -Wno-error=deprecated-declarations"
2024-11-06 10:24:30 +08:00
# Determine the Conan remote URL, using the environment variable if set, otherwise defaulting
CONAN_ARTIFACTORY_URL = " ${ CONAN_ARTIFACTORY_URL :- https : //milvus01.jfrog.io/artifactory/api/conan/default-conan-local } "
2023-04-21 14:16:33 +08:00
if [ [ ! ` conan remote list` = = *default-conan-local* ] ] ; then
2024-11-06 10:24:30 +08:00
conan remote add default-conan-local $CONAN_ARTIFACTORY_URL
2023-04-21 14:16:33 +08:00
fi
2024-11-06 10:24:30 +08:00
2023-04-21 14:16:33 +08:00
unameOut = " $( uname -s) "
case " ${ unameOut } " in
Darwin*)
2024-08-08 09:46:22 +08:00
conan install ${ CPP_SRC_DIR } --install-folder conan --build= missing -s compiler = clang -s compiler.version= ${ llvm_version } -s compiler.libcxx= libc++ -s compiler.cppstd= 17 -r default-conan-local -u || { echo 'conan install failed' ; exit 1; }
2023-04-21 14:16:33 +08:00
; ;
Linux*)
echo " Running on ${ OS_NAME } "
export CPU_TARGET = avx
GCC_VERSION = ` gcc -dumpversion`
if [ [ ` gcc -v 2>& 1 | sed -n 's/.*\(--with-default-libstdcxx-abi\)=\(\w*\).*/\2/p' ` = = "gcc4" ] ] ; then
2024-08-08 09:46:22 +08:00
conan install ${ CPP_SRC_DIR } --install-folder conan --build= missing -s compiler.version= ${ GCC_VERSION } -r default-conan-local -u || { echo 'conan install failed' ; exit 1; }
2023-04-21 14:16:33 +08:00
else
2024-08-08 09:46:22 +08:00
conan install ${ CPP_SRC_DIR } --install-folder conan --build= missing -s compiler.version= ${ GCC_VERSION } -s compiler.libcxx= libstdc++11 -r default-conan-local -u || { echo 'conan install failed' ; exit 1; }
2023-04-21 14:16:33 +08:00
fi
; ;
*)
echo "Cannot build on windows"
; ;
esac
popd
2023-11-01 09:00:14 +08:00
2024-02-20 19:16:52 +08:00
mkdir -p ${ ROOT_DIR } /internal/core/output/lib
mkdir -p ${ ROOT_DIR } /internal/core/output/include
2023-11-01 09:00:14 +08:00
2024-02-20 19:16:52 +08:00
pushd ${ ROOT_DIR } /cmake_build/thirdparty
2023-11-01 09:00:14 +08:00
if command -v cargo >/dev/null 2>& 1; then
echo "cargo exists"
2023-12-13 16:34:38 +08:00
unameOut = " $( uname -s) "
case " ${ unameOut } " in
Darwin*)
echo "running on mac os, reinstall rust 1.73"
# github will install rust 1.74 by default.
# https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md
rustup install 1.73
rustup default 1.73; ;
*)
echo "not running on mac os, no need to reinstall rust" ; ;
esac
2023-11-01 09:00:14 +08:00
else
2023-12-13 16:34:38 +08:00
bash -c "curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=1.73 -y" || { echo 'rustup install failed' ; exit 1; }
2023-11-01 09:00:14 +08:00
source $HOME /.cargo/env
fi