$OpenBSD: patch-meson_build,v 1.1 2021/10/25 07:21:40 ajacoutot Exp $

From 3468c67fe91f0c37e0ec5d335082653a6fa609b6 Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
Date: Thu, 25 Feb 2021 01:27:10 +0000
Subject: [PATCH] meson: add xlib-xcb option and disable by default

From e9ccb1d8d095482e4139da658e679d5aad56b184 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
Date: Tue, 15 Dec 2020 00:12:55 +0000
Subject: [PATCH] meson: fix library versioning

Last chunk: LD_PRELOAD is supported on OpenBSD

Index: meson.build
--- meson.build.orig
+++ meson.build
@@ -3,8 +3,6 @@ project('cairo', 'c', 'cpp',
   version: run_command(find_program('version.py'), check: true).stdout().strip(),
 )
 
-cc = meson.get_compiler('c')
-
 # Keep in sync with configure.ac!
 freetype_required_version = '>= 9.7.3'
 fontconfig_required_version = '>= 2.2.95'
@@ -16,6 +14,27 @@ libudev_required_version = '>= 136'
 libdrm_required_version = '>= 2.4'
 glib_required_version = '>= 2.14'
 
+# library versioning
+version_arr = meson.project_version().split('.')
+cairo_version_major = version_arr[0].to_int()
+cairo_version_minor = version_arr[1].to_int()
+cairo_version_micro = version_arr[2].to_int()
+
+# The libtool shared library version stuff.
+# Try and maintain compatibility with the previous library versioning.
+cairo_version_sonum = cairo_version_major + 1
+cairo_version =  cairo_version_major * 10000 + cairo_version_minor * 100 + cairo_version_micro
+
+if cairo_version_minor % 2 == 1
+  # unstable release
+  cairo_libversion = '@0@.@1@.0'.format(cairo_version_sonum, cairo_version)
+else
+  # stable release
+  cairo_libversion = '@0@.@1@.@2@'.format(cairo_version_sonum, cairo_version, cairo_version_micro)
+endif
+
+cc = meson.get_compiler('c')
+
 if cc.get_id() == 'msvc'
   # Basic usage in the cairo type system that causes spammy and useless warnings
   add_project_arguments('/wd4244', '/wd4146',
@@ -312,8 +331,7 @@ if xcb_dep.found() and xcb_render_dep.found()
 endif
 
 if feature_conf.get('CAIRO_HAS_XCB_SURFACE', 0) == 1 and feature_conf.get('CAIRO_HAS_XLIB_SURFACE', 0) == 1
-  # FIXME: automagic
-  x11xcb_dep = dependency('x11-xcb', required: false)
+  x11xcb_dep = dependency('x11-xcb', required: get_option('xlib-xcb'))
   if x11xcb_dep.found()
     deps += [x11xcb_dep]
     feature_conf.set('CAIRO_HAS_XLIB_XCB_FUNCTIONS', 1)
@@ -832,7 +850,7 @@ if not ['x86', 'x86_64'].contains(host_machine.cpu_fam
   conf.set('ATOMIC_OP_NEEDS_MEMORY_BARRIER', 1)
 endif
 
-have_ld_preload = ['linux', 'freebsd', 'darwin', 'dragonfly'].contains(host_machine.system())
+have_ld_preload = ['linux', 'freebsd', 'darwin', 'dragonfly', 'openbsd'].contains(host_machine.system())
 
 if have_ld_preload and zlib_dep.found() and conf.get('CAIRO_HAS_REAL_PTHREAD', 0) == 1 and conf.get('CAIRO_HAS_DLSYM', 0) == 1
   conf.set('CAIRO_HAS_TRACE', 1)
