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!