ab91c18995
With current main code, trying to build a full debug build with ASAN enabled will fail at linking, due to out-of-bound memory references within the binary file, e.g.: ``` mold: error: /usr/lib/gcc/x86_64-linux-gnu/13/crtbegin.o:(.text): relocation R_X86_64_32S against .tm_clone_table out of range: 2147741344 is not in [-2147483648, 2147483648) ``` This commit works around the issue by disabling ASAN by default for the `extern` dependencies. A new `WITH_COMPILER_ASAN_EXTERN` CMake option is added to enable it if needed - some other components need to be disabled then. NOTE: This is more of an emergency band-aid to the general binary size issue, see #113892 for on-going discussions about better solutions in the long term. Pull Request: https://projects.blender.org/blender/blender/pulls/113891
115 lines
2.6 KiB
CMake
115 lines
2.6 KiB
CMake
# SPDX-FileCopyrightText: 2006 Blender Authors
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
# Libs that adhere to strict flags
|
|
add_subdirectory(curve_fit_nd)
|
|
add_subdirectory(fmtlib)
|
|
|
|
# Otherwise we get warnings here that we cant fix in external projects
|
|
remove_strict_flags()
|
|
|
|
# Not a strict flag, but noisy for code we don't maintain
|
|
if(CMAKE_COMPILER_IS_GNUCC)
|
|
remove_cc_flag(
|
|
"-Wmisleading-indentation"
|
|
)
|
|
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|
remove_cc_flag(
|
|
"-Weverything"
|
|
)
|
|
endif()
|
|
|
|
if(WITH_COMPILER_ASAN AND NOT WITH_COMPILER_ASAN_EXTERN)
|
|
# Disable ASAN for extern dependencies, as it can lead to linking issues due to too large binaries.
|
|
string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -fno-sanitize=all")
|
|
string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " -fno-sanitize=all")
|
|
string(APPEND CMAKE_CXX_FLAGS_DEBUG " -fno-sanitize=all")
|
|
string(APPEND CMAKE_C_FLAGS_DEBUG " -fno-sanitize=all")
|
|
endif()
|
|
|
|
|
|
add_subdirectory(rangetree)
|
|
add_subdirectory(nanosvg)
|
|
add_subdirectory(wcwidth)
|
|
|
|
if(WITH_BULLET)
|
|
if(NOT WITH_SYSTEM_BULLET)
|
|
add_subdirectory(bullet2)
|
|
endif()
|
|
endif()
|
|
|
|
if(WITH_DRACO)
|
|
add_subdirectory(draco)
|
|
endif()
|
|
|
|
if(WITH_BINRELOC)
|
|
add_subdirectory(binreloc)
|
|
endif()
|
|
|
|
if(WITH_LZO AND NOT WITH_SYSTEM_LZO)
|
|
add_subdirectory(lzo)
|
|
endif()
|
|
|
|
if(WITH_LZMA)
|
|
add_subdirectory(lzma)
|
|
endif()
|
|
|
|
if(WITH_CYCLES OR WITH_COMPOSITOR_CPU OR WITH_OPENSUBDIV)
|
|
add_subdirectory(clew)
|
|
if((WITH_CYCLES_DEVICE_CUDA OR WITH_CYCLES_DEVICE_OPTIX) AND WITH_CUDA_DYNLOAD)
|
|
add_subdirectory(cuew)
|
|
endif()
|
|
if(WITH_CYCLES_DEVICE_HIP AND WITH_HIP_DYNLOAD)
|
|
add_subdirectory(hipew)
|
|
endif()
|
|
endif()
|
|
|
|
if(WITH_GHOST_X11 AND WITH_GHOST_XDND)
|
|
add_subdirectory(xdnd)
|
|
endif()
|
|
|
|
if(WITH_LIBMV)
|
|
add_subdirectory(ceres)
|
|
endif()
|
|
|
|
if(WITH_LIBMV OR WITH_GTESTS OR (WITH_CYCLES AND WITH_CYCLES_LOGGING))
|
|
if(NOT WITH_SYSTEM_GFLAGS)
|
|
add_subdirectory(gflags)
|
|
endif()
|
|
add_subdirectory(glog)
|
|
endif()
|
|
|
|
if(WITH_GTESTS)
|
|
add_subdirectory(gtest)
|
|
add_subdirectory(gmock)
|
|
endif()
|
|
|
|
if(WITH_SDL AND WITH_SDL_DYNLOAD)
|
|
add_subdirectory(sdlew)
|
|
endif()
|
|
|
|
if(WITH_AUDASPACE AND NOT WITH_SYSTEM_AUDASPACE)
|
|
set(AUDASPACE_CMAKE_CFG ${CMAKE_CURRENT_SOURCE_DIR}/audaspace/blender_config.cmake)
|
|
set(LIB_SUFFIX "") # Quiet uninitialized warning.
|
|
add_subdirectory(audaspace)
|
|
unset(LIB_SUFFIX)
|
|
endif()
|
|
|
|
if(WITH_QUADRIFLOW)
|
|
set(QUADRIFLOW_CMAKE_CFG ${CMAKE_CURRENT_SOURCE_DIR}/quadriflow/blender_config.cmake)
|
|
add_subdirectory(quadriflow)
|
|
endif()
|
|
|
|
if(WITH_MOD_FLUID)
|
|
add_subdirectory(mantaflow)
|
|
endif()
|
|
|
|
if(WITH_COMPOSITOR_CPU)
|
|
add_subdirectory(smaa_areatex)
|
|
endif()
|
|
|
|
if(WITH_VULKAN_BACKEND)
|
|
add_subdirectory(vulkan_memory_allocator)
|
|
endif()
|