gitg/meson.build
Iñigo Martínez d7c544d97b meson: Move meson declarations
Used meson modules and directory definitions were placed at the end
of the root meson build file. However, this is recommended to be
placed at the start of the file, so they are usable early.

Following meson portng guidelines[0], `source_root()` and
`build_root()` functions have also been replaced.

[0] https://wiki.gnome.org/Initiatives/GnomeGoals/MesonPorting
2018-10-10 23:29:26 +02:00

208 lines
5.7 KiB
Meson

project(
'gitg', ['c', 'vala'],
version: '3.30.0',
license: 'GPL2+',
default_options: 'buildtype=debugoptimized',
meson_version: '>= 0.46.0',
)
gitg_name = meson.project_name()
gitg_version = meson.project_version()
version_array = gitg_version.split('.')
gitg_major_version = version_array[0].to_int()
gitg_minor_version = version_array[1].to_int()
gitg_micro_version = version_array[2].to_int()
gitg_api_version = '1.0'
gitg_gir_version = '1.0'
gitg_gettext = gitg_name
gitg_prefix = get_option('prefix')
gitg_bindir = join_paths(gitg_prefix, get_option('bindir'))
gitg_datadir = join_paths(gitg_prefix, get_option('datadir'))
gitg_includedir = join_paths(gitg_prefix, get_option('includedir'))
gitg_libdir = join_paths(gitg_prefix, get_option('libdir'))
gitg_localedir = join_paths(gitg_prefix, get_option('localedir'))
gitg_pkgdatadir = join_paths(gitg_datadir, gitg_name)
gitg_pkglibdir = join_paths(gitg_libdir, gitg_name)
gitg_girepositorydir = join_paths(gitg_libdir, 'girepository-' + gitg_gir_version)
soversion = 0
current = 0
revision = 0
libversion = '@0@.@1@.@2@'.format(soversion, current, revision)
gitg_debug = get_option('buildtype').contains('debug')
cc = meson.get_compiler('c')
valac = meson.get_compiler('vala')
gnome = import('gnome')
i18n = import('i18n')
pkg = import('pkgconfig')
source_root = meson.current_source_dir()
build_root = meson.current_build_dir()
po_dir = join_paths(source_root, 'po')
vapi_dir = join_paths(source_root, 'vapi')
intltool_merge = find_program('intltool-merge')
intltool_cache = join_paths(po_dir, '.intltool-merge-cache')
intltool_desktop_cmd = [intltool_merge, '-d', '-u', '-c', intltool_cache, po_dir, '@INPUT@', '@OUTPUT@']
intltool_xml_cmd = [intltool_merge, '-x', '-u', '-c', intltool_cache, po_dir, '@INPUT@', '@OUTPUT@']
top_inc = include_directories('.')
config_h = configuration_data()
# defines
set_defines = [
# package
['PACKAGE_NAME', gitg_name],
['PACKAGE_URL', 'https://wiki.gnome.org/Apps/Gitg'],
['PACKAGE_VERSION', gitg_version],
['VERSION', gitg_version],
# i18n
['GETTEXT_PACKAGE', gitg_gettext],
# gitg
['GITG_DATADIR', gitg_pkgdatadir],
['GITG_LIBDIR', gitg_pkglibdir],
['GITG_LOCALEDIR', gitg_localedir],
]
foreach define: set_defines
config_h.set_quoted(define[0], define[1])
endforeach
# c compiler flags
common_flags = ['-DHAVE_CONFIG_H']
warn_flags = []
if get_option('deprecations')
warn_flags += [
'-DG_DISABLE_DEPRECATED',
'-DGDK_DISABLE_DEPRECATED',
'-DGTK_DISABLE_DEPRECATED',
'-DGDK_PIXBUF_DISABLE_DEPRECATED',
'-DGNOME_DISABLE_DEPRECATED',
'-DGSEAL_ENABLE',
]
endif
if gitg_debug
warn_flags += cc.get_supported_arguments([
'-Werror=format=2',
'-Werror=implicit-function-declaration',
'-Werror=init-self',
'-Werror=missing-include-dirs',
'-Werror=missing-prototypes',
'-Werror=pointer-arith',
'-Werror=return-type',
'-Wmissing-declarations',
'-Wnested-externs',
'-Wstrict-prototypes',
'-Wuninitialized',
])
endif
add_project_arguments(common_flags, language: 'c')
# vala compiler flags
add_project_arguments('--vapidir=' + vapi_dir, language: 'vala')
symbol_map = join_paths(source_root, 'libgitg.map')
common_ldflags = cc.get_supported_link_arguments('-Wl,--version-script,@0@'.format(symbol_map))
glib_req_version = '>= 2.38'
gee_dep = dependency('gee-0.8')
gio_dep = dependency('gio-2.0', version: glib_req_version)
glib_dep = dependency('glib-2.0', version: glib_req_version)
gtk_dep = dependency('gtk+-3.0', version: '>= 3.20.0')
gtksourceview_dep = dependency('gtksourceview-3.0', version: '>= 3.10')
libgit2_glib_dep = dependency('libgit2-glib-1.0', version: ['>= 0.25.0', '< 0.27.0'])
libpeas_dep = dependency('libpeas-1.0')
libsoup_dep = dependency('libsoup-2.4')
config_dep = valac.find_library('config', dirs: vapi_dir)
gitg_platform_support_dep = valac.find_library('gitg-platform-support', dirs: vapi_dir)
# ggit threads
ggit_threads = '''
#include <libgit2-glib/ggit.h>
int
main(int argc, const char *argv[])
{
ggit_init ();
return ((ggit_get_features () & GGIT_FEATURE_THREADS) != 0) ? 0 : 1;
};
'''
res = cc.run(ggit_threads, dependencies: libgit2_glib_dep)
assert(
res.compiled() and (res.returncode() == 0),
'please recompile a threadsafe version of libgit2 (-DTHREADSAFE:BOOL=ON)',
)
# gtk required version is set to 3.20, so this will be always true
gtk_shortcuts_window = gtk_dep.version().version_compare('3.19')
m_dep = cc.find_library('m', required: false)
gdk_dep = dependency('gdk-3.0')
gdk_targets = gdk_dep.get_pkgconfig_variable('targets')
if gdk_targets.contains('quartz')
platform_name = 'osx'
elif gdk_targets.contains('x11')
platform_name = 'unix'
elif gdk_targets.contains('win32')
platform_name = 'win32'
else
error('Unknown Gdk targets: ' + gdk_targets)
endif
config_h.set_quoted('PLATFORM_NAME', platform_name)
g_ir_compiler = find_program('g-ir-compiler')
enable_docs = get_option('docs')
if enable_docs
docs_dir = join_paths(source_root, 'docs')
valadoc = find_program('valadoc')
endif
subdir('po')
subdir('contrib/xml')
subdir('contrib/ide')
subdir('libgitg')
subdir('libgitg-ext')
subdir('plugins')
subdir('gitg')
subdir('data')
subdir('tests')
configure_file(
output: 'config.h',
configuration: config_h,
)
meson.add_install_script(
'meson_post_install.py',
gitg_datadir,
(enable_python ? 'python' : ''),
gitg_libdir,
)
output = '\nConfiguration:\n\n'
output += ' Source code location: ' + source_root + '\n'
output += ' Compiler: ' + cc.get_id() + '\n'
output += ' Glade catalog: ' + enable_glade_catalog.to_string() + '\n'
output += ' Debug enabled: ' + gitg_debug.to_string() + '\n'
output += ' Python support: ' + enable_python.to_string() + '\n'
message(output)