Removes Collada import/export (has been deprecated since 4.2). Pull Request: https://projects.blender.org/blender/blender/pulls/139337
508 lines
10 KiB
CMake
508 lines
10 KiB
CMake
# SPDX-FileCopyrightText: 2006 Blender Authors
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCC)
|
|
# add here so we fail early.
|
|
string(APPEND CMAKE_C_FLAGS " -Werror=implicit-function-declaration")
|
|
endif()
|
|
|
|
# Needed for `mallocn.c`.
|
|
if(HAVE_MALLOC_STATS_H)
|
|
add_definitions(-DHAVE_MALLOC_STATS_H)
|
|
endif()
|
|
|
|
# There is some code in `makesrna.cc` that forces files to be regenerated even if they have not
|
|
# changed to keep make out of some dependency problem. Ninja and VisualStudios `msbuild` do not
|
|
# appear to be requiring this and much time can be saved by not rebuilding hundreds of files
|
|
# when not required, both generators have been whitelisted here not to take this code-path,
|
|
# all other generators will take the conservative route and regenerate.
|
|
if(CMAKE_GENERATOR MATCHES ".*Unix Makefiles")
|
|
add_definitions(-DUSE_MAKEFILE_WORKAROUND)
|
|
endif()
|
|
|
|
# Files `rna_access.cc`, `rna_define.cc`, `makesrna.cc` intentionally excluded.
|
|
set(DEFSRC
|
|
rna_ID.cc
|
|
rna_action.cc
|
|
rna_animation.cc
|
|
rna_animviz.cc
|
|
rna_annotations.cc
|
|
rna_armature.cc
|
|
rna_asset.cc
|
|
rna_attribute.cc
|
|
rna_blendfile_import.cc
|
|
rna_boid.cc
|
|
rna_brush.cc
|
|
rna_cachefile.cc
|
|
rna_camera.cc
|
|
rna_cloth.cc
|
|
rna_collection.cc
|
|
rna_color.cc
|
|
rna_constraint.cc
|
|
rna_context.cc
|
|
rna_curve.cc
|
|
rna_curveprofile.cc
|
|
rna_curves.cc
|
|
rna_depsgraph.cc
|
|
rna_dynamicpaint.cc
|
|
rna_fcurve.cc
|
|
rna_fluid.cc
|
|
rna_grease_pencil.cc
|
|
rna_image.cc
|
|
rna_key.cc
|
|
rna_lattice.cc
|
|
rna_layer.cc
|
|
rna_light.cc
|
|
rna_lightprobe.cc
|
|
rna_linestyle.cc
|
|
rna_main.cc
|
|
rna_mask.cc
|
|
rna_material.cc
|
|
rna_mesh.cc
|
|
rna_meta.cc
|
|
rna_modifier.cc
|
|
rna_movieclip.cc
|
|
rna_nla.cc
|
|
rna_node_socket.cc
|
|
rna_node_tree_interface.cc
|
|
rna_nodetree.cc
|
|
rna_object.cc
|
|
rna_object_force.cc
|
|
rna_packedfile.cc
|
|
rna_palette.cc
|
|
rna_particle.cc
|
|
rna_pointcloud.cc
|
|
rna_pose.cc
|
|
rna_render.cc
|
|
rna_rigidbody.cc
|
|
rna_rna.cc
|
|
rna_scene.cc
|
|
rna_screen.cc
|
|
rna_sculpt_paint.cc
|
|
rna_sequencer.cc
|
|
rna_shader_fx.cc
|
|
rna_sound.cc
|
|
rna_space.cc
|
|
rna_speaker.cc
|
|
rna_test.cc
|
|
rna_text.cc
|
|
rna_texture.cc
|
|
rna_timeline.cc
|
|
rna_tracking.cc
|
|
rna_ui.cc
|
|
rna_userdef.cc
|
|
rna_vfont.cc
|
|
rna_volume.cc
|
|
rna_wm.cc
|
|
rna_wm_gizmo.cc
|
|
rna_workspace.cc
|
|
rna_world.cc
|
|
rna_xr.cc
|
|
)
|
|
|
|
if(WITH_USD)
|
|
list(APPEND DEFSRC
|
|
rna_usd.cc
|
|
)
|
|
add_definitions(-DWITH_USD)
|
|
endif()
|
|
|
|
if(WITH_EXPERIMENTAL_FEATURES)
|
|
add_definitions(-DWITH_SIMULATION_DATABLOCK)
|
|
endif()
|
|
|
|
set(APISRC
|
|
rna_action_api.cc
|
|
rna_animation_api.cc
|
|
rna_armature_api.cc
|
|
rna_camera_api.cc
|
|
rna_curve_api.cc
|
|
rna_curves_api.cc
|
|
rna_fcurve_api.cc
|
|
rna_grease_pencil_api.cc
|
|
rna_image_api.cc
|
|
rna_lattice_api.cc
|
|
rna_main_api.cc
|
|
rna_material_api.cc
|
|
rna_mesh_api.cc
|
|
rna_meta_api.cc
|
|
rna_object_api.cc
|
|
rna_pose_api.cc
|
|
rna_scene_api.cc
|
|
rna_sequencer_api.cc
|
|
rna_sound_api.cc
|
|
rna_space_api.cc
|
|
rna_text_api.cc
|
|
rna_texture_api.cc
|
|
rna_ui_api.cc
|
|
rna_vfont_api.cc
|
|
rna_wm_api.cc
|
|
rna_wm_gizmo_api.cc
|
|
rna_workspace_api.cc
|
|
)
|
|
|
|
string(
|
|
REGEX REPLACE
|
|
"rna_([a-zA-Z0-9_-]*).cc" "${CMAKE_CURRENT_BINARY_DIR}/rna_\\1_gen.cc"
|
|
GENSRC "${DEFSRC}"
|
|
)
|
|
list(APPEND GENSRC
|
|
"${CMAKE_CURRENT_BINARY_DIR}/rna_prototypes_gen.hh"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/../RNA_prototypes.hh"
|
|
)
|
|
set_source_files_properties(${GENSRC} PROPERTIES GENERATED TRUE)
|
|
|
|
# TODO: Remove the `GENSRC_C` flags and data, there are no C files anymore here.
|
|
|
|
# --------------------------
|
|
# CFLAGS for Generated Files
|
|
#
|
|
# less strict flags for generated source
|
|
set(GENSRC_FLAGS)
|
|
set(GENSRC_CFLAGS)
|
|
set(GENSRC_CXXFLAGS)
|
|
if(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID MATCHES "Clang"))
|
|
set(GENSRC_CFLAGS "-Wno-missing-prototypes")
|
|
set(GENSRC_CXXFLAGS "-Wno-missing-declarations")
|
|
endif()
|
|
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|
string(APPEND GENSRC_FLAGS " -Wno-missing-variable-declarations")
|
|
elseif(MSVC)
|
|
remove_cc_flag(
|
|
# Restore warn C4100 (unreferenced formal parameter) back to w4.
|
|
"/w34100"
|
|
)
|
|
endif()
|
|
|
|
set(GENSRC_C ${GENSRC})
|
|
list(FILTER GENSRC_C INCLUDE REGEX "[a-zA-Z0-9_-]\.c$")
|
|
set(GENSRC_CXX ${GENSRC})
|
|
list(FILTER GENSRC_CXX INCLUDE REGEX "[a-zA-Z0-9_-]\.cc$")
|
|
|
|
if(GENSRC_FLAGS)
|
|
set_source_files_properties(${GENSRC} PROPERTIES COMPILE_FLAGS "${GENSRC_FLAGS}")
|
|
endif()
|
|
|
|
if(GENSRC_CFLAGS)
|
|
set_source_files_properties(${GENSRC_C} PROPERTIES COMPILE_FLAGS "${GENSRC_CFLAGS}")
|
|
endif()
|
|
|
|
if(GENSRC_CXXFLAGS)
|
|
set_source_files_properties(${GENSRC_CXX} PROPERTIES COMPILE_FLAGS "${GENSRC_CXXFLAGS}")
|
|
endif()
|
|
|
|
unset(GENSRC_C)
|
|
unset(GENSRC_CXX)
|
|
unset(GENSRC_FLAGS)
|
|
unset(GENSRC_CFLAGS)
|
|
unset(GENSRC_CXXFLAGS)
|
|
|
|
|
|
# NOTE: Disable clang-tidy because generated files are stored outside of the source,
|
|
# so the clang-tidy can not find our .clang-tidy and fall-backs to its own set of rules
|
|
# which are too noisy for Blender.
|
|
#
|
|
# In the future clang-tidy would either need to be inlined checks and passed via the
|
|
# command line (instead of using .clang-tidy file). Or, maybe, there is a way to
|
|
# pass configuration file to the clang-tidy command.
|
|
unset(CMAKE_C_CLANG_TIDY)
|
|
unset(CMAKE_CXX_CLANG_TIDY)
|
|
|
|
set(SRC_RNA_INC
|
|
../RNA_access.hh
|
|
../RNA_define.hh
|
|
../RNA_documentation.hh
|
|
../RNA_enum_items.hh
|
|
../RNA_enum_types.hh
|
|
../RNA_path.hh
|
|
../RNA_types.hh
|
|
|
|
rna_action_tools.hh
|
|
)
|
|
|
|
set(SRC
|
|
makesrna.cc
|
|
rna_define.cc
|
|
${DEFSRC}
|
|
${APISRC}
|
|
../../../../intern/clog/clog.c
|
|
# Needed for defaults.
|
|
../../../../release/datafiles/userdef/userdef_default.c
|
|
../../../../release/datafiles/userdef/userdef_default_theme.c
|
|
)
|
|
|
|
set(INC
|
|
.
|
|
..
|
|
../../animrig
|
|
../../asset_system
|
|
../../blenfont
|
|
../../blenkernel
|
|
../../blenlib
|
|
../../blenloader
|
|
../../blentranslation
|
|
../../bmesh
|
|
../../depsgraph
|
|
../../draw
|
|
../../functions
|
|
../../gpu
|
|
../../ikplugin
|
|
../../imbuf
|
|
../../imbuf/movie
|
|
../../io/usd
|
|
../../modifiers
|
|
../../nodes
|
|
../../nodes/function/include
|
|
../../nodes/geometry/include
|
|
../../sequencer
|
|
../../simulation
|
|
../../windowmanager
|
|
../../editors/asset
|
|
../../editors/include
|
|
../../render
|
|
../../../../intern/clog
|
|
../../../../intern/cycles/blender
|
|
../../../../extern/fmtlib/include
|
|
../../../../intern/memutil
|
|
../../../../intern/mantaflow/extern
|
|
|
|
|
|
# RNA_prototypes.hh
|
|
${CMAKE_CURRENT_BINARY_DIR}/../../makesrna/
|
|
)
|
|
|
|
set(INC_SYS
|
|
|
|
)
|
|
|
|
if(WITH_CYCLES)
|
|
add_definitions(-DWITH_CYCLES)
|
|
endif()
|
|
|
|
if(WITH_PYTHON)
|
|
add_definitions(-DWITH_PYTHON)
|
|
list(APPEND INC
|
|
../../python
|
|
)
|
|
endif()
|
|
|
|
if(WITH_IMAGE_OPENEXR)
|
|
add_definitions(-DWITH_IMAGE_OPENEXR)
|
|
endif()
|
|
|
|
if(WITH_IMAGE_OPENJPEG)
|
|
add_definitions(-DWITH_IMAGE_OPENJPEG)
|
|
endif()
|
|
|
|
if(WITH_IMAGE_CINEON)
|
|
add_definitions(-DWITH_IMAGE_CINEON)
|
|
endif()
|
|
|
|
if(WITH_IMAGE_WEBP)
|
|
add_definitions(-DWITH_IMAGE_WEBP)
|
|
endif()
|
|
|
|
if(WITH_AUDASPACE)
|
|
list(APPEND INC_SYS
|
|
${AUDASPACE_C_INCLUDE_DIRS}
|
|
)
|
|
if(WITH_SYSTEM_AUDASPACE)
|
|
list(APPEND LIB
|
|
${AUDASPACE_C_LIBRARIES}
|
|
${AUDASPACE_PY_LIBRARIES}
|
|
)
|
|
endif()
|
|
add_definitions(-DWITH_AUDASPACE)
|
|
endif()
|
|
|
|
if(WITH_CODEC_FFMPEG)
|
|
add_definitions(-DWITH_FFMPEG)
|
|
endif()
|
|
|
|
if(WITH_FFTW3)
|
|
add_definitions(-DWITH_FFTW3)
|
|
endif()
|
|
|
|
if(WITH_MOD_FLUID)
|
|
add_definitions(-DWITH_FLUID)
|
|
endif()
|
|
|
|
if(WITH_MOD_OCEANSIM)
|
|
add_definitions(-DWITH_OCEANSIM)
|
|
endif()
|
|
|
|
if(WITH_SDL)
|
|
add_definitions(-DWITH_SDL)
|
|
endif()
|
|
|
|
if(WITH_OPENAL)
|
|
add_definitions(-DWITH_OPENAL)
|
|
endif()
|
|
|
|
if(WITH_COREAUDIO)
|
|
add_definitions(-DWITH_COREAUDIO)
|
|
endif()
|
|
|
|
if(WITH_JACK)
|
|
add_definitions(-DWITH_JACK)
|
|
endif()
|
|
|
|
if(WITH_PULSEAUDIO)
|
|
add_definitions(-DWITH_PULSEAUDIO)
|
|
endif()
|
|
|
|
if(WITH_WASAPI)
|
|
add_definitions(-DWITH_WASAPI)
|
|
endif()
|
|
|
|
if(WITH_INTERNATIONAL)
|
|
add_definitions(-DWITH_INTERNATIONAL)
|
|
endif()
|
|
|
|
if(WITH_ALEMBIC)
|
|
list(APPEND INC
|
|
../../io/alembic
|
|
)
|
|
add_definitions(-DWITH_ALEMBIC)
|
|
endif()
|
|
|
|
if(WITH_BULLET)
|
|
list(APPEND INC
|
|
../../../../intern/rigidbody
|
|
)
|
|
add_definitions(-DWITH_BULLET)
|
|
endif()
|
|
|
|
if(WITH_FREESTYLE)
|
|
list(APPEND INC
|
|
../../freestyle
|
|
)
|
|
add_definitions(-DWITH_FREESTYLE)
|
|
endif()
|
|
|
|
if(WITH_OPENSUBDIV)
|
|
list(APPEND INC
|
|
../../../../intern/opensubdiv
|
|
)
|
|
add_definitions(-DWITH_OPENSUBDIV)
|
|
endif()
|
|
if(WITH_OPENVDB)
|
|
list(APPEND INC
|
|
../../../../intern/openvdb
|
|
)
|
|
list(APPEND INC_SYS
|
|
${OPENVDB_INCLUDE_DIRS}
|
|
)
|
|
add_definitions(-DWITH_OPENVDB ${OPENVDB_DEFINITIONS})
|
|
endif()
|
|
|
|
if(WITH_OPENVDB)
|
|
add_definitions(-DWITH_OPENVDB)
|
|
|
|
if(WITH_OPENVDB_BLOSC)
|
|
add_definitions(-DWITH_OPENVDB_BLOSC)
|
|
endif()
|
|
endif()
|
|
|
|
if(WITH_INPUT_NDOF)
|
|
add_definitions(-DWITH_INPUT_NDOF)
|
|
endif()
|
|
|
|
if(WITH_XR_OPENXR)
|
|
add_definitions(-DWITH_XR_OPENXR)
|
|
endif()
|
|
|
|
if(WITH_OPENGL_BACKEND)
|
|
add_definitions(-DWITH_OPENGL_BACKEND)
|
|
endif()
|
|
|
|
if(WITH_METAL_BACKEND)
|
|
add_definitions(-DWITH_METAL_BACKEND)
|
|
endif()
|
|
|
|
if(WITH_VULKAN_BACKEND)
|
|
add_definitions(-DWITH_VULKAN_BACKEND)
|
|
endif()
|
|
|
|
if(WITH_GMP)
|
|
add_definitions(-DWITH_GMP)
|
|
endif()
|
|
|
|
# Build `makesrna` executable.
|
|
add_cc_flags_custom_test(makesrna)
|
|
|
|
add_executable(makesrna ${SRC} ${SRC_RNA_INC} ${SRC_DNA_INC})
|
|
setup_platform_linker_flags(makesrna)
|
|
setup_platform_linker_libs(makesrna)
|
|
blender_target_include_dirs(makesrna ${INC})
|
|
blender_target_include_dirs_sys(makesrna ${INC_SYS})
|
|
|
|
target_link_libraries(makesrna PRIVATE bf_dna)
|
|
target_link_libraries(makesrna PRIVATE bf::intern::atomic)
|
|
target_link_libraries(makesrna PRIVATE bf::intern::guardedalloc)
|
|
target_link_libraries(makesrna PRIVATE bf_dna_blenlib)
|
|
target_link_libraries(makesrna PRIVATE bf::dependencies::optional::tbb)
|
|
|
|
if(WIN32 AND NOT UNIX)
|
|
if(DEFINED PTHREADS_LIBRARIES)
|
|
target_link_libraries(makesrna PRIVATE ${PTHREADS_LIBRARIES})
|
|
endif()
|
|
endif()
|
|
|
|
# Output `rna_*_gen.cc`.
|
|
# NOTE: (Linux only): with crashes try add this after COMMAND:
|
|
# `valgrind --leak-check=full --track-origins=yes`
|
|
add_custom_command(
|
|
OUTPUT ${GENSRC}
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E env ${PLATFORM_ENV_BUILD}
|
|
"$<TARGET_FILE:makesrna>" ${CMAKE_CURRENT_BINARY_DIR}/ ${CMAKE_CURRENT_BINARY_DIR}/../
|
|
DEPENDS makesrna
|
|
)
|
|
|
|
# Build bf_rna
|
|
set(SRC
|
|
rna_access.cc
|
|
rna_access_compare_override.cc
|
|
rna_path.cc
|
|
${GENSRC}
|
|
|
|
${SRC_RNA_INC}
|
|
rna_access_internal.hh
|
|
rna_curves_utils.hh
|
|
rna_internal.hh
|
|
rna_internal_types.hh
|
|
rna_mesh_utils.hh
|
|
)
|
|
|
|
set(LIB
|
|
PRIVATE bf::animrig
|
|
PRIVATE bf::dna
|
|
PRIVATE bf::dependencies::optional::tbb
|
|
PRIVATE extern_fmtlib
|
|
bf_editor_space_api
|
|
|
|
bf_editor_animation
|
|
bf_editor_armature
|
|
bf_editor_asset
|
|
bf_editor_curve
|
|
bf_editor_curves
|
|
bf_editor_gizmo_library
|
|
bf_editor_gpencil_legacy
|
|
bf_editor_io
|
|
bf_editor_mesh
|
|
bf_editor_object
|
|
bf_editor_physics
|
|
bf_editor_pointcloud
|
|
bf_editor_render
|
|
bf_editor_scene
|
|
bf_editor_sculpt_paint
|
|
bf_editor_sound
|
|
bf_editor_transform
|
|
bf_editor_undo
|
|
PRIVATE bf::intern::guardedalloc
|
|
)
|
|
|
|
blender_add_lib(bf_rna "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
|