| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #!/usr/bin/env bash
- set -euo pipefail
- ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- cd "$ROOT"
- BUILD_DIR="${BUILD_DIR:-build}"
- DEPS_DIR="${DEPS_DIR:-$ROOT/.deps}"
- JOBS="${JOBS:-$(nproc 2>/dev/null || echo 4)}"
- BIN="$BUILD_DIR/ngs"
- HPSOCKET_GIT="${HPSOCKET_GIT:-https://git.ddtalk.net/1585346868/hpsocket-linux.git}"
- YLIB_GIT="${YLIB_GIT:-https://git.ddtalk.net/1585346868/ylib.git}"
- APT_DEPS=(
- build-essential
- cmake
- pkg-config
- git
- libpcre3-dev
- zlib1g-dev
- libssl-dev
- libsqlite3-dev
- libleveldb-dev
- libmysqlcppconn-dev
- libmysqlclient-dev
- libboost-dev
- libmimalloc-dev
- unixodbc-dev
- libsoci-dev
- libx11-dev
- curl
- tar
- )
- echo "==> apt deps"
- sudo apt-get update -qq
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y "${APT_DEPS[@]}"
- mkdir -p "$DEPS_DIR"
- if [[ ! -e /usr/lib/x86_64-linux-gnu/libhpsocket.a \
- && ! -e /usr/local/lib/libhpsocket.a \
- && ! -e /lib/x86_64-linux-gnu/libhpsocket.a ]]; then
- echo "==> install HPSocket"
- if [[ ! -d "$DEPS_DIR/hpsocket-linux/.git" ]]; then
- rm -rf "$DEPS_DIR/hpsocket-linux"
- git clone --depth 1 "$HPSOCKET_GIT" "$DEPS_DIR/hpsocket-linux"
- fi
- cmake -S "$DEPS_DIR/hpsocket-linux" -B "$DEPS_DIR/hpsocket-linux/build"
- cmake --build "$DEPS_DIR/hpsocket-linux/build" -j"$JOBS"
- sudo cp "$DEPS_DIR/hpsocket-linux/build/libhpsocket.a" /usr/lib/x86_64-linux-gnu/
- sudo rm -rf /usr/local/include/HPSocket
- sudo mkdir -p /usr/local/include/HPSocket
- sudo cp "$DEPS_DIR/hpsocket-linux"/hpsocket/* /usr/local/include/HPSocket/
- fi
- if [[ ! -e /usr/local/lib/libylib.a && ! -e /usr/lib/x86_64-linux-gnu/libylib.a ]]; then
- echo "==> install ylib"
- if [[ ! -d "$DEPS_DIR/ylib/.git" ]]; then
- rm -rf "$DEPS_DIR/ylib"
- git clone --depth 1 "$YLIB_GIT" "$DEPS_DIR/ylib"
- fi
- chmod +x "$DEPS_DIR/ylib/build.sh"
- (cd "$DEPS_DIR/ylib" && ./build.sh)
- fi
- do_build() {
- cmake -S . -B "$BUILD_DIR"
- cmake --build "$BUILD_DIR" -j"$JOBS"
- echo "==> $BIN"
- }
- case "${1:-build}" in
- clean)
- rm -rf "$BUILD_DIR"
- ;;
- rebuild)
- rm -rf "$BUILD_DIR"
- do_build
- ;;
- run)
- shift || true
- [[ -x "$BIN" ]] || do_build
- exec "$BIN" "$@"
- ;;
- build|"")
- do_build
- ;;
- *)
- [[ -x "$BIN" ]] || do_build
- exec "$BIN" "$@"
- ;;
- esac
|