| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #!/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
- libcurl4-openssl-dev
- curl
- tar
- )
- echo "==> apt deps"
- apt-get update -qq
- 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"
- cp "$DEPS_DIR/hpsocket-linux/build/libhpsocket.a" /usr/lib/x86_64-linux-gnu/
- rm -rf /usr/local/include/HPSocket
- mkdir -p /usr/local/include/HPSocket
- 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
|