summaryrefslogtreecommitdiff
path: root/gusb/meson.build
blob: 7c25d51291dae38545490ce8be361629b70b74ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
cargs = [
  '-DG_LOG_DOMAIN="libgusb"',
  '-DUSB_IDS="' + get_option('usb_ids') + '"',
]

con2 = configuration_data()
con2.set('G_USB_MAJOR_VERSION', gusb_major_version)
con2.set('G_USB_MINOR_VERSION', gusb_minor_version)
con2.set('G_USB_MICRO_VERSION', gusb_micro_version)

gusb_version_h = configure_file(
  input : 'gusb-version.h.in',
  output : 'gusb-version.h',
  configuration : con2
)

install_headers(
  'gusb.h',
  subdir : 'gusb-1',
)

lib_incdir = include_directories('.')

install_headers([
    gusb_version_h,
    'gusb-autocleanups.h',
    'gusb-context.h',
    'gusb-context-private.h',
    'gusb-device.h',
    'gusb-device-private.h',
    'gusb-device-list.h',
    'gusb-interface.h',
    'gusb-interface-private.h',
    'gusb-source.h',
    'gusb-util.h',
  ],
  subdir : 'gusb-1/gusb',
)

mapfile = 'libgusb.ver'
vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile)
gusb = shared_library(
  'gusb',
  sources : [
    'gusb-context.c',
    'gusb-device.c',
    'gusb-device-list.c',
    'gusb-interface.c',
    'gusb-source.c',
    'gusb-util.c',
    'gusb-version.c',
  ],
  soversion : lt_current,
  version : lt_version,
  dependencies : [
    libgio,
    libusb,
  ],
  c_args : [
      cargs,
    ],
  include_directories : [
      root_incdir,
      lib_incdir,
  ],
  link_args : vflag,
  link_depends : mapfile,
  install : true
)

pkgg = import('pkgconfig')
pkgg.generate(
  libraries : gusb,
  requires : [ 'gio-2.0', 'gobject-2.0', 'libusb-1.0' ],
  subdirs : 'gusb-1',
  version : meson.project_version(),
  name : 'gusb',
  filebase : 'gusb',
  description : 'GUsb is a GLib binding for libusb1',
)

libgusb_girtarget = gnome.generate_gir(gusb,
  sources : [
    gusb_version_h,
    'gusb-autocleanups.h',
    'gusb-context.c',
    'gusb-context.h',
    'gusb-context-private.h',
    'gusb-device.c',
    'gusb-device.h',
    'gusb-device-list.c',
    'gusb-device-list.h',
    'gusb-device-private.h',
    'gusb-interface.c',
    'gusb-interface.h',
    'gusb-interface-private.h',
    'gusb-source.c',
    'gusb-source.h',
    'gusb-util.c',
    'gusb-util.h',
  ],
  nsversion : '1.0',
  namespace : 'GUsb',
  symbol_prefix : 'g_usb',
  identifier_prefix : 'GUsb',
  export_packages : 'gusb',
  extra_args : [
    '--c-include=gusb.h',
    ],
  link_with : gusb,
  dependencies : [
    libgio,
    libusb,
  ],
  includes : [
    'Gio-2.0',
    'GObject-2.0',
  ],
  install : true
)
libgusb_gir = libgusb_girtarget[0]
libgusb_typelib = libgusb_girtarget[1]

if get_option('vapi')
gnome.generate_vapi('gusb',
  sources: libgusb_girtarget[0],
  packages: ['gio-2.0'],
  install: true,
)
endif

if get_option('tests')
  e = executable(
    'gusb-self-test',
    sources : [
      'gusb-context.c',
      'gusb-device.c',
      'gusb-device-list.c',
      'gusb-interface.c',
      'gusb-self-test.c',
      'gusb-source.c',
      'gusb-util.c',
    ],
    include_directories : [
      root_incdir,
      lib_incdir,
    ],
    dependencies : [
      libgio,
      libusb,
    ],
    c_args : [
      cargs,
    ],
  )
  test('gusb-self-test', e)
endif