forked from blender/blender
Sergey Sharybin
a99d9ba635
This change makes it so build system and update utilities for Blender builds are using pre-compiled libraries and other resources attached as Git modules instead of using checkout of SVN repositories in the parent folder. The directory layout: ``` * release/datafiles/ * assets/ -> blender-assets.git * publish/ * ... * README.txt * lib/ * darwin_x64/ -> lib-darwin_x64.git * darwin_arm64/ -> lib-darwin_arm64.git * linux_x64/ -> lib-linux_x64.git * windows_x64/ -> lib-windows_x64.git * tests/ * data/ -> blender-test-data.git ``` The changes about configuring the actual Git sub-modules are not included into this patch, as those require repository to actually exist before it can be used. The assets submodule is enabled by default, and the rest of them are disabled. This means that if someone runs `git submodule update --init` they will not get heavy libraries. The platform-specific and tests related submodules are enabled when using `make update` or `make test`. All the submodules are tracked: this means that when new commits are done to the submodule, the blender.git repository is to be updated to point them to the new hash. This causes some extra manual work, but it allows to more easily update Blender and its dependencies to known good state when performing operations like bisect. Ref #108978 Pull Request: blender/blender#117946 Co-authored-by: Brecht Van Lommel <brecht@blender.org> Co-authored-by: Ray Molenkamp <github@lazydodo.com> Pull Request: blender/blender#118628
126 lines
3.4 KiB
Batchfile
126 lines
3.4 KiB
Batchfile
@echo off
|
|
REM This batch file does an out-of-source CMake build in ../build_windows
|
|
REM This is for users who like to configure & build Blender with a single command.
|
|
setlocal EnableDelayedExpansion
|
|
setlocal ENABLEEXTENSIONS
|
|
set BLENDER_DIR=%~dp0
|
|
|
|
call "%BLENDER_DIR%\build_files\windows\reset_variables.cmd"
|
|
|
|
call "%BLENDER_DIR%\build_files\windows\check_spaces_in_path.cmd"
|
|
if errorlevel 1 goto EOF
|
|
|
|
call "%BLENDER_DIR%\build_files\windows\parse_arguments.cmd" %*
|
|
if errorlevel 1 goto EOF
|
|
|
|
call "%BLENDER_DIR%\build_files\windows\find_dependencies.cmd"
|
|
if errorlevel 1 goto EOF
|
|
|
|
REM if it is one of the convenience targets and BLENDER_BIN is set
|
|
REM skip compiler detection
|
|
if "%ICONS%%ICONS_GEOM%%DOC_PY%" == "1" (
|
|
if EXIST "%BLENDER_BIN%" (
|
|
goto convenience_targets
|
|
)
|
|
)
|
|
|
|
if "%BUILD_SHOW_HASHES%" == "1" (
|
|
call "%BLENDER_DIR%\build_files\windows\show_hashes.cmd"
|
|
goto EOF
|
|
)
|
|
|
|
if "%SHOW_HELP%" == "1" (
|
|
call "%BLENDER_DIR%\build_files\windows\show_help.cmd"
|
|
goto EOF
|
|
)
|
|
|
|
if "%FORMAT%" == "1" (
|
|
call "%BLENDER_DIR%\build_files\windows\format.cmd"
|
|
goto EOF
|
|
)
|
|
|
|
call "%BLENDER_DIR%\build_files\windows\detect_architecture.cmd"
|
|
if errorlevel 1 goto EOF
|
|
|
|
if "%BUILD_VS_YEAR%" == "" (
|
|
call "%BLENDER_DIR%\build_files\windows\autodetect_msvc.cmd"
|
|
if errorlevel 1 (
|
|
echo Visual Studio not found ^(try with the 'verbose' switch for more information^)
|
|
goto EOF
|
|
)
|
|
) else (
|
|
call "%BLENDER_DIR%\build_files\windows\detect_msvc%BUILD_VS_YEAR%.cmd"
|
|
if errorlevel 1 (
|
|
echo Visual Studio %BUILD_VS_YEAR% not found ^(try with the 'verbose' switch for more information^)
|
|
goto EOF
|
|
)
|
|
)
|
|
|
|
if "%BUILD_UPDATE%" == "1" (
|
|
REM First see if the SVN libs are there and check them out if they are not.
|
|
call "%BLENDER_DIR%\build_files\windows\check_libraries.cmd"
|
|
if errorlevel 1 goto EOF
|
|
if "%BUILD_UPDATE_SVN%" == "1" (
|
|
REM Then update SVN platform libraries, since updating python while python is
|
|
REM running tends to be problematic. The python script that update_sources
|
|
REM calls later on may still try to switch branches and run into trouble,
|
|
REM but for *most* people this will side step the problem.
|
|
call "%BLENDER_DIR%\build_files\windows\lib_update.cmd"
|
|
)
|
|
REM Finally call the python script shared between all platforms that updates git
|
|
REM and does any other SVN work like update the tests or branch switches
|
|
REM if required.
|
|
call "%BLENDER_DIR%\build_files\windows\update_sources.cmd"
|
|
goto EOF
|
|
)
|
|
|
|
call "%BLENDER_DIR%\build_files\windows\set_build_dir.cmd"
|
|
|
|
:convenience_targets
|
|
|
|
if "%ICONS%" == "1" (
|
|
call "%BLENDER_DIR%\build_files\windows\icons.cmd"
|
|
goto EOF
|
|
)
|
|
|
|
if "%ICONS_GEOM%" == "1" (
|
|
call "%BLENDER_DIR%\build_files\windows\icons_geom.cmd"
|
|
goto EOF
|
|
)
|
|
|
|
if "%DOC_PY%" == "1" (
|
|
call "%BLENDER_DIR%\build_files\windows\doc_py.cmd"
|
|
goto EOF
|
|
)
|
|
|
|
if "%CMAKE%" == "" (
|
|
echo Cmake not found in path, required for building, exiting...
|
|
exit /b 1
|
|
)
|
|
|
|
echo Building blender with VS%BUILD_VS_YEAR% for %BUILD_ARCH% in %BUILD_DIR%
|
|
|
|
call "%BLENDER_DIR%\build_files\windows\check_libraries.cmd"
|
|
if errorlevel 1 goto EOF
|
|
|
|
if "%TEST%" == "1" (
|
|
call "%BLENDER_DIR%\build_files\windows\test.cmd"
|
|
goto EOF
|
|
)
|
|
|
|
if "%BUILD_WITH_NINJA%" == "" (
|
|
call "%BLENDER_DIR%\build_files\windows\configure_msbuild.cmd"
|
|
if errorlevel 1 goto EOF
|
|
|
|
call "%BLENDER_DIR%\build_files\windows\build_msbuild.cmd"
|
|
if errorlevel 1 goto EOF
|
|
) else (
|
|
call "%BLENDER_DIR%\build_files\windows\configure_ninja.cmd"
|
|
if errorlevel 1 goto EOF
|
|
|
|
call "%BLENDER_DIR%\build_files\windows\build_ninja.cmd"
|
|
if errorlevel 1 goto EOF
|
|
)
|
|
|
|
:EOF
|