# SPDX-License-Identifier: GPL-2.0-or-later # Copyright 2006 Blender Foundation. All rights reserved. if(HAVE_EXECINFO_H) add_definitions(-DHAVE_EXECINFO_H) endif() set(INC . .. # ../blenkernel # don't add this back! ../makesdna ../../../intern/atomic ../../../intern/eigen ../../../intern/guardedalloc ../../../extern/wcwidth ../../../extern/json/include ) set(INC_SYS ${ZLIB_INCLUDE_DIRS} ${ZSTD_INCLUDE_DIRS} ${GMP_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.c intern/BLI_ghash.c intern/BLI_ghash_utils.c 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.c intern/array_store_utils.c intern/array_utils.c intern/array_utils.cc intern/astar.c intern/bitmap.c intern/bitmap_draw_2d.c intern/boxpack_2d.c intern/buffer.c intern/compute_context.cc intern/convexhull_2d.c intern/cpp_type.cc intern/delaunay_2d.cc intern/dot_export.cc intern/dynlib.c intern/easing.c intern/edgehash.c intern/endian_switch.c intern/expr_pylike_eval.c intern/fileops.c intern/fileops.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.c intern/hash_mm2a.c intern/hash_mm3.c intern/index_mask.cc intern/jitter_2d.c intern/kdtree_1d.c intern/kdtree_2d.c intern/kdtree_3d.c intern/kdtree_4d.c intern/lasso_2d.c intern/lazy_threading.cc intern/length_parameterize.cc intern/listbase.c intern/math_base.c intern/math_base_inline.c intern/math_base_safe_inline.c 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.c intern/math_geom_inline.c intern/math_interp.c intern/math_matrix.c 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/path_util.c 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_uuid.c intern/smallhash.c intern/sort.c intern/sort_utils.c intern/stack.c intern/storage.c intern/string.c intern/string_cursor_utf8.c intern/string_search.cc intern/string_utf8.c intern/string_utils.c intern/system.c intern/task_graph.cc intern/task_iterator.c intern/task_pool.cc intern/task_range.cc intern/task_scheduler.cc intern/threads.cc intern/time.c intern/timecode.c intern/timeit.cc intern/uuid.cc intern/uvproject.c intern/voronoi_2d.c intern/voxel.c intern/winstuff.c intern/winstuff_dir.c # 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_bit_vector.hh BLI_bitmap.h BLI_bitmap_draw_2d.h BLI_blenlib.h BLI_bounds.hh BLI_boxpack_2d.h BLI_buffer.h 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_delaunay_2d.h 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_edgehash.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_float3x3.hh BLI_float4x4.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.h BLI_hash_mm2a.h BLI_hash_mm3.h BLI_hash_tables.hh BLI_heap.h BLI_heap_simple.h BLI_index_mask.hh BLI_index_mask_ops.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.h BLI_lazy_threading.hh BLI_length_parameterize.hh BLI_linear_allocator.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.h BLI_math_base.h BLI_math_base.hh BLI_math_base_safe.h BLI_math_bits.h BLI_math_boolean.hh BLI_math_color.h BLI_math_color.hh BLI_math_color_blend.h BLI_math_geom.h BLI_math_inline.h BLI_math_interp.h BLI_math_matrix.h BLI_math_mpq.hh BLI_math_rotation.h BLI_math_rotation.hh BLI_math_solvers.h BLI_math_statistics.h BLI_math_time.h BLI_math_vec_mpq_types.hh BLI_math_vec_types.hh BLI_math_vector.h BLI_math_vector.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_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_range.h BLI_rect.h BLI_resource_scope.hh BLI_scanfill.h BLI_serialize.hh BLI_session_uuid.h BLI_set.hh BLI_set_slots.hh BLI_simd.h BLI_smallhash.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.h BLI_string_utf8.h BLI_string_utils.h BLI_sys_types.h BLI_system.h BLI_task.h BLI_task.hh BLI_threads.h BLI_timecode.h BLI_timeit.hh BLI_timer.h BLI_user_counter.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_set.hh BLI_vector_set_slots.hh BLI_virtual_array.hh BLI_virtual_vector_array.hh BLI_voronoi_2d.h BLI_voxel.h BLI_winstuff.h PIL_time.h PIL_time_utildefines.h # Without these files listed, they aren't known to CMake. ../../../extern/json/include/json.hpp ) set(LIB bf_intern_eigen bf_intern_guardedalloc extern_wcwidth ${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 ) 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}") 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_bit_vector_test.cc tests/BLI_bitmap_test.cc tests/BLI_bounds_test.cc tests/BLI_color_test.cc tests/BLI_cpp_type_test.cc tests/BLI_delaunay_2d_test.cc tests/BLI_disjoint_set_test.cc tests/BLI_edgehash_test.cc tests/BLI_expr_pylike_eval_test.cc tests/BLI_fileops_test.cc tests/BLI_float3x3_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_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_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_matrix_test.cc tests/BLI_math_rotation_test.cc tests/BLI_math_solvers_test.cc tests/BLI_math_time_test.cc tests/BLI_math_vec_types_test.cc tests/BLI_math_vector_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_ressource_strings.h tests/BLI_serialize_test.cc tests/BLI_session_uuid_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_task_graph_test.cc tests/BLI_task_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 ) include(GTestTesting) blender_add_test_executable(blenlib "${TEST_SRC}" "${INC};${TEST_INC}" "${INC_SYS}" "${LIB};${TEST_LIB}") add_subdirectory(tests/performance) endif()