mirror of
https://gitlab.gnome.org/GNOME/glade.git
synced 2025-11-15 00:05:04 -05:00
242 lines
7.7 KiB
Meson
242 lines
7.7 KiB
Meson
# Glade uses a Major.Minor.Micro versioning system
|
|
#
|
|
# With odd minor numbers representing development releases and even numbers
|
|
# stable releases and micro numbers bug bugfixes.
|
|
#
|
|
# Since master is built as a nightly flatpak, we bump the version to development
|
|
# inmediatelly after making a stable release, that way people using the nigthly
|
|
# version will always know they are on a development release.
|
|
project(
|
|
'glade', 'c',
|
|
version: '3.40.0',
|
|
license: 'GPL2',
|
|
default_options: 'buildtype=debugoptimized',
|
|
meson_version: '>= 0.57.0',
|
|
)
|
|
|
|
glade_name = meson.project_name()
|
|
|
|
glade_version = meson.project_version()
|
|
version_array = glade_version.split('.')
|
|
glade_major_version = version_array[0].to_int()
|
|
glade_minor_version = version_array[1].to_int()
|
|
glade_micro_version = version_array[2].to_int()
|
|
|
|
glade_prefix = get_option('prefix')
|
|
glade_bindir = get_option('bindir')
|
|
glade_datadir = get_option('datadir')
|
|
glade_libdir = get_option('libdir')
|
|
glade_localedir = get_option('localedir')
|
|
glade_mandir = get_option('mandir')
|
|
|
|
glade_catalogdir = glade_name / 'catalogs'
|
|
glade_moduledir = glade_name / 'modules'
|
|
glade_pixmapdir = glade_name / 'pixmaps'
|
|
|
|
gladeui_name = 'gladeui'
|
|
|
|
gladeui_version = '2.0'
|
|
version_array = gladeui_version.split('.')
|
|
gladeui_major_version = version_array[0].to_int()
|
|
gladeui_minor_version = version_array[1].to_int()
|
|
|
|
gladeui_libname = '@0@-@1@'.format(gladeui_name, gladeui_version)
|
|
|
|
# If the source code has changed at all, increment gladeui_revision
|
|
# If any interfaces have been added, removed, or changed, increment gladeui_current, and set gladeui_revision to 0.
|
|
# If any interfaces have been added since the last public release, then increment gladeui_age.
|
|
# If any interfaces have been removed since the last public release, then set gladeui_age to 0.
|
|
# Reference: http://www.gnu.org/software/libtool/manual/libtool.html#Versioning
|
|
|
|
gladeui_revision = 0
|
|
gladeui_current = 14
|
|
gladeui_age = 1
|
|
gladeui_current_minus_age = gladeui_current - gladeui_age
|
|
gladeui_libversion = '@0@.@1@.@2@'.format(gladeui_current_minus_age, gladeui_age, gladeui_revision)
|
|
|
|
glade_system = host_machine.system()
|
|
glade_debug = get_option('buildtype').contains('debug')
|
|
if glade_debug
|
|
add_project_arguments('-DGLADE_ENABLE_DEBUG', language : 'c')
|
|
endif
|
|
|
|
glade_unstable = glade_minor_version.is_odd()
|
|
|
|
gnome = import('gnome')
|
|
i18n = import('i18n')
|
|
pkg = import('pkgconfig')
|
|
|
|
# NOTE: On windows we only target MSYS2/mingw
|
|
windows = import('windows')
|
|
|
|
source_root = meson.current_source_dir()
|
|
build_root = meson.current_build_dir()
|
|
|
|
its_dir = source_root / 'data/gettext'
|
|
po_dir = source_root / 'po'
|
|
|
|
top_inc = include_directories('.')
|
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
config_h = configuration_data()
|
|
|
|
# package defines
|
|
set_defines = [
|
|
# package
|
|
['PACKAGE_NAME', meson.project_name()],
|
|
['PACKAGE_STRING', '@0@ @1@'.format(glade_name, glade_version)],
|
|
['PACKAGE_VERSION', glade_version],
|
|
['VERSION', glade_version],
|
|
# i18n
|
|
['GETTEXT_PACKAGE', glade_name],
|
|
]
|
|
|
|
foreach define: set_defines
|
|
config_h.set_quoted(define[0], define[1])
|
|
endforeach
|
|
|
|
config_h.set('GLADE_MAJOR_VERSION', glade_major_version)
|
|
config_h.set('GLADE_MINOR_VERSION', glade_minor_version)
|
|
config_h.set('GLADE_MICRO_VERSION', glade_micro_version)
|
|
config_h.set('GDK_VERSION_MIN_REQUIRED', '(G_ENCODE_VERSION (3, 0))')
|
|
config_h.set('ENABLE_NLS', true)
|
|
|
|
# compiler flags
|
|
common_flags = ['-DHAVE_CONFIG_H']
|
|
|
|
if get_option('buildtype').contains('debug')
|
|
common_flags += cc.get_supported_arguments('-Wnested-externs')
|
|
endif
|
|
|
|
add_project_arguments(common_flags, language: 'c')
|
|
|
|
# Check required libraries
|
|
glib_dep = dependency('glib-2.0', version: '>= 2.64.0')
|
|
gio_dep = dependency('gio-2.0', version: '>= 2.64.0')
|
|
gmodule_dep = dependency('gmodule-2.0')
|
|
gmodule_export_dep = dependency('gmodule-export-2.0')
|
|
gtk_dep = dependency('gtk+-3.0', version: '>= 3.24.0')
|
|
libxml_dep = dependency('libxml-2.0', version: '>= 2.4.0')
|
|
|
|
m_dep = cc.find_library('m')
|
|
|
|
# Check for the unix print widgets in gtk+
|
|
have_gtk_unix_print = cc.has_function('gtk_print_unix_dialog_new', dependencies: gtk_dep)
|
|
|
|
# Check for _gtk_widget_class_template_unset_only_for_glade() in gtk+
|
|
config_h.set10('HAVE_GTK_TEMPLATE_UNSET', cc.has_function('_gtk_widget_class_template_unset_only_for_glade', dependencies: gtk_dep))
|
|
|
|
# va_copy.
|
|
va_copy_src = '''
|
|
#include <stdarg.h>
|
|
int main() {
|
|
va_list ap1, ap2;
|
|
@0@(ap1, ap2);
|
|
};
|
|
'''
|
|
|
|
if not cc.links(va_copy_src.format('va_copy'), name: 'how to copy va_list')
|
|
if cc.links(va_copy_src.format('__va_copy'))
|
|
config_h.set('va_copy', '__va_copy')
|
|
else
|
|
config_h.set('va_copy(dest,src)', 'memcpy(&dest,&src,sizeof(va_list))')
|
|
endif
|
|
endif
|
|
|
|
# GJS support
|
|
gjs_dep = dependency('gjs-1.0', version: '>= 1.64.0', required: get_option('gjs'))
|
|
have_gjs = gjs_dep.found()
|
|
|
|
# Python for optional python dev libs
|
|
pygobject_version = '3.8.0'
|
|
pygobject_dep = dependency('pygobject-3.0', version: '>= ' + pygobject_version, required: get_option('python'))
|
|
have_python = pygobject_dep.found()
|
|
if have_python
|
|
python_dep = import('python').find_installation().dependency(embed: true)
|
|
|
|
version_array = pygobject_version.split('.')
|
|
config_h.set('PYGOBJECT_REQUIRED_MAJOR', version_array[0].to_int())
|
|
config_h.set('PYGOBJECT_REQUIRED_MINOR', version_array[1].to_int())
|
|
config_h.set('PYGOBJECT_REQUIRED_MICRO', version_array[2].to_int())
|
|
endif
|
|
|
|
# WebKit2GTK support
|
|
webkit2gtk_dep = dependency('webkit2gtk-4.0', version: '>= 2.28.0', required: get_option('webkit2gtk'))
|
|
have_webkit2gtk = webkit2gtk_dep.found()
|
|
|
|
# Check for GDK Quartz and MacOSX integration package
|
|
enable_mac_integration = dependency('gdk-3.0').get_pkgconfig_variable('targets').contains('quartz')
|
|
if enable_mac_integration
|
|
|
|
if get_option('mac_bundle')
|
|
gtk_mac_integration_gtk3_dep = dependency('gtk-mac-integration-gtk3')
|
|
gtk_mac_bundle_flags = '-DMAC_BUNDLE'
|
|
endif
|
|
endif
|
|
|
|
# Check for osx
|
|
config_h.set('PLATFORM_OSX', glade_system == 'darwin')
|
|
|
|
if glade_system == 'windows'
|
|
rc_conf = configuration_data()
|
|
rc_conf.set('GLADE_MAJOR_VERSION', glade_major_version)
|
|
rc_conf.set('GLADE_MINOR_VERSION', glade_minor_version)
|
|
rc_conf.set('GLADE_MICRO_VERSION', glade_micro_version)
|
|
rc_conf.set('GLADE_CURRENT_MINUS_AGE', gladeui_current_minus_age)
|
|
rc_conf.set('SOURCE_ROOT', source_root)
|
|
endif
|
|
|
|
subdir('po')
|
|
subdir('data')
|
|
subdir('gladeui')
|
|
subdir('src')
|
|
subdir('plugins')
|
|
subdir('tests')
|
|
subdir('help')
|
|
|
|
enable_gtk_doc = get_option('gtk_doc')
|
|
if enable_gtk_doc
|
|
subdir('doc')
|
|
endif
|
|
|
|
enable_man = get_option('man')
|
|
if enable_man
|
|
subdir('man')
|
|
endif
|
|
|
|
configure_file(
|
|
output: 'config.h',
|
|
configuration: config_h,
|
|
)
|
|
|
|
gnome.post_install(
|
|
gtk_update_icon_cache: true,
|
|
)
|
|
|
|
tls_backend_support_src = '''
|
|
#include <stdio.h>
|
|
#include <gio/gio.h>
|
|
int main(int argc, char **argv)
|
|
{
|
|
printf ("%s\n", g_tls_backend_supports_tls (g_tls_backend_get_default ()) ? "true" : "false");
|
|
return 0;
|
|
}
|
|
'''
|
|
tls_backend_support = cc.run(tls_backend_support_src, dependencies: gio_dep).stdout()
|
|
|
|
output = '\nConfiguration:\n\n'
|
|
output += '\tCompiler: ' + cc.get_id() + '\n'
|
|
output += '\tSource code location: ' + source_root + '\n'
|
|
output += '\tDebug Enabled: ' + glade_debug.to_string() + '\n'
|
|
output += '\tGTK+ UNIX Print Widgets: ' + have_gtk_unix_print.to_string() + '\n'
|
|
output += '\tGJS Widgets support: ' + have_gjs.to_string() + '\n'
|
|
output += '\tPYTHON Widgets support: ' + have_python.to_string() + '\n'
|
|
output += '\tGladeui Catalog: ' + enable_gladeui.to_string() + '\n'
|
|
output += '\tWebKit2GTK+ Catalog: ' + have_webkit2gtk.to_string() + '\n'
|
|
output += '\tIntrospection Data: ' + enable_introspection.to_string() + '\n\n'
|
|
output += '\tBuild Reference Manual: ' + enable_gtk_doc.to_string() + '\n'
|
|
output += '\tBuild Manual Pages: ' + enable_man.to_string() + '\n'
|
|
output += '\tTLS backend support: ' + tls_backend_support
|
|
message(output)
|