@echo off
setlocal
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::: This script setup directories, dependencies for MXNET ::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


:::: Customizable variables ::::


:: conda environment name for MXNET, default to MXNET-vcversion
REM  set MXNET_CONDA_ENV=mxnet

:: which to find MKL, default to openblas installed by conda
:: mkl: download from https://software.intel.com/intel-mkl, install and set following two variables
REM  set INTEL_MKL_DIR=D:\\Intel\\SWTools\\compilers_and_libraries\\windows\\mkl\\

:: where to find cudnn library
REM  set CUDNN_ROOT=D:\NVIDIA\CUDNN\v5.1\

::::  End of customization  ::::


set ECHO_PREFIX=+++++++

set MXNET_SETUP_HAS_CUDA=0
set MXNET_SETUP_HAS_CUDNN=0
:::: validate msvc version  ::::

if "%VisualStudioVersion%" == "" (
  if not "%VS140COMNTOOLS%" == "" ( call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x64 && goto :VS_SETUP)
REM  Not Supported yet due to dependencies
REM  if not "%VS120COMNTOOLS%" == "" ( call "%VS120COMNTOOLS%..\..\VC\vcvarsall.bat" x64 && goto :VS_SETUP)
REM  if not "%VS110COMNTOOLS%" == "" ( call "%VS110COMNTOOLS%..\..\VC\vcvarsall.bat" x64 && goto :VS_SETUP)
REM  if not "%VS100COMNTOOLS%" == "" ( call "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" x64 && goto :VS_SETUP)
REM  if not "%VS90COMNTOOLS%"  == "" ( call "%VS90COMNTOOLS%..\..\VC\vcvarsall.bat"  x64 && goto :VS_SETUP)
)
:VS_SETUP

if "%VisualStudioVersion%" == "" (
  echo %ECHO_PREFIX% Can not find environment variable VisualStudioVersion, msvc is not setup porperly
  echo %ECHO_PREFIX% Please Install Visual Studio from:
  echo %ECHO_PREFIX% https://go.microsoft.com/fwlink/?LinkId=691978&clcid=0x409
  goto :FAIL
)

set MXNET_VS_VERSION=%VisualStudioVersion:.0=%

if "%PreferredToolArchitecture%" == "x64" (
  if "%CommandPromptType%" == "Cross" (
    if "%Platform%" == "ARM" set MXNET_VS_PLATFORM=amd64_arm
    if "%Platform%" == "X86" set MXNET_VS_PLATFORM=amd64_x86
  )
) else (
  if "%CommandPromptType%" == "Cross" (
    if "%Platform%" == "ARM" set MXNET_VS_PLATFORM=x86_arm
    if "%Platform%" == "x64" set MXNET_VS_PLATFORM=x86_amd64
  )
  if "%CommandPromptType%" == "Native" (
    if "%Platform%" == "X64" set MXNET_VS_PLATFORM=x64
  )
  if "%Platform%"   == ""    set MXNET_VS_PLATFORM=x86
)

if     "%MXNET_VS_PLATFORM%" == "x86"                       set MXNET_VS_TARGET=x86
if not "%MXNET_VS_PLATFORM%" == "%MXNET_VS_PLATFORM:_x86=%" set MXNET_VS_TARGET=x86
if not "%MXNET_VS_PLATFORM%" == "%MXNET_VS_PLATFORM:_arm=%" set MXNET_VS_TARGET=arm
if     "%MXNET_VS_TARGET%"   == ""                          set MXNET_VS_TARGET=x64

::::    Setup directories   ::::

set MXNET_DISTRO=%~dp0.
set MXNET_DISTRO=%MXNET_DISTRO%\..
if "%MXNET_INSTALL_DIR%" == "" set MXNET_INSTALL_DIR=%MXNET_DISTRO%\build

echo %ECHO_PREFIX% MXNET will be installed under %MXNET_INSTALL_DIR%, vs%MXNET_VS_VERSION% %MXNET_VS_PLATFORM%

::::   Setup dependencies   ::::

:: has blas/lapack?
if exist %INTEL_MKL_DIR% set MXNET_BLAS=MKL
if "%MXNET_BLAS%" == "" set MXNET_BLAS=Open

