xref: /aosp_15_r20/external/pytorch/.ci/pytorch/win-build.sh (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Worker#!/bin/bash
2*da0073e9SAndroid Build Coastguard Worker
3*da0073e9SAndroid Build Coastguard Worker# If you want to rebuild, run this with REBUILD=1
4*da0073e9SAndroid Build Coastguard Worker# If you want to build with CUDA, run this with USE_CUDA=1
5*da0073e9SAndroid Build Coastguard Worker# If you want to build without CUDA, run this with USE_CUDA=0
6*da0073e9SAndroid Build Coastguard Worker
7*da0073e9SAndroid Build Coastguard Workerif [ ! -f setup.py ]; then
8*da0073e9SAndroid Build Coastguard Worker  echo "ERROR: Please run this build script from PyTorch root directory."
9*da0073e9SAndroid Build Coastguard Worker  exit 1
10*da0073e9SAndroid Build Coastguard Workerfi
11*da0073e9SAndroid Build Coastguard Worker
12*da0073e9SAndroid Build Coastguard WorkerSCRIPT_PARENT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
13*da0073e9SAndroid Build Coastguard Worker# shellcheck source=./common.sh
14*da0073e9SAndroid Build Coastguard Workersource "$SCRIPT_PARENT_DIR/common.sh"
15*da0073e9SAndroid Build Coastguard Worker# shellcheck source=./common-build.sh
16*da0073e9SAndroid Build Coastguard Workersource "$SCRIPT_PARENT_DIR/common-build.sh"
17*da0073e9SAndroid Build Coastguard Worker
18*da0073e9SAndroid Build Coastguard Workerexport TMP_DIR="${PWD}/build/win_tmp"
19*da0073e9SAndroid Build Coastguard WorkerTMP_DIR_WIN=$(cygpath -w "${TMP_DIR}")
20*da0073e9SAndroid Build Coastguard Workerexport TMP_DIR_WIN
21*da0073e9SAndroid Build Coastguard Workerexport PYTORCH_FINAL_PACKAGE_DIR=${PYTORCH_FINAL_PACKAGE_DIR:-/c/w/build-results}
22*da0073e9SAndroid Build Coastguard Workerif [[ -n "$PYTORCH_FINAL_PACKAGE_DIR" ]]; then
23*da0073e9SAndroid Build Coastguard Worker    mkdir -p "$PYTORCH_FINAL_PACKAGE_DIR" || true
24*da0073e9SAndroid Build Coastguard Workerfi
25*da0073e9SAndroid Build Coastguard Worker
26*da0073e9SAndroid Build Coastguard Workerexport SCRIPT_HELPERS_DIR=$SCRIPT_PARENT_DIR/win-test-helpers
27*da0073e9SAndroid Build Coastguard Worker
28*da0073e9SAndroid Build Coastguard Workerset +ex
29*da0073e9SAndroid Build Coastguard Workergrep -E -R 'PyLong_(From|As)(Unsigned|)Long\(' --exclude=python_numbers.h --exclude=eval_frame.c torch/
30*da0073e9SAndroid Build Coastguard WorkerPYLONG_API_CHECK=$?
31*da0073e9SAndroid Build Coastguard Workerif [[ $PYLONG_API_CHECK == 0 ]]; then
32*da0073e9SAndroid Build Coastguard Worker  echo "Usage of PyLong_{From,As}{Unsigned}Long API may lead to overflow errors on Windows"
33*da0073e9SAndroid Build Coastguard Worker  echo "because \`sizeof(long) == 4\` and \`sizeof(unsigned long) == 4\`."
34*da0073e9SAndroid Build Coastguard Worker  echo "Please include \"torch/csrc/utils/python_numbers.h\" and use the correspoding APIs instead."
35*da0073e9SAndroid Build Coastguard Worker  echo "PyLong_FromLong -> THPUtils_packInt32 / THPUtils_packInt64"
36*da0073e9SAndroid Build Coastguard Worker  echo "PyLong_AsLong -> THPUtils_unpackInt (32-bit) / THPUtils_unpackLong (64-bit)"
37*da0073e9SAndroid Build Coastguard Worker  echo "PyLong_FromUnsignedLong -> THPUtils_packUInt32 / THPUtils_packUInt64"
38*da0073e9SAndroid Build Coastguard Worker  echo "PyLong_AsUnsignedLong -> THPUtils_unpackUInt32 / THPUtils_unpackUInt64"
39*da0073e9SAndroid Build Coastguard Worker  exit 1
40*da0073e9SAndroid Build Coastguard Workerfi
41*da0073e9SAndroid Build Coastguard Workerset -ex
42*da0073e9SAndroid Build Coastguard Worker
43*da0073e9SAndroid Build Coastguard Worker"$SCRIPT_HELPERS_DIR"/build_pytorch.bat
44*da0073e9SAndroid Build Coastguard Worker
45*da0073e9SAndroid Build Coastguard Workerassert_git_not_dirty
46*da0073e9SAndroid Build Coastguard Worker
47*da0073e9SAndroid Build Coastguard Workerecho "BUILD PASSED"
48