0030574: Configuration, genproj - CSF_DEFINES is not reset at the beginning of env.bat
[occt.git] / adm / templates / env.bat
index 38dd5ae..57d4486 100644 (file)
@@ -11,33 +11,33 @@ set "SCRIPTROOT=%~dp0"
 set "SCRIPTROOT=%SCRIPTROOT:~0,-1%"
 
 rem ----- Reset values to defaults -----
-set "CASROOT=__CASROOT__"
 set "CASDEB="
-set "VCVER=vc8"
-set "ARCH=32"
+set "VCVER=vc10"
+set "ARCH=64"
 set "VCVARS="
 set "HAVE_TBB=false"
 set "HAVE_OPENCL=false"
 set "HAVE_FREEIMAGE=false"
-set "HAVE_GL2PS=false"
+set "HAVE_FFMPEG=false"
 set "HAVE_VTK=false"
+set "HAVE_GLES2=false"
 set "HAVE_D3D=false"
+set "HAVE_ZLIB=false"
+set "HAVE_LIBLZMA=false"
 set "CSF_OPT_INC="
 set "CSF_OPT_LIB32="
 set "CSF_OPT_LIB64="
 set "CSF_OPT_BIN32="
 set "CSF_OPT_BIN64="
+set "CSF_DEFINES=%CSF_DEFINES_EXTRA%"
+
+if not ["%CASROOT%"] == [""] if exist "%SCRIPTROOT%\%CASROOT%" set "CASROOT=%SCRIPTROOT%\%CASROOT%"
+if     ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
 
 rem ----- Load local settings -----
