Build: add config for developers
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Fri, 28 Jun 2019 11:36:19 +0000 (13:36 +0200)
committerBrecht Van Lommel <brechtvanlommel@gmail.com>
Mon, 5 Aug 2019 13:25:36 +0000 (15:25 +0200)
This has faster builds, error checks and tests. The number of cmake options
for this type of thing has grown over the years and it's convenient to be
able to point new developers to a single target.

Previously the combination of all these options did not work correctly, now
all tests should pass.

The easiest way to use this is with the make wrapper, for example:
make full developer debug

Or set it manually with CMake:
cmake -C ../blender/build_files/cmake/config/blender_developer.cmake .

Differential Revision: https://developer.blender.org/D5149

GNUmakefile
build_files/cmake/config/blender_developer.cmake [new file with mode: 0644]
build_files/windows/parse_arguments.cmd
build_files/windows/show_help.cmd

index 69a2689cea177dda354885690411a90dd8399aa7..fac7484859fe252b56063c7e45f09397d42e7db7 100644 (file)
@@ -37,6 +37,7 @@ Convenience Targets
    * bpy:           Build as a python module which can be loaded from python directly.
    * deps:          Build library dependencies (intended only for platform maintainers).
 
+   * developer:     Enable faster builds, error checking and tests, recommended for developers.
    * config:        Run cmake configuration tool to set build options.
 
    Note: passing the argument 'BUILD_DIR=path' when calling make will override the default build dir.
@@ -221,6 +222,10 @@ ifneq "$(findstring bpy, $(MAKECMDGOALS))" ""
        BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C"$(BLENDER_DIR)/build_files/cmake/config/bpy_module.cmake"
 endif
 
+ifneq "$(findstring developer, $(MAKECMDGOALS))" ""
+       BUILD_CMAKE_ARGS:=$(BUILD_CMAKE_ARGS) -C"$(BLENDER_DIR)/build_files/cmake/config/blender_developer.cmake"
+endif
+
 
 # -----------------------------------------------------------------------------
 # Blender binary path
@@ -294,6 +299,7 @@ lite: all
 cycles: all
 headless: all
 bpy: all
+developer: all
 
 # -----------------------------------------------------------------------------
 # Build dependencies
diff --git a/build_files/cmake/config/blender_developer.cmake b/build_files/cmake/config/blender_developer.cmake
new file mode 100644 (file)
index 0000000..5209ce4
--- /dev/null
@@ -0,0 +1,19 @@
+# Configuration for developers, with faster builds, error checking and tests.
+#
+# Example usage:
+#   cmake -C../blender/build_files/cmake/config/blender_developer.cmake  ../blender
+#
+
+set(WITH_ASSERT_ABORT                 ON  CACHE BOOL "" FORCE)
+set(WITH_BUILDINFO                    OFF CACHE BOOL "" FORCE)
+set(WITH_COMPILER_ASAN                ON  CACHE BOOL "" FORCE)
+set(WITH_CYCLES_DEBUG                 ON  CACHE BOOL "" FORCE)
+set(WITH_CYCLES_NATIVE_ONLY           ON  CACHE BOOL "" FORCE)
+set(WITH_GTESTS                       ON  CACHE BOOL "" FORCE)
+set(WITH_LIBMV_SCHUR_SPECIALIZATIONS  OFF CACHE BOOL "" FORCE)
+set(WITH_PYTHON_SAFETY                ON  CACHE BOOL "" FORCE)
+set(WITH_DOC_MANPAGE                  OFF CACHE BOOL "" FORCE)
+
+# This may have issues with C++ initialization order, needs to be tested
+# on all platforms to be sure this is safe to enable.
+# set(WITH_CXX_GUARDEDALLOC             ON  CACHE BOOL "" FORCE)
index 8c8b473dbcf08df8a5fc1f6c8278849a19c1e688..c43107163b8aeb5b3936fb58becb3100bbffaafe 100644 (file)
@@ -41,6 +41,8 @@ if NOT "%1" == "" (
        ) else if "%1" == "release" (
                set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -C"%BLENDER_DIR%\build_files\cmake\config\blender_release.cmake"
                set TARGET=Release
+       ) else if "%1" == "developer" (
+               set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -C"%BLENDER_DIR%\build_files\cmake\config\blender_developer.cmake"
        ) else if "%1" == "asan" (
                set WITH_ASAN=1
        ) else if "%1" == "x86" (
index 08a6c40731c01a5d3761caeb47206117eb82dee5..7c0d33e1e1f74bff3479eaca4b6b2cf081e946b3 100644 (file)
@@ -17,6 +17,7 @@ echo - format [path] ^(Format the source using clang-format, path is optional, r
 echo.
 echo Configuration options
 echo - verbose ^(enable diagnostic output during configuration^)
+echo - developer ^(enable faster builds, error checking and tests, recommended for developers^)
 echo - with_tests ^(enable building unit tests^)
 echo - nobuildinfo ^(disable buildinfo^)
 echo - debug ^(Build an unoptimized debuggable build^)