gitg/libgitg/meson.build
Iñigo Martínez 849f95c336 build: Fix shared library paths in typelib files
The GObject Introspection metadata generation by meson uses a custom
target command[0]. This command also needs to specify the shared
library where the symbols in the typelib file can be found.

However, the values used are wrong because the path to the built
shared libraries are specified instead of the name of the
shared libraries themselves.

This has been fixed by specifying the name of the shared libraries.

Fixes #157

[0] http://mesonbuild.com/Vala.html#gobject-introspection
2018-10-28 00:15:12 +02:00

175 lines
4.5 KiB
Meson

libgitg_build_dir = meson.current_build_dir()
libgitg_api_name = 'libgitg-' + gitg_api_version
libgitg_gir_api_name = 'Gitg-' + gitg_api_version
libgitg_vapi_name = libgitg_api_name + '.vapi'
libgitg_gir_name = libgitg_gir_api_name + '.gir'
libgitg_typelib_name = libgitg_gir_api_name + '.typelib'
common_deps = [
gee_dep,
gio_dep,
glib_dep,
gtk_dep,
libgit2_glib_dep,
]
sources = files(
'gitg-assembly-info.vala',
'gitg-async.vala',
'gitg-authentication-dialog.vala',
'gitg-avatar-cache.vala',
'gitg-branch-base.vala',
'gitg-branch.vala',
'gitg-cell-renderer-lanes.vala',
'gitg-color.vala',
'gitg-commit-list-view.vala',
'gitg-commit-model.vala',
'gitg-commit.vala',
'gitg-credentials-manager.vala',
'gitg-date.vala',
'gitg-diff-image-composite.vala',
'gitg-diff-image-difference.vala',
'gitg-diff-image-overlay.vala',
'gitg-diff-image-side-by-side.vala',
'gitg-diff-image-slider.vala',
'gitg-diff-image-surface-cache.vala',
'gitg-diff-selectable.vala',
'gitg-diff-stat.vala',
'gitg-diff-view-commit-details.vala',
'gitg-diff-view-file-info.vala',
'gitg-diff-view-file-renderer-binary.vala',
'gitg-diff-view-file-renderer-image.vala',
'gitg-diff-view-file-renderer-text.vala',
'gitg-diff-view-file-renderer.vala',
'gitg-diff-view-file-selectable.vala',
'gitg-diff-view-file.vala',
'gitg-diff-view-lines-renderer.vala',
'gitg-diff-view-options.vala',
'gitg-diff-view.vala',
'gitg-hook.vala',
'gitg-init.vala',
'gitg-label-renderer.vala',
'gitg-lanes.vala',
'gitg-lane.vala',
'gitg-progress-bin.vala',
'gitg-ref-base.vala',
'gitg-ref.vala',
'gitg-remote.vala',
'gitg-repository-list-box.vala',
'gitg-repository.vala',
'gitg-resource.vala',
'gitg-sidebar.vala',
'gitg-stage-status-enumerator.vala',
'gitg-stage.vala',
'gitg-theme.vala',
'gitg-utils.vala',
'gitg-when-mapped.vala',
)
resource_data = files(
'resources/ui/gitg-authentication-dialog.ui',
'resources/ui/gitg-diff-view-commit-details.ui',
'resources/ui/gitg-diff-view-file-renderer-binary.ui',
'resources/ui/gitg-diff-view-file-renderer-image.ui',
'resources/ui/gitg-diff-view-file-renderer-text.ui',
'resources/ui/gitg-diff-view-file.ui',
'resources/ui/gitg-diff-view-options-spacing.ui',
'resources/ui/gitg-diff-view-options.ui',
'resources/ui/gitg-diff-view.ui',
'resources/ui/gitg-repository-list-box-row.ui',
'resources/ui/gitg-sidebar.ui',
'resources/ui/libgitg-style.css',
)
sources += gnome.compile_resources(
'libgitg-resources',
'resources/resources.xml',
source_dir: 'resources',
dependencies: resource_data,
)
deps = common_deps + [
gitg_platform_support_dep,
gsettings_desktop_schemas_dep,
gtksourceview_dep,
libide_dep,
libsecret_dep,
libsoup_dep,
m_dep,
]
cflags = warn_flags + [
'-DDATADIR="@0@"'.format(gitg_datadir),
'-DLIBDIR="@0@"'.format(gitg_libdir),
'-DGETTEXT_PACKAGE="@0@"'.format(gitg_gettext),
]
ldflags = common_ldflags
if gdk_targets.contains('quartz')
sources += files('gitg-platform-support-osx.c')
deps += [
dependency('gio-unix-2.0'),
dependency('appleframeworks', modules : ['foundation', 'appkit'])
]
cflags += '-xobjective-c'
elif gdk_targets.contains('win32')
sources += files('gitg-platform-support-win32.c')
deps += dependency('gio-windows-2.0')
else
sources += files('gitg-platform-support.c')
deps += dependency('gio-unix-2.0')
endif
libgitg = shared_library(
'gitg-' + gitg_api_version,
sources: sources,
version: libversion,
soversion: soversion,
include_directories: top_inc,
dependencies: deps,
c_args: cflags,
vala_header: 'libgitg.h',
vala_vapi: libgitg_vapi_name,
vala_gir: libgitg_gir_name,
link_args: ldflags,
link_depends: symbol_map,
install: true,
install_dir: [
true,
true,
true,
true
]
)
libgitg_dep = declare_dependency(
include_directories: include_directories('.'),
dependencies: common_deps + [m_dep],
link_with: libgitg,
)
# FIXME: libgitg_dep requires m_dep because math.h and float.h includes are exposed
# However, meson is not able to append it
pkg.generate(
libraries: libgitg,
version: gitg_version,
name: 'gitg',
description: 'gitg library',
filebase: libgitg_api_name,
subdirs: libgitg_api_name,
requires: common_deps,
variables: 'exec_prefix=' + gitg_prefix,
)
custom_target(
libgitg_typelib_name,
output: libgitg_typelib_name,
command: [g_ir_compiler, '--shared-library', libgitg_api_name, '--output', '@OUTPUT@', join_paths(libgitg_build_dir, libgitg_gir_name)],
depends: libgitg,
install: true,
install_dir: gitg_girepositorydir,
)