Warning, /graphics/krita/build-tools/windows/build.cmd is written in an unsupported language. File is not indexed.
0001 @echo off 0002 0003 setlocal enabledelayedexpansion 0004 goto begin 0005 0006 0007 :: Subroutines 0008 0009 :find_on_path out_variable file_name 0010 set %1=%~f$PATH:2 0011 goto :EOF 0012 0013 0014 :get_dir_path out_variable file_path 0015 set %1=%~dp2 0016 goto :EOF 0017 0018 0019 :get_full_path out_variable file_path 0020 setlocal 0021 set FULL_PATH=%~f2 0022 if not exist "%FULL_PATH%" ( 0023 set FULL_PATH= 0024 ) else ( 0025 if exist "%FULL_PATH%\" ( 0026 set FULL_PATH= 0027 ) 0028 ) 0029 endlocal & set "%1=%FULL_PATH%" 0030 goto :EOF 0031 0032 0033 :get_full_path_dir out_variable file_path 0034 setlocal 0035 set FULL_PATH=%~dp2 0036 if not exist "%FULL_PATH%" ( 0037 set FULL_PATH= 0038 ) 0039 endlocal & set "%1=%FULL_PATH%" 0040 goto :EOF 0041 0042 0043 :prompt_for_string out_variable prompt 0044 set /p %1=%~2^> 0045 goto :EOF 0046 0047 0048 :prompt_for_positive_integer out_variable prompt 0049 setlocal 0050 call :prompt_for_string USER_INPUT "%~2" 0051 if "%USER_INPUT%" == "" set USER_INPUT=0 0052 set /a RESULT=%USER_INPUT% 0053 if not %RESULT% GTR 0 ( 0054 set RESULT= 0055 ) 0056 endlocal & set "%1=%RESULT%" 0057 goto :EOF 0058 0059 0060 :prompt_for_file out_variable prompt 0061 setlocal 0062 :prompt_for_file__retry 0063 call :prompt_for_string USER_INPUT "%~2" 0064 if "%USER_INPUT%" == "" ( 0065 endlocal 0066 set %1= 0067 goto :EOF 0068 ) 0069 call :get_full_path RESULT "%USER_INPUT%" 0070 if "%RESULT%" == "" ( 0071 echo Input does not point to valid file! 0072 set USER_INPUT= 0073 goto prompt_for_file__retry 0074 ) 0075 endlocal & set "%1=%RESULT%" 0076 goto :EOF 0077 0078 0079 :prompt_for_dir out_variable prompt 0080 setlocal 0081 :prompt_for_dir__retry 0082 call :prompt_for_string USER_INPUT "%~2" 0083 if "%USER_INPUT%" == "" ( 0084 endlocal 0085 set %1= 0086 goto :EOF 0087 ) 0088 call :get_full_path_dir RESULT "%USER_INPUT%\" 0089 if "%RESULT%" == "" ( 0090 echo Input does not point to valid dir! 0091 set USER_INPUT= 0092 goto prompt_for_dir__retry 0093 ) 0094 endlocal & set "%1=%RESULT%" 0095 goto :EOF 0096 0097 0098 :has_target out_variable folder 0099 setlocal 0100 set RESULT= 0101 if exist "%~2" ( 0102 set RESULT=1 0103 ) 0104 endlocal & set "%1=%RESULT%" 0105 goto :EOF 0106 0107 :usage 0108 echo Usage: 0109 echo %~n0 [--no-interactive] [ OPTIONS ... ] 0110 echo. 0111 echo Basic options: 0112 echo --no-interactive Run without interactive prompts 0113 echo When not specified, the script will prompt 0114 echo for some of the parameters. 0115 echo --jobs ^<count^> Set parallel jobs count when building 0116 echo Defaults to no. of logical cores 0117 echo --skip-deps Skips (re)building of deps 0118 echo --skip-krita Skips (re)building of Krita 0119 echo --cmd Launch a cmd prompt instead of building. 0120 echo The environment is set up like the build 0121 echo environment with some helper command macros. 0122 echo --dev Activate developer options, like 'CodeBlocks' 0123 echo generator and BUILD_TESTING 0124 echo. 0125 echo Path options: 0126 echo --src-dir ^<dir_path^> Specify Krita source dir 0127 echo If unspecified, this will be determined from 0128 echo the script location. 0129 echo --download-dir ^<dir_path^> Specify deps download dir 0130 echo Can be omitted if --skip-deps is used 0131 echo --deps-build-dir ^<dir_path^> Specify deps build dir 0132 echo Can be omitted if --skip-deps is used 0133 echo --deps-install-dir ^<dir_path^> Specify deps install dir 0134 echo --krita-build-dir ^<dir_path^> Specify Krita build dir 0135 echo Can be omitted if --skip-krita is used 0136 echo --krita-install-dir ^<dir_path^> Specify Krita install dir 0137 echo Can be omitted if --skip-krita is used 0138 echo. 0139 goto :EOF 0140 :usage_and_exit 0141 call :usage 0142 exit /b 0143 :usage_and_fail 0144 call :usage 0145 exit /b 100 0146 0147 0148 :: ---------------------------- 0149 :begin 0150 0151 echo Krita build script for Windows 0152 echo. 0153 0154 0155 :: command-line args parsing 0156 set ARG_NO_INTERACTIVE= 0157 set ARG_JOBS= 0158 set ARG_SKIP_DEPS= 0159 set ARG_SKIP_KRITA= 0160 set ARG_SRC_DIR= 0161 set ARG_DOWNLOAD_DIR= 0162 set ARG_DEPS_BUILD_DIR= 0163 set ARG_DEPS_INSTALL_DIR= 0164 set ARG_KRITA_BUILD_DIR= 0165 set ARG_KRITA_INSTALL_DIR= 0166 set ARG_PLUGINS_BUILD_DIR= 0167 set ARG_CMD= 0168 set ARG_DEV= 0169 :args_parsing_loop 0170 set CURRENT_MATCHED= 0171 if not "%1" == "" ( 0172 if "%1" == "--no-interactive" ( 0173 set ARG_NO_INTERACTIVE=1 0174 set CURRENT_MATCHED=1 0175 ) 0176 if "%1" == "--jobs" ( 0177 if not "%ARG_JOBS%" == "" ( 0178 echo ERROR: Arg --jobs specified more than once 1>&2 0179 echo. 0180 goto usage_and_fail 0181 ) 0182 set /a "ARG_JOBS=%2" 0183 if not !ARG_JOBS! GTR 0 ( 0184 echo ERROR: Arg --jobs is not a positive integer 1>&2 0185 echo. 0186 goto usage_and_fail 0187 ) 0188 shift /2 0189 set CURRENT_MATCHED=1 0190 ) 0191 if "%1" == "--skip-deps" ( 0192 set ARG_SKIP_DEPS=1 0193 set CURRENT_MATCHED=1 0194 ) 0195 if "%1" == "--skip-krita" ( 0196 set ARG_SKIP_KRITA=1 0197 set CURRENT_MATCHED=1 0198 ) 0199 if "%1" == "--dev" ( 0200 set ARG_DEV=1 0201 set CURRENT_MATCHED=1 0202 ) 0203 if "%1" == "--src-dir" ( 0204 if not "%ARG_SRC_DIR%" == "" ( 0205 echo ERROR: Arg --src-dir specified more than once 1>&2 0206 echo. 0207 goto usage_and_fail 0208 ) 0209 if not exist "%~f2\" ( 0210 echo ERROR: Arg --src-dir does not point to a directory 1>&2 0211 echo. 0212 goto usage_and_fail 0213 ) 0214 call :get_dir_path ARG_SRC_DIR "%~f2\" 0215 shift /2 0216 set CURRENT_MATCHED=1 0217 ) 0218 if "%1" == "--download-dir" ( 0219 if not "%ARG_DOWNLOAD_DIR%" == "" ( 0220 echo ERROR: Arg --download-dir specified more than once 1>&2 0221 echo. 0222 goto usage_and_fail 0223 ) 0224 if "%~f2" == "" ( 0225 echo ERROR: Arg --download-dir does not point to a valid path 1>&2 0226 echo. 0227 goto usage_and_fail 0228 ) 0229 call :get_dir_path ARG_DOWNLOAD_DIR "%~f2\" 0230 shift /2 0231 set CURRENT_MATCHED=1 0232 ) 0233 if "%1" == "--deps-build-dir" ( 0234 if not "%ARG_DEPS_BUILD_DIR%" == "" ( 0235 echo ERROR: Arg --deps-build-dir specified more than once 1>&2 0236 echo. 0237 goto usage_and_fail 0238 ) 0239 if "%~f2" == "" ( 0240 echo ERROR: Arg --deps-build-dir does not point to a valid path 1>&2 0241 echo. 0242 goto usage_and_fail 0243 ) 0244 call :get_dir_path ARG_DEPS_BUILD_DIR "%~f2\" 0245 shift /2 0246 set CURRENT_MATCHED=1 0247 ) 0248 if "%1" == "--deps-install-dir" ( 0249 if not "%ARG_DEPS_INSTALL_DIR%" == "" ( 0250 echo ERROR: Arg --deps-install-dir specified more than once 1>&2 0251 echo. 0252 goto usage_and_fail 0253 ) 0254 if "%~f2" == "" ( 0255 echo ERROR: Arg --deps-install-dir does not point to a valid path 1>&2 0256 echo. 0257 goto usage_and_fail 0258 ) 0259 call :get_dir_path ARG_DEPS_INSTALL_DIR "%~f2\" 0260 shift /2 0261 set CURRENT_MATCHED=1 0262 ) 0263 if "%1" == "--krita-build-dir" ( 0264 if not "%ARG_KRITA_BUILD_DIR%" == "" ( 0265 echo ERROR: Arg --krita-build-dir specified more than once 1>&2 0266 echo. 0267 goto usage_and_fail 0268 ) 0269 if "%~f2" == "" ( 0270 echo ERROR: Arg --krita-build-dir does not point to a valid path 1>&2 0271 echo. 0272 goto usage_and_fail 0273 ) 0274 call :get_dir_path ARG_KRITA_BUILD_DIR "%~f2\" 0275 shift /2 0276 set CURRENT_MATCHED=1 0277 ) 0278 if "%1" == "--krita-install-dir" ( 0279 if not "%ARG_KRITA_INSTALL_DIR%" == "" ( 0280 echo ERROR: Arg --krita-install-dir specified more than once 1>&2 0281 echo. 0282 goto usage_and_fail 0283 ) 0284 if "%~f2" == "" ( 0285 echo ERROR: Arg --krita-install-dir does not point to a valid path 1>&2 0286 echo. 0287 goto usage_and_fail 0288 ) 0289 call :get_dir_path ARG_KRITA_INSTALL_DIR "%~f2\" 0290 shift /2 0291 set CURRENT_MATCHED=1 0292 ) 0293 if "%1" == "--plugins-build-dir" ( 0294 if not "%ARG_PLUGINS_BUILD_DIR%" == "" ( 0295 echo ERROR: Arg --plugins-build-dir specified more than once 1>&2 0296 echo. 0297 goto usage_and_fail 0298 ) 0299 if "%~f2" == "" ( 0300 echo ERROR: Arg --plugins-build-dir does not point to a valid path 1>&2 0301 echo. 0302 goto usage_and_fail 0303 ) 0304 call :get_dir_path ARG_PLUGINS_BUILD_DIR "%~f2\" 0305 shift /2 0306 set CURRENT_MATCHED=1 0307 ) 0308 if "%1" == "--cmd" ( 0309 set ARG_CMD=1 0310 set CURRENT_MATCHED=1 0311 ) 0312 if "%1" == "--help" ( 0313 goto usage_and_exit 0314 ) 0315 if not "!CURRENT_MATCHED!" == "1" ( 0316 echo ERROR: Unknown option %1 1>&2 0317 echo. 0318 goto usage_and_fail 0319 ) 0320 shift /1 0321 goto args_parsing_loop 0322 ) 0323 0324 if "%ARG_NO_INTERACTIVE%" == "1" ( 0325 echo Non-interactive mode 0326 ) else ( 0327 echo Interactive mode 0328 :: Trick to pause on exit 0329 call :real_begin 0330 pause 0331 exit /b !ERRORLEVEL! 0332 ) 0333 :real_begin 0334 echo. 0335 0336 0337 if "%ARG_SKIP_DEPS%" == "1" ( 0338 if "%ARG_SKIP_KRITA%" == "1" ( 0339 echo Both deps and Krita will be skipped. 0340 ) else ( 0341 echo Building of deps will be skipped. 0342 ) 0343 ) else ( 0344 if "%ARG_SKIP_KRITA%" == "1" ( 0345 echo Building of Krita will be skipped. 0346 ) else ( 0347 echo Both deps and Krita will be built. 0348 ) 0349 ) 0350 0351 0352 :: Check environment config 0353 0354 if "%CMAKE_EXE%" == "" ( 0355 call :find_on_path CMAKE_EXE cmake.exe 0356 if "!CMAKE_EXE!" == "" ( 0357 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0358 call :prompt_for_file CMAKE_EXE "Provide path to cmake.exe" 0359 ) 0360 if "!CMAKE_EXE!" == "" ( 0361 echo ERROR: CMake not found! 1>&2 0362 exit /b 102 0363 ) 0364 ) else ( 0365 echo Found CMake on PATH: !CMAKE_EXE! 0366 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0367 choice /c ny /n /m "Is this correct? [y/n] " 0368 if errorlevel 3 exit 255 0369 if not errorlevel 2 ( 0370 call :prompt_for_file CMAKE_EXE "Provide path to cmake.exe" 0371 if "!CMAKE_EXE!" == "" ( 0372 echo ERROR: CMake not found! 1>&2 0373 exit /b 102 0374 ) 0375 ) 0376 ) 0377 ) 0378 ) 0379 echo CMake: %CMAKE_EXE% 0380 0381 if "%SEVENZIP_EXE%" == "" ( 0382 call :find_on_path SEVENZIP_EXE 7z.exe 0383 if "!SEVENZIP_EXE!" == "" ( 0384 set "SEVENZIP_EXE=%ProgramFiles%\7-Zip\7z.exe" 0385 if "!SEVENZIP_EXE!" == "" ( 0386 set "SEVENZIP_EXE=%ProgramFiles(x86)%\7-Zip\7z.exe" 0387 ) 0388 if "!SEVENZIP_EXE!" == "" ( 0389 echo 7-Zip not found 0390 ) 0391 ) 0392 ) 0393 if "%SEVENZIP_EXE%" == "" ( 0394 echo 7-Zip: %SEVENZIP_EXE% 0395 ) 0396 0397 if "%MINGW_BIN_DIR%" == "" ( 0398 call :find_on_path MINGW_BIN_DIR_MAKE_EXE mingw32-make.exe 0399 if "!MINGW_BIN_DIR_MAKE_EXE!" == "" ( 0400 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0401 call :prompt_for_file MINGW_BIN_DIR_MAKE_EXE "Provide path to mingw32-make.exe of mingw-w64" 0402 ) 0403 if "!MINGW_BIN_DIR_MAKE_EXE!" == "" ( 0404 echo ERROR: mingw-w64 not found! 1>&2 0405 exit /b 102 0406 ) 0407 call :get_dir_path MINGW_BIN_DIR "!MINGW_BIN_DIR_MAKE_EXE!" 0408 ) else ( 0409 call :get_dir_path MINGW_BIN_DIR "!MINGW_BIN_DIR_MAKE_EXE!" 0410 echo Found mingw on PATH: !MINGW_BIN_DIR! 0411 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0412 choice /c ny /n /m "Is this correct? [y/n] " 0413 if errorlevel 3 exit 255 0414 if not errorlevel 2 ( 0415 call :prompt_for_file MINGW_BIN_DIR_MAKE_EXE "Provide path to mingw32-make.exe of mingw-w64" 0416 if "!MINGW_BIN_DIR_MAKE_EXE!" == "" ( 0417 echo ERROR: mingw-w64 not found! 1>&2 0418 exit /b 102 0419 ) 0420 call :get_dir_path MINGW_BIN_DIR "!MINGW_BIN_DIR_MAKE_EXE!" 0421 ) 0422 ) 0423 ) 0424 ) 0425 echo mingw-w64: %MINGW_BIN_DIR% 0426 0427 if "%PYTHON_BIN_DIR%" == "" ( 0428 call :find_on_path PYTHON_BIN_DIR_PYTHON_EXE python.exe 0429 if "!PYTHON_BIN_DIR_PYTHON_EXE!" == "" ( 0430 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0431 call :prompt_for_file PYTHON_BIN_DIR_PYTHON_EXE "Provide path to python.exe of Python 3.6.2" 0432 ) 0433 if "!PYTHON_BIN_DIR_PYTHON_EXE!" == "" ( 0434 echo ERROR: Python not found! 1>&2 0435 exit /b 102 0436 ) 0437 call :get_dir_path PYTHON_BIN_DIR "!PYTHON_BIN_DIR_PYTHON_EXE!" 0438 ) else ( 0439 call :get_dir_path PYTHON_BIN_DIR "!PYTHON_BIN_DIR_PYTHON_EXE!" 0440 echo Found Python on PATH: !PYTHON_BIN_DIR! 0441 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0442 choice /c ny /n /m "Is this correct? [y/n] " 0443 if errorlevel 3 exit 255 0444 if not errorlevel 2 ( 0445 call :prompt_for_file PYTHON_BIN_DIR_PYTHON_EXE "Provide path to python.exe of Python 3.6.2" 0446 if "!PYTHON_BIN_DIR_PYTHON_EXE!" == "" ( 0447 echo ERROR: Python not found! 1>&2 0448 exit /b 102 0449 ) 0450 call :get_dir_path PYTHON_BIN_DIR "!PYTHON_BIN_DIR_PYTHON_EXE!" 0451 ) 0452 ) 0453 ) 0454 ) 0455 echo Python: %PYTHON_BIN_DIR% 0456 0457 @REM Translation tools 0458 0459 if "%KRITA_GIT_DIR%" == "" ( 0460 call :find_on_path KRITA_GIT_EXE_DIR git.exe 0461 if NOT "!KRITA_GIT_EXE_DIR!" == "" ( 0462 call :get_dir_path KRITA_GIT_DIR "!KRITA_GIT_EXE_DIR!" 0463 echo Found Git on PATH: !KRITA_GIT_DIR! 0464 ) 0465 ) else echo Git found on %KRITA_GIT_DIR% 0466 0467 if "%KRITA_NINJA_DIR%" == "" ( 0468 call :find_on_path KRITA_NINJA_EXE_DIR ninja.exe 0469 if NOT "!KRITA_NINJA_EXE_DIR!" == "" ( 0470 call :get_dir_path KRITA_NINJA_DIR "!KRITA_NINJA_EXE_DIR!" 0471 echo Found Ninja on PATH: !KRITA_NINJA_DIR! 0472 ) 0473 ) else echo Ninja found on %KRITA_NINJA_DIR% 0474 0475 if "%SVN_DIR%" == "" ( 0476 call :find_on_path SVN_EXE_DIR svn.exe 0477 if NOT "!SVN_EXE_DIR!" == "" ( 0478 call :get_dir_path SVN_DIR "!SVN_EXE_DIR!" 0479 echo Found SVN on PATH: !SVN_DIR! 0480 ) 0481 ) else echo SVN found on %SVN_DIR% 0482 0483 if "%PERL_DIR%" == "" ( 0484 call :find_on_path PERL_EXE_DIR perl.exe 0485 if NOT "!PERL_EXE_DIR!" == "" ( 0486 call :get_dir_path PERL_DIR "!PERL_EXE_DIR!" 0487 echo Found Perl on PATH: !PERL_DIR! 0488 ) 0489 ) else echo Perl found on %PERL_DIR% 0490 0491 if "%ARG_SKIP_DEPS%" == "1" goto skip_windows_sdk_dir_check 0492 0493 if "%WindowsSdkDir%" == "" if not "%ProgramFiles(x86)%" == "" set "WindowsSdkDir=%ProgramFiles(x86)%\Windows Kits\10" 0494 if "%WindowsSdkDir%" == "" set "WindowsSdkDir=%ProgramFiles(x86)%\Windows Kits\10" 0495 if exist "%WindowsSdkDir%\" ( 0496 pushd "%WindowsSdkDir%" 0497 if exist "bin\x64\fxc.exe" ( 0498 set HAVE_FXC_EXE=1 0499 if "%WindowsSdkVerBinPath%" == "" set "WindowsSdkVerBinPath=%WindowsSdkDir%" 0500 ) else ( 0501 for /f "delims=" %%a in ('dir /a:d /b "bin\10.*"') do ( 0502 if exist "bin\%%a\x64\fxc.exe" ( 0503 set HAVE_FXC_EXE=1 0504 if "%WindowsSdkVerBinPath%" == "" set "WindowsSdkVerBinPath=%WindowsSdkDir%\bin\%%a\" 0505 ) 0506 ) 0507 ) 0508 popd 0509 ) 0510 set QT_ENABLE_DYNAMIC_OPENGL=ON 0511 if not "%HAVE_FXC_EXE%" == "1" ( 0512 set WindowsSdkDir= 0513 echo Windows SDK 10 with fxc.exe not found 0514 echo Qt will *not* be built with ANGLE ^(dynamic OpenGL^) support. 0515 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0516 choice /c ny /n /m "Is this ok? [y/n] " 0517 if errorlevel 3 exit 255 0518 if not errorlevel 2 ( 0519 exit /b 102 0520 ) 0521 ) 0522 set QT_ENABLE_DYNAMIC_OPENGL=OFF 0523 ) else echo Windows SDK 10 with fxc.exe found on %WindowsSdkDir% 0524 0525 :skip_windows_sdk_dir_check 0526 0527 if not "%ARG_JOBS%" == "" ( 0528 set "PARALLEL_JOBS=%ARG_JOBS%" 0529 ) 0530 if "%PARALLEL_JOBS%" == "" ( 0531 echo Number of logical CPU cores detected: %NUMBER_OF_PROCESSORS% 0532 echo Enabling %NUMBER_OF_PROCESSORS% parallel jobs 0533 set PARALLEL_JOBS=%NUMBER_OF_PROCESSORS% 0534 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0535 choice /c ny /n /m "Is this correct? [y/n] " 0536 if errorlevel 3 exit 255 0537 if not errorlevel 2 ( 0538 call :prompt_for_positive_integer PARALLEL_JOBS "Provide no. of parallel jobs" 0539 if "!PARALLEL_JOBS!" == "" ( 0540 echo ERROR: Invalid job count! 1>&2 0541 exit /b 102 0542 ) 0543 ) 0544 ) 0545 ) 0546 echo Parallel jobs count: %PARALLEL_JOBS% 0547 0548 if not "%ARG_SRC_DIR%" == "" ( 0549 set "KRITA_SRC_DIR=%ARG_SRC_DIR%" 0550 ) 0551 if "%KRITA_SRC_DIR%" == "" ( 0552 :: Check whether this looks like to be in the source tree 0553 set "_temp=%~dp0" 0554 if "!_temp:~-21!" == "\build-tools\windows\" ( 0555 if exist "!_temp:~0,-21!\CMakeLists.txt" ( 0556 if exist "!_temp:~0,-21!\3rdparty\CMakeLists.txt" ( 0557 set "KRITA_SRC_DIR=!_temp:~0,-21!\" 0558 echo Script is running inside Krita src dir 0559 ) 0560 ) 0561 ) 0562 ) 0563 if "%KRITA_SRC_DIR%" == "" ( 0564 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0565 call :prompt_for_dir KRITA_SRC_DIR "Provide path of Krita src dir" 0566 ) 0567 if "!KRITA_SRC_DIR!" == "" ( 0568 echo ERROR: Krita src dir not found! 1>&2 0569 exit /b 102 0570 ) 0571 ) 0572 echo Krita src: %KRITA_SRC_DIR% 0573 0574 if "%ARG_SKIP_DEPS%" == "1" goto skip_deps_args_check 0575 0576 if not "%ARG_DOWNLOAD_DIR%" == "" ( 0577 set "DEPS_DOWNLOAD_DIR=%ARG_DOWNLOAD_DIR%" 0578 ) 0579 if "%DEPS_DOWNLOAD_DIR%" == "" ( 0580 set DEPS_DOWNLOAD_DIR=%CD%\d\ 0581 echo Using default deps download dir: !DEPS_DOWNLOAD_DIR! 0582 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0583 choice /c ny /n /m "Is this ok? [y/n] " 0584 if errorlevel 3 exit 255 0585 if not errorlevel 2 ( 0586 call :prompt_for_dir DEPS_DOWNLOAD_DIR "Provide path of depps download dir" 0587 ) 0588 ) 0589 if "!DEPS_DOWNLOAD_DIR!" == "" ( 0590 echo ERROR: Deps download dir not set! 1>&2 0591 exit /b 102 0592 ) 0593 ) 0594 echo Deps download dir: %DEPS_DOWNLOAD_DIR% 0595 0596 if not "%ARG_DEPS_BUILD_DIR%" == "" ( 0597 set "DEPS_BUILD_DIR=%ARG_DEPS_BUILD_DIR%" 0598 ) 0599 if "%DEPS_BUILD_DIR%" == "" ( 0600 set DEPS_BUILD_DIR=%CD%\b_deps\ 0601 echo Using default deps build dir: !DEPS_BUILD_DIR! 0602 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0603 choice /c ny /n /m "Is this ok? [y/n] " 0604 if errorlevel 3 exit 255 0605 if not errorlevel 2 ( 0606 call :prompt_for_dir DEPS_BUILD_DIR "Provide path of deps build dir" 0607 ) 0608 ) 0609 if "!DEPS_BUILD_DIR!" == "" ( 0610 echo ERROR: Deps build dir not set! 1>&2 0611 exit /b 102 0612 ) 0613 ) 0614 echo Deps build dir: %DEPS_BUILD_DIR% 0615 0616 :skip_deps_args_check 0617 0618 if not "%ARG_DEPS_INSTALL_DIR%" == "" ( 0619 set "DEPS_INSTALL_DIR=%ARG_DEPS_INSTALL_DIR%" 0620 ) 0621 if "%DEPS_INSTALL_DIR%" == "" ( 0622 set DEPS_INSTALL_DIR=%CD%\i_deps\ 0623 echo Using default deps install dir: !DEPS_INSTALL_DIR! 0624 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0625 choice /c ny /n /m "Is this ok? [y/n] " 0626 if errorlevel 3 exit 255 0627 if not errorlevel 2 ( 0628 call :prompt_for_dir DEPS_INSTALL_DIR "Provide path of deps install dir" 0629 ) 0630 ) 0631 if "!DEPS_INSTALL_DIR!" == "" ( 0632 echo ERROR: Deps install dir not set! 1>&2 0633 exit /b 102 0634 ) 0635 ) 0636 echo Deps install dir: %DEPS_INSTALL_DIR% 0637 0638 if "%ARG_SKIP_KRITA%" == "1" goto skip_krita_args_check 0639 0640 if not "%ARG_KRITA_BUILD_DIR%" == "" ( 0641 set "KRITA_BUILD_DIR=%ARG_KRITA_BUILD_DIR%" 0642 ) 0643 if "%KRITA_BUILD_DIR%" == "" ( 0644 set KRITA_BUILD_DIR=%CD%\b\ 0645 echo Using default Krita build dir: !KRITA_BUILD_DIR! 0646 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0647 choice /c ny /n /m "Is this ok? [y/n] " 0648 if errorlevel 3 exit 255 0649 if not errorlevel 2 ( 0650 call :prompt_for_dir KRITA_BUILD_DIR "Provide path of Krita build dir" 0651 ) 0652 ) 0653 if "!KRITA_BUILD_DIR!" == "" ( 0654 echo ERROR: Krita build dir not set! 1>&2 0655 exit /b 102 0656 ) 0657 ) 0658 echo Krita build dir: %KRITA_BUILD_DIR% 0659 0660 @REM Plugins also need the download dir 0661 if not "%ARG_DOWNLOAD_DIR%" == "" ( 0662 set "PLUGINS_DOWNLOAD_DIR=%ARG_DOWNLOAD_DIR%" 0663 ) 0664 if "%PLUGINS_DOWNLOAD_DIR%" == "" ( 0665 set PLUGINS_DOWNLOAD_DIR=%CD%\d\ 0666 echo Using default deps download dir: !PLUGINS_DOWNLOAD_DIR! 0667 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0668 choice /c ny /n /m "Is this ok? [y/n] " 0669 if errorlevel 3 exit 255 0670 if not errorlevel 2 ( 0671 call :prompt_for_dir PLUGINS_DOWNLOAD_DIR "Provide path of plugins download dir" 0672 ) 0673 ) 0674 if "!PLUGINS_DOWNLOAD_DIR!" == "" ( 0675 echo ERROR: Plugins download dir not set! 1>&2 0676 exit /b 102 0677 ) 0678 ) 0679 echo Plugins download dir: %PLUGINS_DOWNLOAD_DIR% 0680 0681 if not "%ARG_PLUGINS_BUILD_DIR%" == "" ( 0682 set "PLUGINS_BUILD_DIR=%ARG_PLUGINS_BUILD_DIR%" 0683 ) 0684 if "%PLUGINS_BUILD_DIR%" == "" ( 0685 set PLUGINS_BUILD_DIR=%CD%\b_plugins\ 0686 echo Using default plugins build dir: !PLUGINS_BUILD_DIR! 0687 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0688 choice /c ny /n /m "Is this ok? [y/n] " 0689 if errorlevel 3 exit 255 0690 if not errorlevel 2 ( 0691 call :prompt_for_dir PLUGINS_BUILD_DIR "Provide path of plugins build dir" 0692 ) 0693 ) 0694 if "!PLUGINS_BUILD_DIR!" == "" ( 0695 echo ERROR: Plugins build dir not set! 1>&2 0696 exit /b 102 0697 ) 0698 ) 0699 echo Plugins build dir: %PLUGINS_BUILD_DIR% 0700 0701 if not "%ARG_KRITA_INSTALL_DIR%" == "" ( 0702 set "KRITA_INSTALL_DIR=%ARG_KRITA_INSTALL_DIR%" 0703 ) 0704 if "%KRITA_INSTALL_DIR%" == "" ( 0705 set KRITA_INSTALL_DIR=%CD%\i\ 0706 echo Using default Krita install dir: !KRITA_INSTALL_DIR! 0707 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0708 choice /c ny /n /m "Is this ok? [y/n] " 0709 if errorlevel 3 exit 255 0710 if not errorlevel 2 ( 0711 call :prompt_for_dir KRITA_INSTALL_DIR "Provide path of Krita install dir" 0712 ) 0713 ) 0714 if "!KRITA_INSTALL_DIR!" == "" ( 0715 echo ERROR: Krita install dir not set! 1>&2 0716 exit /b 102 0717 ) 0718 ) 0719 echo Krita install dir: %KRITA_INSTALL_DIR% 0720 0721 :skip_krita_args_check 0722 0723 echo. 0724 0725 0726 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0727 choice /c ny /n /m "Is the above ok? [y/n] " 0728 if errorlevel 3 exit 255 0729 if not errorlevel 2 ( 0730 exit /b 1 0731 ) 0732 echo. 0733 ) 0734 0735 :: Initialize clean PATH 0736 set "PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\" 0737 set "PATH=%PYTHON_BIN_DIR%;%MINGW_BIN_DIR%;%PATH%" 0738 if NOT "%KRITA_GIT_DIR%" == "" ( 0739 set "PATH=%PATH%;%KRITA_GIT_DIR%" 0740 ) 0741 if NOT "%KRITA_NINJA_DIR%" == "" ( 0742 if NOT "%KRITA_NINJA_DIR%" == "%MINGW_BIN_DIR%" ( 0743 set "PATH=%PATH%;%KRITA_NINJA_DIR%" 0744 ) 0745 ) 0746 if NOT "%SVN_DIR%" == "" ( 0747 set "PATH=%PATH%;%SVN_DIR%" 0748 ) 0749 0750 echo Creating dirs... 0751 if NOT "%ARG_SKIP_DEPS%" == "1" ( 0752 mkdir %DEPS_DOWNLOAD_DIR% 0753 if errorlevel 1 ( 0754 if not exist "%DEPS_DOWNLOAD_DIR%\" ( 0755 echo ERROR: Cannot create deps download dir! 1>&2 0756 exit /b 103 0757 ) 0758 ) 0759 mkdir %DEPS_BUILD_DIR% 0760 if errorlevel 1 ( 0761 if not exist "%DEPS_BUILD_DIR%\" ( 0762 echo ERROR: Cannot create deps build dir! 1>&2 0763 exit /b 103 0764 ) 0765 ) 0766 mkdir %DEPS_INSTALL_DIR% 0767 if errorlevel 1 ( 0768 if not exist "%DEPS_INSTALL_DIR%\" ( 0769 echo ERROR: Cannot create deps install dir! 1>&2 0770 exit /b 103 0771 ) 0772 ) 0773 ) 0774 if NOT "%ARG_SKIP_KRITA%" == "1" ( 0775 mkdir %KRITA_BUILD_DIR% 0776 if errorlevel 1 ( 0777 if not exist "%KRITA_BUILD_DIR%\" ( 0778 echo ERROR: Cannot create Krita build dir! 1>&2 0779 exit /b 103 0780 ) 0781 ) 0782 mkdir %PLUGINS_DOWNLOAD_DIR% 0783 if errorlevel 1 ( 0784 if not exist "%PLUGINS_DOWNLOAD_DIR%\" ( 0785 echo ERROR: Cannot create plugins download dir! 1>&2 0786 exit /b 103 0787 ) 0788 ) 0789 mkdir %PLUGINS_BUILD_DIR% 0790 if errorlevel 1 ( 0791 if not exist "%PLUGINS_BUILD_DIR%\" ( 0792 echo ERROR: Cannot create plugins build dir! 1>&2 0793 exit /b 103 0794 ) 0795 ) 0796 mkdir %KRITA_INSTALL_DIR% 0797 if errorlevel 1 ( 0798 if not exist "%KRITA_INSTALL_DIR%\" ( 0799 echo ERROR: Cannot create Krita install dir! 1>&2 0800 exit /b 103 0801 ) 0802 ) 0803 ) 0804 0805 echo. 0806 0807 0808 set CMAKE_BUILD_TYPE=RelWithDebInfo 0809 set QT_ENABLE_DEBUG_INFO=OFF 0810 0811 set KRITA_GENERATOR=MinGW Makefiles 0812 set KRITA_BUILD_TESTING=OFF 0813 set KRITA_INSTALL_BENCHMARKS=OFF 0814 0815 if NOT "%KRITA_NINJA_DIR%" == "" ( 0816 set KRITA_GENERATOR=Ninja 0817 ) 0818 0819 if "%ARG_DEV%" == "1" ( 0820 set KRITA_GENERATOR=CodeBlocks - %KRITA_GENERATOR% 0821 set KRITA_BUILD_TESTING=ON 0822 set KRITA_INSTALL_BENCHMARKS=ON 0823 ) 0824 0825 if "%KRITA_BRANDING%" == "" ( 0826 rem Check Jenkins job name 0827 if "%JOB_NAME%" == "Krita_Nightly_Windows_Build" ( 0828 set KRITA_BRANDING=Next 0829 ) else ( 0830 if "%JOB_NAME%" == "Krita_Stable_Windows_Build" ( 0831 set KRITA_BRANDING=Plus 0832 ) 0833 ) 0834 ) 0835 0836 :: Paths for CMake 0837 set "BUILDDIR_DOWNLOAD_CMAKE=%DEPS_DOWNLOAD_DIR:\=/%" 0838 set "BUILDDIR_DOWNLOAD_CMAKE=%BUILDDIR_DOWNLOAD_CMAKE: =\ %" 0839 set "BUILDDIR_PLUGINS_DOWNLOAD_CMAKE=%PLUGINS_DOWNLOAD_DIR:\=/%" 0840 set "BUILDDIR_PLUGINS_DOWNLOAD_CMAKE=%BUILDDIR_PLUGINS_DOWNLOAD_CMAKE: =\ %" 0841 set "BUILDDIR_DEPS_INSTALL_CMAKE=%DEPS_INSTALL_DIR:\=/%" 0842 set "BUILDDIR_DEPS_INSTALL_CMAKE=%BUILDDIR_DEPS_INSTALL_CMAKE: =\ %" 0843 set "BUILDDIR_KRITA_INSTALL_CMAKE=%KRITA_INSTALL_DIR:\=/%" 0844 set "BUILDDIR_KRITA_INSTALL_CMAKE=%BUILDDIR_KRITA_INSTALL_CMAKE: =\ %" 0845 set "BUILDDIR_PLUGINS_INSTALL_CMAKE=%KRITA_INSTALL_DIR:\=/%" 0846 set "BUILDDIR_PLUGINS_INSTALL_CMAKE=%BUILDDIR_KRITA_INSTALL_CMAKE: =\ %" 0847 0848 if not "%PERL_DIR%" == "" ( 0849 set "PERL_EXECUTABLE=%PERL_DIR%\perl.exe" 0850 set "PERL_EXECUTABLE=!PERL_EXECUTABLE:\=/!" 0851 set "PERL_EXECUTABLE=!PERL_EXECUTABLE: =\ !" 0852 ) 0853 0854 set "PATH=%DEPS_INSTALL_DIR%\bin;%PATH%" 0855 0856 if not "%GETTEXT_SEARCH_PATH%" == "" ( 0857 set "PATH=%PATH%;%GETTEXT_SEARCH_PATH%" 0858 ) 0859 0860 :: Prepare the CMake command lines 0861 set CMDLINE_CMAKE_DEPS="%CMAKE_EXE%" "%KRITA_SRC_DIR%\3rdparty" ^ 0862 -DSUBMAKE_JOBS=%PARALLEL_JOBS% ^ 0863 -DQT_ENABLE_DEBUG_INFO=%QT_ENABLE_DEBUG_INFO% ^ 0864 -DQT_ENABLE_DYNAMIC_OPENGL=%QT_ENABLE_DYNAMIC_OPENGL% ^ 0865 -DPERL_EXECUTABLE=%PERL_EXECUTABLE% ^ 0866 -DEXTERNALS_DOWNLOAD_DIR=%BUILDDIR_DOWNLOAD_CMAKE% ^ 0867 -DINSTALL_ROOT=%BUILDDIR_DEPS_INSTALL_CMAKE% ^ 0868 -G "MinGW Makefiles" ^ 0869 -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% 0870 0871 set CMDLINE_CMAKE_KRITA="%CMAKE_EXE%" "%KRITA_SRC_DIR%\." ^ 0872 -DBoost_DEBUG=OFF ^ 0873 -DBOOST_INCLUDEDIR=%BUILDDIR_DEPS_INSTALL_CMAKE%/include ^ 0874 -DBOOST_ROOT=%BUILDDIR_DEPS_INSTALL_CMAKE% ^ 0875 -DBOOST_LIBRARYDIR=%BUILDDIR_DEPS_INSTALL_CMAKE%/lib ^ 0876 -DCMAKE_PREFIX_PATH=%BUILDDIR_DEPS_INSTALL_CMAKE% ^ 0877 -DCMAKE_INSTALL_PREFIX=%BUILDDIR_KRITA_INSTALL_CMAKE% ^ 0878 -DBUILD_TESTING=%KRITA_BUILD_TESTING% ^ 0879 -DINSTALL_BENCHMARKS=%KRITA_INSTALL_BENCHMARKS% ^ 0880 -DHAVE_MEMORY_LEAK_TRACKER=OFF ^ 0881 -DFOUNDATION_BUILD=ON ^ 0882 -DUSE_QT_TABLET_WINDOWS=ON ^ 0883 -DKRITA_ENABLE_PCH=OFF ^ 0884 -DHIDE_SAFE_ASSERTS=ON ^ 0885 -DBRANDING=%KRITA_BRANDING% ^ 0886 -Wno-dev ^ 0887 -G "%KRITA_GENERATOR%" ^ 0888 -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% 0889 0890 set CMDLINE_CMAKE_PLUGINS="%CMAKE_EXE%" "%KRITA_SRC_DIR%\3rdparty_plugins" ^ 0891 -DSUBMAKE_JOBS=%PARALLEL_JOBS% ^ 0892 -DQT_ENABLE_DEBUG_INFO=%QT_ENABLE_DEBUG_INFO% ^ 0893 -DQT_ENABLE_DYNAMIC_OPENGL=%QT_ENABLE_DYNAMIC_OPENGL% ^ 0894 -DEXTERNALS_DOWNLOAD_DIR=%BUILDDIR_PLUGINS_DOWNLOAD_CMAKE% ^ 0895 -DINSTALL_ROOT=%BUILDDIR_PLUGINS_INSTALL_CMAKE% ^ 0896 -G "%KRITA_GENERATOR%" ^ 0897 -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% 0898 0899 :: Launch CMD prompt if requested 0900 if "%ARG_CMD%" == "1" ( 0901 doskey cmake-deps=cmd /c "pushd %DEPS_BUILD_DIR% && %CMDLINE_CMAKE_DEPS%" 0902 doskey cmake-krita=cmd /c "pushd %KRITA_BUILD_DIR% && %CMDLINE_CMAKE_KRITA%" 0903 doskey make-deps=cmd /c "pushd %DEPS_BUILD_DIR% && "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% --target $*" 0904 doskey make-krita=cmd /c "pushd %KRITA_BUILD_DIR% && "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% --target install -- -j%PARALLEL_JOBS%" 0905 doskey make-plugins=cmd /c "pushd %PLUGINS_BUILD_DIR% && "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% --target $* -- -j%PARALLEL_JOBS%" 0906 echo. 0907 title Krita build - %KRITA_SRC_DIR% ^(deps: %DEPS_BUILD_DIR%, krita: %KRITA_BUILD_DIR%, plugins: %PLUGINS_BUILD_DIR%^) 0908 echo You're now in the build environment. 0909 echo The following macros are available: 0910 echo cmake-deps 0911 echo -- Run CMake for the deps. 0912 echo make-deps ^<deps target^> 0913 echo -- Run build for the specified deps target. The target name should 0914 echo include the `ext_` prefix, e.g. `ext_qt`. 0915 echo make-plugins ^<deps target^> 0916 echo -- Build the specified plugin target. The target name should 0917 echo include the `ext_` prefix, e.g. `ext_gmic`. 0918 echo cmake-krita 0919 echo -- Run CMake for Krita. 0920 echo make-krita 0921 echo -- Run build for Krita's `install` target. 0922 echo. 0923 echo For more info, type `doskey /macros` to view the macro commands. 0924 cmd /k 0925 exit 0926 ) 0927 0928 0929 if "%ARG_SKIP_DEPS%" == "1" goto skip_build_deps 0930 0931 pushd %DEPS_BUILD_DIR% 0932 if errorlevel 1 ( 0933 echo ERROR: Cannot enter deps build dir! 1>&2 0934 exit /b 104 0935 ) 0936 0937 echo Running CMake for deps... 0938 0939 @echo on 0940 %CMDLINE_CMAKE_DEPS% 0941 @if errorlevel 1 ( 0942 @echo ERROR: CMake configure failed! 1>&2 0943 @exit /b 104 0944 ) 0945 @echo off 0946 echo. 0947 0948 set EXT_TARGETS=patch zlib gettext openssl boost exiv2 fftw3 eigen3 jpeg lcms2 0949 set EXT_TARGETS=%EXT_TARGETS% ocio openexr png icoutils tiff gsl libraw 0950 set EXT_TARGETS=%EXT_TARGETS% giflib qt kwindowsystem drmingw gmic freetype poppler 0951 set EXT_TARGETS=%EXT_TARGETS% python sip pyqt 0952 set EXT_TARGETS=%EXT_TARGETS% lzma quazip openjpeg libde265 libx265 libheif 0953 set EXT_TARGETS=%EXT_TARGETS% seexpr mypaint webp jpegxl xsimd 0954 0955 for %%a in (%EXT_TARGETS%) do ( 0956 set TEST_HAS_TARGET= 0957 call :has_target TEST_HAS_TARGET_SELF "ext_%%a\" 0958 call :has_target TEST_HAS_KF5_TARGET "ext_frameworks\ext_%%a-prefix\" 0959 call :has_target TEST_HAS_HEIF_TARGET "ext_heif\ext_%%a-prefix\" 0960 if "!TEST_HAS_TARGET_SELF!" == "1" set TEST_HAS_TARGET=1 0961 if "!TEST_HAS_KF5_TARGET!" == "1" set TEST_HAS_TARGET=1 0962 if "!TEST_HAS_HEIF_TARGET!" == "1" set TEST_HAS_TARGET=1 0963 0964 if defined TEST_HAS_TARGET ( 0965 echo Building ext_%%a... 0966 "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% -j%PARALLEL_JOBS% --target ext_%%a 0967 if errorlevel 1 ( 0968 echo ERROR: Building of ext_%%a failed! 1>&2 0969 exit /b 105 0970 ) 0971 ) else ( 0972 echo Skipping ext_%%a, using OS package... 0973 ) 0974 ) 0975 echo. 0976 0977 echo ******** Built deps ******** 0978 popd 0979 0980 :skip_build_deps 0981 0982 if "%ARG_SKIP_KRITA%" == "1" goto skip_build_krita 0983 0984 pushd %KRITA_BUILD_DIR% 0985 if errorlevel 1 ( 0986 echo ERROR: Cannot enter Krita build dir! 1>&2 0987 exit /b 104 0988 ) 0989 0990 echo Running CMake for Krita... 0991 0992 @echo on 0993 %CMDLINE_CMAKE_KRITA% 0994 @if errorlevel 1 ( 0995 @echo ERROR: CMake configure failed! 1>&2 0996 @exit /b 104 0997 ) 0998 @echo off 0999 echo. 1000 1001 echo Building Krita... 1002 "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% --target install -- -j%PARALLEL_JOBS% 1003 if errorlevel 1 ( 1004 echo ERROR: Building of Krita failed! 1>&2 1005 exit /b 105 1006 ) 1007 echo. 1008 1009 echo ******** Built Krita ******** 1010 popd 1011 1012 pushd %PLUGINS_BUILD_DIR% 1013 if errorlevel 1 ( 1014 echo ERROR: Cannot enter plugins build dir! 1>&2 1015 exit /b 104 1016 ) 1017 1018 echo Running CMake for plugins... 1019 1020 @echo on 1021 %CMDLINE_CMAKE_PLUGINS% 1022 @if errorlevel 1 ( 1023 @echo ERROR: CMake configure failed! 1>&2 1024 @exit /b 104 1025 ) 1026 @echo off 1027 echo. 1028 1029 set EXT_TARGETS=gmic 1030 1031 for %%a in (%EXT_TARGETS%) do ( 1032 echo Building ext_%%a... 1033 "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% --target ext_%%a 1034 if errorlevel 1 ( 1035 echo ERROR: Building of ext_%%a failed! 1>&2 1036 exit /b 105 1037 ) 1038 ) 1039 echo. 1040 1041 echo ******** Built plugins ******** 1042 popd 1043 1044 :skip_build_krita 1045 1046 echo Krita build completed!