build_cli.sh 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/env bash
  2. set -ex
  3. cd cli
  4. export CARGO_NET_GIT_FETCH_WITH_CLI="true"
  5. export VSCODE_CLI_APP_NAME="$( echo "${APP_NAME}" | awk '{print tolower($0)}' )"
  6. export VSCODE_CLI_BINARY_NAME="$( node -p "require(\"../product.json\").serverApplicationName" )"
  7. TUNNEL_APPLICATION_NAME="$( node -p "require(\"../product.json\").tunnelApplicationName" )"
  8. NAME_SHORT="$( node -p "require(\"../product.json\").nameShort" )"
  9. if [[ "${OS_NAME}" == "osx" ]]; then
  10. if [[ "${VSCODE_ARCH}" == "arm64" ]]; then
  11. VSCODE_CLI_TARGET="aarch64-apple-darwin"
  12. else
  13. VSCODE_CLI_TARGET="x86_64-apple-darwin"
  14. fi
  15. cargo build --release --target "${VSCODE_CLI_TARGET}" --bin=code
  16. cp "target/${VSCODE_CLI_TARGET}/release/code" "../../VSCode-darwin-${VSCODE_ARCH}/${NAME_SHORT}.app/Contents/Resources/app/bin/${TUNNEL_APPLICATION_NAME}"
  17. elif [[ "${OS_NAME}" == "windows" ]]; then
  18. if [[ "${VSCODE_ARCH}" == "arm64" ]]; then
  19. VSCODE_CLI_TARGET="aarch64-pc-windows-msvc"
  20. export VSCODE_CLI_RUST="-C target-feature=+crt-static -Clink-args=/guard:cf -Clink-args=/CETCOMPAT:NO"
  21. else
  22. VSCODE_CLI_TARGET="x86_64-pc-windows-msvc"
  23. export VSCODE_CLI_RUSTFLAGS="-Ctarget-feature=+crt-static -Clink-args=/guard:cf -Clink-args=/CETCOMPAT"
  24. fi
  25. export VSCODE_CLI_CFLAGS="/guard:cf /Qspectre"
  26. rustup target add x86_64-pc-windows-msvc
  27. cargo build --release --target "${VSCODE_CLI_TARGET}" --bin=code
  28. cp "target/${VSCODE_CLI_TARGET}/release/code.exe" "../../VSCode-win32-${VSCODE_ARCH}/bin/${TUNNEL_APPLICATION_NAME}.exe"
  29. else
  30. if [[ "${VSCODE_ARCH}" == "arm64" ]]; then
  31. VSCODE_CLI_TARGET="aarch64-unknown-linux-gnu"
  32. elif [[ "${VSCODE_ARCH}" == "armhf" ]]; then
  33. VSCODE_CLI_TARGET="armv7-unknown-linux-gnueabihf"
  34. elif [[ "${VSCODE_ARCH}" == "x64" ]]; then
  35. VSCODE_CLI_TARGET="x86_64-unknown-linux-gnu"
  36. elif [[ "${VSCODE_ARCH}" == "ppc64le" ]]; then
  37. VSCODE_CLI_TARGET="powerpc64-unknown-linux-gnu"
  38. elif [[ "${VSCODE_ARCH}" == "riscv64" ]]; then
  39. VSCODE_CLI_TARGET="riscv64-unknown-linux-gnu"
  40. elif [[ "${VSCODE_ARCH}" == "loong64" ]]; then
  41. VSCODE_CLI_TARGET="loongarch64-unknown-linux-gnu"
  42. fi
  43. if [[ -n "${VSCODE_CLI_TARGET}" ]]; then
  44. cargo build --release --target "${VSCODE_CLI_TARGET}" --bin=code
  45. cp "target/${VSCODE_CLI_TARGET}/release/code" "../../VSCode-linux-${VSCODE_ARCH}/bin/${TUNNEL_APPLICATION_NAME}"
  46. fi
  47. fi
  48. cd ..