summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
authorWu Xiaotian <[email protected]>2020-04-05 22:02:48 +0800
committerraveit65 <[email protected]>2020-08-15 17:28:55 +0200
commitbc13d9f3af1d5114e47b75633c4fd5578214b460 (patch)
treec5641c063f491a00e98d17bd854cbd4c09c78581 /meson.build
parent2bb203914be10384b168282cb0ce592086fc99c8 (diff)
downloadmate-terminal-bc13d9f3af1d5114e47b75633c4fd5578214b460.tar.bz2
mate-terminal-bc13d9f3af1d5114e47b75633c4fd5578214b460.tar.xz
add meson build system
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build255
1 files changed, 255 insertions, 0 deletions
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..d734ab7
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,255 @@
+project(
+ 'mate-terminal', 'c',
+ version: '1.25.0',
+ meson_version: '>=0.47.0',
+ license: 'GPL2',
+ default_options : [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11'],
+)
+
+package_name = meson.project_name()
+package_version = meson.project_version()
+
+# Versionning
+version_arr = package_version.split('.')
+version_major = version_arr[0].to_int()
+version_minor = version_arr[1].to_int()
+version_micro = version_arr[2].to_int()
+
+package_string = '@0@ @[email protected]'.format(package_name, package_version)
+
+config_h = configuration_data()
+config_h.set_quoted('PACKAGE', package_name, description: 'Name of package')
+config_h.set_quoted('PACKAGE_NAME', package_name, description: 'Define to the full name of this package.')
+config_h.set_quoted('PACKAGE_STRING', package_string, description: 'Define to the full name and version of this package.')
+config_h.set_quoted('PACKAGE_VERSION', package_version, description: 'Define to the version of this package.')
+config_h.set_quoted('PACKAGE_URL', 'https://mate-desktop.org', description: 'Define to the home page for this package.')
+config_h.set_quoted('GETTEXT_PACKAGE', package_name, description: 'Gettext package')
+config_h.set_quoted('VERSION', package_version, description: 'Name of package')
+
+# Compiler & Project arguments
+add_project_arguments([
+ '-DHAVE_CONFIG_H',
+ '-I' + meson.build_root(),
+ ], language: 'c')
+
+# get suported warning flags
+test_args = [
+ #'-fstack-protector-strong',
+ #'-Waggregate-return',
+ #'-Warray-bounds',
+ '-Wcast-align',
+ '-Wchar-subscripts',
+ #'-Wclobbered',
+ #'-Wdeclaration-after-statement',
+ #'-Wempty-body',
+ #'-Wextra',
+ #'-Wformat=2',
+ #'-Wformat-nonliteral',
+ #'-Wformat-security',
+ #'-Werror=format-security',
+ #'-Werror=format=2',
+ #'-Wformat-signedness',
+ #'-Wignored-qualifiers',
+ #'-Wimplicit-function-declaration',
+ #'-Winit-self',
+ #'-Winline',
+ '-Wmissing-declarations',
+ #'-Wmissing-format-attribute',
+ #'-Wmissing-include-dirs',
+ #'-Wmissing-noreturn',
+ #'-Wmissing-parameter-type',
+ '-Wmissing-prototypes',
+ '-Wnested-externs',
+ #'-Wno-discarded-qualifiers',
+ #'-Wno-missing-field-initializers',
+ #'-Wno-strict-aliasing',
+ #'-Wno-suggest-attribute=format',
+ #'-Wno-unused-parameter',
+ #'-Wold-style-definition',
+ #'-Woverride-init',
+ #'-Wpacked',
+ '-Wpointer-arith',
+ #'-Wredundant-decls',
+ #'-Wreturn-type',
+ '-Wshadow',
+ '-Wsign-compare',
+ #'-Wstrict-aliasing',
+ #'-Wstrict-prototypes',
+ #'-Wswitch-default',
+ #'-Wtype-limits',
+ #'-Wundef',
+ #'-Wuninitialized',
+ #'-Wunused-but-set-variable',
+ #'-Wwrite-strings'
+ #'-Wall',
+ #'-ansi',
+ ]
+
+cc = meson.get_compiler('c')
+
+foreach arg: test_args
+ if cc.has_multi_arguments(arg)
+ add_project_arguments(arg, language : 'c')
+ endif
+endforeach
+
+# byte order
+if build_machine.endian() == 'big'
+ config_h.set('WORDS_BIGENDIAN', 1)
+endif
+
+gnome = import('gnome')
+i18n = import('i18n')
+
+# Paths
+rootdir = include_directories('.')
+
+srcdir = meson.current_source_dir()
+builddir = meson.current_build_dir()
+
+prefix = get_option('prefix')
+
+buildtype = get_option('buildtype')
+
+bindir = join_paths(prefix, get_option('bindir'))
+libdir = join_paths(prefix, get_option('libdir'))
+datadir = join_paths(prefix, get_option('datadir'))
+pkgdatadir = join_paths(datadir, package_name)
+
+# Dependencies
+glib_req = '>= 2.50.0'
+gio_req = '>= 2.50.0'
+gtk_req = '>= 3.22.0'
+vte_req = '>= 0.48'
+dconf_req = '>= 0.13.4'
+ice_req = '>= 1.0.0'
+sm_req = '>= 1.0.0'
+
+glib_dep = dependency('glib-2.0', version: glib_req)
+gtk_dep = dependency('gtk+-3.0', version: gtk_req)
+gio_dep = dependency('gio-2.0', version: gio_req)
+vte_dep = dependency('vte-2.91', version: vte_req)
+dconf_dep = dependency('dconf', version: dconf_req)
+x11_dep = dependency('x11')
+sm_dep = dependency('sm', version: sm_req, required: false)
+
+term_deps = [
+ vte_dep,
+ glib_dep,
+ gio_dep,
+ gtk_dep,
+ dconf_dep,
+ x11_dep,
+]
+
+build_skey = false
+if get_option('skey')
+ build_skey = true
+ config_h.set('ENABLE_SKEY', 1, description: 'Define if s/key support is enabled')
+endif
+
+build_sm = false
+ice_dep = dependency('ice', version: ice_req, required: false)
+if get_option('sm') and sm_dep.found() and ice_dep.found()
+ build_sm = true
+ config_h.set('HAVE_SMCLIENT', 1)
+ mate_submodules_dep = dependency('mate-submodules', version: '1.24.0',
+ fallback: ['mate-submodules', 'mate_submodules_dep'])
+ term_deps += [mate_submodules_dep]
+endif
+
+configure_file(
+ output: 'config.h',
+ configuration: config_h
+)
+
+subdir('help')
+subdir('src')
+subdir('po')
+
+desktop_in = configuration_data()
+desktop_in.set('VERSION', meson.project_version())
+
+desktop_file_configured = configure_file(
+ input: 'mate-terminal.desktop.in.in',
+ output: 'mate-terminal.desktop.in',
+ configuration: desktop_in,
+)
+
+desktop_file = i18n.merge_file(
+ 'desktop-file',
+ input: desktop_file_configured,
+ output: 'mate-terminal.desktop',
+ type: 'desktop',
+ po_dir: join_paths(srcdir, 'po'),
+ install: true,
+ install_dir: join_paths(
+ datadir,
+ 'applications',
+ )
+)
+
+desktop_file_validate = find_program('desktop-file-validate', required: false)
+if desktop_file_validate.found()
+ test(
+ 'validate-desktop',
+ desktop_file_validate,
+ args: [
+ desktop_file.full_path(),
+ ]
+ )
+endif
+
+install_man('mate-terminal.1')
+
+appdata_file = i18n.merge_file(
+ 'appdata-file',
+ input: 'mate-terminal.appdata.xml.in',
+ output: 'mate-terminal.appdata.xml',
+ type: 'xml',
+ po_dir: join_paths(srcdir, 'po'),
+ install: true,
+ install_dir: join_paths(
+ datadir,
+ 'metainfo',
+ )
+)
+
+appstream_util = find_program('appstream-util', required: false)
+if appstream_util.found()
+ test(
+ 'validate-appdata',
+ appstream_util,
+ args: [
+ 'validate-relax',
+ '--nonet',
+ appdata_file.full_path()
+ ]
+ )
+endif
+
+install_data(
+ 'mate-terminal.wrapper',
+ install_mode: 'rwxr-xr-x',
+ install_dir: get_option('bindir')
+ )
+
+summary = [
+ '',
+ 'mate-terminal-@0@:'.format(meson.project_version()),
+ '',
+ ' prefix: @0@'.format(prefix),
+ ' source code location: @0@'.format(srcdir),
+ ' compiler: @0@'.format(cc.get_id()),
+ '',
+ ' smclient support: @0@'.format(build_sm),
+ ' s/key support: @0@'.format(build_skey),
+ '',
+]
+
+meson.add_install_script(
+ 'meson_post_install.py',
+ datadir,
+)
+
+message('\n'.join(summary))