:: has cuda?
for /f "delims=" %%i in ('where nvcc') do (
  set NVCC_CMD=%%i
  goto :AFTER_NVCC
)
:AFTER_NVCC
if not "%NVCC_CMD%" == "" set MXNET_SETUP_HAS_CUDA=1

:: has cudnn
if exist %CUDNN_ROOT% set MXNET_SETUP_HAS_CUDNN=1

:: has conda?
for /f "delims=" %%i in ('where conda') do (
  set CONDA_CMD=%%i
  goto :AFTER_CONDA
)
:AFTER_CONDA

if "%CONDA_CMD%" == "" (
  echo %ECHO_PREFIX% Can not find conda, some dependencies can not be resolved
  echo %ECHO_PREFIX% Please install Miniconda with Python 3.5 from here:
  echo %ECHO_PREFIX% http://conda.pydata.org/miniconda.html

  goto :FAIL
)

set MXNET_CONDA_INFO=%TEMP%\check_conda_info_for_MXNET.txt
conda info > %MXNET_CONDA_INFO%
if "%MXNET_VS_TARGET%" == "x64" set MXNET_CONDA_PLATFORM=win-64
if "%MXNET_VS_TARGET%" == "arm" set MXNET_CONDA_PLATFORM=win-64
if "%MXNET_VS_TARGET%" == "x86" set MXNET_CONDA_PLATFORM=win-32

findstr "%MXNET_CONDA_PLATFORM%" "%MXNET_CONDA_INFO%" >nul
if errorlevel 1 (
  echo %ECHO_PREFIX% %MXNET_VS_TARGET% MXNET requires %MXNET_CONDA_PLATFORM% conda, installation will continue without conda
  goto :NO_CONDA
)

if %MXNET_VS_VERSION% GEQ 14 ( set CONDA_VS_VERSION=14&& goto :CONDA_SETUP )
if %MXNET_VS_VERSION% GEQ 10 ( set CONDA_VS_VERSION=10&& goto :CONDA_SETUP )
set CONDA_VS_VERSION=9

:CONDA_SETUP

if "%MXNET_CONDA_ENV%" == "" set MXNET_CONDA_ENV=mxnet-vc%CONDA_VS_VERSION%

echo %ECHO_PREFIX% Createing conda environment '%MXNET_CONDA_ENV%' for MXNET dependencies
conda create -n %MXNET_CONDA_ENV% -c conda-forge vc=%CONDA_VS_VERSION% --yes

set CONDA_DIR=%CONDA_CMD:\Scripts\conda.exe=%
set MXNET_CONDA_LIBRARY=%CONDA_DIR%\envs\%MXNET_CONDA_ENV%\Library
set MXNET_CONDA_LIBRARY=%MXNET_CONDA_LIBRARY:\=\\%
set PATH=%MXNET_CONDA_LIBRARY:\\=\%\bin;%PATH%;
set NEW_PATH=%CONDA_DIR%\Scripts;%MXNET_CONDA_LIBRARY%\bin;%NEW_PATH%

set MXNET_CONDA_PKGS=%TEMP%\check_conda_packages_for_MXNET.txt
conda list -n %MXNET_CONDA_ENV% > %MXNET_CONDA_PKGS%

:: has cmake?
for /f "delims=" %%i in ('where cmake') do (
  set CMAKE_CMD=%%i
  goto :AFTER_CMAKE
)
if "%CMAKE_CMD%" == "" (
  echo %ECHO_PREFIX% Installing cmake by conda
  conda install -n %MXNET_CONDA_ENV% -c conda-forge cmake --yes
)
:AFTER_CMAKE

:: has patch?
for /f "delims=" %%i in ('where patch') do (
  set PATCH_CMD=%%i
  goto :AFTER_PATCH
)
if "%PATCH_CMD%" == "" (
  echo %ECHO_PREFIX% Installing patch by conda
  conda install -n %MXNET_CONDA_ENV% patch --yes
)
:AFTER_PATCH

:: need openblas?
if "%MXNET_BLAS%" == "Open" goto :CONDA_INSTALL_OPENBLAS
goto :AFTER_OPENBLAS

