mirror of
https://gitlab.gnome.org/GNOME/gitg
synced 2024-11-04 23:34:39 +00:00
218 lines
6.2 KiB
Meson
218 lines
6.2 KiB
Meson
project(
|
|
'gitg', ['c', 'vala'],
|
|
version: '45.alpha',
|
|
license: 'GPL2+',
|
|
default_options: 'buildtype=debugoptimized',
|
|
meson_version: '>= 0.50.0',
|
|
)
|
|
application_id = 'org.gnome.gitg'
|
|
gitg_name = meson.project_name()
|
|
|
|
if get_option('profile') == 'development'
|
|
application_id = 'org.gnome.gitgDevel'
|
|
gitg_name = meson.project_name() + 'Devel'
|
|
endif
|
|
|
|
gitg_version = meson.project_version()
|
|
version_array = gitg_version.split('.')
|
|
|
|
gitg_api_version = '1.0'
|
|
|
|
windows = import('windows')
|
|
host_system = host_machine.system()
|
|
|
|
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-1.0')
|
|
|
|
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()
|
|
|
|
libgitg_dir = join_paths(source_root, 'libgitg')
|
|
po_dir = join_paths(source_root, 'po')
|
|
vapi_dir = join_paths(source_root, 'vapi')
|
|
|
|
top_inc = include_directories('.')
|
|
|
|
config_h = configuration_data()
|
|
|
|
# defines
|
|
set_defines = [
|
|
# package
|
|
['PACKAGE_NAME', gitg_name],
|
|
['PACKAGE_URL', 'https://wiki.gnome.org/Apps/Gitg'],
|
|
['VERSION', gitg_version],
|
|
['APPLICATION_ID', application_id],
|
|
['PROFILE', get_option('profile')],
|
|
# 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')
|
|
add_project_arguments(['-DG_LOG_DOMAIN="gitg"'], 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.68'
|
|
|
|
hdy_dep = dependency('libhandy-1', version: '>= 1.5.0')
|
|
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)
|
|
gobject_introspection_dep = dependency('gobject-introspection-1.0', version: '>= 0.10.1')
|
|
gsettings_desktop_schemas_dep = dependency('gsettings-desktop-schemas')
|
|
gtk_dep = dependency('gtk+-3.0', version: '>= 3.20.0')
|
|
gspell_dep = dependency('gspell-1', version: '>= 1.8.1')
|
|
gtksourceview_dep = dependency('gtksourceview-4', version: '>= 4.0.3')
|
|
libgit2_glib_dep = dependency('libgit2-glib-1.0', version: ['>= 1.2.0'])
|
|
libpeas_dep = dependency('libpeas-1.0')
|
|
libsecret_dep = dependency('libsecret-1')
|
|
libxml_dep = dependency('libxml-2.0', version: '>= 2.9.0')
|
|
libdazzle_dep = dependency('libdazzle-1.0')
|
|
json_glib_dependency = dependency('json-glib-1.0')
|
|
gpgme_dependency = dependency('gpgme')
|
|
|
|
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')
|
|
|
|
module_suffix = []
|
|
# Keep the autotools convention for shared module suffix because GModule
|
|
# depends on it: https://gitlab.gnome.org/GNOME/glib/issues/520
|
|
if ['darwin', 'ios'].contains(host_machine.system())
|
|
module_suffix = 'so'
|
|
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_name,
|
|
gitg_datadir
|
|
)
|
|
|
|
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'
|
|
output += ' Profile: ' + get_option('profile') + '\n'
|
|
message(output)
|