tornavis/source/blender/blenlib/CMakeLists.txt

594 lines
13 KiB
CMake

# SPDX-FileCopyrightText: 2006 Blender Authors
#
# SPDX-License-Identifier: GPL-2.0-or-later
if(HAVE_EXECINFO_H)
add_definitions(-DHAVE_EXECINFO_H)
endif()
set(INC
PUBLIC .
../../../intern/eigen
)
set(INC_SYS
../../../extern/wcwidth
../../../extern/json/include
${EIGEN3_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIRS}
${ZSTD_INCLUDE_DIRS}
)
set(SRC
intern/BLI_array.c
intern/BLI_assert.c
intern/BLI_color.cc
intern/BLI_dial_2d.c
intern/BLI_dynstr.c
intern/BLI_filelist.cc
intern/BLI_ghash.c
intern/BLI_ghash_utils.cc
intern/BLI_heap.c
intern/BLI_heap_simple.c
intern/BLI_index_range.cc
intern/BLI_kdopbvh.c
intern/BLI_linklist.c
intern/BLI_linklist_lockfree.c
intern/BLI_memarena.c
intern/BLI_memblock.c
intern/BLI_memiter.c
intern/BLI_mempool.c
intern/BLI_mmap.c
intern/BLI_timer.c
intern/DLRB_tree.c
intern/array_store.cc
intern/array_store_utils.cc
intern/array_utils.c
intern/array_utils.cc
intern/astar.c
intern/atomic_disjoint_set.cc
intern/bit_ref.cc
intern/bit_span.cc
intern/bitmap.c
intern/bitmap_draw_2d.cc
intern/boxpack_2d.c
intern/buffer.c
intern/cache_mutex.cc
intern/compute_context.cc
intern/convexhull_2d.cc
intern/cpp_type.cc
intern/cpp_types.cc
intern/delaunay_2d.cc
intern/dot_export.cc
intern/dynlib.cc
intern/easing.c
intern/endian_switch.c
intern/expr_pylike_eval.c
intern/fileops.cc
intern/fileops_c.cc
intern/filereader_file.c
intern/filereader_gzip.c
intern/filereader_memory.c
intern/filereader_zstd.c
intern/fnmatch.c
intern/generic_vector_array.cc
intern/generic_virtual_array.cc
intern/generic_virtual_vector_array.cc
intern/gsqueue.c
intern/hash_md5.cc
intern/hash_mm2a.cc
intern/hash_mm3.cc
intern/hash_tables.cc
intern/implicit_sharing.cc
intern/index_mask.cc
intern/index_mask_expression.cc
intern/index_range.cc
intern/jitter_2d.c
intern/kdtree_1d.c
intern/kdtree_2d.c
intern/kdtree_3d.c
intern/kdtree_4d.c
intern/lasso_2d.cc
intern/lazy_threading.cc
intern/length_parameterize.cc
intern/listbase.cc
intern/math_base.c
intern/math_base_inline.c
intern/math_base_safe_inline.c
intern/math_basis_types.cc
intern/math_bits_inline.c
intern/math_boolean.cc
intern/math_color.c
intern/math_color_blend_inline.c
intern/math_color_inline.c
intern/math_geom.cc
intern/math_geom_inline.c
intern/math_interp.cc
intern/math_matrix.c
intern/math_matrix.cc
intern/math_rotation.c
intern/math_rotation.cc
intern/math_solvers.c
intern/math_statistics.c
intern/math_time.c
intern/math_vec.cc
intern/math_vector.c
intern/math_vector_inline.c
intern/memory_utils.c
intern/mesh_boolean.cc
intern/mesh_intersect.cc
intern/noise.c
intern/noise.cc
intern/offset_indices.cc
intern/ordered_edge.cc
intern/path_util.cc
intern/polyfill_2d.c
intern/polyfill_2d_beautify.c
intern/quadric.c
intern/rand.cc
intern/rct.c
intern/resource_scope.cc
intern/scanfill.c
intern/scanfill_utils.c
intern/serialize.cc
intern/session_uid.c
intern/smaa_textures.c
intern/sort.c
intern/sort_utils.c
intern/stack.c
intern/storage.cc
intern/string.c
intern/string_cursor_utf8.c
intern/string_ref.cc
intern/string_search.cc
intern/string_utf8.cc
intern/string_utils.cc
intern/system.c
intern/task_graph.cc
intern/task_iterator.c
intern/task_pool.cc
intern/task_range.cc
intern/task_scheduler.cc
intern/tempfile.c
intern/threads.cc
intern/time.c
intern/timecode.c
intern/timeit.cc
intern/uuid.cc
intern/uvproject.cc
intern/vector.cc
intern/virtual_array.cc
intern/voxel.c
intern/winstuff.cc
intern/winstuff_dir.cc
intern/winstuff_registration.cc
# Private headers.
intern/BLI_mempool_private.h
# Header as source (included in C files above).
intern/kdtree_impl.h
intern/list_sort_impl.h
BLI_alloca.h
BLI_allocator.hh
BLI_any.hh
BLI_array.h
BLI_array.hh
BLI_array_store.h
BLI_array_store_utils.h
BLI_array_utils.h
BLI_array_utils.hh
BLI_asan.h
BLI_assert.h
BLI_astar.h
BLI_atomic_disjoint_set.hh
BLI_binary_search.hh
BLI_bit_group_vector.hh
BLI_bit_ref.hh
BLI_bit_span.hh
BLI_bit_span_ops.hh
BLI_bit_vector.hh
BLI_bitmap.h
BLI_bitmap_draw_2d.h
BLI_blenlib.h
BLI_bounds.hh
BLI_bounds_types.hh
BLI_boxpack_2d.h
BLI_buffer.h
BLI_cache_mutex.hh
BLI_color.hh
BLI_color_mix.hh
BLI_compiler_attrs.h
BLI_compiler_compat.h
BLI_compiler_typecheck.h
BLI_compute_context.hh
BLI_console.h
BLI_convexhull_2d.h
BLI_cpp_type.hh
BLI_cpp_type_make.hh
BLI_cpp_types.hh
BLI_cpp_types_make.hh
BLI_delaunay_2d.hh
BLI_devirtualize_parameters.hh
BLI_dial_2d.h
BLI_disjoint_set.hh
BLI_dlrbTree.h
BLI_dot_export.hh
BLI_dot_export_attribute_enums.hh
BLI_dynlib.h
BLI_dynstr.h
BLI_easing.h
BLI_endian_defines.h
BLI_endian_switch.h
BLI_endian_switch_inline.h
BLI_enumerable_thread_specific.hh
BLI_expr_pylike_eval.h
BLI_fileops.h
BLI_fileops.hh
BLI_fileops_types.h
BLI_filereader.h
BLI_fixed_width_int.hh
BLI_fixed_width_int_str.hh
BLI_fnmatch.h
BLI_function_ref.hh
BLI_generic_array.hh
BLI_generic_pointer.hh
BLI_generic_span.hh
BLI_generic_value_map.hh
BLI_generic_vector_array.hh
BLI_generic_virtual_array.hh
BLI_generic_virtual_vector_array.hh
BLI_ghash.h
BLI_gsqueue.h
BLI_hash.h
BLI_hash.hh
BLI_hash_md5.hh
BLI_hash_mm2a.hh
BLI_hash_mm3.hh
BLI_hash_tables.hh
BLI_heap.h
BLI_heap_simple.h
BLI_implicit_sharing.h
BLI_implicit_sharing.hh
BLI_implicit_sharing_ptr.hh
BLI_index_mask.hh
BLI_index_mask_expression.hh
BLI_index_mask_fwd.hh
BLI_index_range.hh
BLI_inplace_priority_queue.hh
BLI_iterator.h
BLI_jitter_2d.h
BLI_kdopbvh.h
BLI_kdtree.h
BLI_kdtree_impl.h
BLI_lasso_2d.hh
BLI_lazy_threading.hh
BLI_length_parameterize.hh
BLI_linear_allocator.hh
BLI_linear_allocator_chunked_list.hh
BLI_link_utils.h
BLI_linklist.h
BLI_linklist_lockfree.h
BLI_linklist_stack.h
BLI_listbase.h
BLI_listbase_wrapper.hh
BLI_map.hh
BLI_map_slots.hh
BLI_math_angle_types.hh
BLI_math_axis_angle.hh
BLI_math_axis_angle_types.hh
BLI_math_base.h
BLI_math_base.hh
BLI_math_base_safe.h
BLI_math_basis_types.hh
BLI_math_bits.h
BLI_math_boolean.hh
BLI_math_color.h
BLI_math_color.hh
BLI_math_color_blend.h
BLI_math_euler.hh
BLI_math_euler_types.hh
BLI_math_geom.h
BLI_math_inline.h
BLI_math_interp.hh
BLI_math_matrix.h
BLI_math_matrix.hh
BLI_math_matrix_types.hh
BLI_math_mpq.hh
BLI_math_numbers.hh
BLI_math_quaternion.hh
BLI_math_quaternion_types.hh
BLI_math_rotation.h
BLI_math_rotation.hh
BLI_math_rotation_legacy.hh
BLI_math_rotation_types.hh
BLI_math_solvers.h
BLI_math_statistics.h
BLI_math_time.h
BLI_math_vector.h
BLI_math_vector.hh
BLI_math_vector_mpq_types.hh
BLI_math_vector_types.hh
BLI_memarena.h
BLI_memblock.h
BLI_memiter.h
BLI_memory_utils.h
BLI_memory_utils.hh
BLI_mempool.h
BLI_mesh_boolean.hh
BLI_mesh_intersect.hh
BLI_mmap.h
BLI_multi_value_map.hh
BLI_noise.h
BLI_noise.hh
BLI_offset_indices.hh
BLI_offset_span.hh
BLI_ordered_edge.hh
BLI_parameter_pack_utils.hh
BLI_path_util.h
BLI_polyfill_2d.h
BLI_polyfill_2d_beautify.h
BLI_pool.hh
BLI_probing_strategies.hh
BLI_quadric.h
BLI_rand.h
BLI_rand.hh
BLI_random_access_iterator_mixin.hh
BLI_range.h
BLI_rect.h
BLI_resource_scope.hh
BLI_scanfill.h
BLI_serialize.hh
BLI_session_uid.h
BLI_set.hh
BLI_set_slots.hh
BLI_shared_cache.hh
BLI_simd.h
BLI_smaa_textures.h
BLI_sort.h
BLI_sort.hh
BLI_sort_utils.h
BLI_span.hh
BLI_stack.h
BLI_stack.hh
BLI_strict_flags.h
BLI_string.h
BLI_string_cursor_utf8.h
BLI_string_ref.hh
BLI_string_search.hh
BLI_string_utf8.h
BLI_string_utf8_symbols.h
BLI_string_utils.hh
BLI_struct_equality_utils.hh
BLI_sub_frame.hh
BLI_sys_types.h
BLI_system.h
BLI_task.h
BLI_task.hh
BLI_tempfile.h
BLI_threads.h
BLI_time.h
BLI_time_utildefines.h
BLI_timecode.h
BLI_timeit.hh
BLI_timer.h
BLI_unique_sorted_indices.hh
BLI_unroll.hh
BLI_utildefines.h
BLI_utildefines_iter.h
BLI_utildefines_stack.h
BLI_utildefines_variadic.h
BLI_utility_mixins.hh
BLI_uuid.h
BLI_uvproject.h
BLI_vector.hh
BLI_vector_list.hh
BLI_vector_set.hh
BLI_vector_set_slots.hh
BLI_virtual_array.hh
BLI_virtual_array_fwd.hh
BLI_virtual_vector_array.hh
BLI_voxel.h
BLI_winstuff.h
BLI_winstuff_com.hh
# Without these files listed, they aren't known to CMake.
../../../extern/json/include/json.hpp
)
set(LIB
PUBLIC bf::dna
PRIVATE bf::extern::fmtlib
PRIVATE bf::extern::xxhash
bf_intern_eigen
PRIVATE bf::intern::guardedalloc
extern_wcwidth
PRIVATE bf::intern::atomic
PRIVATE extern_fmtlib
${ZLIB_LIBRARIES}
${ZSTD_LIBRARIES}
)
if(NOT WITH_PYTHON_MODULE)
list(APPEND SRC
intern/BLI_args.c
BLI_args.h
)
endif()
if(WITH_MEM_VALGRIND)
add_definitions(-DWITH_MEM_VALGRIND)
endif()
if(WITH_TBB)
add_definitions(-DWITH_TBB)
list(APPEND INC_SYS
${TBB_INCLUDE_DIRS}
)
list(APPEND LIB
${TBB_LIBRARIES}
)
endif()
if(WITH_GMP)
add_definitions(-DWITH_GMP)
list(APPEND INC_SYS
${GMP_INCLUDE_DIRS}
)
list(APPEND LIB
${GMP_LIBRARIES}
)
endif()
if(WIN32)
if(WITH_BLENDER_THUMBNAILER)
# Needed for querying the `thumbnailer .dll` in `winstuff.c`.
add_definitions(-DWITH_BLENDER_THUMBNAILER)
endif()
list(APPEND INC
../../../intern/utfconv
)
list(APPEND LIB
bf_intern_utfconv
dxgi
)
list(APPEND SRC
intern/system_win32.c
)
endif()
if(APPLE)
list(APPEND SRC
intern/storage_apple.mm
)
endif()
if(UNIX AND NOT APPLE)
list(APPEND LIB
bf_intern_libc_compat
)
endif()
# no need to compile object files for inline headers.
set_source_files_properties(
intern/math_base_inline.c
intern/math_base_safe_inline.c
intern/math_bits_inline.c
intern/math_color_blend_inline.c
intern/math_color_inline.c
intern/math_geom_inline.c
intern/math_vector_inline.c
PROPERTIES HEADER_FILE_ONLY TRUE
)
blender_add_lib(bf_blenlib "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
add_library(bf::blenlib ALIAS bf_blenlib)
if(WITH_GTESTS)
set(TEST_SRC
tests/BLI_any_test.cc
tests/BLI_array_store_test.cc
tests/BLI_array_test.cc
tests/BLI_array_utils_test.cc
tests/BLI_binary_search_test.cc
tests/BLI_bit_group_vector_test.cc
tests/BLI_bit_ref_test.cc
tests/BLI_bit_span_test.cc
tests/BLI_bit_vector_test.cc
tests/BLI_bitmap_test.cc
tests/BLI_bounds_test.cc
tests/BLI_color_test.cc
tests/BLI_convexhull_2d_test.cc
tests/BLI_cpp_type_test.cc
tests/BLI_delaunay_2d_test.cc
tests/BLI_disjoint_set_test.cc
tests/BLI_expr_pylike_eval_test.cc
tests/BLI_fileops_test.cc
tests/BLI_fixed_width_int_test.cc
tests/BLI_function_ref_test.cc
tests/BLI_generic_array_test.cc
tests/BLI_generic_span_test.cc
tests/BLI_generic_vector_array_test.cc
tests/BLI_ghash_test.cc
tests/BLI_hash_mm2a_test.cc
tests/BLI_heap_simple_test.cc
tests/BLI_heap_test.cc
tests/BLI_implicit_sharing_test.cc
tests/BLI_index_mask_expression_test.cc
tests/BLI_index_mask_test.cc
tests/BLI_index_range_test.cc
tests/BLI_inplace_priority_queue_test.cc
tests/BLI_kdopbvh_test.cc
tests/BLI_kdtree_test.cc
tests/BLI_length_parameterize_test.cc
tests/BLI_linear_allocator_chunked_list_test.cc
tests/BLI_linear_allocator_test.cc
tests/BLI_linklist_lockfree_test.cc
tests/BLI_listbase_test.cc
tests/BLI_map_test.cc
tests/BLI_math_base_safe_test.cc
tests/BLI_math_base_test.cc
tests/BLI_math_bits_test.cc
tests/BLI_math_color_test.cc
tests/BLI_math_geom_test.cc
tests/BLI_math_interp_test.cc
tests/BLI_math_matrix_test.cc
tests/BLI_math_matrix_types_test.cc
tests/BLI_math_rotation_test.cc
tests/BLI_math_rotation_types_test.cc
tests/BLI_math_solvers_test.cc
tests/BLI_math_time_test.cc
tests/BLI_math_vector_test.cc
tests/BLI_math_vector_types_test.cc
tests/BLI_memiter_test.cc
tests/BLI_memory_utils_test.cc
tests/BLI_mesh_boolean_test.cc
tests/BLI_mesh_intersect_test.cc
tests/BLI_multi_value_map_test.cc
tests/BLI_path_util_test.cc
tests/BLI_polyfill_2d_test.cc
tests/BLI_pool_test.cc
tests/BLI_random_access_iterator_mixin_test.cc
tests/BLI_ressource_strings.h
tests/BLI_serialize_test.cc
tests/BLI_session_uid_test.cc
tests/BLI_set_test.cc
tests/BLI_span_test.cc
tests/BLI_stack_cxx_test.cc
tests/BLI_stack_test.cc
tests/BLI_string_ref_test.cc
tests/BLI_string_search_test.cc
tests/BLI_string_test.cc
tests/BLI_string_utf8_test.cc
tests/BLI_string_utils_test.cc
tests/BLI_task_graph_test.cc
tests/BLI_task_test.cc
tests/BLI_tempfile_test.cc
tests/BLI_unique_sorted_indices_test.cc
tests/BLI_utildefines_test.cc
tests/BLI_uuid_test.cc
tests/BLI_vector_set_test.cc
tests/BLI_vector_test.cc
tests/BLI_virtual_array_test.cc
tests/BLI_exception_safety_test_utils.hh
)
set(TEST_INC
../imbuf
)
set(TEST_LIB
bf_blenlib
)
blender_add_test_suite_executable(BLI "${TEST_SRC}" "${INC};${TEST_INC}" "${INC_SYS}" "${LIB};${TEST_LIB}")
add_subdirectory(tests/performance)
endif()