:CONDA_INSTALL_OPENBLAS
findstr "openblas" "%MXNET_CONDA_PKGS%" >nul
if errorlevel 1 (
  echo %ECHO_PREFIX% Installing openblas by conda
  if "%MXNET_VS_TARGET%" == "x64" conda install -n %MXNET_CONDA_ENV% -c ukoethe openblas --yes || goto :Fail
  CALL :PATCH_OPENBLAS
)

if "%MXNET_VS_TARGET%" == "x64" (
  if "%OpenBLAS_INCLUDE_DIR%" == "" set OpenBLAS_INCLUDE_DIR=%MXNET_CONDA_LIBRARY%\\include\\
  if "%OpenBLAS_LIB%" == "" set OpenBLAS_LIB=%MXNET_CONDA_LIBRARY%\\lib\\libopenblas.lib
)
:AFTER_OPENBLAS

if "%MXNET_BLAS%" == "MKL" goto:CONDA_INSTALL_MKL
goto :AFTER_MKL

:CONDA_INSTALL_MKL
if "%MKL_INCLUDE_DIR%" == "" set MKL_INCLUDE_DIR=%INTEL_MKL_DIR%\\include\\
if "%MKL_LIB%" == "" set MKL_LIB=%INTEL_MKL_DIR%\\lib\\
:AFTER_MKL

:: other dependencies
findstr "opencv" "%MXNET_CONDA_PKGS%" >nul
if errorlevel 1 set MXNET_DEPENDENCIES=%MXNET_DEPENDENCIES% opencv
findstr "numpy" "%MXNET_CONDA_PKGS%" >nul
if errorlevel 1 set MXNET_DEPENDENCIES=%MXNET_DEPENDENCIES% numpy
findstr "cython" "%MXNET_CONDA_PKGS%" >nul
if errorlevel 1 set MXNET_DEPENDENCIES=%MXNET_DEPENDENCIES% cython
findstr "numpy" "%MXNET_CONDA_PKGS%" >nul
if errorlevel 1 set MXNET_DEPENDENCIES=%MXNET_DEPENDENCIES% numpy

if not "%MXNET_DEPENDENCIES%" == "" (
  echo %ECHO_PREFIX% Installing %MXNET_DEPENDENCIES% by conda for MXNET
  conda install -n %MXNET_CONDA_ENV% -c conda-forge %MXNET_DEPENDENCIES% --yes
)

:: make symbolic link to workaround opencv cmakefile bug
echo %ECHO_PREFIX% Install symblic link for opencv
mkdir %CONDA_DIR%\envs\x64\vc14\
mklink /D %CONDA_DIR%\envs\x64\vc14\lib %MXNET_CONDA_LIBRARY:\\=\%\lib
mklink /D %CONDA_DIR%\envs\x64\vc14\bin %MXNET_CONDA_LIBRARY:\\=\%\bin

:NO_CONDA
if exist "%MXNET_CONDA_INFO%" del /q %MXNET_CONDA_INFO%
if exist "%MXNET_CONDA_PKGS%" del /q %MXNET_CONDA_PKGS%

::::   download graphviz   ::::

REM echo %ECHO_PREFIX% Downloading graphviz for graph package
REM cd %MXNET_DISTRO%\build
REM wget -nc https://github.com/mahkoCosmo/GraphViz_x64/raw/master/graphviz-2.38_x64.tar.gz --no-check-certificate -O graphviz-2.38_x64.tar.gz
REM 7z x graphviz-2.38_x64.tar.gz -y && 7z x graphviz-2.38_x64.tar -ographviz-2.38_x64 -y >NUL
REM if not exist %MXNET_INSTALL_BIN%\graphviz md %MXNET_INSTALL_BIN%\graphviz
REM copy /y %MXNET_DISTRO%\build\graphviz-2.38_x64\bin\ %MXNET_INSTALL_BIN%\graphviz\

REM set NEW_PATH=%NEW_PATH%;%MXNET_INSTALL_BIN%\graphviz

echo %ECHO_PREFIX% Build libmxnet.dll
cd /D %MXNET_DISTRO%

