164 строки
5.3 KiB
Batchfile
164 строки
5.3 KiB
Batchfile
@echo off
|
|
setlocal enabledelayedexpansion
|
|
|
|
REM Copyright (c) Microsoft. All rights reserved.
|
|
REM
|
|
REM Licensed under the MIT license. See LICENSE.md file in the project root
|
|
REM for full license information.
|
|
REM ==============================================================================
|
|
|
|
REM Grab the parameters
|
|
REM
|
|
REM Note: don't rely on environment variables, since properties may have been
|
|
REM overridden at msbuild invocation.
|
|
|
|
set p_OutDir=%~1
|
|
set p_DebugBuild=%~2
|
|
set p_GpuBuild=%~3
|
|
set p_CNTK_VERSION=%~4
|
|
shift
|
|
set p_CNTK_VERSION_BANNER=%~4
|
|
shift
|
|
set p_CNTK_COMPONENT_VERSION=%~4
|
|
set p_SWIG_PATH=%~5
|
|
set p_CNTK_PYTHON_WITH_DEPS=%~6
|
|
shift
|
|
set p_CNTK_PY_VERSIONS=%~6
|
|
set p_CNTK_PY27_PATH=%~7
|
|
set p_CNTK_PY34_PATH=%~8
|
|
set p_CNTK_PY35_PATH=%~9
|
|
shift
|
|
set p_CNTK_PY36_PATH=%~9
|
|
|
|
REM Construct p_CNTK_PY_VERSIONS if not explicitly defined
|
|
REM (Note: to disable Python build completely, no CNTK_PYx_PATH variable must be defined)
|
|
if not defined p_CNTK_PY_VERSIONS (
|
|
REM Note: leading space doesn't hurt
|
|
if defined p_CNTK_PY27_PATH set p_CNTK_PY_VERSIONS=!p_CNTK_PY_VERSIONS! 27
|
|
if defined p_CNTK_PY34_PATH set p_CNTK_PY_VERSIONS=!p_CNTK_PY_VERSIONS! 34
|
|
if defined p_CNTK_PY35_PATH set p_CNTK_PY_VERSIONS=!p_CNTK_PY_VERSIONS! 35
|
|
if defined p_CNTK_PY36_PATH set p_CNTK_PY_VERSIONS=!p_CNTK_PY_VERSIONS! 36
|
|
)
|
|
|
|
REM Validate p_CNTK_PY_VERSIONS contents.
|
|
for %%p in (%p_CNTK_PY_VERSIONS%) do (
|
|
if not "%%~p" == "27" if not "%%~p" == "34" if not "%%~p" == "35" if not "%%~p" == "36" echo Build for unsupported Python version '%%~p' requested, stopping&exit /b 1
|
|
)
|
|
|
|
REM Validate p_CNTK_PY_VERSIONS contents.
|
|
REM (Note: Don't merge with above loop; more robust parsing)
|
|
set nothingToBuild=1
|
|
for %%p in (%p_CNTK_PY_VERSIONS%) do (
|
|
call set extraPath=!p_CNTK_PY%%~p_PATH!
|
|
if not defined extraPath echo Build for Python version '%%~p' requested, but CNTK_PY%%~p_PATH not defined, stopping&exit /b 1
|
|
set nothingToBuild=
|
|
)
|
|
if defined nothingToBuild echo Python support not configured to build.&exit /b 0
|
|
|
|
if "%p_DebugBuild%" == "true" echo Currently no Python build for Debug configurations, exiting.&exit /b 0
|
|
|
|
if not defined VS2017INSTALLDIR (
|
|
@echo Environment variable VS2017INSTALLDIR not defined.
|
|
@echo Make sure Visual Studion 2017 is installed.
|
|
exit /b 1
|
|
)
|
|
|
|
REM vcvarsall.bat scripts changes current working directory,
|
|
REM so we need to save it and restore it afterwards
|
|
pushd .
|
|
if not exist "%VS2017INSTALLDIR%\VC\Auxiliary\build\vcvarsall.bat" (
|
|
echo Error: "%VS2017INSTALLDIR%\VC\Auxiliary\build\vcvarsall.bat" not found.
|
|
echo Make sure you have installed Visual Studion 2017 correctly.
|
|
exit /b 1
|
|
)
|
|
call "%VS2017INSTALLDIR%\VC\Auxiliary\build\vcvarsall.bat" amd64 -vcvars_ver=14.11
|
|
popd
|
|
|
|
set CNTK_LIB_PATH=%p_OutDir%
|
|
|
|
set DIST_DIR=%p_OutDir%\Python
|
|
set PATH=%p_SWIG_PATH%;%PATH%
|
|
set CNTK_VERSION=%p_CNTK_VERSION%
|
|
set CNTK_VERSION_BANNER=%p_CNTK_VERSION_BANNER%
|
|
set CNTK_COMPONENT_VERSION=%p_CNTK_COMPONENT_VERSION%
|
|
set MSSdk=1
|
|
set DISTUTILS_USE_SDK=1
|
|
|
|
pushd "%CNTK_LIB_PATH%"
|
|
if errorlevel 1 echo Cannot change directory.&exit /b 1
|
|
|
|
set CNTK_LIBRARIES=
|
|
for %%D in (
|
|
Cntk.Composite-%CNTK_COMPONENT_VERSION%.dll
|
|
Cntk.Core-%CNTK_COMPONENT_VERSION%.dll
|
|
Cntk.Deserializers.Binary-%CNTK_COMPONENT_VERSION%.dll
|
|
Cntk.Deserializers.HTK-%CNTK_COMPONENT_VERSION%.dll
|
|
Cntk.Deserializers.TextFormat-%CNTK_COMPONENT_VERSION%.dll
|
|
Cntk.Math-%CNTK_COMPONENT_VERSION%.dll
|
|
Cntk.ExtensibilityExamples-%CNTK_COMPONENT_VERSION%.dll
|
|
Cntk.PerformanceProfiler-%CNTK_COMPONENT_VERSION%.dll
|
|
Cntk.DelayLoadedExtensions-%CNTK_COMPONENT_VERSION%.dll
|
|
libiomp5md.dll
|
|
mklml.dll
|
|
) do (
|
|
if defined CNTK_LIBRARIES (
|
|
set CNTK_LIBRARIES=!CNTK_LIBRARIES!;%CNTK_LIB_PATH%\%%D
|
|
) else (
|
|
set CNTK_LIBRARIES=%CNTK_LIB_PATH%\%%D
|
|
)
|
|
)
|
|
|
|
@REM mkldnn.dll is optional
|
|
if exist mkldnn.dll (
|
|
set CNTK_LIBRARIES=!CNTK_LIBRARIES!;%CNTK_LIB_PATH%\mkldnn.dll
|
|
)
|
|
|
|
@REM Cntk.BinaryConvolution-%CNTK_COMPONENT_VERSION%.dll is optional
|
|
if exist Cntk.BinaryConvolution-%CNTK_COMPONENT_VERSION%.dll (
|
|
set CNTK_LIBRARIES=!CNTK_LIBRARIES!;%CNTK_LIB_PATH%\Cntk.BinaryConvolution-%CNTK_COMPONENT_VERSION%.dll
|
|
)
|
|
|
|
@REM Cntk.Deserializers.Image-%CNTK_COMPONENT_VERSION%.dll (plus dependencies) is optional
|
|
if exist Cntk.Deserializers.Image-%CNTK_COMPONENT_VERSION%.dll for %%D in (
|
|
Cntk.Deserializers.Image-%CNTK_COMPONENT_VERSION%.dll
|
|
opencv_world*.dll
|
|
zip.dll
|
|
zlib.dll
|
|
) do set CNTK_LIBRARIES=!CNTK_LIBRARIES!;%CNTK_LIB_PATH%\%%D
|
|
|
|
if /i %p_GpuBuild% equ true for %%D in (
|
|
cublas64_*.dll
|
|
cudart64_*.dll
|
|
cudnn64_*.dll
|
|
curand64_*.dll
|
|
cusparse64_*.dll
|
|
nvml.dll
|
|
) do (
|
|
set CNTK_LIBRARIES=!CNTK_LIBRARIES!;%CNTK_LIB_PATH%\%%D
|
|
)
|
|
|
|
set PYTHON_PROJECT_NAME=cntk
|
|
if /i %p_GpuBuild% equ true (
|
|
set PYTHON_PROJECT_NAME=cntk-gpu
|
|
)
|
|
|
|
set PYTHON_WITH_DEPS=
|
|
if /i %p_CNTK_PYTHON_WITH_DEPS% equ true (
|
|
set PYTHON_WITH_DEPS="--with-deps"
|
|
)
|
|
|
|
popd
|
|
if errorlevel 1 echo Cannot restore directory.&exit /b 1
|
|
|
|
REM Build everything in supplied order
|
|
set oldPath=%PATH%
|
|
for %%p in (%p_CNTK_PY_VERSIONS%) do (
|
|
call set extraPath=!p_CNTK_PY%%~p_PATH!
|
|
echo Building for Python version '%%~p', extra path is !extraPath!
|
|
set PATH=!extraPath!;!oldPath!
|
|
python.exe .\setup.py --project-name %PYTHON_PROJECT_NAME% %PYTHON_WITH_DEPS% ^
|
|
build_ext --inplace --force --compiler msvc --plat-name=win-amd64 ^
|
|
bdist_wheel --dist-dir "%DIST_DIR%"
|
|
if errorlevel 1 exit /b 1
|
|
)
|