|
- #!/bin/bash
- # Copyright 2020 Huawei Technologies Co., Ltd.
- #
- # Licensed 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.
-
- set -e
-
- SCRIPT_BASEDIR=$(realpath "$(dirname "$0")")
-
- THIRD_PARTY_DIR=$(realpath "$SCRIPT_BASEDIR/../../third_party")
- MINDINSIGHT_DIR=$(realpath "$SCRIPT_BASEDIR/../../mindinsight")
- BUILDDIR="$(dirname "$SCRIPT_BASEDIR")/build_securec"
-
- build_securec() {
- [ -n "$BUILDDIR" ] && rm -rf "$BUILDDIR"
- mkdir "$BUILDDIR"
- cd "$BUILDDIR" || exit
- if ! command -v cmake; then
- command cmake
- fi
- cmake ../..
- make
- }
-
- clean_securec() {
- [ -n "$BUILDDIR" ] && rm -rf "$BUILDDIR"
- }
-
- build_crc32() {
- DATAVISUAL_DIR=$(realpath "$SCRIPT_BASEDIR/../../mindinsight/datavisual")
- CRC32_SOURCE_DIR="$DATAVISUAL_DIR/utils/crc32"
- CRC32_OUTPUT_DIR="$DATAVISUAL_DIR/utils"
- CRC32_SO_FILE="crc32$(python3-config --extension-suffix)"
-
- cd "$CRC32_SOURCE_DIR" || exit
-
- if ! command -v c++; then
- command c++
- fi
-
- if command -v python3; then
- PYTHON=python3
- elif command -v python; then
- PYTHON=python
- else
- command python3
- fi
-
- if ! "$PYTHON" -c 'import sys; assert sys.version_info >= (3, 7)' &>/dev/null; then
- echo "Python 3.7 or higher is required. You are running $("$PYTHON" -V)"
- exit 1
- fi
-
- rm -f "$CRC32_SOURCE_DIR/$CRC32_SO_FILE"
- rm -f "$CRC32_OUTPUT_DIR/$CRC32_SO_FILE"
-
- read -ra PYBIND11_INCLUDES <<< "$($PYTHON -m pybind11 --includes)"
- if [ ! -n "${PYBIND11_INCLUDES[0]}" ]; then
- echo "pybind11 is required"
- exit 1
- fi
-
- c++ -O2 -O3 -shared -std=c++11 -fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 \
- -Wno-maybe-uninitialized -Wno-unused-parameter -Wall -Wl,-z,relro,-z,now,-z,noexecstack \
- -I"$MINDINSIGHT_DIR" -I"$THIRD_PARTY_DIR" "${PYBIND11_INCLUDES[0]}" "${PYBIND11_INCLUDES[1]}" \
- -o "$CRC32_SO_FILE" crc32.cc "$BUILDDIR/libsecurec.a"
-
- if [ ! -f "$CRC32_SO_FILE" ]; then
- echo "$CRC32_SO_FILE file does not exist, build failed"
- exit 1
- fi
-
- mv "$CRC32_SO_FILE" "$CRC32_OUTPUT_DIR"
- }
-
- build_securec
-
- build_crc32
-
- clean_securec
|