From: Takashi Sakamoto Date: Mon, 18 Nov 2019 04:22:44 +0000 (+0900) Subject: rawmidi: generate alsarawmidi library X-Git-Tag: v0.1.0~195 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=e9e478dfff04b1660c3a0c24715a3482ef2f78a5;p=alsa-gobject.git rawmidi: generate alsarawmidi library Signed-off-by: Takashi Sakamoto --- diff --git a/src/meson.build b/src/meson.build index fb07d68..923de85 100644 --- a/src/meson.build +++ b/src/meson.build @@ -2,3 +2,4 @@ subdir('ctl') subdir('timer') subdir('seq') subdir('hwdep') +subdir('rawmidi') diff --git a/src/rawmidi/alsarawmidi.map b/src/rawmidi/alsarawmidi.map new file mode 100644 index 0000000..72ece8a --- /dev/null +++ b/src/rawmidi/alsarawmidi.map @@ -0,0 +1,4 @@ +ALSA_GOBJECT_0_0_0 { + local: + *; +}; diff --git a/src/rawmidi/meson.build b/src/rawmidi/meson.build new file mode 100644 index 0000000..f2c59c8 --- /dev/null +++ b/src/rawmidi/meson.build @@ -0,0 +1,109 @@ +# +# Metadata part. +# + +path = 'rawmidi' +name = 'alsarawmidi' +namespace = 'ALSARawmidi' +has_enumerations = false +has_marshaller = false + +sources = files() + +headers = files() + +privates = files() + +# +# Common part except for identifier of dependency. +# + +# Depends on glib-2.0 and gobject-2.0 +gobject = dependency('gobject-2.0', + version: '>=2.34.0' +) + +libudev = dependency('libudev') + +dependencies = [ + gobject, + libudev, +] + +# Generate enumerations for GObject fashion. +if has_enumerations + enum_header = '@0@-enum-types.h'.format(name) + enums = gnome.mkenums_simple('@0@-enums'.format(name), + sources: enum_header, + symbol_prefix: name, + identifier_prefix: namespace, + install_header: true, + install_dir: join_paths(get_option('includedir'), meson.project_name(), path), + header_prefix: '#include <@0@-enum-types.h>'.format(join_paths(path, name)), + ) + sources += enums + headers += enum_header +endif + +# Generate marshallers for GObject signals. +if has_marshaller + signal_marshallers = gnome.genmarshal('@0@-sigs-marshal'.format(name), + prefix: '@0@_sigs_marshal'.format(name), + sources: '@0@-sigs-marshal.list'.format(name), + stdinc: true, + install_header: true, + install_dir: join_paths(get_option('includedir'), meson.project_name(), path), + ) + sources += signal_marshallers +endif + +# Constrain public APIs by linker option. +mapfile_name = '@0@.map'.format(name) +mapfile_path = join_paths(meson.current_source_dir(), mapfile_name) +linker_flag = '-Wl,--version-script,@0@'.format(mapfile_path) + +library = library(name, + sources: sources + headers + privates, + version: meson.project_version(), + soversion: meson.project_version().split('.')[0], + install: true, + dependencies: dependencies, + link_args : linker_flag, + link_depends : mapfile_name, + include_directories: include_directories('..'), +) + +install_headers(headers, + subdir: join_paths(meson.project_name(), path), +) + +# Generate pkg-config file for development. +pkg = import('pkgconfig') +pkg.generate(library, + name: name, + description: 'GObject instrospection library with API for asound.h and asequencer.h', + subdirs: meson.project_name(), +) + +# Generate metadata for gobject introspection. +gnome.generate_gir(library, + sources: sources + headers, + nsversion: '0.0', + namespace: namespace, + symbol_prefix: '@0@_'.format(name), + identifier_prefix: namespace, + export_packages: name, + dependencies: dependencies, + includes: [ + 'GLib-2.0', + 'GObject-2.0', + ], + install: true, +) + +# For documentation of gtk-doc. +alsarawmidi_dir = include_directories('.') +alsarawmidi_dependency = declare_dependency( + link_with: library, + dependencies: dependencies, +)