summaryrefslogtreecommitdiffstats
path: root/meson/library
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2022-06-28 14:30:55 -0400
committerDavid Robillard <d@drobilla.net>2022-06-28 15:10:13 -0400
commitb5a4d1f58efd8e7976349ac2592b5ae2dbb86fc2 (patch)
tree393e01dfa4dbf60de1173dd43346a50762e8db66 /meson/library
parent12775e4e85fdfbf4690ee8f0ad46dbcf2a212b40 (diff)
downloadzix-b5a4d1f58efd8e7976349ac2592b5ae2dbb86fc2.tar.gz
zix-b5a4d1f58efd8e7976349ac2592b5ae2dbb86fc2.tar.bz2
zix-b5a4d1f58efd8e7976349ac2592b5ae2dbb86fc2.zip
Clean up meson configuration
Diffstat (limited to 'meson/library')
-rw-r--r--meson/library/meson.build31
1 files changed, 31 insertions, 0 deletions
diff --git a/meson/library/meson.build b/meson/library/meson.build
new file mode 100644
index 0000000..fffc831
--- /dev/null
+++ b/meson/library/meson.build
@@ -0,0 +1,31 @@
+# Copyright 2020-2022 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: CC0-1.0 OR ISC
+
+# General definitions for building libraries.
+#
+# These are essentially workarounds for Meson/Windows/MSVC. Unfortunately,
+# Meson's default_library option doesn't support shared and static builds very
+# well. In particular, it's often necessary to define different symbols for
+# static and shared builds of libraries so that symbols can be exported. To
+# work around this, default_library=both isn't supported on Windows. On other
+# platforms with GCC-like compilers, we can support both because symbols can
+# safely be exported in the same way (giving them default visibility) in both
+# static and shared builds.
+
+default_library = get_option('default_library')
+host_system = host_machine.system()
+
+# Abort on Windows with default_library=both
+if host_system == 'windows' and default_library == 'both'
+ error('default_library=both is not supported on Windows')
+endif
+
+# Set library_suffix to the suffix for libraries
+if host_system == 'windows' and default_library == 'shared'
+ # Meson appends a version to the name only for DLLs, which leads to
+ # inconsistent library names, like `mylib-1-1`. So, provide no suffix to
+ # ultimately get the same name as on other platforms, like `mylib-1`.
+ library_suffix = ''
+else
+ library_suffix = '-@0@'.format(meson.project_version().split('.')[0])
+endif