CNTK/Dependencies/CNTKCustomMKL/build-windows.cmd

157 строки
3.3 KiB
Batchfile

@echo off
REM
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
echo.
echo This batch file will build a custom MKL dynamic link library for usage by CNTK.
echo.
echo Requirements:
echo - Intel MKL SDK installed on the machine
echo - MKLROOT environment variable is set to the MKL directory inside the Intel MKL SDK
echo - Visual Studio 2015 installed and included in the path
echo.
setlocal enableextensions enabledelayedexpansion
pushd "%~dp0"
if errorlevel 1 (
echo Could not change directory to script location.
exit /b 1
)
if not defined MKLROOT (
echo Error: Environment variable MKLROOT is undefined.
exit /b 1
)
if not exist "%MKLROOT%" (
echo Error: Directory doesn't exist: "%MKLROOT%".
exit /b 1
)
set MKLBUILDERROOT=%MKLROOT%\tools\builder
if not exist "%MKLBUILDERROOT%" (
echo Error: Directory doesn't exist: "%MKLBUILDERROOT%".
exit /b 1
)
where /q nmake.exe
if errorlevel 1 (
echo Error: NMAKE.EXE not in path.
exit /b 1
)
where /q link.exe
if errorlevel 1 (
echo Error: LINK.EXE not in path.
exit /b 1
)
set /p CNTKCUSTOMMKLVERSION=<version.txt
if not defined CNTKCUSTOMMKLVERSION (
echo Cannot determine CNTK custom MKL version.
exit /b 1
)
if exist lib rmdir /s /q lib
if errorlevel 1 exit /b 1
if exist Publish rmdir /s /q Publish
if errorlevel 1 exit /b 1
mkdir Publish\%CNTKCUSTOMMKLVERSION%\x64
echo.
echo Copying "%MKLBUILDERROOT%\lib".
xcopy /s /e /y /i "%MKLBUILDERROOT%\lib" lib
if errorlevel 1 (
exit /b 1
)
echo.
echo Compiling and copying libraries.
for %%t in (
parallel
sequential
) do (
set TFIRSTCHAR=%%t
set TFIRSTCHAR=!TFIRSTCHAR:~0,1!
set LIBBASENAME=mkl_cntk_!TFIRSTCHAR!
echo.
echo Calling NMAKE libintel64 export=functions.txt threading=%%t name=!LIBBASENAME! MKLROOT="%MKLROOT%".
NMAKE /f "%MKLBUILDERROOT%\makefile" ^
libintel64 ^
export=functions.txt ^
threading=%%t ^
name=!LIBBASENAME! ^
MKLROOT="%MKLROOT%"
if errorlevel 1 (
echo Error: NMAKE.exe for threading=%%t failed.
exit /b 1
)
mkdir Publish\%CNTKCUSTOMMKLVERSION%\x64\%%t
if errorlevel 1 exit /b 1
move !LIBBASENAME!.dll Publish\%CNTKCUSTOMMKLVERSION%\x64\%%t
if errorlevel 1 exit /b 1
move !LIBBASENAME!.lib Publish\%CNTKCUSTOMMKLVERSION%\x64\%%t
if errorlevel 1 exit /b 1
del !LIBBASENAME!*
if errorlevel 1 exit /b 1
@REM TODO manifest?
)
echo.
echo Copying libiomp5md.dll.
copy "%MKLROOT%\..\redist\intel64_win\compiler\libiomp5md.dll" Publish\%CNTKCUSTOMMKLVERSION%\x64\parallel
if errorlevel 1 (
exit /b 1
)
echo.
echo Removing LIB directory.
rmdir /s /q lib
if errorlevel 1 exit /b 1
echo.
echo Copying include files to Publish\%CNTKCUSTOMMKLVERSION%\include.
mkdir Publish\%CNTKCUSTOMMKLVERSION%\include
for /f %%h in (headers.txt) do (
copy "%MKLROOT%\include\%%h" Publish\%CNTKCUSTOMMKLVERSION%\include
if errorlevel 1 (
echo Failed to copy "%MKLROOT%\include\%%h".
exit /b 1
)
)
copy README-for-redistributable.txt Publish\%CNTKCUSTOMMKLVERSION%\README.txt
if errorlevel 1 (
echo Failed to copy README.
exit /b 1
)
copy ..\..\LICENSE.md Publish\%CNTKCUSTOMMKLVERSION%
if errorlevel 1 (
echo Failed to copy LICENSE.md.
exit /b 1
)
popd