-if not ["%CASROOT%"] == [""] if exist "%CASROOT%\custom.bat" (
+if exist "%CASROOT%\custom.bat" (
   call "%CASROOT%\custom.bat" %1 %2 %3 %4 %5
 )
-if exist "%~dp0custom.bat" (
-  call "%~dp0custom.bat" %1 %2 %3 %4 %5
-)
-
-if not ["%CASROOT%"] == [""] if exist "%SCRIPTROOT%\%CASROOT%" set "CASROOT=%SCRIPTROOT%\%CASROOT%"
-if     ["%CASROOT%"] == [""] set "CASROOT=%SCRIPTROOT%"
 
 rem ----- Read script arguments (override local settings) -----
 if not ["%1"]    == [""]      set "VCVER=%1"
@@ -49,35 +49,120 @@ if /I ["%3"]     == ["d"]     set "CASDEB=d"
 if /I ["%3"]     == ["i"]     set "CASDEB=i"
 if /I ["%3"]     == ["relwithdeb"] set "CASDEB=i"
 
-set "CSF_OPT_INC=%CSF_OPT_INC%;%CASROOT%\inc"
-set "CSF_OPT_LIB32D=%CSF_OPT_LIB32%;%CASROOT%\win32\%VCVER%\libd"
-set "CSF_OPT_LIB64D=%CSF_OPT_LIB64%;%CASROOT%\win64\%VCVER%\libd"
-set "CSF_OPT_BIN32D=%CSF_OPT_BIN32%;%CASROOT%\win32\%VCVER%\bind"
-set "CSF_OPT_BIN64D=%CSF_OPT_BIN64%;%CASROOT%\win64\%VCVER%\bind"
-set "CSF_OPT_LIB32I=%CSF_OPT_LIB32%;%CASROOT%\win32\%VCVER%\libi"
-set "CSF_OPT_LIB64I=%CSF_OPT_LIB64%;%CASROOT%\win64\%VCVER%\libi"
-set "CSF_OPT_BIN32I=%CSF_OPT_BIN32%;%CASROOT%\win32\%VCVER%\bini"
-set "CSF_OPT_BIN64I=%CSF_OPT_BIN64%;%CASROOT%\win64\%VCVER%\bini"
-set "CSF_OPT_LIB32=%CSF_OPT_LIB32%;%CASROOT%\win32\%VCVER%\lib"
-set "CSF_OPT_LIB64=%CSF_OPT_LIB64%;%CASROOT%\win64\%VCVER%\lib"
-set "CSF_OPT_BIN32=%CSF_OPT_BIN32%;%CASROOT%\win32\%VCVER%\bin"
-set "CSF_OPT_BIN64=%CSF_OPT_BIN64%;%CASROOT%\win64\%VCVER%\bin"
+rem Decode VCVER variable and define related ones:
+rem
+rem VCFMT - "vc" followed by full version number of Visual Studio toolset
+rem         (same as VCVER without optional suffix "-uwp")
+rem VCLIB - name of folder contining binaries
+rem         (same as VCVER except without third version in number)
+rem VCPROP - name of required Visual Studion Workload (starting with VS 2017)
+rem
+rem Note that for VS before 2015 (vc14) always
+rem VCFMT=VCLIB=VCVER and VCPROP=NativeDesktop
+
+rem Since VS 2017, environment variables like VS100COMNTOOLS are not defined 
+rem any more, we can only use vswhere.exe tool to find Visual Studio.
+rem Add path to vswhere.exe
+set "PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"
+
+rem for vc10-12, interpretation is trivial
+set VCFMT=%VCVER%
+set VCLIB=%VCVER:~0,4%
+set VCPROP=NativeDesktop
+rem vc14 and later can have optional suffix "-uwp"
+if "%VCVER:~-4%" == "-uwp" (
+  set VCFMT=%VCVER:~0,-4%
+  set VCLIB=%VCLIB%-uwp
+  set VCPROP=Universal
+)
+rem echo VCVER=%VCVER% VCFMT=%VCFMT% VCLIB=%VCLIB% VCPROP=%VCPROP%
+
+rem ----- Parsing of Visual Studio platform -----
+set "VisualStudioExpressName=VCExpress"
+
+if not "%DevEnvDir%" == "" (
+  rem If DevEnvDir is already defined (e.g. in custom.bat), use that value
+) else if /I "%VCFMT%" == "vc9" (
+  set "DevEnvDir=%VS90COMNTOOLS%..\IDE"
+) else if /I "%VCFMT%" == "vc10" (
+  set "DevEnvDir=%VS100COMNTOOLS%..\IDE"
+) else if /I "%VCFMT%" == "vc11" (
+  set "DevEnvDir=%VS110COMNTOOLS%..\IDE"
+  rem Visual Studio Express starting from VS 2012 is called "for Windows Desktop"
+  rem and has a new name for executable - WDExpress
+  set "VisualStudioExpressName=WDExpress"
+) else if /I "%VCFMT%" == "vc12" (
+  set "DevEnvDir=%VS120COMNTOOLS%..\IDE"
+  set "VisualStudioExpressName=WDExpress"
+) else if /I "%VCFMT%" == "vc14" (
+  set "DevEnvDir=%VS140COMNTOOLS%..\IDE"
+) else if /I "%VCFMT%" == "vc141" (
+  for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
+    set "DevEnvDir=%%i\Common7\IDE\"
+  )
+) else if /I "%VCFMT%" == "gcc" (
+  rem MinGW
+) else (
+  echo Error: first argument ^(%VCVER%^) should specify supported version of Visual C++, 
+  echo one of: 
+  echo vc9   = VS 2008 ^(SP1^)
+  echo vc10  = VS 2010 ^(SP3^)
+  echo vc11  = VS 2012 ^(SP3^)
+  echo vc12  = VS 2013 ^(SP3^)
+  echo vc14  = VS 2015
+  echo vc141 = VS 2017
+  exit /B
+)
+
+rem ----- Parsing vcvarsall for qt samples and define PlatformToolset -----
+if /I "%VCFMT%" == "vc9" (
+  set "VCVARS=%VS90COMNTOOLS%..\..\VC\vcvarsall.bat"
+  set "VCPlatformToolSet=v90"
+) else if /I "%VCFMT%" == "vc10" (
+  set "VCVARS=%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
+  set "VCPlatformToolSet=v100"
+) else if /I "%VCFMT%" == "vc11" (
+  set "VCVARS=%VS110COMNTOOLS%..\..\VC\vcvarsall.bat"
+  set "VCPlatformToolSet=v110"
+) else if /I "%VCFMT%" == "vc12" (
+  set "VCVARS=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat"
+  set "VCPlatformToolSet=v120"
+) else if /I "%VCFMT%" == "vc14" (
+  set "VCVARS=%VS140COMNTOOLS%..\..\VC\vcvarsall.bat"
+  set "VCPlatformToolSet=v140"
+) else if /I "%VCFMT%" == "vc141" (
+  for /f "usebackq delims=" %%i in (`vswhere.exe -version "[15.0,15.99]" -requires Microsoft.VisualStudio.Workload.%VCPROP% -property installationPath`) do (
+    set "VCVARS=%%i\VC\Auxiliary\Build\vcvarsall.bat"
+  )
+  set "VCPlatformToolSet=v141"
+) else if /I "%VCFMT%" == "gcc" (
+  rem MinGW
+) else (
+  echo Error: wrong VS identifier
+  exit /B
+)
+
+set "CSF_OPT_LIB32D=%CSF_OPT_LIB32%"
+set "CSF_OPT_LIB64D=%CSF_OPT_LIB64%"
+set "CSF_OPT_BIN32D=%CSF_OPT_BIN32%"
+set "CSF_OPT_BIN64D=%CSF_OPT_BIN64%"
+set "CSF_OPT_LIB32I=%CSF_OPT_LIB32%"
+set "CSF_OPT_LIB64I=%CSF_OPT_LIB64%"
+set "CSF_OPT_BIN32I=%CSF_OPT_BIN32%"
+set "CSF_OPT_BIN64I=%CSF_OPT_BIN64%"
 
 rem ----- Optional 3rd-parties should be enabled by HAVE macros -----
 set "CSF_OPT_CMPL="
 set "PRODUCTS_DEFINES="
