diff --git a/docs/reference/meson.build b/docs/reference/meson.build index 8f545e77590748a87fe087dc0339c14ba2b1fd23..ea6b0affbd74da44f46309752efe3fa53b0d4341 100644 --- a/docs/reference/meson.build +++ b/docs/reference/meson.build @@ -1,28 +1,32 @@ +glib_prefix = glib_dep.get_pkgconfig_variable('prefix') + +fixxref_args = [ + '--extra-dir=' + join_paths(glib_prefix, gnome.gtkdoc_html_dir('glib')), + '--extra-dir=' + join_paths(glib_prefix, gnome.gtkdoc_html_dir('gobject')), + '--extra-dir=' + join_paths(glib_prefix, gnome.gtkdoc_html_dir('gio')), + '--html-dir=' + join_paths(libgit2_glib_prefix, gnome.gtkdoc_html_dir(libgit2_glib_api_name)), +] + docs_conf = configuration_data() docs_conf.set('PACKAGE_VERSION', libgit2_glib_version) name = 'version.xml' -configure_file(input: name + '.in', - output: name, - configuration: docs_conf) - -glib_prefix = glib_dep.get_pkgconfig_variable('prefix') -glib_docpath = join_paths(glib_prefix, 'share', 'gtk-doc', 'html') +content_files = configure_file( + input: name + '.in', + output: name, + configuration: docs_conf, +) -gnome.gtkdoc(libgit2_glib_api_name, - main_sgml: libgit2_glib_api_name + '-docs.sgml', - src_dir: join_paths(meson.source_root(), 'libgit2-glib'), - dependencies: libgit2_glib_dep, - gobject_typesfile: libgit2_glib_api_name + '.types', - scan_args: [ - '--rebuild-types', - '--ignore-headers=' + ' '.join(private_headers), - ], - fixxref_args: [ - '--extra-dir=' + join_paths(glib_docpath, 'glib'), - '--extra-dir=' + join_paths(glib_docpath, 'gobject'), - '--extra-dir=' + join_paths(glib_docpath, 'gio'), - '--html-dir=' + join_paths(libgit2_glib_prefix, gnome.gtkdoc_html_dir(libgit2_glib_api_name)), - ], - install: true) +gnome.gtkdoc( + libgit2_glib_api_name, + main_sgml: libgit2_glib_api_name + '-docs.sgml', + src_dir: join_paths(meson.source_root(), 'libgit2-glib'), + dependencies: libgit2_glib_dep, + ignore_headers: private_headers, + gobject_typesfile: libgit2_glib_api_name + '.types', + scan_args: '--rebuild-types', + fixxref_args: fixxref_args, + content_files: content_files, + install: true, +) diff --git a/examples/meson.build b/examples/meson.build index dfe8adae47eaecc5b8b9ff52edddbfb40061807b..5cb2cbc4942976dd733bb59db96d1b3f368ec01b 100644 --- a/examples/meson.build +++ b/examples/meson.build @@ -1,14 +1,17 @@ examples = [ 'general', - 'walk' + 'walk', ] if have_termios - examples += [ 'clone' ] + examples += ['clone'] endif foreach example: examples - executable(example, example + '.c', - dependencies: libgit2_glib_dep, - include_directories: libgit2_glib_inc) + executable( + example, + example + '.c', + include_directories: top_inc, + dependencies: libgit2_glib_dep, + ) endforeach diff --git a/libgit2-glib/meson.build b/libgit2-glib/meson.build index 62a7eba905608043075d721bb19d4669ff53fe62..3a9ec685c1c8aff5647da2613a346f97fbca7a4a 100644 --- a/libgit2-glib/meson.build +++ b/libgit2-glib/meson.build @@ -1,5 +1,3 @@ -libgit2_glib_inc = include_directories('.') - headers = [ 'ggit-annotated-commit.h', 'ggit-blame.h', @@ -66,7 +64,7 @@ headers = [ 'ggit-tree.h', 'ggit-tree-builder.h', 'ggit-tree-entry.h', - 'ggit-types.h' + 'ggit-types.h', ] private_headers = [ @@ -150,6 +148,8 @@ sources = [ 'ggit-utils.c', ] +cflags = [] + if enable_ssh headers += ssh_headers @@ -163,7 +163,7 @@ if enable_ssh #include ''' - extra_args += [ '-DGIT_SSH=1' ] + cflags += ['-DGIT_SSH=1'] else private_headers += ssh_headers @@ -179,39 +179,49 @@ sources += configure_file( input: ggit_h + '.in', output: ggit_h, configuration: ggit_h_conf, - install_dir: libgit2_glib_pkgincludedir) + install_dir: libgit2_glib_pkgincludedir, +) -enum_types = gnome.mkenums('ggit-enum-types', - sources : headers, - h_template : 'ggit-enum-types.h.template', - c_template : 'ggit-enum-types.c.template', - install_header : true, - install_dir: libgit2_glib_pkgincludedir) +enum_types = 'ggit-enum-types' -install_headers(headers, subdir: join_paths(libgit2_glib_api_name, meson.project_name())) +enum_sources = gnome.mkenums( + enum_types, + sources: headers, + h_template: enum_types + '.h.template', + c_template: enum_types + '.c.template', + install_header: true, + install_dir: libgit2_glib_pkgincludedir, +) + +install_headers( + headers, + subdir: join_paths(libgit2_glib_api_name, meson.project_name()) +) platform_deps = [ gio_dep, glib_dep, gobject_dep, - libgit2_dep + libgit2_dep, ] if cc.get_id() == 'msvc' libgit2_glib_link_args = [] else - libgit2_glib_link_args = [ '-Wl,-Bsymbolic-functions' ] + libgit2_glib_link_args = ['-Wl,-Bsymbolic-functions'] endif -libgit2_glib = shared_library('git2-glib-@0@'.format(libgit2_glib_api_version), - include_directories: core_inc, - sources: sources + enum_types + private_headers, +libgit2_glib = shared_library( + 'git2-glib-' + libgit2_glib_api_version, version: libversion, soversion: soversion, - install: true, + sources: sources + enum_sources, + include_directories: top_inc, dependencies: platform_deps, - c_args: extra_args + [ '-DG_LOG_DOMAIN="@0@"'.format(libgit2_glib_ns) ], - link_args: libgit2_glib_link_args) + c_args: cflags + ['-DG_LOG_DOMAIN="@0@"'.format(libgit2_glib_ns)], + link_args: libgit2_glib_link_args, + install: true, +) pkg.generate( libraries: libgit2_glib, @@ -220,38 +230,47 @@ pkg.generate( description: 'libgit2-glib, a a glib wrapper library around the libgit2 git access library.', filebase: libgit2_glib_api_name, subdirs: libgit2_glib_api_name, - requires: ['libgit2 >= ' + git2_req, 'glib-2.0 >= ' + glib_req, 'gobject-2.0 >= ' + glib_req, 'gio-2.0 >= ' + glib_req], + requires: platform_deps, variables: 'exec_prefix=${prefix}', - extra_cflags: extra_args + extra_cflags: cflags, ) # Internal dependency, for tests and benchmarks -libgit2_glib_dep = declare_dependency(link_with: libgit2_glib, - include_directories: [ core_inc, libgit2_glib_inc ], - dependencies: platform_deps, - # Everything that uses libgit2-glib needs this built to compile - sources: enum_types[1]) +libgit2_glib_dep = declare_dependency( + # Everything that uses libgit2-glib needs this built to compile + sources: enum_sources[1], + include_directories: include_directories('.'), + dependencies: platform_deps, + link_with: libgit2_glib, +) if enable_python - install_data('Ggit.py', install_dir: join_paths(python.sysconfig_path('purelib'), 'gi', 'overrides')) + install_data( + 'Ggit.py', + install_dir: join_paths(python.sysconfig_path('purelib'), 'gi', 'overrides'), + ) endif if enable_gir - libgit2_glib_gir = gnome.generate_gir(libgit2_glib, - sources: headers + sources + enum_types, - namespace: libgit2_glib_ns, - nsversion: libgit2_glib_api_version, - identifier_prefix: libgit2_glib_ns, - symbol_prefix: libgit2_glib_ns.to_lower(), - export_packages: libgit2_glib_api_name, - includes: [ 'GObject-2.0', 'GLib-2.0', 'Gio-2.0' ], - header: join_paths(meson.project_name(), ggit_h), - install: true) + libgit2_glib_gir = gnome.generate_gir( + libgit2_glib, + sources: headers + sources + enum_sources, + namespace: libgit2_glib_ns, + nsversion: libgit2_glib_api_version, + identifier_prefix: libgit2_glib_ns, + symbol_prefix: libgit2_glib_ns.to_lower(), + export_packages: libgit2_glib_api_name, + includes: ['GObject-2.0', 'GLib-2.0', 'Gio-2.0'], + header: join_paths(meson.project_name(), ggit_h), + install: true, + ) if enable_vapi - gnome.generate_vapi(libgit2_glib_api_name, - sources: libgit2_glib_gir[0], - packages: 'gio-2.0', - install: true) + gnome.generate_vapi( + libgit2_glib_api_name, + sources: libgit2_glib_gir[0], + packages: 'gio-2.0', + install: true, + ) endif endif diff --git a/meson.build b/meson.build index bdcc0b3bcd9ae8078483d0ded5b7a42cc2c4bedf..f7bb6d1bf6e2a6d9c734092a3d4fe89bf8809b0a 100644 --- a/meson.build +++ b/meson.build @@ -1,10 +1,10 @@ -project('libgit2-glib', 'c', - version: '0.27.7', - default_options: [ - 'buildtype=debugoptimized' - ], - license: 'LGPL2+', - meson_version: '>= 0.48.0') +project( + 'libgit2-glib', 'c', + version: '0.27.7', + default_options: 'buildtype=debugoptimized', + license: 'LGPL2+', + meson_version: '>= 0.48.0', +) libgit2_glib_version = meson.project_version() version_array = libgit2_glib_version.split('.') @@ -37,11 +37,15 @@ revision = libgit2_glib_interface_age libversion = '@0@.@1@.@2@'.format(soversion, current, revision) libgit2_glib_prefix = get_option('prefix') -libgit2_glib_libdir = join_paths(libgit2_glib_prefix, get_option('libdir')) -libgit2_glib_includedir = join_paths(libgit2_glib_prefix, get_option('includedir')) -libgit2_glib_datadir = join_paths(libgit2_glib_prefix, get_option('datadir')) +libgit2_glib_libdir = get_option('libdir') +libgit2_glib_datadir = get_option('datadir') -libgit2_glib_pkgincludedir = join_paths(libgit2_glib_includedir, libgit2_glib_api_name, meson.project_name()) +libgit2_glib_pkgincludedir = join_paths(get_option('includedir'), libgit2_glib_api_name, meson.project_name()) + +gnome = import('gnome') +pkg = import('pkgconfig') + +top_inc = include_directories('.') cc = meson.get_compiler('c') @@ -51,7 +55,7 @@ if cc.get_id() == 'msvc' # in GLib, based on _Win32_Programming_ by Rector and Newcomer common_flags = ['-FImsvc_recommended_pragmas.h'] else - test_cflags = [ + common_flags = cc.get_supported_arguments([ '-ffast-math', '-fstrict-aliasing', '-Wpointer-arith', @@ -77,29 +81,27 @@ else '-Werror=missing-braces', '-Werror=return-type', '-Werror=array-bounds', - '-Werror=write-strings' - ] - - common_flags = cc.get_supported_arguments(test_cflags) + '-Werror=write-strings', + ]) endif if libgit2_glib_buildtype.contains('debug') - common_flags += [ '-DLIBGIT2_GLIB_ENABLE_DEBUG' ] + common_flags += ['-DLIBGIT2_GLIB_ENABLE_DEBUG'] if libgit2_glib_buildtype.contains('optimized') - common_flags += [ '-DG_DISABLE_CAST_CHECKS' ] + common_flags += ['-DG_DISABLE_CAST_CHECKS'] endif else common_flags += [ '-DG_DISABLE_CAST_CHECKS', - '-DG_DISABLE_CHECKS' + '-DG_DISABLE_CHECKS', ] endif # Workaround for meson's bug # https://github.com/mesonbuild/meson/pull/1896 -if get_option('b_ndebug') == true - common_flags += [ '-DG_DISABLE_ASSERT' ] +if get_option('b_ndebug') == 'true' + common_flags += ['-DG_DISABLE_ASSERT'] endif add_project_arguments(common_flags, language: 'c') @@ -107,19 +109,14 @@ add_project_arguments(common_flags, language: 'c') # Termios have_termios = cc.has_header('termios.h') -extra_args= [] - -core_inc = include_directories('.') - # Required dependencies -git2_req = '0.25.0' glib_req = '2.44.0' glib_dep = dependency('glib-2.0', version: '>=' + glib_req) gobject_dep = dependency('gobject-2.0', version: '>=' + glib_req) gio_dep = dependency('gio-2.0', version: '>=' + glib_req) -libgit2_dep = dependency('libgit2', version: '>=' + git2_req) +libgit2_dep = dependency('libgit2', version: '>= 0.25.0') enable_gir = get_option('introspection') if enable_gir @@ -164,9 +161,6 @@ if enable_python meson.add_install_script('meson_python_compile.py', libgit2_glib_libdir) endif -gnome = import('gnome') -pkg = import('pkgconfig') - subdir('libgit2-glib') subdir('examples') subdir('tests') diff --git a/meson_python_compile.py b/meson_python_compile.py index 8aff82ce73bcb200bc3632421606403fa00dfbc5..1fa54ff2454156589ba81c1bf2b257115473c121 100644 --- a/meson_python_compile.py +++ b/meson_python_compile.py @@ -5,7 +5,9 @@ import subprocess import sys if not os.environ.get('DESTDIR'): - libdir = sys.argv[1] + prefix = os.environ['MESON_INSTALL_PREFIX'] + + libdir = os.path.join(prefix, sys.argv[1]) print('Byte-compiling python modules...') subprocess.call(['python', '-m', 'compileall', '-f', '-q', libdir]) diff --git a/meson_vapi_link.py b/meson_vapi_link.py index 435cd95878660325a9c6c0cd31ab4cd9c5deee41..eb64fd6294be7489f0aaacf8e62c8f96b11f1aa6 100644 --- a/meson_vapi_link.py +++ b/meson_vapi_link.py @@ -4,10 +4,7 @@ import os import subprocess import sys -vapidir = os.path.join(sys.argv[1], 'vala', 'vapi') - -destdir = os.environ.get('DESTDIR', '') -dest_vapidir = os.path.normpath(destdir + os.sep + vapidir) +vapidir = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], sys.argv[1], 'vala', 'vapi') # FIXME: meson will not track the creation of these files # https://github.com/mesonbuild/meson/blob/master/mesonbuild/scripts/uninstall.py#L39 @@ -15,7 +12,7 @@ old = 'ggit-1.0' new = 'libgit2-glib-1.0' wd = os.getcwd() -os.chdir(dest_vapidir) +os.chdir(vapidir) for ext in ['vapi', 'deps']: src = os.path.join('{}.{}'.format(new, ext)) diff --git a/tests/meson.build b/tests/meson.build index 5c0f22ac05cb85486cfde36952ed126f8c723eda..a318c90c86f26b20030fd0869928acc819355741 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -1,10 +1,14 @@ -unit_tests = [ - 'repository' -] +unit_test = 'repository' -foreach unit: unit_tests - exe = executable(unit, unit + '.c', - dependencies: libgit2_glib_dep, - include_directories: libgit2_glib_inc) - test(unit, exe, args: [ '--tap', '-k' ]) -endforeach +exe = executable( + unit_test, + unit_test + '.c', + include_directories: top_inc, + dependencies: libgit2_glib_dep, +) + +test( + unit_test, + exe, + args: ['--tap', '-k'], +)