Blob Blame History Raw
cargs = [
  '-DG_LOG_DOMAIN="gcab"',
]

enum_headers = ['gcab-folder.h', 'gcab-file.h']
enums = gnome.mkenums(
  'gcab-enums',
  sources : enum_headers,
  c_template : 'gcab-enums.c.etemplate',
  h_template : 'gcab-enums.h.etemplate',
  install_header : true,
  install_dir : 'include/libgcab-1.0/libgcab',
  symbol_prefix : 'gcab',
  identifier_prefix : 'GCab',
)

install_headers(
  'libgcab.h',
  subdir : 'libgcab-1.0',
)

install_headers([
    'gcab-cabinet.h',
    'gcab-file.h',
    'gcab-folder.h',
  ],
  subdir : 'libgcab-1.0/libgcab',
)

mapfile = 'libgcab.syms'
vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile)
libgcab = shared_library(
  'gcab-1.0',
  enums,
  sources : [
    'gcab-cabinet.c',
    'gcab-folder.c',
    'gcab-file.c',
    'cabinet.c',
    'decomp.c',
  ],
  soversion : lt_current,
  version : lt_version,
  dependencies : [
    gio,
    libz,
  ],
  c_args : cargs,
  include_directories : [
    include_directories('.'),
    include_directories('..'),
  ],
  link_args : vflag,
  link_depends : mapfile,
  install : true
)

pkgg = import('pkgconfig')
pkgg.generate(
  libraries : libgcab,
  requires : [ 'gio-2.0' ],
  subdirs : 'libgcab-1.0',
  version : meson.project_version(),
  name : 'libgcab',
  filebase : 'libgcab-1.0',
  description : 'Cabinet file library',
)

if get_option('introspection')
  gir = gnome.generate_gir(libgcab,
    sources : [
      enums,
      'gcab-cabinet.c',
      'gcab-cabinet.h',
      'gcab-folder.c',
      'gcab-folder.h',
      'gcab-file.c',
      'gcab-file.h',
    ],
    nsversion : '1.0',
    namespace : 'GCab',
    symbol_prefix : 'gcab',
    header : 'libgcab.h',
    identifier_prefix : 'GCab',
    export_packages : 'libgcab-1.0',
    dependencies : [
      gio,
    ],
    includes : [
      'GLib-2.0',
      'Gio-2.0',
      'GObject-2.0',
    ],
    install : true
  )
  gnome.generate_vapi('libgcab-1.0',
    sources: gir[0],
    packages : ['gio-2.0'],
    install : true,
  )
endif