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 call :get_dir_path CMAKE_BIN_DIR "!CMAKE_EXE!" 0365 ) else ( 0366 echo Found CMake on PATH: !CMAKE_EXE! 0367 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0368 choice /c ny /n /m "Is this correct? [y/n] " 0369 if errorlevel 3 exit 255 0370 if not errorlevel 2 ( 0371 call :prompt_for_file CMAKE_EXE "Provide path to cmake.exe" 0372 if "!CMAKE_EXE!" == "" ( 0373 echo ERROR: CMake not found! 1>&2 0374 exit /b 102 0375 ) 0376 call :get_dir_path CMAKE_BIN_DIR "!CMAKE_EXE!" 0377 ) 0378 ) 0379 call :get_dir_path CMAKE_BIN_DIR "!CMAKE_EXE!" 0380 ) 0381 ) 0382 echo CMake: %CMAKE_BIN_DIR% 0383 0384 if "%SEVENZIP_EXE%" == "" ( 0385 call :find_on_path SEVENZIP_EXE 7z.exe 0386 if "!SEVENZIP_EXE!" == "" ( 0387 set "SEVENZIP_EXE=%ProgramFiles%\7-Zip\7z.exe" 0388 if "!SEVENZIP_EXE!" == "" ( 0389 set "SEVENZIP_EXE=%ProgramFiles(x86)%\7-Zip\7z.exe" 0390 ) 0391 if "!SEVENZIP_EXE!" == "" ( 0392 echo 7-Zip not found 0393 ) 0394 ) 0395 ) 0396 if "%SEVENZIP_EXE%" == "" ( 0397 echo 7-Zip: %SEVENZIP_EXE% 0398 ) 0399 0400 if "%MINGW_BIN_DIR%" == "" ( 0401 call :find_on_path MINGW_BIN_DIR_MAKE_EXE mingw32-make.exe 0402 if "!MINGW_BIN_DIR_MAKE_EXE!" == "" ( 0403 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0404 call :prompt_for_file MINGW_BIN_DIR_MAKE_EXE "Provide path to mingw32-make.exe of mingw-w64" 0405 ) 0406 if "!MINGW_BIN_DIR_MAKE_EXE!" == "" ( 0407 echo ERROR: mingw-w64 not found! 1>&2 0408 exit /b 102 0409 ) 0410 call :get_dir_path MINGW_BIN_DIR "!MINGW_BIN_DIR_MAKE_EXE!" 0411 ) else ( 0412 call :get_dir_path MINGW_BIN_DIR "!MINGW_BIN_DIR_MAKE_EXE!" 0413 echo Found mingw on PATH: !MINGW_BIN_DIR! 0414 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0415 choice /c ny /n /m "Is this correct? [y/n] " 0416 if errorlevel 3 exit 255 0417 if not errorlevel 2 ( 0418 call :prompt_for_file MINGW_BIN_DIR_MAKE_EXE "Provide path to mingw32-make.exe of mingw-w64" 0419 if "!MINGW_BIN_DIR_MAKE_EXE!" == "" ( 0420 echo ERROR: mingw-w64 not found! 1>&2 0421 exit /b 102 0422 ) 0423 call :get_dir_path MINGW_BIN_DIR "!MINGW_BIN_DIR_MAKE_EXE!" 0424 ) 0425 ) 0426 ) 0427 ) 0428 echo mingw-w64: %MINGW_BIN_DIR% 0429 0430 if "%PYTHON_BIN_DIR%" == "" ( 0431 call :find_on_path PYTHON_BIN_DIR_PYTHON_EXE python.exe 0432 if "!PYTHON_BIN_DIR_PYTHON_EXE!" == "" ( 0433 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0434 call :prompt_for_file PYTHON_BIN_DIR_PYTHON_EXE "Provide path to python.exe of Python 3.6.2" 0435 ) 0436 if "!PYTHON_BIN_DIR_PYTHON_EXE!" == "" ( 0437 echo ERROR: Python not found! 1>&2 0438 exit /b 102 0439 ) 0440 call :get_dir_path PYTHON_BIN_DIR "!PYTHON_BIN_DIR_PYTHON_EXE!" 0441 ) else ( 0442 call :get_dir_path PYTHON_BIN_DIR "!PYTHON_BIN_DIR_PYTHON_EXE!" 0443 echo Found Python on PATH: !PYTHON_BIN_DIR! 0444 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0445 choice /c ny /n /m "Is this correct? [y/n] " 0446 if errorlevel 3 exit 255 0447 if not errorlevel 2 ( 0448 call :prompt_for_file PYTHON_BIN_DIR_PYTHON_EXE "Provide path to python.exe of Python 3.6.2" 0449 if "!PYTHON_BIN_DIR_PYTHON_EXE!" == "" ( 0450 echo ERROR: Python not found! 1>&2 0451 exit /b 102 0452 ) 0453 call :get_dir_path PYTHON_BIN_DIR "!PYTHON_BIN_DIR_PYTHON_EXE!" 0454 ) 0455 ) 0456 ) 0457 ) 0458 echo Python: %PYTHON_BIN_DIR% 0459 0460 @REM Translation tools 0461 0462 if "%KRITA_GIT_DIR%" == "" ( 0463 call :find_on_path KRITA_GIT_EXE_DIR git.exe 0464 if NOT "!KRITA_GIT_EXE_DIR!" == "" ( 0465 call :get_dir_path KRITA_GIT_DIR "!KRITA_GIT_EXE_DIR!" 0466 echo Found Git on PATH: !KRITA_GIT_DIR! 0467 ) 0468 ) else echo Git found on %KRITA_GIT_DIR% 0469 0470 if "%KRITA_NINJA_DIR%" == "" ( 0471 call :find_on_path KRITA_NINJA_EXE_DIR ninja.exe 0472 if NOT "!KRITA_NINJA_EXE_DIR!" == "" ( 0473 call :get_dir_path KRITA_NINJA_DIR "!KRITA_NINJA_EXE_DIR!" 0474 echo Found Ninja on PATH: !KRITA_NINJA_DIR! 0475 ) 0476 ) else echo Ninja found on %KRITA_NINJA_DIR% 0477 0478 if "%SVN_DIR%" == "" ( 0479 call :find_on_path SVN_EXE_DIR svn.exe 0480 if NOT "!SVN_EXE_DIR!" == "" ( 0481 call :get_dir_path SVN_DIR "!SVN_EXE_DIR!" 0482 echo Found SVN on PATH: !SVN_DIR! 0483 ) 0484 ) else echo SVN found on %SVN_DIR% 0485 0486 if "%PERL_DIR%" == "" ( 0487 call :find_on_path PERL_EXE_DIR perl.exe 0488 if NOT "!PERL_EXE_DIR!" == "" ( 0489 call :get_dir_path PERL_DIR "!PERL_EXE_DIR!" 0490 echo Found Perl on PATH: !PERL_DIR! 0491 ) 0492 ) else echo Perl found on %PERL_DIR% 0493 0494 if "%ARG_SKIP_DEPS%" == "1" goto skip_windows_sdk_dir_check 0495 0496 if "%WindowsSdkDir%" == "" if not "%ProgramFiles(x86)%" == "" set "WindowsSdkDir=%ProgramFiles(x86)%\Windows Kits\10" 0497 if "%WindowsSdkDir%" == "" set "WindowsSdkDir=%ProgramFiles(x86)%\Windows Kits\10" 0498 if exist "%WindowsSdkDir%\" ( 0499 pushd "%WindowsSdkDir%" 0500 if exist "bin\x64\fxc.exe" ( 0501 set HAVE_FXC_EXE=1 0502 if "%WindowsSdkVerBinPath%" == "" set "WindowsSdkVerBinPath=%WindowsSdkDir%" 0503 ) else ( 0504 for /f "delims=" %%a in ('dir /a:d /b "bin\10.*"') do ( 0505 if exist "bin\%%a\x64\fxc.exe" ( 0506 set HAVE_FXC_EXE=1 0507 if "%WindowsSdkVerBinPath%" == "" set "WindowsSdkVerBinPath=%WindowsSdkDir%\bin\%%a\" 0508 ) 0509 ) 0510 ) 0511 popd 0512 ) 0513 set QT_ENABLE_DYNAMIC_OPENGL=ON 0514 if not "%HAVE_FXC_EXE%" == "1" ( 0515 set WindowsSdkDir= 0516 echo Windows SDK 10 with fxc.exe not found 0517 echo Qt will *not* be built with ANGLE ^(dynamic OpenGL^) support. 0518 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0519 choice /c ny /n /m "Is this ok? [y/n] " 0520 if errorlevel 3 exit 255 0521 if not errorlevel 2 ( 0522 exit /b 102 0523 ) 0524 ) 0525 set QT_ENABLE_DYNAMIC_OPENGL=OFF 0526 ) else echo Windows SDK 10 with fxc.exe found on %WindowsSdkDir% 0527 0528 :skip_windows_sdk_dir_check 0529 0530 if not "%ARG_JOBS%" == "" ( 0531 set "PARALLEL_JOBS=%ARG_JOBS%" 0532 ) 0533 if "%PARALLEL_JOBS%" == "" ( 0534 echo Number of logical CPU cores detected: %NUMBER_OF_PROCESSORS% 0535 echo Enabling %NUMBER_OF_PROCESSORS% parallel jobs 0536 set PARALLEL_JOBS=%NUMBER_OF_PROCESSORS% 0537 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0538 choice /c ny /n /m "Is this correct? [y/n] " 0539 if errorlevel 3 exit 255 0540 if not errorlevel 2 ( 0541 call :prompt_for_positive_integer PARALLEL_JOBS "Provide no. of parallel jobs" 0542 if "!PARALLEL_JOBS!" == "" ( 0543 echo ERROR: Invalid job count! 1>&2 0544 exit /b 102 0545 ) 0546 ) 0547 ) 0548 ) 0549 echo Parallel jobs count: %PARALLEL_JOBS% 0550 0551 if not "%ARG_SRC_DIR%" == "" ( 0552 set "KRITA_SRC_DIR=%ARG_SRC_DIR%" 0553 ) 0554 if "%KRITA_SRC_DIR%" == "" ( 0555 :: Check whether this looks like to be in the source tree 0556 set "_temp=%~dp0" 0557 if "!_temp:~-21!" == "\build-tools\windows\" ( 0558 if exist "!_temp:~0,-21!\CMakeLists.txt" ( 0559 if exist "!_temp:~0,-21!\3rdparty\CMakeLists.txt" ( 0560 set "KRITA_SRC_DIR=!_temp:~0,-21!\" 0561 echo Script is running inside Krita src dir 0562 ) 0563 ) 0564 ) 0565 ) 0566 if "%KRITA_SRC_DIR%" == "" ( 0567 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0568 call :prompt_for_dir KRITA_SRC_DIR "Provide path of Krita src dir" 0569 ) 0570 if "!KRITA_SRC_DIR!" == "" ( 0571 echo ERROR: Krita src dir not found! 1>&2 0572 exit /b 102 0573 ) 0574 ) 0575 echo Krita src: %KRITA_SRC_DIR% 0576 0577 if "%ARG_SKIP_DEPS%" == "1" goto skip_deps_args_check 0578 0579 if not "%ARG_DOWNLOAD_DIR%" == "" ( 0580 set "DEPS_DOWNLOAD_DIR=%ARG_DOWNLOAD_DIR%" 0581 ) 0582 if "%DEPS_DOWNLOAD_DIR%" == "" ( 0583 set DEPS_DOWNLOAD_DIR=%CD%\d\ 0584 echo Using default deps download dir: !DEPS_DOWNLOAD_DIR! 0585 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0586 choice /c ny /n /m "Is this ok? [y/n] " 0587 if errorlevel 3 exit 255 0588 if not errorlevel 2 ( 0589 call :prompt_for_dir DEPS_DOWNLOAD_DIR "Provide path of depps download dir" 0590 ) 0591 ) 0592 if "!DEPS_DOWNLOAD_DIR!" == "" ( 0593 echo ERROR: Deps download dir not set! 1>&2 0594 exit /b 102 0595 ) 0596 ) 0597 echo Deps download dir: %DEPS_DOWNLOAD_DIR% 0598 0599 if not "%ARG_DEPS_BUILD_DIR%" == "" ( 0600 set "DEPS_BUILD_DIR=%ARG_DEPS_BUILD_DIR%" 0601 ) 0602 if "%DEPS_BUILD_DIR%" == "" ( 0603 set DEPS_BUILD_DIR=%CD%\b_deps\ 0604 echo Using default deps build dir: !DEPS_BUILD_DIR! 0605 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0606 choice /c ny /n /m "Is this ok? [y/n] " 0607 if errorlevel 3 exit 255 0608 if not errorlevel 2 ( 0609 call :prompt_for_dir DEPS_BUILD_DIR "Provide path of deps build dir" 0610 ) 0611 ) 0612 if "!DEPS_BUILD_DIR!" == "" ( 0613 echo ERROR: Deps build dir not set! 1>&2 0614 exit /b 102 0615 ) 0616 ) 0617 echo Deps build dir: %DEPS_BUILD_DIR% 0618 0619 :skip_deps_args_check 0620 0621 if not "%ARG_DEPS_INSTALL_DIR%" == "" ( 0622 set "DEPS_INSTALL_DIR=%ARG_DEPS_INSTALL_DIR%" 0623 ) 0624 if "%DEPS_INSTALL_DIR%" == "" ( 0625 set DEPS_INSTALL_DIR=%CD%\i_deps\ 0626 echo Using default deps install dir: !DEPS_INSTALL_DIR! 0627 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0628 choice /c ny /n /m "Is this ok? [y/n] " 0629 if errorlevel 3 exit 255 0630 if not errorlevel 2 ( 0631 call :prompt_for_dir DEPS_INSTALL_DIR "Provide path of deps install dir" 0632 ) 0633 ) 0634 if "!DEPS_INSTALL_DIR!" == "" ( 0635 echo ERROR: Deps install dir not set! 1>&2 0636 exit /b 102 0637 ) 0638 ) 0639 echo Deps install dir: %DEPS_INSTALL_DIR% 0640 0641 if "%ARG_SKIP_KRITA%" == "1" goto skip_krita_args_check 0642 0643 if not "%ARG_KRITA_BUILD_DIR%" == "" ( 0644 set "KRITA_BUILD_DIR=%ARG_KRITA_BUILD_DIR%" 0645 ) 0646 if "%KRITA_BUILD_DIR%" == "" ( 0647 set KRITA_BUILD_DIR=%CD%\b\ 0648 echo Using default Krita build dir: !KRITA_BUILD_DIR! 0649 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0650 choice /c ny /n /m "Is this ok? [y/n] " 0651 if errorlevel 3 exit 255 0652 if not errorlevel 2 ( 0653 call :prompt_for_dir KRITA_BUILD_DIR "Provide path of Krita build dir" 0654 ) 0655 ) 0656 if "!KRITA_BUILD_DIR!" == "" ( 0657 echo ERROR: Krita build dir not set! 1>&2 0658 exit /b 102 0659 ) 0660 ) 0661 echo Krita build dir: %KRITA_BUILD_DIR% 0662 0663 @REM Plugins also need the download dir 0664 if not "%ARG_DOWNLOAD_DIR%" == "" ( 0665 set "PLUGINS_DOWNLOAD_DIR=%ARG_DOWNLOAD_DIR%" 0666 ) 0667 if "%PLUGINS_DOWNLOAD_DIR%" == "" ( 0668 set PLUGINS_DOWNLOAD_DIR=%CD%\d\ 0669 echo Using default deps download dir: !PLUGINS_DOWNLOAD_DIR! 0670 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0671 choice /c ny /n /m "Is this ok? [y/n] " 0672 if errorlevel 3 exit 255 0673 if not errorlevel 2 ( 0674 call :prompt_for_dir PLUGINS_DOWNLOAD_DIR "Provide path of plugins download dir" 0675 ) 0676 ) 0677 if "!PLUGINS_DOWNLOAD_DIR!" == "" ( 0678 echo ERROR: Plugins download dir not set! 1>&2 0679 exit /b 102 0680 ) 0681 ) 0682 echo Plugins download dir: %PLUGINS_DOWNLOAD_DIR% 0683 0684 if not "%ARG_PLUGINS_BUILD_DIR%" == "" ( 0685 set "PLUGINS_BUILD_DIR=%ARG_PLUGINS_BUILD_DIR%" 0686 ) 0687 if "%PLUGINS_BUILD_DIR%" == "" ( 0688 set PLUGINS_BUILD_DIR=%CD%\b_plugins\ 0689 echo Using default plugins build dir: !PLUGINS_BUILD_DIR! 0690 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0691 choice /c ny /n /m "Is this ok? [y/n] " 0692 if errorlevel 3 exit 255 0693 if not errorlevel 2 ( 0694 call :prompt_for_dir PLUGINS_BUILD_DIR "Provide path of plugins build dir" 0695 ) 0696 ) 0697 if "!PLUGINS_BUILD_DIR!" == "" ( 0698 echo ERROR: Plugins build dir not set! 1>&2 0699 exit /b 102 0700 ) 0701 ) 0702 echo Plugins build dir: %PLUGINS_BUILD_DIR% 0703 0704 if not "%ARG_KRITA_INSTALL_DIR%" == "" ( 0705 set "KRITA_INSTALL_DIR=%ARG_KRITA_INSTALL_DIR%" 0706 ) 0707 if "%KRITA_INSTALL_DIR%" == "" ( 0708 set KRITA_INSTALL_DIR=%CD%\i\ 0709 echo Using default Krita install dir: !KRITA_INSTALL_DIR! 0710 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0711 choice /c ny /n /m "Is this ok? [y/n] " 0712 if errorlevel 3 exit 255 0713 if not errorlevel 2 ( 0714 call :prompt_for_dir KRITA_INSTALL_DIR "Provide path of Krita install dir" 0715 ) 0716 ) 0717 if "!KRITA_INSTALL_DIR!" == "" ( 0718 echo ERROR: Krita install dir not set! 1>&2 0719 exit /b 102 0720 ) 0721 ) 0722 echo Krita install dir: %KRITA_INSTALL_DIR% 0723 0724 :skip_krita_args_check 0725 0726 echo. 0727 0728 0729 if not "%ARG_NO_INTERACTIVE%" == "1" ( 0730 choice /c ny /n /m "Is the above ok? [y/n] " 0731 if errorlevel 3 exit 255 0732 if not errorlevel 2 ( 0733 exit /b 1 0734 ) 0735 echo. 0736 ) 0737 0738 :: Initialize clean PATH 0739 set "PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\" 0740 set "PATH=%PYTHON_BIN_DIR%;%MINGW_BIN_DIR%;%PATH%" 0741 if NOT "%KRITA_GIT_DIR%" == "" ( 0742 set "PATH=%PATH%;%KRITA_GIT_DIR%" 0743 ) 0744 if NOT "%KRITA_NINJA_DIR%" == "" ( 0745 if NOT "%KRITA_NINJA_DIR%" == "%MINGW_BIN_DIR%" ( 0746 set "PATH=%PATH%;%KRITA_NINJA_DIR%" 0747 ) 0748 ) 0749 if NOT "%SVN_DIR%" == "" ( 0750 set "PATH=%PATH%;%SVN_DIR%" 0751 ) 0752 if NOT "%CMAKE_BIN_DIR%" == "" ( 0753 set PATH=%PATH%;%CMAKE_BIN_DIR% 0754 ) 0755 0756 echo Creating dirs... 0757 if NOT "%ARG_SKIP_DEPS%" == "1" ( 0758 mkdir %DEPS_DOWNLOAD_DIR% 0759 if errorlevel 1 ( 0760 if not exist "%DEPS_DOWNLOAD_DIR%\" ( 0761 echo ERROR: Cannot create deps download dir! 1>&2 0762 exit /b 103 0763 ) 0764 ) 0765 mkdir %DEPS_BUILD_DIR% 0766 if errorlevel 1 ( 0767 if not exist "%DEPS_BUILD_DIR%\" ( 0768 echo ERROR: Cannot create deps build dir! 1>&2 0769 exit /b 103 0770 ) 0771 ) 0772 mkdir %DEPS_INSTALL_DIR% 0773 if errorlevel 1 ( 0774 if not exist "%DEPS_INSTALL_DIR%\" ( 0775 echo ERROR: Cannot create deps install dir! 1>&2 0776 exit /b 103 0777 ) 0778 ) 0779 ) 0780 if NOT "%ARG_SKIP_KRITA%" == "1" ( 0781 mkdir %KRITA_BUILD_DIR% 0782 if errorlevel 1 ( 0783 if not exist "%KRITA_BUILD_DIR%\" ( 0784 echo ERROR: Cannot create Krita build dir! 1>&2 0785 exit /b 103 0786 ) 0787 ) 0788 mkdir %PLUGINS_DOWNLOAD_DIR% 0789 if errorlevel 1 ( 0790 if not exist "%PLUGINS_DOWNLOAD_DIR%\" ( 0791 echo ERROR: Cannot create plugins download dir! 1>&2 0792 exit /b 103 0793 ) 0794 ) 0795 mkdir %PLUGINS_BUILD_DIR% 0796 if errorlevel 1 ( 0797 if not exist "%PLUGINS_BUILD_DIR%\" ( 0798 echo ERROR: Cannot create plugins build dir! 1>&2 0799 exit /b 103 0800 ) 0801 ) 0802 mkdir %KRITA_INSTALL_DIR% 0803 if errorlevel 1 ( 0804 if not exist "%KRITA_INSTALL_DIR%\" ( 0805 echo ERROR: Cannot create Krita install dir! 1>&2 0806 exit /b 103 0807 ) 0808 ) 0809 ) 0810 0811 echo. 0812 0813 0814 set CMAKE_BUILD_TYPE=RelWithDebInfo 0815 set QT_ENABLE_DEBUG_INFO=OFF 0816 0817 set KRITA_GENERATOR=MinGW Makefiles 0818 set KRITA_BUILD_TESTING=OFF 0819 set KRITA_INSTALL_BENCHMARKS=OFF 0820 0821 if NOT "%KRITA_NINJA_DIR%" == "" ( 0822 set KRITA_GENERATOR=Ninja 0823 ) 0824 0825 if "%ARG_DEV%" == "1" ( 0826 set KRITA_GENERATOR=CodeBlocks - %KRITA_GENERATOR% 0827 set KRITA_BUILD_TESTING=ON 0828 set KRITA_INSTALL_BENCHMARKS=ON 0829 ) 0830 0831 if "%KRITA_BRANDING%" == "" ( 0832 rem Check Jenkins job name 0833 if "%JOB_NAME%" == "Krita_Nightly_Windows_Build" ( 0834 set KRITA_BRANDING=Next 0835 ) else ( 0836 if "%JOB_NAME%" == "Krita_Stable_Windows_Build" ( 0837 set KRITA_BRANDING=Plus 0838 ) 0839 ) 0840 ) 0841 0842 :: Paths for CMake 0843 set "BUILDDIR_DOWNLOAD_CMAKE=%DEPS_DOWNLOAD_DIR:\=/%" 0844 set "BUILDDIR_DOWNLOAD_CMAKE=%BUILDDIR_DOWNLOAD_CMAKE: =\ %" 0845 set "BUILDDIR_PLUGINS_DOWNLOAD_CMAKE=%PLUGINS_DOWNLOAD_DIR:\=/%" 0846 set "BUILDDIR_PLUGINS_DOWNLOAD_CMAKE=%BUILDDIR_PLUGINS_DOWNLOAD_CMAKE: =\ %" 0847 set "BUILDDIR_DEPS_INSTALL_CMAKE=%DEPS_INSTALL_DIR:\=/%" 0848 set "BUILDDIR_DEPS_INSTALL_CMAKE=%BUILDDIR_DEPS_INSTALL_CMAKE: =\ %" 0849 set "BUILDDIR_KRITA_INSTALL_CMAKE=%KRITA_INSTALL_DIR:\=/%" 0850 set "BUILDDIR_KRITA_INSTALL_CMAKE=%BUILDDIR_KRITA_INSTALL_CMAKE: =\ %" 0851 set "BUILDDIR_PLUGINS_INSTALL_CMAKE=%KRITA_INSTALL_DIR:\=/%" 0852 set "BUILDDIR_PLUGINS_INSTALL_CMAKE=%BUILDDIR_KRITA_INSTALL_CMAKE: =\ %" 0853 0854 if not "%PERL_DIR%" == "" ( 0855 :: Safety measure for Strawberry Perl injecting pkg-config in the PATH 0856 if exist "%PERL_DIR%\pkg-config.bat" ( 0857 echo Found unpatched Strawberry Perl, ignoring due to its pkg-config introducing external binaries. 0858 set "PATH=%PATH%;%DEPS_INSTALL_DIR%\Strawberry\perl\bin" 0859 ) else ( 0860 echo Found patched Strawberry Perl, it is safe to use. 0861 set "PERL_EXECUTABLE=%PERL_DIR%\perl.exe" 0862 set "PERL_EXECUTABLE=!PERL_EXECUTABLE:\=/!" 0863 set "PERL_EXECUTABLE=!PERL_EXECUTABLE: =\ !" 0864 set "PATH=%PATH%;%PERL_DIR%" 0865 ) 0866 ) else ( 0867 set "PATH=%PATH%;%DEPS_INSTALL_DIR%\Strawberry\perl\bin" 0868 ) 0869 0870 set "PATH=%DEPS_INSTALL_DIR%\bin;%PATH%" 0871 0872 if not "%GETTEXT_SEARCH_PATH%" == "" ( 0873 set "PATH=%PATH%;%GETTEXT_SEARCH_PATH%" 0874 ) 0875 0876 :: Prepare the CMake command lines 0877 set CMDLINE_CMAKE_DEPS="%CMAKE_EXE%" "%KRITA_SRC_DIR%\3rdparty" ^ 0878 -DSUBMAKE_JOBS=%PARALLEL_JOBS% ^ 0879 -DQT_ENABLE_DEBUG_INFO=%QT_ENABLE_DEBUG_INFO% ^ 0880 -DQT_ENABLE_DYNAMIC_OPENGL=%QT_ENABLE_DYNAMIC_OPENGL% ^ 0881 -DPERL_EXECUTABLE=%PERL_EXECUTABLE% ^ 0882 -DEXTERNALS_DOWNLOAD_DIR=%BUILDDIR_DOWNLOAD_CMAKE% ^ 0883 -DINSTALL_ROOT=%BUILDDIR_DEPS_INSTALL_CMAKE% ^ 0884 -G "%KRITA_GENERATOR%" ^ 0885 -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% 0886 0887 set CMDLINE_CMAKE_KRITA="%CMAKE_EXE%" "%KRITA_SRC_DIR%\." ^ 0888 -DBoost_DEBUG=OFF ^ 0889 -DBOOST_INCLUDEDIR=%BUILDDIR_DEPS_INSTALL_CMAKE%/include ^ 0890 -DBOOST_ROOT=%BUILDDIR_DEPS_INSTALL_CMAKE% ^ 0891 -DBOOST_LIBRARYDIR=%BUILDDIR_DEPS_INSTALL_CMAKE%/lib ^ 0892 -DCMAKE_PREFIX_PATH=%BUILDDIR_DEPS_INSTALL_CMAKE% ^ 0893 -DCMAKE_INSTALL_PREFIX=%BUILDDIR_KRITA_INSTALL_CMAKE% ^ 0894 -DBUILD_TESTING=%KRITA_BUILD_TESTING% ^ 0895 -DINSTALL_BENCHMARKS=%KRITA_INSTALL_BENCHMARKS% ^ 0896 -DHAVE_MEMORY_LEAK_TRACKER=OFF ^ 0897 -DFOUNDATION_BUILD=ON ^ 0898 -DUSE_QT_TABLET_WINDOWS=ON ^ 0899 -DKRITA_ENABLE_PCH=OFF ^ 0900 -DHIDE_SAFE_ASSERTS=ON ^ 0901 -DBRANDING=%KRITA_BRANDING% ^ 0902 -Wno-dev ^ 0903 -G "%KRITA_GENERATOR%" ^ 0904 -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% 0905 0906 set CMDLINE_CMAKE_PLUGINS="%CMAKE_EXE%" "%KRITA_SRC_DIR%\3rdparty_plugins" ^ 0907 -DSUBMAKE_JOBS=%PARALLEL_JOBS% ^ 0908 -DQT_ENABLE_DEBUG_INFO=%QT_ENABLE_DEBUG_INFO% ^ 0909 -DQT_ENABLE_DYNAMIC_OPENGL=%QT_ENABLE_DYNAMIC_OPENGL% ^ 0910 -DEXTERNALS_DOWNLOAD_DIR=%BUILDDIR_PLUGINS_DOWNLOAD_CMAKE% ^ 0911 -DINSTALL_ROOT=%BUILDDIR_PLUGINS_INSTALL_CMAKE% ^ 0912 -G "%KRITA_GENERATOR%" ^ 0913 -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% 0914 0915 :: Launch CMD prompt if requested 0916 if "%ARG_CMD%" == "1" ( 0917 doskey cmake-deps=cmd /c "pushd %DEPS_BUILD_DIR% && %CMDLINE_CMAKE_DEPS%" 0918 doskey cmake-krita=cmd /c "pushd %KRITA_BUILD_DIR% && %CMDLINE_CMAKE_KRITA%" 0919 doskey make-deps=cmd /c "pushd %DEPS_BUILD_DIR% && "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% --target $*" 0920 doskey make-krita=cmd /c "pushd %KRITA_BUILD_DIR% && "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% --target install -- -j%PARALLEL_JOBS%" 0921 doskey make-plugins=cmd /c "pushd %PLUGINS_BUILD_DIR% && "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% --target $* -- -j%PARALLEL_JOBS%" 0922 echo. 0923 title Krita build - %KRITA_SRC_DIR% ^(deps: %DEPS_BUILD_DIR%, krita: %KRITA_BUILD_DIR%, plugins: %PLUGINS_BUILD_DIR%^) 0924 echo You're now in the build environment. 0925 echo The following macros are available: 0926 echo cmake-deps 0927 echo -- Run CMake for the deps. 0928 echo make-deps ^<deps target^> 0929 echo -- Run build for the specified deps target. The target name should 0930 echo include the `ext_` prefix, e.g. `ext_qt`. 0931 echo make-plugins ^<deps target^> 0932 echo -- Build the specified plugin target. The target name should 0933 echo include the `ext_` prefix, e.g. `ext_gmic`. 0934 echo cmake-krita 0935 echo -- Run CMake for Krita. 0936 echo make-krita 0937 echo -- Run build for Krita's `install` target. 0938 echo. 0939 echo For more info, type `doskey /macros` to view the macro commands. 0940 cmd /k 0941 exit 0942 ) 0943 0944 0945 if "%ARG_SKIP_DEPS%" == "1" goto skip_build_deps 0946 0947 pushd %DEPS_BUILD_DIR% 0948 if errorlevel 1 ( 0949 echo ERROR: Cannot enter deps build dir! 1>&2 0950 exit /b 104 0951 ) 0952 0953 echo Running CMake for deps... 0954 0955 @echo on 0956 %CMDLINE_CMAKE_DEPS% 0957 @if errorlevel 1 ( 0958 @echo ERROR: CMake configure failed! 1>&2 0959 @exit /b 104 0960 ) 0961 @echo off 0962 echo. 0963 0964 set EXT_TARGETS=patch zlib gettext openssl boost exiv2 fftw3 eigen3 jpeg lcms2 0965 set EXT_TARGETS=%EXT_TARGETS% ocio openexr png icoutils tiff gsl 0966 set EXT_TARGETS=%EXT_TARGETS% giflib qt libraw kwindowsystem drmingw 0967 set EXT_TARGETS=%EXT_TARGETS% python sip pyqt 0968 set EXT_TARGETS=%EXT_TARGETS% lzma quazip openjpeg libde265 libx265 libheif 0969 set EXT_TARGETS=%EXT_TARGETS% seexpr mypaint webp jpegxl xsimd 0970 set EXT_TARGETS=%EXT_TARGETS% freetype fontconfig poppler fribidi unibreak 0971 set EXT_TARGETS=%EXT_TARGETS% ffmpeg lager mlt 0972 0973 for %%a in (%EXT_TARGETS%) do ( 0974 set TEST_HAS_TARGET= 0975 call :has_target TEST_HAS_TARGET_SELF "ext_%%a\" 0976 call :has_target TEST_HAS_KF5_TARGET "ext_frameworks\ext_%%a-prefix\" 0977 call :has_target TEST_HAS_HEIF_TARGET "ext_heif\ext_%%a-prefix\" 0978 if "!TEST_HAS_TARGET_SELF!" == "1" set TEST_HAS_TARGET=1 0979 if "!TEST_HAS_KF5_TARGET!" == "1" set TEST_HAS_TARGET=1 0980 if "!TEST_HAS_HEIF_TARGET!" == "1" set TEST_HAS_TARGET=1 0981 0982 if defined TEST_HAS_TARGET ( 0983 echo Building ext_%%a... 0984 "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% -j%PARALLEL_JOBS% --target ext_%%a 0985 if errorlevel 1 ( 0986 echo ERROR: Building of ext_%%a failed! 1>&2 0987 exit /b 105 0988 ) 0989 ) else ( 0990 echo Skipping ext_%%a, using OS package... 0991 ) 0992 ) 0993 echo. 0994 0995 echo ******** Built deps ******** 0996 popd 0997 0998 :skip_build_deps 0999 1000 if "%ARG_SKIP_KRITA%" == "1" goto skip_build_krita 1001 1002 pushd %KRITA_BUILD_DIR% 1003 if errorlevel 1 ( 1004 echo ERROR: Cannot enter Krita build dir! 1>&2 1005 exit /b 104 1006 ) 1007 1008 echo Running CMake for Krita... 1009 1010 @echo on 1011 %CMDLINE_CMAKE_KRITA% 1012 @if errorlevel 1 ( 1013 @echo ERROR: CMake configure failed! 1>&2 1014 @exit /b 104 1015 ) 1016 @echo off 1017 echo. 1018 1019 echo Building Krita... 1020 "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% --target install -- -j%PARALLEL_JOBS% 1021 if errorlevel 1 ( 1022 echo ERROR: Building of Krita failed! 1>&2 1023 exit /b 105 1024 ) 1025 echo. 1026 1027 echo ******** Built Krita ******** 1028 popd 1029 1030 pushd %PLUGINS_BUILD_DIR% 1031 if errorlevel 1 ( 1032 echo ERROR: Cannot enter plugins build dir! 1>&2 1033 exit /b 104 1034 ) 1035 1036 echo Running CMake for plugins... 1037 1038 @echo on 1039 %CMDLINE_CMAKE_PLUGINS% 1040 @if errorlevel 1 ( 1041 @echo ERROR: CMake configure failed! 1>&2 1042 @exit /b 104 1043 ) 1044 @echo off 1045 echo. 1046 1047 set EXT_TARGETS=gmic 1048 1049 for %%a in (%EXT_TARGETS%) do ( 1050 echo Building ext_%%a... 1051 "%CMAKE_EXE%" --build . --config %CMAKE_BUILD_TYPE% --target ext_%%a 1052 if errorlevel 1 ( 1053 echo ERROR: Building of ext_%%a failed! 1>&2 1054 exit /b 105 1055 ) 1056 ) 1057 echo. 1058 1059 echo ******** Built plugins ******** 1060 popd 1061 1062 :skip_build_krita 1063 1064 echo Krita build completed!