blender/extern/CMakeLists.txt
Jacques Lucke e8c146ed8e UI: support markdown labels
This implements a new `layout.label_markdown(text="...")` function which
supports drawing a subset of Markdown in the Blender UI. The original motivation
for this was to support markdown in a new Comment node (#163168). However, the
functionality is more useful more generally. For example it could be used to
draw extension descriptions or maybe tooltips in the future etc.

It uses the [md4c](https://github.com/mity/md4c) library for the actual markdown
parsing. It has the MIT license. It's a very simple to integrate C library, just
on .c and one .h file.

The following markdown features are supported currently:
* Headers
* Paragraphs
* Bold/italics/monospace text
* Clickable links
* Code blocks
* Inline code

Intentionally omitted:
* Tables: Could be added later.
* Images: Could be added later, but needs design regarding internet access.
* Footnotes: Could be added later if needed.
* Latex math Could be added but requires more work to render such text in the
  first place.
* Underlined and striked through text: Could be added if our font system
  supports it.
* Syntax highlighting in code blocks: Could be added later.
* Raw HTML: Unlikely that this will be supported.

All the various margins etc. are hard-coded but there is a UI to be able to find
the right values by using `4002` in the `Debug Menu`. The settings could be
theme settings but it seems overkill to add that many right now.

Pull Request: https://projects.blender.org/blender/blender/pulls/163254
2026-09-11 11:02:34 +02:00

112 lines
2.9 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(fast_float)
add_subdirectory(json)
add_subdirectory(toml11)
if(WITH_IO_FBX)
add_subdirectory(ufbx)
endif()
# Otherwise we get warnings here that we can't fix in external projects
remove_strict_flags()
# Not a strict flag, but noisy for code we don't maintain
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
remove_c_and_cxx_flag(
"-Wextra"
"-Wmisleading-indentation"
)
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
remove_c_and_cxx_flag(
"-Weverything"
"-Wextra"
"-Wnull-pointer-subtraction"
"-Wcast-function-type-mismatch"
"-Wignored-qualifiers"
)
endif()
if(WITH_COMPILER_ASAN AND NOT WITH_COMPILER_ASAN_EXTERN)
# Not only does MSVC not have an -fno-sanitize=all option, if you remove the /fsanitize=address
# flag at this point, it will give a linker error as it generates an ODR violation for some
# vector classes, for details see :
# https://learn.microsoft.com/en-us/cpp/sanitizers/error-container-overflow?view=msvc-170
if(NOT MSVC)
# 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()
endif()
add_subdirectory(rangetree)
add_subdirectory(nanosvg)
add_subdirectory(wcwidth)
add_subdirectory(xxhash)
add_subdirectory(md4c)
if(WITH_BULLET)
if(NOT WITH_SYSTEM_BULLET)
add_subdirectory(bullet2)
endif()
endif()
if(WITH_BINRELOC)
add_subdirectory(binreloc)
endif()
if(WITH_CYCLES OR WITH_OPENSUBDIV)
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 OR WITH_GTESTS)
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_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_VULKAN_BACKEND)
add_subdirectory(vulkan_memory_allocator)
add_subdirectory(volk)
endif()
if(WITH_TRACY)
add_subdirectory(tracy_profiler)
endif()