SET CMAKE_OPT=%CMAKE_OPT% -DUSE_CUDA=%MXNET_SETUP_HAS_CUDA%
SET CMAKE_OPT=%CMAKE_OPT% -DUSE_CUDNN=%MXNET_SETUP_HAS_CUDNN%
if %MXNET_SETUP_HAS_CUDNN%=="1" SET CMAKE_OPT=%CMAKE_OPT% -DCUDNN_ROOT="%CUDNN_ROOT%"
SET CMAKE_OPT=%CMAKE_OPT% -DBLAS="%MXNET_BLAS%"
if "%MXNET_BLAS%"=="Open" SET CMAKE_OPT=%CMAKE_OPT% -DOpenBLAS_HOME="%MXNET_CONDA_LIBRARY%" -DOpenBLAS_INCLUDE_DIR="%OpenBLAS_INCLUDE_DIR%" -DOpenBLAS_LIB="%OpenBLAS_LIB%"
if "%MXNET_BLAS%"=="MKL" SET CMAKE_OPT=%CMAKE_OPT% -DMKL_HOME="%INTEL_MKL_DIR%" -DMKL_INCLUDE_DIR="%MKL_INCLUDE_DIR%" -DMKL_LIB="%MKL_LIB%"

SET CMAKE_OPT=%CMAKE_OPT% -DOpenCV_LIB_PATH="%MXNET_CONDA_LIBRARY%\\lib\\" -DOpenCV_INCLUDE_DIRS="%MXNET_CONDA_LIBRARY%\\include\\" -DOpenCV_CONFIG_PATH="%MXNET_CONDA_LIBRARY%"

cmake -Wno-dev %CMAKE_OPT% -DCMAKE_PREFIX_PATH="%MXNET_CONDA_LIBRARY%" -G "Visual Studio 14 2015 Win64" -DUSE_PROFILER=1 -DCMAKE_BUILD_TYPE=Release -H. -Bbuild
if errorlevel 1 goto :FAIL
msbuild build\mxnet.sln /t:Build /p:Configuration=Release;Platform=x64 /m
if errorlevel 1 goto :FAIL

echo %ECHO_PREFIX% Install libmxnet.dll
cd /D %MXNET_DISTRO%\python
python setup.py install
if errorlevel 1 goto :FAIL

set NEW_PATH=%NEW_PATH:\\=\%
echo %ECHO_PREFIX% Setup succeed!
echo %ECHO_PREFIX% Add the following path to your system path or Run env.cmd per cmd window
echo %NEW_PATH%
echo @SET PATH=%%PATH%%;%NEW_PATH%>%MXNET_DISTRO%\env.cmd
goto :END

:PATCH_OPENBLAS
echo %ECHO_PREFIX% Apply patch to fix openblas 2.15

echo --- openblas_config.h   2016-12-20 11:09:11.722445000 +0800>%TEMP%\openblas.diff
echo +++ openblas_config.h   2016-12-20 11:01:21.347244600 +0800>>%TEMP%\openblas.diff
echo @@ -109,7 +109,7 @@>>%TEMP%\openblas.diff
echo     structure as fallback (see Clause 6.2.5.13 of the C99 standard). */>>%TEMP%\openblas.diff
echo  #if (defined(__STDC_IEC_559_COMPLEX__) ^|^| __STDC_VERSION__ ^>= 199901L ^|^| \>>%TEMP%\openblas.diff
echo       (__GNUC__ ^>= 3 ^&^& !defined(__cplusplus)) ^|^| \>>%TEMP%\openblas.diff
echo -     _MSC_VER ^>= 1800) // Visual Studio 2013 supports complex>>%TEMP%\openblas.diff
echo +     (_MSC_VER ^>= 1800 ^&^& !defined(__cplusplus))) // Visual Studio 2013 supports complex>>%TEMP%\openblas.diff
echo    #define OPENBLAS_COMPLEX_C99>>%TEMP%\openblas.diff
echo  #ifndef __cplusplus>>%TEMP%\openblas.diff
echo    #include ^<complex.h^>>>%TEMP%\openblas.diff
cd /D %MXNET_CONDA_LIBRARY:\\=\%\include
patch -p0 -i %TEMP%\openblas.diff
DEL %TEMP%\openblas.diff
GOTO :eof

:FAIL
echo %ECHO_PREFIX% Setup fail!

:END

