1# SPDX-License-Identifier: LGPL-2.1-or-later
2# Copyright (C) 2021 Iñigo Martinez <inigomartinez@gmail.com>
3
4src_inc = include_directories('.')
5
6libname= '@0@-@1@'.format(gnome_autoar_name, gnome_autoar_api_version)
7
8headers = files(
9  'autoar-compressor.h',
10  'autoar-extractor.h',
11  'autoar-format-filter.h',
12  'autoar-mime-types.h',
13  'autoar-misc.h',
14)
15
16install_headers(
17  headers + files('gnome-autoar.h'),
18  install_dir: gnome_autoar_includedir / libname / gnome_autoar_name,
19)
20
21sources = files(
22  'autoar-compressor.c',
23  'autoar-extractor.c',
24  'autoar-format-filter.c',
25  'autoar-mime-types.c',
26  'autoar-misc.c',
27)
28
29enum_types = 'autoar-enum-types'
30
31enum_sources = gnome.mkenums(
32  enum_types,
33  sources: headers,
34  h_template: '@0@.h.template'.format(enum_types),
35  c_template: '@0@.c.template'.format(enum_types),
36  install_header: true,
37  install_dir: gnome_autoar_includedir / libname / gnome_autoar_name,
38)
39
40deps = [
41  gio_dep,
42  glib_dep,
43  libarchive_dep,
44]
45
46libgnome_autoar = shared_library(
47  libname,
48  version: gnome_autoar_libversion,
49  sources: sources + enum_sources + files('autoar-private.c'),
50  include_directories: top_inc,
51  dependencies: deps,
52  install: true,
53)
54
55libgnome_autoar_dep = declare_dependency(
56  sources: enum_sources[1],
57  include_directories: src_inc,
58  dependencies: deps,
59  link_with: libgnome_autoar,
60)
61
62pkg.generate(
63  libraries: libgnome_autoar,
64  name: gnome_autoar_name,
65  description: 'Archives integration support for GNOME',
66  filebase: libname,
67  subdirs: libname,
68  requires: deps,
69  variables: 'exec_prefix=${prefix}',
70)
71
72if enable_introspection
73  api_ns = 'GnomeAutoar'
74
75  incs = [
76    'Gio-2.0',
77    'GLib-2.0',
78    'GObject-2.0',
79  ]
80
81  libgnome_autoar_gir = gnome.generate_gir(
82    libgnome_autoar,
83    sources: sources + headers,
84    includes: incs,
85    header: 'gnome-autoar/gnome-autoar.h',
86    namespace: api_ns,
87    nsversion: gnome_autoar_api_ns_version,
88    identifier_prefix: gnome_autoar_api_prefix,
89    export_packages: '@0@-@1@'.format(api_ns, gnome_autoar_api_ns_version),
90    install: true,
91  )
92
93  if enable_vapi
94    libgnome_autoar_vapi = gnome.generate_vapi(
95      libname,
96      sources: libgnome_autoar_gir[0],
97      packages: 'gio-2.0',
98      install: true,
99    )
100  endif
101endif
102
103if not enable_gtk
104  subdir_done()
105endif
106
107libname_gtk = '@0@-gtk-@1@'.format(gnome_autoar_name, gnome_autoar_api_version)
108
109headers = files(
110  'autoar-gtk-chooser.h',
111  'autoar-gtk.h',
112)
113
114install_headers(
115  headers,
116  install_dir: gnome_autoar_includedir / libname / gnome_autoar_name,
117)
118
119sources = files('autoar-gtk-chooser.c')
120
121deps = [gtk_dep]
122
123libgnome_autoar_gtk = shared_library(
124  libname_gtk,
125  version: gnome_autoar_libversion,
126  sources: sources,
127  include_directories: top_inc,
128  dependencies: deps + [libgnome_autoar_dep],
129  install: true,
130)
131
132libgnome_autoar_gtk_dep = declare_dependency(
133  include_directories: src_inc,
134  dependencies: deps + [libgnome_autoar_dep],
135  link_with: libgnome_autoar_gtk,
136)
137
138pkg.generate(
139  libraries: libgnome_autoar_gtk,
140  name: gnome_autoar_name,
141  description: 'GTK+ widgets for gnome-autoar library',
142  filebase: libname_gtk,
143  subdirs: libname,
144  requires: deps,
145  variables: 'exec_prefix=${prefix}',
146)
147
148if enable_introspection
149  api_ns = 'GnomeAutoarGtk'
150
151  incs = [
152    libgnome_autoar_gir[0],
153    'Gtk-3.0',
154  ]
155
156  libgnome_autoar_gtk_gir = gnome.generate_gir(
157    libgnome_autoar_gtk,
158    sources: sources + headers,
159    includes: incs,
160    header: 'gnome-autoar/autoar-gtk.h',
161    namespace: api_ns,
162    nsversion: gnome_autoar_api_ns_version,
163    identifier_prefix: 'AutoarGtk',
164    export_packages: '@0@-@1@'.format(api_ns, gnome_autoar_api_ns_version),
165    install: true,
166  )
167
168  if enable_vapi
169    packages = [
170      libgnome_autoar_vapi,
171      'gtk+-3.0',
172    ]
173
174    gnome.generate_vapi(
175      libname_gtk,
176      sources: libgnome_autoar_gtk_gir[0],
177      packages: packages,
178      install: true,
179    )
180  endif
181endif
182