-if ["%HAVE_TBB%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_TBB"
-if ["%HAVE_OPENCL%"]    == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_OPENCL"
-if ["%HAVE_GL2PS%"]     == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_GL2PS"
-if ["%HAVE_FREEIMAGE%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FREEIMAGE"
-if ["%HAVE_VTK%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_VTK"
-if ["%HAVE_D3D%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_D3D"
-if ["%HAVE_TBB%"]       == ["true"] set "CSF_DEFINES=HAVE_TBB;%CSF_DEFINES%"
-if ["%HAVE_OPENCL%"]    == ["true"] set "CSF_DEFINES=HAVE_OPENCL;%CSF_DEFINES%"
-if ["%HAVE_GL2PS%"]     == ["true"] set "CSF_DEFINES=HAVE_GL2PS;%CSF_DEFINES%"
-if ["%HAVE_FREEIMAGE%"] == ["true"] set "CSF_DEFINES=HAVE_FREEIMAGE;%CSF_DEFINES%"
-if ["%HAVE_VTK%"]       == ["true"] set "CSF_DEFINES=HAVE_VTK;%CSF_DEFINES%"
-if ["%HAVE_D3D%"]       == ["true"] set "CSF_DEFINES=HAVE_D3D;%CSF_DEFINES%"
+if ["%HAVE_TBB%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_TBB"       & set "CSF_DEFINES=HAVE_TBB;%CSF_DEFINES%"
+if ["%HAVE_OPENCL%"]    == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_OPENCL"    & set "CSF_DEFINES=HAVE_OPENCL;%CSF_DEFINES%"
+if ["%HAVE_FREEIMAGE%"] == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FREEIMAGE" & set "CSF_DEFINES=HAVE_FREEIMAGE;%CSF_DEFINES%"
+if ["%HAVE_FFMPEG%"]    == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_FFMPEG"    & set "CSF_DEFINES=HAVE_FFMPEG;%CSF_DEFINES%"
+if ["%HAVE_VTK%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_VTK"       & set "CSF_DEFINES=HAVE_VTK;%CSF_DEFINES%"
+if ["%HAVE_GLES2%"]     == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_GLES2"     & set "CSF_DEFINES=HAVE_GLES2;%CSF_DEFINES%"
+if ["%HAVE_D3D%"]       == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_D3D"       & set "CSF_DEFINES=HAVE_D3D;%CSF_DEFINES%"
+if ["%HAVE_ZLIB%"]      == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_ZLIB"      & set "CSF_DEFINES=HAVE_ZLIB;%CSF_DEFINES%"
+if ["%HAVE_LIBLZMA%"]   == ["true"] set "PRODUCTS_DEFINES=%PRODUCTS_DEFINES% -DHAVE_LIBLZMA"   & set "CSF_DEFINES=HAVE_LIBLZMA;%CSF_DEFINES%"
 
 rem Eliminate VS warning
 if ["%CSF_DEFINES%"]  == [""] set "CSF_DEFINES=;"
@@ -112,46 +197,49 @@ set "CSF_OPT_LNK64D=%CSF_OPT_LNK64D% %OPT_LIB64%"
 set "CSF_OPT_LNK32I=%CSF_OPT_LNK32I% %OPT_LIB32%"
 set "CSF_OPT_LNK64I=%CSF_OPT_LNK64I% %OPT_LIB64%"
 
-set "CASBIN=win%ARCH%\%VCVER%"
+rem ----- Default paths to sub-folders (can be different in install env) -----
+if "%CSF_OCCTIncludePath%" == "" set "CSF_OCCTIncludePath=%CASROOT%\inc"
+if "%CSF_OCCTResourcePath%" == "" set "CSF_OCCTResourcePath=%CASROOT%\src"
+if "%CSF_OCCTSamplesPath%" == "" set "CSF_OCCTSamplesPath=%CASROOT%\samples"
+if "%CSF_OCCTDataPath%" == "" set "CSF_OCCTDataPath=%CASROOT%\data"
+if "%CSF_OCCTTestsPath%" == "" set "CSF_OCCTTestsPath=%CASROOT%\tests"
+if "%CSF_OCCTBinPath%" == "" set "CSF_OCCTBinPath=%CASROOT%\win%ARCH%\%VCLIB%\bin%CASDEB%"
+if "%CSF_OCCTLibPath%" == "" set "CSF_OCCTLibPath=%CASROOT%\win%ARCH%\%VCLIB%\lib%CASDEB%"
 
 rem ----- Set path to 3rd party and OCCT libraries -----
-set "PATH=%SCRIPTROOT%\%CASBIN%\bin%CASDEB%;%PATH%"
+set "PATH=%CSF_OCCTBinPath%;%PATH%"
 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32%;%PATH%"
 if ["%CASDEB%"] == [""] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64%;%PATH%"
 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32D%;%PATH%"
 if ["%CASDEB%"] == ["d"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64D%;%PATH%"
-
 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["32"] set "PATH=%CSF_OPT_BIN32I%;%PATH%"
 if ["%CASDEB%"] == ["i"] if ["%ARCH%"] == ["64"] set "PATH=%CSF_OPT_BIN64I%;%PATH%"
 
 rem ----- Set envoronment variables used by OCCT -----
 set CSF_LANGUAGE=us
 set MMGT_CLEAR=1
-set CSF_EXCEPTION_PROMPT=1
-set "CSF_SHMessage=%CASROOT%\src\SHMessage"
-set "CSF_MDTVTexturesDirectory=%CASROOT%\src\Textures"
-set "CSF_ShadersDirectory=%CASROOT%\src\Shaders"
-set "CSF_XSMessage=%CASROOT%\src\XSMessage"
-set "CSF_TObjMessage=%CASROOT%\src\TObj"
-set "CSF_StandardDefaults=%CASROOT%\src\StdResource"
-set "CSF_PluginDefaults=%CASROOT%\src\StdResource"
-set "CSF_XCAFDefaults=%CASROOT%\src\StdResource"
-set "CSF_TObjDefaults=%CASROOT%\src\StdResource"
-set "CSF_StandardLiteDefaults=%CASROOT%\src\StdResource"
-set "CSF_UnitsLexicon=%CASROOT%\src\UnitsAPI\Lexi_Expr.dat"
-set "CSF_UnitsDefinition=%CASROOT%\src\UnitsAPI\Units.dat"
-set "CSF_IGESDefaults=%CASROOT%\src\XSTEPResource"
-set "CSF_STEPDefaults=%CASROOT%\src\XSTEPResource"
-set "CSF_XmlOcafResource=%CASROOT%\src\XmlOcafResource"
-set "CSF_MIGRATION_TYPES=%CASROOT%\src\StdResource\MigrationSheet.txt"
+set "CSF_SHMessage=%CSF_OCCTResourcePath%\SHMessage"
+set "CSF_MDTVTexturesDirectory=%CSF_OCCTResourcePath%\Textures"
+set "CSF_ShadersDirectory=%CSF_OCCTResourcePath%\Shaders"
+set "CSF_XSMessage=%CSF_OCCTResourcePath%\XSMessage"
+set "CSF_TObjMessage=%CSF_OCCTResourcePath%\TObj"
+set "CSF_StandardDefaults=%CSF_OCCTResourcePath%\StdResource"
+set "CSF_PluginDefaults=%CSF_OCCTResourcePath%\StdResource"
+set "CSF_XCAFDefaults=%CSF_OCCTResourcePath%\StdResource"
+set "CSF_TObjDefaults=%CSF_OCCTResourcePath%\StdResource"
+set "CSF_StandardLiteDefaults=%CSF_OCCTResourcePath%\StdResource"
+set "CSF_IGESDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
+set "CSF_STEPDefaults=%CSF_OCCTResourcePath%\XSTEPResource"
+set "CSF_XmlOcafResource=%CSF_OCCTResourcePath%\XmlOcafResource"
+set "CSF_MIGRATION_TYPES=%CSF_OCCTResourcePath%\StdResource\MigrationSheet.txt"
 
 rem Draw Harness special stuff
-if exist "%CASROOT%\src\DrawResources" (
-  set "DRAWHOME=%CASROOT%\src\DrawResources"
-  set "CSF_DrawPluginDefaults=%DRAWHOME%"
+if exist "%CSF_OCCTResourcePath%\DrawResources\DrawDefault" (
+  set "DRAWDEFAULT=%CSF_OCCTResourcePath%\DrawResources\DrawDefault"
 )
-if exist "%SCRIPTROOT%\src\DrawResourcesProducts" (
-  set "CSF_DrawPluginProductsDefaults=%SCRIPTROOT%\src\DrawResourcesProducts"
+if exist "%CSF_OCCTResourcePath%\DrawResources" (
+  set "DRAWHOME=%CSF_OCCTResourcePath%\DrawResources"
+  set "CSF_DrawPluginDefaults=%DRAWHOME%"
 )
 goto :eof
 
@@ -160,9 +248,13 @@ set "CSF_OPT_CMPL=%CSF_OPT_CMPL% -I%1"
 goto :eof
 
 :concatLib32
-set "OPT_LIB32=%OPT_LIB32% /LIBPATH:%1"
+rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
+rem set "OPT_LIB32=%OPT_LIB32% /LIBPATH:%1"
+set "OPT_LIB32=%OPT_LIB32% -L%1"
 goto :eof
 
 :concatLib64
-set "OPT_LIB64=%OPT_LIB64% /LIBPATH:%1"
+rem Compiler options for Code::Blocks: -L for gcc/mingw and /LIBPATH for msvc
+rem set "OPT_LIB64=%OPT_LIB64% /LIBPATH:%1"
+set "OPT_LIB64=%OPT_LIB64% -L%1"
 goto :eof