|
Packit |
4afa83 |
project('libgit2-glib', 'c',
|
|
Packit |
4afa83 |
version: '0.26.4',
|
|
Packit |
4afa83 |
default_options: [
|
|
Packit |
4afa83 |
'buildtype=debugoptimized'
|
|
Packit |
4afa83 |
],
|
|
Packit |
4afa83 |
license: 'LGPL2+',
|
|
Packit |
4afa83 |
meson_version: '>= 0.43.0')
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
libgit2_glib_version = meson.project_version()
|
|
Packit |
4afa83 |
version_array = libgit2_glib_version.split('.')
|
|
Packit |
4afa83 |
libgit2_glib_major_version = version_array[0].to_int()
|
|
Packit |
4afa83 |
libgit2_glib_minor_version = version_array[1].to_int()
|
|
Packit |
4afa83 |
libgit2_glib_micro_version = version_array[2].to_int()
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
libgit2_glib_api_version = '1.0'
|
|
Packit |
4afa83 |
libgit2_glib_api_name = '@0@-@1@'.format(meson.project_name(), libgit2_glib_api_version)
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
libgit2_glib_ns = 'Ggit'
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
libgit2_glib_buildtype = get_option('buildtype')
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
# The interface age is reset every time we add new API; this
|
|
Packit |
4afa83 |
# should only happen during development cycles, otherwise the
|
|
Packit |
4afa83 |
# interface age is the same as the micro version
|
|
Packit |
4afa83 |
if libgit2_glib_minor_version.is_odd()
|
|
Packit |
4afa83 |
libgit2_glib_interface_age = 0
|
|
Packit |
4afa83 |
else
|
|
Packit |
4afa83 |
libgit2_glib_interface_age = libgit2_glib_micro_version
|
|
Packit |
4afa83 |
endif
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
soversion = 0
|
|
Packit |
4afa83 |
# maintaining compatibility with the previous libtool versioning
|
|
Packit |
4afa83 |
# current = minor * 100 + micro - interface
|
|
Packit |
4afa83 |
# revision = interface
|
|
Packit |
4afa83 |
current = libgit2_glib_minor_version * 100 + libgit2_glib_micro_version - libgit2_glib_interface_age
|
|
Packit |
4afa83 |
revision = libgit2_glib_interface_age
|
|
Packit |
4afa83 |
libversion = '@0@.@1@.@2@'.format(soversion, current, revision)
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
libgit2_glib_prefix = get_option('prefix')
|
|
Packit |
4afa83 |
libgit2_glib_libdir = join_paths(libgit2_glib_prefix, get_option('libdir'))
|
|
Packit |
4afa83 |
libgit2_glib_includedir = join_paths(libgit2_glib_prefix, get_option('includedir'))
|
|
Packit |
4afa83 |
libgit2_glib_datadir = join_paths(libgit2_glib_prefix, get_option('datadir'))
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
libgit2_glib_pkgincludedir = join_paths(libgit2_glib_includedir, libgit2_glib_api_name, meson.project_name())
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
cc = meson.get_compiler('c')
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
# Compiler and Debugging flags
|
|
Packit |
4afa83 |
if cc.get_id() == 'msvc'
|
|
Packit |
4afa83 |
# Compiler options taken from msvc_recommended_pragmas.h
|
|
Packit |
4afa83 |
# in GLib, based on _Win32_Programming_ by Rector and Newcomer
|
|
Packit |
4afa83 |
common_flags = ['-FImsvc_recommended_pragmas.h']
|
|
Packit |
4afa83 |
else
|
|
Packit |
4afa83 |
test_cflags = [
|
|
Packit |
4afa83 |
'-ffast-math',
|
|
Packit |
4afa83 |
'-fstrict-aliasing',
|
|
Packit |
4afa83 |
'-Wpointer-arith',
|
|
Packit |
4afa83 |
'-Wmissing-declarations',
|
|
Packit |
4afa83 |
'-Wformat=2',
|
|
Packit |
4afa83 |
'-Wstrict-prototypes',
|
|
Packit |
4afa83 |
'-Wmissing-prototypes',
|
|
Packit |
4afa83 |
'-Wnested-externs',
|
|
Packit |
4afa83 |
'-Wold-style-definition',
|
|
Packit |
4afa83 |
'-Wdeclaration-after-statement',
|
|
Packit |
4afa83 |
'-Wunused',
|
|
Packit |
4afa83 |
'-Wuninitialized',
|
|
Packit |
4afa83 |
'-Wshadow',
|
|
Packit |
4afa83 |
'-Wmissing-noreturn',
|
|
Packit |
4afa83 |
'-Wmissing-format-attribute',
|
|
Packit |
4afa83 |
'-Wredundant-decls',
|
|
Packit |
4afa83 |
'-Wlogical-op',
|
|
Packit |
4afa83 |
'-Wcast-align',
|
|
Packit |
4afa83 |
'-Wno-unused-local-typedefs',
|
|
Packit |
4afa83 |
'-Werror=implicit',
|
|
Packit |
4afa83 |
'-Werror=init-self',
|
|
Packit |
4afa83 |
'-Werror=main',
|
|
Packit |
4afa83 |
'-Werror=missing-braces',
|
|
Packit |
4afa83 |
'-Werror=return-type',
|
|
Packit |
4afa83 |
'-Werror=array-bounds',
|
|
Packit |
4afa83 |
'-Werror=write-strings'
|
|
Packit |
4afa83 |
]
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
common_flags = cc.get_supported_arguments(test_cflags)
|
|
Packit |
4afa83 |
endif
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
if libgit2_glib_buildtype.contains('debug')
|
|
Packit |
4afa83 |
common_flags += [ '-DLIBGIT2_GLIB_ENABLE_DEBUG' ]
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
if libgit2_glib_buildtype.contains('optimized')
|
|
Packit |
4afa83 |
common_flags += [ '-DG_DISABLE_CAST_CHECKS' ]
|
|
Packit |
4afa83 |
endif
|
|
Packit |
4afa83 |
else
|
|
Packit |
4afa83 |
common_flags += [
|
|
Packit |
4afa83 |
'-DG_DISABLE_CAST_CHECKS',
|
|
Packit |
4afa83 |
'-DG_DISABLE_CHECKS'
|
|
Packit |
4afa83 |
]
|
|
Packit |
4afa83 |
endif
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
# Workaround for meson's bug
|
|
Packit |
4afa83 |
# https://github.com/mesonbuild/meson/pull/1896
|
|
Packit |
4afa83 |
if get_option('b_ndebug') == true
|
|
Packit |
4afa83 |
common_flags += [ '-DG_DISABLE_ASSERT' ]
|
|
Packit |
4afa83 |
endif
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
add_project_arguments(common_flags, language: 'c')
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
# Termios
|
|
Packit |
4afa83 |
have_termios = cc.has_header('termios.h')
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
extra_args= []
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
core_inc = include_directories('.')
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
# Required dependencies
|
|
Packit |
4afa83 |
git2_req = '0.25.0'
|
|
Packit |
4afa83 |
glib_req = '2.44.0'
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
glib_dep = dependency('glib-2.0', version: '>=' + glib_req)
|
|
Packit |
4afa83 |
gobject_dep = dependency('gobject-2.0', version: '>=' + glib_req)
|
|
Packit |
4afa83 |
gio_dep = dependency('gio-2.0', version: '>=' + glib_req)
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
libgit2_dep = dependency('libgit2', version: '>=' + git2_req)
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
enable_gir = get_option('introspection')
|
|
Packit |
4afa83 |
if enable_gir
|
|
Packit |
4afa83 |
# XXX: Not nice, but probably our best option
|
|
Packit |
4afa83 |
enable_gir = find_program('g-ir-scanner', required: false).found() and not meson.is_cross_build()
|
|
Packit |
4afa83 |
endif
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
enable_vapi = get_option('vapi')
|
|
Packit |
4afa83 |
if enable_vapi
|
|
Packit |
4afa83 |
assert(enable_gir, 'vapi support was requested, but introspection support is mandatory.')
|
|
Packit |
4afa83 |
assert(add_languages('vala', required: false), 'vapi support was requested, but vala not found.')
|
|
Packit Service |
c6322c |
|
|
Packit Service |
c6322c |
meson.add_install_script('meson_vapi_link.py', libgit2_glib_datadir)
|
|
Packit |
4afa83 |
endif
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
# Check for libgit2 ssh support
|
|
Packit |
4afa83 |
enable_ssh = get_option('ssh')
|
|
Packit |
4afa83 |
if enable_ssh
|
|
Packit |
4afa83 |
libgit2_ssh_src = '''
|
|
Packit |
4afa83 |
#include <git2.h>
|
|
Packit |
4afa83 |
int
|
|
Packit |
4afa83 |
main(int argc, const char *argv[])
|
|
Packit |
4afa83 |
{
|
|
Packit |
4afa83 |
git_libgit2_init ();
|
|
Packit |
4afa83 |
return ((git_libgit2_features() & GIT_FEATURE_SSH) != 0) ? 0 : 1;
|
|
Packit |
4afa83 |
}
|
|
Packit |
4afa83 |
'''
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
assert(cc.compiles(libgit2_ssh_src, name: 'libgit2 supports SSH'), 'libgit2 ssh support was requested, but not found. Use -Dssh=false to build without it.')
|
|
Packit |
4afa83 |
endif
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
# Check for python
|
|
Packit |
4afa83 |
enable_python = get_option('python')
|
|
Packit |
4afa83 |
if enable_python
|
|
Packit |
4afa83 |
python = import('python3')
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
python_req = '3.2.3'
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
dependency('pygobject-3.0', version: '>= 3.0.0')
|
|
Packit |
4afa83 |
assert(python.language_version().version_compare('>= ' + python_req), 'python support was requested, but version >= ' + python_req + ' not found.')
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
meson.add_install_script('meson_python_compile.py', libgit2_glib_libdir)
|
|
Packit |
4afa83 |
endif
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
gnome = import('gnome')
|
|
Packit |
4afa83 |
pkg = import('pkgconfig')
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
subdir('libgit2-glib')
|
|
Packit |
4afa83 |
subdir('examples')
|
|
Packit |
4afa83 |
subdir('tests')
|
|
Packit |
4afa83 |
|
|
Packit |
4afa83 |
if get_option('gtk_doc')
|
|
Packit |
4afa83 |
subdir('docs/reference')
|
|
Packit |
4afa83 |
endif
|