Salome HOME
spns #32926: OSCAR prerequisites
[tools/sat_salome.git] / products / compil_scripts / Python-3.6.5.bat
1 @echo off
2
3 echo ##########################################################################
4 echo Python %VERSION%
5 echo ##########################################################################
6
7 IF NOT DEFINED SAT_DEBUG (
8   SET SAT_DEBUG=0
9 )
10
11 SET PRODUCT_BUILD_TYPE=Release
12 if %SAT_DEBUG% == 1 (
13   set PRODUCT_BUILD_TYPE=Debug
14 )
15
16 set PLATFORM_TARGET=x64
17 if "%SALOME_APPLICATION_NAME%" == "URANIE" (
18   set PLATFORM_TARGET=Win32
19 )
20
21 SET LIB_TAG=
22 if %SAT_DEBUG% == 1 (
23   set LIB_TAG=_d
24 )
25
26 if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
27 if NOT exist "%PRODUCT_INSTALL%\libs" mkdir %PRODUCT_INSTALL%\libs
28 REM clean BUILD directory
29 if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
30 mkdir %BUILD_DIR%
31
32 SET MSBUILDDISABLENODEREUSE=1
33
34 cd %SOURCE_DIR%\PCbuild
35
36 REM Upgrade to current version of MSVC
37 echo.
38 echo *** devenv pcbuild.sln /upgrade
39 devenv pcbuild.sln /upgrade
40 if NOT %ERRORLEVEL% == 0 (
41     echo ERROR on devenv
42     exit 1
43 )
44
45
46 echo.
47 REM echo Extracting nasm...
48 if exist "%SOURCE_DIR%\externals\cpython-bin-deps-nasm-2.11.06" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-bin-deps-nasm-2.11.06"
49 if exist "%SOURCE_DIR%\externals\nasm-2.11.06" rmdir /Q /S "%SOURCE_DIR%\externals\nasm-2.11.06"
50 7z x -y %SOURCE_DIR%\externals\zips\nasm-2.11.06.zip -o%SOURCE_DIR%\externals
51 mv %SOURCE_DIR%\externals\cpython-bin-deps-nasm-2.11.06 %SOURCE_DIR%\externals\nasm-2.11.06
52
53 REM echo Extracting openssl...
54 if exist "%SOURCE_DIR%\externals\cpython-source-deps-openssl-1.0.2k" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-openssl-1.0.2k"
55 if exist "%SOURCE_DIR%\externals\openssl-1.0.2k" rmdir /Q /S "%SOURCE_DIR%\externals\openssl-1.0.2k"
56 7z x -y %SOURCE_DIR%\externals\zips\openssl-1.0.2k.zip -o%SOURCE_DIR%\externals
57 mv %SOURCE_DIR%\externals\cpython-source-deps-openssl-1.0.2k %SOURCE_DIR%\externals\openssl-1.0.2k
58
59 REM echo Extracting sqlite...
60 if exist "%SOURCE_DIR%\externals\cpython-source-deps-sqlite-3.21.0.0" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-sqlite-3.21.0.0"
61 if exist "%SOURCE_DIR%\externals\sqlite-3.21.0.0" rmdir /Q /S "%SOURCE_DIR%\externals\sqlite-3.21.0.0"
62 7z x -y %SOURCE_DIR%\externals\zips\sqlite-3.21.0.0.zip -o%SOURCE_DIR%\externals
63 mv %SOURCE_DIR%\externals\cpython-source-deps-sqlite-3.21.0.0 %SOURCE_DIR%\externals\sqlite-3.21.0.0
64
65 REM echo Extracting xz...
66 if exist "%SOURCE_DIR%\externals\cpython-source-deps-xz-5.2.2" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-xz-5.2.2"
67 if exist "%SOURCE_DIR%\externals\xz-5.2.2" rmdir /Q /S "%SOURCE_DIR%\externals\xz-5.2.2"
68 7z x -y %SOURCE_DIR%\externals\zips\xz-5.2.2.zip -o%SOURCE_DIR%\externals
69 mv %SOURCE_DIR%\externals\cpython-source-deps-xz-5.2.2 %SOURCE_DIR%\externals\xz-5.2.2
70
71 REM echo Extracting xz...
72 if exist "%SOURCE_DIR%\externals\cpython-source-deps-bzip2-1.0.6" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-bzip2-1.0.6"
73 if exist "%SOURCE_DIR%\externals\bzip2-1.0.6" rmdir /Q /S "%SOURCE_DIR%\externals\bzip2-1.0.6"
74 7z x -y %SOURCE_DIR%\externals\zips\bzip2-1.0.6.zip -o%SOURCE_DIR%\externals
75 mv %SOURCE_DIR%\externals\cpython-source-deps-bzip2-1.0.6 %SOURCE_DIR%\externals\bzip2-1.0.6
76
77 REM echo Extracting pip...
78 if exist "%SOURCE_DIR%\externals\pip-19.1.1" rmdir /Q /S "%SOURCE_DIR%\externals\pip-19.1.1"
79 7z x -y %SOURCE_DIR%\externals\zips\pip-19.1.1.zip -o%SOURCE_DIR%\externals
80
81 REM Compilation
82
83 cd %SOURCE_DIR%
84 echo.
85 echo *** msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln /t:Build /m /nologo /v:m /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=%PLATFORM_TARGET% /p:BuildProjectReferences=false /p:OutDir=%PRODUCT_INSTALL%\
86 msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln  /t:Build /m /nologo /v:m /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=%PLATFORM_TARGET% /p:OutDir=%PRODUCT_INSTALL%\
87 if NOT %ERRORLEVEL% == 0 (
88     echo ERROR on msbuild
89     exit 2
90 )
91
92 REM Installation of additional files
93 echo.
94 echo *** Installation of additional files
95 cd ..
96 xcopy /Y /I /E %SOURCE_DIR%\include %PRODUCT_INSTALL%\include
97 if NOT %ERRORLEVEL% == 0 (
98     echo ERROR on xcopy include
99     exit 3
100 )
101
102 copy /Y %SOURCE_DIR%\PC\pyconfig.h %PRODUCT_INSTALL%\include
103 if NOT %ERRORLEVEL% == 0 (
104     echo ERROR on copy PC\pyconfig.h
105     exit 4
106 )
107
108 xcopy /Y /I /E %SOURCE_DIR%\lib %PRODUCT_INSTALL%\lib
109 if NOT %ERRORLEVEL% == 0 (
110     echo ERROR on xcopy lib
111     exit 5
112 )
113
114 REM some prequistes if compiled in Debug mode require the lib to be in folder libs
115 REM other ones require these static lib to be in the root directory
116 REM on purpose we don't use mklink, since this requires the user to have his node set in developer mode.
117 xcopy  /Y %PRODUCT_INSTALL%\*.lib %PRODUCT_INSTALL%\libs\
118 if NOT %ERRORLEVEL% == 0 (
119     echo ERROR could not copy static libraries
120     exit 6
121 )
122
123 REM on purpose, we don't use mklink - requires admin rights...
124 copy /Y /B %PRODUCT_INSTALL%\python%LIB_TAG%.exe %PRODUCT_INSTALL%\python3.exe
125 if %SAT_DEBUG% == 1 (
126   copy /Y /B %PRODUCT_INSTALL%\python_d.exe %PRODUCT_INSTALL%\python.exe
127   REM otherwise OmniORB does not compile...
128   copy /Y /B %PRODUCT_INSTALL%\libs\python36_d.lib %PRODUCT_INSTALL%\libs\python36.lib 
129   copy /Y /B %PRODUCT_INSTALL%\libs\python_d.lib %PRODUCT_INSTALL%\libs\python.lib 
130 )
131
132 cd %PRODUCT_INSTALL%\
133
134 REM Add PIP support
135 set PYTHONHOME=%PRODUCT_INSTALL%
136 set PYTHON_ROOT_DIR=%PRODUCT_INSTALL%
137 set PYTHON_VERSION=3.6
138 set PATH=%PRODUCT_INSTALL%;%PATH%
139 set PATH=%PRODUCT_INSTALL%\lib;%PATH%
140 set PYTHON_INCLUDE=%PRODUCT_INSTALL%\include
141 set PYTHONPATH=%PRODUCT_INSTALL%\lib;%PYTHONPATH%
142 set PYTHONPATH=%PRODUCT_INSTALL%\lib\site-packages;%PYTHONPATH%
143 set PYTHONBIN=%PRODUCT_INSTALL%\python.exe
144 set PATH=%PRODUCT_INSTALL%\Scripts;%PATH%
145
146 %PRODUCT_INSTALL%\python.exe %SOURCE_DIR%\externals\pip-19.1.1\get-pip.py --force-reinstall --no-setuptools --no-wheel  --no-index --find-links=%SOURCE_DIR%\externals\pip-19.1.1
147
148 REM In debug mode, we need to rename all _d.pyd to .pyd... don't ask why. Seems like a known bug in OmniORB.
149 if %SAT_DEBUG% == 1 (
150   cd %PRODUCT_INSTALL%
151   powershell -Command "Get-ChildItem -File -Recurse *.pyd| ForEach-Object {if ((!$_.Name.EndsWith('_d.pyd'))) {  $_ | Copy-Item -Destination {$_.Name  -replace '.pyd','_d.pyd'}}}"
152   cd %PRODUCT_INSTALL%\lib\site-packages
153   powershell -Command "Get-ChildItem -File -Recurse *.pyd| ForEach-Object {if ((!$_.Name.EndsWith('_d.pyd'))) {  $_ | Copy-Item -Destination {$_.Name  -replace '.pyd','_d.pyd'}}}"
154 )
155
156
157 taskkill /F /IM "mspdbsrv.exe"
158
159 echo.
160 echo ########## END