blob: fc853b2201e7847c7d372822540f99e5bce2c9c5 [file] [log] [blame]
:: @echo off
cd "%~dp0/.."
set BASE_DIR=%cd:\=/%
set TORCH_LIB_DIR=%cd:\=/%/torch/lib
set INSTALL_DIR=%cd:\=/%/torch/lib/tmp_install
set THIRD_PARTY_DIR=%cd:\=/%/third_party
set PATH=%INSTALL_DIR%/bin;%PATH%
set BASIC_C_FLAGS= /DTH_INDEX_BASE=0 /I%INSTALL_DIR%/include /I%INSTALL_DIR%/include/TH /I%INSTALL_DIR%/include/THC /I%INSTALL_DIR%/include/THS /I%INSTALLDIR%/include/THCS /I%INSTALLDIR%/include/THPP /I%INSTALLDIR%/include/THNN /I%INSTALLDIR%/include/THCUNN
set BASIC_CUDA_FLAGS= -DTH_INDEX_BASE=0 -I%INSTALL_DIR%/include -I%INSTALL_DIR%/include/TH -I%INSTALL_DIR%/include/THC -I%INSTALL_DIR%/include/THS -I%INSTALLDIR%/include/THCS -I%INSTALLDIR%/include/THPP -I%INSTALLDIR%/include/THNN -I%INSTALLDIR%/include/THCUNN
set LDFLAGS=/LIBPATH:%INSTALL_DIR%/lib
:: set TORCH_CUDA_ARCH_LIST=6.1
set CWRAP_FILES=%BASE_DIR%/torch/lib/ATen/Declarations.cwrap;%BASE_DIR%/torch/lib/ATen/Local.cwrap;%BASE_DIR%/torch/lib/THNN/generic/THNN.h;%BASE_DIR%/torch/lib/THCUNN/generic/THCUNN.h;%BASE_DIR%/torch/lib/ATen/nn.yaml
set C_FLAGS=%BASIC_C_FLAGS% /D_WIN32 /Z7 /EHa /DNOMINMAX
set LINK_FLAGS=/DEBUG:FULL
mkdir torch/lib/tmp_install
IF "%~1"=="--with-cuda" (
set /a NO_CUDA=0
shift
) ELSE (
set /a NO_CUDA=1
)
IF "%~1"=="--with-nnpack" (
set /a NO_NNPACK=0
shift
) ELSE (
set /a NO_NNPACK=1
)
set BUILD_TYPE=Release
IF "%DEBUG%"=="1" (
set BUILD_TYPE=Debug
)
IF "%REL_WITH_DEB_INFO%"=="1" (
set BUILD_TYPE=RelWithDebInfo
)
IF NOT DEFINED MAX_JOBS (
set MAX_JOBS=%NUMBER_OF_PROCESSORS%
)
IF "%CMAKE_GENERATOR%"=="" (
set CMAKE_GENERATOR_COMMAND=
set MAKE_COMMAND=msbuild INSTALL.vcxproj /p:Configuration=Release
) ELSE (
set CMAKE_GENERATOR_COMMAND=-G "%CMAKE_GENERATOR%"
IF "%CMAKE_GENERATOR%"=="Ninja" (
IF "%CC%"== "" set CC=cl.exe
IF "%CXX%"== "" set CXX=cl.exe
set MAKE_COMMAND=cmake --build . --target install --config %BUILD_TYPE% -- -j%MAX_JOBS%
) ELSE (
set MAKE_COMMAND=msbuild INSTALL.vcxproj /p:Configuration=%BUILD_TYPE%
)
)
:read_loop
if "%1"=="" goto after_loop
if "%1"=="ATen" (
cd aten
call:build_aten %~1
cd ..
) ELSE (
set "IS_OURS="
IF "%1"=="THD" set IS_OURS=1
IF "%1"=="libshm_windows" set IS_OURS=1
if defined IS_OURS (
cd torch\lib
call:build %~1
cd ..\..
) ELSE (
cd third_party
call:build %~1
cd ..
)
)
shift
goto read_loop
:after_loop
cd torch/lib
copy /Y tmp_install\lib\* .
IF EXIST ".\tmp_install\bin" (
copy /Y tmp_install\bin\* .
)
xcopy /Y /E tmp_install\include\*.* include\*.*
xcopy /Y ..\..\aten\src\THNN\generic\THNN.h .
xcopy /Y ..\..\aten\src\THCUNN\generic\THCUNN.h .
cd ..\..
goto:eof
:build
@setlocal
IF NOT "%PREBUILD_COMMAND%"=="" call "%PREBUILD_COMMAND%" %PREBUILD_COMMAND_ARGS%
mkdir build\%~1
cd build/%~1
cmake ../../%~1 %CMAKE_GENERATOR_COMMAND% ^
-DCMAKE_MODULE_PATH=%BASE_DIR%/cmake/FindCUDA ^
-DTorch_FOUND="1" ^
-DCMAKE_INSTALL_PREFIX="%INSTALL_DIR%" ^
-DCMAKE_C_FLAGS="%C_FLAGS%" ^
-DCMAKE_SHARED_LINKER_FLAGS="%LINK_FLAGS%" ^
-DCMAKE_CXX_FLAGS="%C_FLAGS% %CPP_FLAGS%" ^
-DCUDA_NVCC_FLAGS="%BASIC_CUDA_FLAGS%" ^
-Dcwrap_files="%CWRAP_FILES%" ^
-DTH_INCLUDE_PATH="%INSTALL_DIR%/include" ^
-DTH_LIB_PATH="%INSTALL_DIR%/lib" ^
-DTH_LIBRARIES="%INSTALL_DIR%/lib/ATen.lib" ^
-DTHS_LIBRARIES="%INSTALL_DIR%/lib/ATen.lib" ^
-DTHC_LIBRARIES="%INSTALL_DIR%/lib/ATen.lib" ^
-DTHCS_LIBRARIES="%INSTALL_DIR%/lib/ATen.lib" ^
-DATEN_LIBRARIES="%INSTALL_DIR%/lib/ATen.lib" ^
-DTHNN_LIBRARIES="%INSTALL_DIR%/lib/ATen.lib" ^
-DTHCUNN_LIBRARIES="%INSTALL_DIR%/lib/ATen.lib" ^
-DTH_SO_VERSION=1 ^
-DTHC_SO_VERSION=1 ^
-DTHNN_SO_VERSION=1 ^
-DTHCUNN_SO_VERSION=1 ^
-DNO_CUDA=%NO_CUDA% ^
-DNO_NNPACK=%NO_NNPACK% ^
-Dnanopb_BUILD_GENERATOR=0 ^
-DCMAKE_BUILD_TYPE=%BUILD_TYPE%
%MAKE_COMMAND%
IF NOT %ERRORLEVEL%==0 exit 1
cd ../..
@endlocal
goto:eof
:build_aten
@setlocal
IF NOT "%PREBUILD_COMMAND%"=="" call "%PREBUILD_COMMAND%" %PREBUILD_COMMAND_ARGS%
mkdir build
cd build
cmake .. %CMAKE_GENERATOR_COMMAND% ^
-DCMAKE_INSTALL_PREFIX="%INSTALL_DIR%" ^
-DNO_CUDA=%NO_CUDA% ^
-DNO_NNPACK=%NO_NNPACK% ^
-DCUDNN_INCLUDE_DIR="%CUDNN_INCLUDE_DIR%" ^
-DCUDNN_LIB_DIR="%CUDNN_LIB_DIR%" ^
-DCUDNN_LIBRARY="%CUDNN_LIBRARY%" ^
-DCMAKE_BUILD_TYPE=%BUILD_TYPE%
%MAKE_COMMAND%
IF NOT %ERRORLEVEL%==0 exit 1
cd ..
@endlocal
goto:eof