diff options
Diffstat (limited to 'meson.build')
-rw-r--r-- | meson.build | 475 |
1 files changed, 475 insertions, 0 deletions
diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..5101043 --- /dev/null +++ b/meson.build @@ -0,0 +1,475 @@ +project('libplacebo', ['c', 'cpp'], + license: 'LGPL2.1+', + default_options: [ + 'buildtype=debugoptimized', + 'warning_level=2', + 'c_std=c11', + 'cpp_std=c++20', + ], + meson_version: '>=0.63', + version: '@0@.@1@.@2@'.format( + # Major version + 6, + # API version + { + '338': 'split pl_filter_nearest into pl_filter_nearest and pl_filter_box', + '337': 'fix PL_FILTER_DOWNSCALING constant', + '336': 'deprecate pl_filter.radius_cutoff in favor of pl_filter.radius', + '335': 'remove {pl_render_params,pl_sample_filter_params}.{lut_entries,polar_cutoff}', + '334': 'add pl_tex_transfer_params.no_import', + '333': 'add pl_shader_sample_{hermite,gaussian}', + '332': 'add pl_filter_function_hermite and pl_filter_hermite', + '331': 'add pl_filter_function_cubic and remove bcspline family of filter functions', + '330': 'add pl_frames_infer(_mix)', + '329': 'add pl_frame_mix_current and pl_frame_mix_nearest', + '328': 'remove pl_render_params.ignore_icc_profiles', + '327': 'remove pl_render_params.icc_params', + '326': 'add pl_frame.icc', + '325': 'add pl_icc_update', + '324': 'add pl_render_params.correct_subpixel_offsets', + '323': 'deprecate pl_{dispatch,renderer}_{save,load}', + '322': 'remove pl_pass_params.cached_program(_len)', + '321': 'deprecate pl_icc_params.cache_{save,load,priv}', + '320': 'add pl_gpu_set_cache', + '319': 'add <libplacebo/cache.h>', + '318': 'add pl_filter_ewa_lanczossharp and pl_filter_ewa_lanczos4sharpest', + '317': 'add pl_filter_config.antiring', + '316': 'remove pl_filter_config.filter_scale', + '315': 'remove pl_tone_map_auto', + '314': 'add pl_renderer_get_hdr_metadata', + '313': 'remove pl_peak_detect_params.minimum_peak', + '312': 'add pl_gamut_map_constants.perceptual_strength', + '311': 'add pl_tone_map_constants, pl_tone_map_params.constants and pl_color_map_params.tone_constants', + '310': 'add pl_gamut_map_constants, pl_gamut_map_params.constants and pl_color_map_params.gamut_constants', + '309': 'add <libplacebo/options.h>', + '308': 'add pl_hook_par.names', + '307': 'add pl_filter.radius_zero', + '306': 'add pl_filter_functions and pl_filter_configs', + '305': 'add pl_filter_function.opaque and move pl_filter_oversample to filters.h', + '304': 'add pl_filter_config.allowed/recommended', + '303': 'refactor pl_filter_config and pl_filter_function', + '302': 'change type of pl_icc_params.size_r/g/b to int', + '301': 'add PL_COLOR_ADJUSTMENT_NEUTRAL and pl_color_adjustment()', + '300': 'add pl_color_map_params.gamut_expansion', + '299': 'add pl_primaries_compatible and pl_primaries_clip', + '298': 'add pl_gamut_map_softclip', + '297': 'add pl_tone_map_linear_light', + '296': 'add pl_queue_estimate_fps/vps, pl_queue_num_frames and pl_queue_peek', + '295': 'change pl_source_frame.pts and pl_queue_params.pts to double', + '294': 'add pl_vulkan_swapchain_params.disable_10bit_sdr', + '293': 'add pl_test_pixfmt_caps', + '292': 'add pl_peak_detect_high_quality_params and pl_color_map_high_quality_params', + '291': 'add PL_COLOR_HDR_BLACK, PL_COLOR_SDR_CONTRAST and PL_COLOR_HLG_PEAK', + '290': 'remove pl_color_map_params.hybrid_mix', + '289': 'remove pl_gamut_map_params.chroma_margin', + '288': 'add pl_color_map_params.lut3d_tricubic', + '287': 'add pl_transform2x2_bounds', + '286': 'add PL_RENDER_ERR_CONTRAST_RECOVERY', + '285': 'add pl_color_map_params.contrast_recovery/smoothness, ' + + 'pl_color_map_args.feature_map and pl_shader_extract_features', + '284': 'add pl_color_map_args and pl_shader_color_map_ex', + '283': 'add pl_render_params.distort_params', + '282': 'add PL_HOOK_PRE_OUTPUT', + '281': 'add pl_matrix2x2_rotation', + '280': 'add pl_distortion_params and pl_shader_distort', + '279': 'add pl_matrix2x2_scale/invert and pl_transform2x2_scale/invert', + '278': 'switch pl_vulkan.(un)lock_queue to uint32_t', + '277': 'add pl_render_params.corner_rounding', + '276': 'add pl_get_mapped_avframe', + '275': 'add pl_vulkan_params.extra_queues', + '274': 'drop minimum vulkan version to 1.2', + '273': 'add pl_vulkan_required_features and refactor pl_vulkan_recommended_features', + '272': 'require vulkan version 1.3 minimum', + '271': 'deprecate pl_vulkan.queues', + '270': 'add pl_color_map_params.visualize_hue/theta', + '269': 'refactor pl_color_map_params gamut mapping settings', + '268': 'add <libplacebo/gamut_mapping.h>', + '267': 'add pl_ipt_lms2rgb/rgb2lms and pl_ipt_lms2ipt/ipt2lms', + '266': 'add pl_shader_info and change type of pl_dispatch_info.shader', + '265': 'remove fields deprecated for libplacebo v4', + '264': 'add pl_color_map_params.show_clipping', + '263': 'add pl_peak_detect_params.percentile', + '262': 'add pl_color_map_params.visualize_rect', + '261': 'add pl_color_map_params.metadata', + '260': 'add pl_tone_map_params.input_avg', + '259': 'add pl_color_space_nominal_luma_ex', + '258': 'add pl_hdr_metadata_type and pl_hdr_metadata_contains', + '257': 'add pl_hdr_metadata.max_pq_y and avg_pq_y', + '256': 'deprecate pl_peak_detect_params.overshoot_margin', + '255': 'deprecate pl_get_detected_peak and add pl_get_detected_hdr_metadata', + '254': 'deprecate pl_renderer_params.allow_delayed_peak_detect and add pl_peak_detect_params.allow_delayed', + '253': 'remove pl_color_space.nominal_min/max and add pl_color_space_nominal_peak', + '252': 'remove pl_swapchain.impl', + '251': 'add `utils/dolbyvision.h` and `pl_hdr_metadata_from_dovi_rpu`', + '250': 'add pl_frame_map_avdovi_metadata', + '249': 'add `pl_render_error`, `pl_render_errors` and `pl_renderer_get_errors`', + '248': 'add pl_hook.signature', + '247': 'add pl_color_map_params.visualize_lut', + '246': 'add `pl_tone_map_st2094_10` and `pl_tone_map_st2094_40`', + '245': 'add `pl_tone_map_params.hdr`', + '244': 'add `pl_map_hdr_metadata`', + '243': 'add `pl_color_space.nominal_min/max`', + '242': 'add `pl_hdr_metadata.scene_max/avg` and `pl_hdr_metadata.ootf`', + '241': 'add `pl_plane_data.swapped`', + '240': 'add `PL_COLOR_TRC_ST428`', + '239': 'add `pl_fmt.planes` and `pl_tex.planes`', + '238': 'add `pl_vulkan_wrap_params.aspect`', + '237': 'add `pl_vulkan_hold_ex` and `pl_vulkan_release_ex`', + '236': 'add `pl_vulkan_sem_create` and `pl_vulkan_sem_destroy`', + '235': 'add `pl_vulkan.get_proc_addr`', + '234': 'add `pl_gpu_limits.host_cached`', + '233': 'add `pl_hook.parameters`, `struct pl_hook_par`', + '232': 'add `pl_plane_data_from_comps`', + '231': 'add `pl_tone_map_params_infer`', + '230': 'add PL_COLOR_PRIM_ACES_AP0 and PL_COLOR_PRIM_ACES_AP1', + '229': 'add pl_shader_sample_ortho2, deprecate pl_shader_sample_ortho', + '228': 'add pl_icc_params.force_bpc', + '227': 'refactor `pl_render_info.index` and add `pl_render_info.count`', + '226': 'add `pl_dither_params.transfer` and `pl_render_params.disable_dither_gamma_correction`', + '225': 'add `pl_render_params.error_diffusion`', + '224': 'add `pl_shader_error_diffusion` and related functions', + '223': 'add <libplacebo/shaders/dithering.h>', + '222': 'add `pl_icc_params.cache_save/load`', + '221': 'add `pl_source_frame.first_field`', + '220': 'add deinterlacing-related fields to `pl_frame` and `pl_render_params`', + '219': 'add pl_source_frame.duration, deprecating pl_queue_params.frame_duration', + '218': 'add <libplacbeo/shaders/deinterlacing.h> and pl_shader_deinterlace', + '217': 'add pl_color_space_infer_map', + '216': 'add pl_deband_params.grain_neutral', + '215': 'add pl_opengl_params.get_proc_addr_ex', + '214': 'drop deprecated legacy C struct names', + '213': 'add pl_opengl_params.get_proc_addr', + '212': 'add pl_opengl.major/minor version numbers', + '211': 'add pl_opengl.extensions and pl_opengl_has_ext', + '210': 'add PL_HANDLE_MTL_TEX, PL_HANDLE_IOSURFACE, and pl_shared_mem.plane', + '209': 'add pl_gpu_limits.array_size_constants', + '208': 'add pl_filter_function.name and pl_filter_config.name', + '207': 'add pl_render_params.plane_upscaler and plane_downscaler', + '206': 'add new ICC profile API (pl_icc_open, ...)', + '205': 'add pl_cie_from_XYZ and pl_raw_primaries_similar, fix pl_cie_xy_equal', + '204': 'add pl_d3d11_swapchain_params.disable_10bit_sdr', + '203': 'add pl_film_grain_from_av', + '202': 'add pl_frame.acquire/release', + '201': 'add pl_vulkan.(un)lock_queue', + '200': 'always set pl_vulkan.queue_*', + '199': 'add pl_plane.flipped', + '198': 'remove PL_HOOK_PRE_OVERLAY', + '197': 'add pl_overlay.coords, change type of pl_overlay_part.dst', + '196': 'add pl_render_params.force_low_bit_depth_fbos', + '195': 'change pl_log_create prototype to pl_log_create_${api_ver} to do linking time api check', + '194': 'add pl_primaries_valid', + '193': 'add pl_hook_params.orig_repr/color', + '192': 'add pl_map_avframe_ex', + '191': 'add pl_map_dovi_metadata', + '190': 'add pl_color_map_params.gamut_mode, replacing gamut_clipping/warning', + '189': 'refactor pl_color_space, merging it with pl_hdr_metadata', + '188': 'refactor pl_color_map_params tone mapping settings', + '187': 'add <libplacebo/tone_mapping.h>', + '186': 'add pl_d3d11_swapchain_params.flags', + '185': 'add PL_COLOR_SYSTEM_DOLBYVISION and reshaping', + '184': 'add pl_map_avframe/pl_unmap_avframe, deprecate pl_upload_avframe', + '183': 'relax pl_shared_mem.size > 0 requirement', + '182': 'add pl_vulkan_get, pl_opengl_get, pl_d3d11_get', + '181': 'add pl_shader_set_alpha, change alpha handling of pl_shader_decode_color', + '180': 'add pl_gpu_limits.max_variable_comps', + '179': 'add pl_render_params.skip_caching_single_frame', + '178': 'add pl_gpu_limits.align_vertex_stride', + '177': 'add debug_tag to pl_tex/buf_params', + '176': 'revert vulkan 1.2 requirement', + '175': 'require timeline semaphores for all vulkan devices', + '174': 'deprecate pl_vulkan_params.disable_events', + '173': 'remove VkAccessFlags from pl_vulkan_hold/release', + '172': 'replace VkSemaphore by pl_vulkan_sem in pl_vulkan_hold/release', + '171': 'make vulkan 1.2 the minimum version', + '170': 'allow pl_queue_update on NULL', + '169': 'refactor pl_pass_params.target_dummy into target_format', + '168': 'refactor pl_tex_transfer.stride_w/h into row/depth_pitch', + '167': 'expose pl_dispatch_reset_frame', + '166': 'add pl_index_format', + '165': 'add pl_fmt.signature', + '164': 'support blending against tiles', + '163': 'add pl_frame_copy_stream_props', + '162': 'support rotation in pl_renderer', + '161': 'make H.274 film grain values indirect', + '160': 'add preprocessor macros for default params', + '159': 'remove fields deprecated for libplacebo v3', + '158': 'add support for H.274 film grain', + '157': 'add pl_peak_detect_params.minimum_peak', + '156': 'add pl_swapchain_colors_from_avframe/dav1dpicture', + '155': 'refactor pl_swapchain_hdr_metadata into pl_swapchain_colorspace_hint', + '154': 'add <libplacebo/d3d11.h>', + '153': 'add pl_render_info callbacks', + '152': 'add pl_dispatch_info callbacks', + '151': 'pl_shader_res.description/steps', + '150': 'add PL_FMT_CAP_READWRITE', + '149': 'add pl_gpu_limits.buf_transfer', + '148': 'refactor pl_gpu_caps', + '147': 'add pl_color_space.sig_floor and black point adaptation', + '146': 'add PL_COLOR_TRC_GAMMA20, GAMMA24 and GAMMA26', + '145': 'add pl_render_params/pl_shader_params.dynamic_constants', + '144': 'add support for pl_constant specialization constants', + '143': 'add pl_color_space_infer_ref', + '142': 'add pl_render_params.background_transparency and pl_frame_clear_rgba', + '141': 'add pl_filter_oversample', + '140': 'add pl_shader_sample_oversample', + '139': 'make vulkan 1.1 the minimum vulkan version', + '138': 're-add and properly deprecate pl_filter_haasnsoft', + '137': 'change behavior of pl_image_mix.num_frames == 1', + '136': 'add pl_fmt.gatherable', + '135': 'add pl_queue_params.interpolation_threshold', + '134': 'add pl_render_params.ignore_icc_profiles', + '133': 'remove pl_shader_signature', + '132': 'add pl_tex_clear_ex', + '131': 'remove PL_PRIM_TRIANGLE_FAN', + '130': 'provide typedefs for object types, e.g. const struct pl_tex * -> pl_tex', + '129': 'rename pl_context to pl_log, move <libplacebo/context.h> to <libplacebo/log.h>', + '128': 'add pl_opengl_params.make/release_current, for thread safety', + '127': 'add pl_get_buffer2', + '126': 'add pl_render_params.background_color', + '125': 'allow calling pl_render_image on NULL', + '124': 'make pl_queue_update return valid data even on PL_QUEUE_MORE', + '123': 'refactor pl_overlay from pl_plane into pl_overlay_part', + '122': 'make pl_gpu thread safe', + '121': 'add pl_queue_push_block and refactor frame queue threading', + '120': 'refactor pl_named_filter_config into pl_filter_preset', + '119': 'add pl_color_adjustment.temperature', + '118': 'add <libplacebo/utils/frame_queue.h>', + '117': 'rename pl_filter_triangle/box to pl_filter_bilinear/nearest', + '116': 'add pl_frame_recreate_from_avframe and pl_download_avframe', + '115': 'add pl_dispatch_vertex', + '114': 'add pl_pass_run_params.index_data', + '113': 'add <libplacebo/shaders/lut.h>', + '112': 'add <libplacebo/shaders/icc.h>, replacing existing 3dlut API', + '111': 'add pl_fmt.modifiers for proper DRM format modifier support', + '110': 'refactor pl_upload_dav1dpicture', + '109': 'add support for host pointer imports on OpenGL', + '108': 'add <libplacebo/utils/dav1d.h>', + '107': 'add pl_render_image_mix', + '106': 'add pl_shared_mem.stride_w/h', + '105': 'add asynchronous texture transfers', + '104': 'add pl_render_params.blend_params', + '103': 'move pl_tex_sample_mode from pl_tex_params to pl_desc_binding', + '102': 'add pl_tex_poll', + '101': 'merge pl_image and pl_render_target into pl_frame', + '100': 'add pl_render_target.planes', + '99': 'add pl_sample_src.component_mask', + '98': 'add pl_vulkan_params.disable_overmapping', + '97': 'add pl_av1_grain_params.luma_comp', + '96': 'add <libplacebo/utils/libav.h>', + '95': 'add PL_COLOR_PRIM_EBU3213 and FILM_C', + '94': 'add support for //!BUFFER to user shaders', + '93': 'add pl_plane_data_align', + '92': 'add more pl_var helper functions', + '91': 'implement PL_HANDLE_DMA_BUF for EGL', + '90': 'add pl_opengl_params.allow_software', + '89': 'use uniform arrays instead of shader literals for LUTs', + '88': 'add pl_shared_mem.drm_format_mod', + '87': 'refactor pl_opengl_wrap', + '86': 'add pl_pass_run_params.vertex_buf', + '85': 'add PL_HANDLE_HOST_PTR', + '84': 'add pl_buf_params.import/export_handle', + '83': 'add pl_shader_custom', + '82': 'add pl_gpu_is_failed', + '81': 'add PL_GPU_CAP_SUBGROUPS', + '80': 'add pl_color_map_params.gamut_clipping', + '79': 'add pl_get_detected_peak', + '78': 'add pl_buf_copy', + '77': 'make all pl_buf_* commands implicitly synchronized', + '76': 'add pl_vulkan_swapchain_params.prefer_hdr', + '75': 'add pl_dispatch_save/load', + '74': 'remove pl_image.signature', + '73': 'add pl_memory_qualifiers', + '72': 'generalize PL_SHADER_SIG_SAMPLER2D into PL_SHADER_SIG_SAMPLER', + '71': 'add pl_opengl_wrap/unwrap', + '70': 'add pl_tex_sampler_type', + '69': 'add pl_peak_detect_params.overshoot_margin', + '68': 'add PL_TONE_MAPPING_BT_2390', + '67': 'add pl_image_set_chroma_location', + '66': 'change pl_render_target.dst_rect from pl_rect2d to pl_rect2df', + '65': 'add PL_SHADER_SIG_SAMPLER2D', + '64': 'add pl_rect2df_aspect_* family of functions', + '63': 'refactor pl_shader_av1_grain', + '62': 'refactor PL_COLOR_REF_WHITE into PL_COLOR_SDR_WHITE and PL_COLOR_SDR_WHITE_HLG', + '61': 'refactor pl_dispatch_finish etc. to support timers', + '60': 'add pl_timer', + '59': 'add pl_render_high_quality_params', + '58': 'add <libplacebo/shaders/custom.h> and pl_hook', + '57': 'add width/height fields to pl_dispatch_compute', + '56': 'make pl_vulkan.features etc. extensible', + '55': 'add pl_vulkan_params.features', + '54': 'add pl_vulkan_import', + '53': 'refactor pl_vulkan_wrap', + '52': 'revert addition of pl_filter_nearest', + '51': 'add pl_vulkan_hold_raw', + '50': 'add pl_vulkan_params.device_uuid', + '49': 'add pl_filter_nearest', + '48': 'deprecate pl_image.width/height', + '47': 'add more matrix math helpers to common.h', + '46': 'add pl_vk_inst_params.debug_extra', + '45': 'add pl_vulkan.api_version', + '44': 'add pl_swapchain_hdr_metadata', + '43': 'add pl_vulkan/opengl_params.max_glsl_version', + '42': 'add pl_vk_inst_params.layers/opt_layers', + '41': 'add PL_FMT_CAP_HOST_READABLE', + '40': 'add PL_GPU_CAP_BLITTABLE_1D_3D', + '39': 'add pl_render_params.disable_fbos', + '38': 'add pl_render_params.force_dither', + '37': 'add pl_color_levels_guess', + '36': 'remove pl_opengl.priv leftover', + '35': 'fix pl_vulkan_swapchain_suboptimal signature', + '34': 'add <libplacebo/opengl.h>', + '33': 'add pl_image.av1_grain', + '32': 'refactor pl_grain_params', + '31': 'add pl_vulkan_params.get_proc_addr', + '30': 'add pl_gpu.pci', + '29': 'add pl_vulkan_swapchain_params.allow_suboptimal', + '28': 'eliminate void *priv fields from all object types', + '27': 'add pl_vulkan_choose_device', + '26': 'add PL_GPU_CAP_MAPPED_BUFFERS', + '25': 'add pl_fmt.internal_size', + '24': 'add pl_vulkan_params.disable_events', + '23': 'add error checking to functions in <libplacebo/gpu.h>', + '22': 'add pl_vulkan_params.blacklist_caps', + '21': 'add pl_shader_params.glsl', + '20': 'refactor pl_shader_alloc', + '19': 'default to GLSL 130 instead of 110 if unspecified', + '18': 'add pl_swapchain_resize', + '17': 'add pl_context_update', + '16': 'add pl_tex/buf_params.user_data', + '15': 'add <libplacebo/dummy.h>', + '14': 'remove ident from pl_shader_reset', + '13': 'add pl_render_params.peak_detect_params', + '12': 'add pl_shader_detect_peak', + '11': 'add pl_var_int', + '10': 'refactor pl_color_map_params desaturation fields', + '9': 'add pl_tex_params.import/export_handle', + '8': 'add pl_color_space.sig_scale', + '7': 'initial major release', + '6': '', + '5': '', + '4': '', + '3': '', + '2': '', + '1': '', + }.keys().length(), + # Fix version + 2) +) + +### Version number and configuration +version = meson.project_version() +version_pretty = 'v' + version +version_split = version.split('.') + +majorver = version_split[0] +apiver = version_split[1] +fixver = version_split[2] + +# Configuration data +conf_public = configuration_data() +conf_internal = configuration_data() +conf_public.set('majorver', majorver) +conf_public.set('apiver', apiver) +conf_internal.set('BUILD_API_VER', apiver) +conf_internal.set('BUILD_FIX_VER', fixver) +conf_internal.set('PL_DEBUG_ABORT', get_option('debug-abort')) + + +### Global build options +build_opts = [ + # Warnings + '-Wundef', '-Wshadow', '-Wparentheses', '-Wpointer-arith', + '-fno-math-errno', +] + +link_args = [] + +cc = meson.get_compiler('c') +cxx = meson.get_compiler('cpp') + +c_opts = [ + '-D_ISOC99_SOURCE', '-D_ISOC11_SOURCE', '-D_GNU_SOURCE', '-U__STRICT_ANSI__', + '-Wmissing-prototypes', + + # Warnings to ignore + '-Wno-sign-compare', '-Wno-unused-parameter', + '-Wno-missing-field-initializers', '-Wno-type-limits', + + # Warnings to treat as errors + '-Werror=implicit-function-declaration', +] + +if cc.has_argument('-Wincompatible-pointer-types') + c_opts += ['-Werror=incompatible-pointer-types'] +endif + +# clang's version of -Wmissing-braces rejects the common {0} initializers +if cc.get_id() == 'clang' + c_opts += ['-Wno-missing-braces'] +endif + +# For sanitizers to work/link properly some public symbols have to be available. +if get_option('b_sanitize') == 'none' + # don't leak library symbols if possible + vflag = '-Wl,--exclude-libs=ALL' + # link and lld-link don't support this arg, but it only shows warning about + # unsupported argument. Meson doesn't detect it, so manually exclude them. + if cc.has_link_argument(vflag) and not ['lld-link', 'link'].contains(cc.get_linker_id()) + link_args += [vflag] + endif +endif + +# OS specific build options +if host_machine.system() == 'windows' + build_opts += ['-D_WIN32_WINNT=0x0601', + '-D_USE_MATH_DEFINES', + '-DWIN32_LEAN_AND_MEAN', + '-DNOMINMAX', + '-D_CRT_SECURE_NO_WARNINGS'] + subdir('win32') +endif + +add_project_arguments(build_opts + c_opts, language: ['c']) +add_project_arguments(build_opts, language: ['c', 'cpp']) +add_project_link_arguments(link_args, language: ['c', 'cpp']) + + +# Global dependencies +fs = import('fs') +libm = cc.find_library('m', required: false) +thirdparty = meson.project_source_root()/'3rdparty' +python = import('python').find_installation() +python_env = environment() +python_env.append('PYTHONPATH', thirdparty/'jinja/src') +python_env.append('PYTHONPATH', thirdparty/'markupsafe/src') +python_env.append('PYTHONPATH', thirdparty/'glad') + +if host_machine.system() == 'windows' + threads = declare_dependency() +else + pthreads = dependency('threads') + has_setclock = cc.has_header_symbol( + 'pthread.h', + 'pthread_condattr_setclock', + dependencies: pthreads, + args: c_opts, + ) + + threads = declare_dependency( + dependencies: pthreads, + compile_args: [pthreads.found() ? '-DPL_HAVE_PTHREAD' : '', + has_setclock ? '-DPTHREAD_HAS_SETCLOCK' : '',] + ) +endif + +build_deps = [ libm, threads ] + +subdir('tools') +subdir('src') + +if get_option('demos') + subdir('demos') +endif + +# Allows projects to build libplacebo by cloning into ./subprojects/libplacebo +meson.override_dependency('libplacebo', libplacebo) |