]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
seq: generate alsaseq library
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Wed, 1 Apr 2020 09:13:28 +0000 (18:13 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Fri, 3 Apr 2020 13:06:25 +0000 (22:06 +0900)
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/meson.build
src/seq/alsaseq.map [new file with mode: 0644]
src/seq/meson.build [new file with mode: 0644]

index d81a3f28c136e9ef0fedaa8b18d0f7d7c0d8201d..78bfa7115e48827dab914285eba6bb373f142cd1 100644 (file)
@@ -1,2 +1,3 @@
 subdir('ctl')
 subdir('timer')
+subdir('seq')
diff --git a/src/seq/alsaseq.map b/src/seq/alsaseq.map
new file mode 100644 (file)
index 0000000..72ece8a
--- /dev/null
@@ -0,0 +1,4 @@
+ALSA_GOBJECT_0_0_0 {
+  local:
+    *;
+};
diff --git a/src/seq/meson.build b/src/seq/meson.build
new file mode 100644 (file)
index 0000000..680b357
--- /dev/null
@@ -0,0 +1,109 @@
+#
+# Metadata part.
+#
+
+path = 'seq'
+name = 'alsaseq'
+namespace = 'ALSASeq'
+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.
+alsaseq_dir = include_directories('.')
+alsaseq_dependency = declare_dependency(
+  link_with: library,
+  dependencies: dependencies,
+)