aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuilherme Iscaro <iscaro@profusion.mobi>2017-07-13 16:57:52 -0300
committerGuilherme Iscaro <iscaro@profusion.mobi>2017-07-20 14:17:33 -0300
commit1b4ab6036c1de99eee0843a79c35b1b0a3b8d9c9 (patch)
treeb931b639c6ab952922330453bdcf6cf7cfbe85cd
parentfont: update all terms to this window when changing font (size) (diff)
downloadterminology-devs/iscaro/meson.tar.gz
Add support for the Meson build system.devs/iscaro/meson
-rw-r--r--README7
-rw-r--r--data/backgrounds/meson.build4
-rw-r--r--data/desktop/meson.build2
-rw-r--r--data/fonts/meson.build27
-rw-r--r--data/icons/meson.build2
-rw-r--r--data/images/meson.build3
-rw-r--r--data/meson.build6
-rw-r--r--data/themes/meson.build35
-rw-r--r--data/themes/nyanology/meson.build19
-rw-r--r--man/meson.build1
-rw-r--r--meson.build158
-rwxr-xr-xmeson_install_themes.sh5
-rw-r--r--meson_options.txt7
-rw-r--r--po/meson.build29
-rw-r--r--src/bin/meson.build104
15 files changed, 409 insertions, 0 deletions
diff --git a/README b/README
index 36a82ae..78bb343 100644
--- a/README
+++ b/README
@@ -29,6 +29,13 @@ Once you have met requirements, compiling and installing is simple:
make
make install
+To build using meson:
+
+ meson build
+ cd build
+ ninja
+ ninja install
+
Note: to make terminology work with input methods in general you need:
export ECORE_IMF_MODULE="xim"
diff --git a/data/backgrounds/meson.build b/data/backgrounds/meson.build
new file mode 100644
index 0000000..2ad48b7
--- /dev/null
+++ b/data/backgrounds/meson.build
@@ -0,0 +1,4 @@
+files = ['mystic.png', 'texture_background.png']
+install_data(files,
+ install_dir: join_paths(get_option('datadir'),
+ 'terminology', 'backgrounds'))
diff --git a/data/desktop/meson.build b/data/desktop/meson.build
new file mode 100644
index 0000000..1eb4019
--- /dev/null
+++ b/data/desktop/meson.build
@@ -0,0 +1,2 @@
+install_data('terminology.desktop',
+ install_dir: join_paths(get_option('datadir'), 'applications'))
diff --git a/data/fonts/meson.build b/data/fonts/meson.build
new file mode 100644
index 0000000..9ff380d
--- /dev/null
+++ b/data/fonts/meson.build
@@ -0,0 +1,27 @@
+files = ['10x20.pcf',
+ '4x6.pcf',
+ '5x7.pcf',
+ '5x8.pcf',
+ '6x10.pcf',
+ '6x12.pcf',
+ '6x13.pcf',
+ '6x9.pcf',
+ '7x13.pcf',
+ '7x14.pcf',
+ '8x13.pcf',
+ '9x15.pcf',
+ '9x18.pcf',
+ 'nexus.pcf',
+ 'terminus-12.pcf',
+ 'terminus-14-bold.pcf',
+ 'terminus-14.pcf',
+ 'terminus-16-bold.pcf',
+ 'terminus-16.pcf',
+ 'terminus-18-bold.pcf',
+ 'terminus-18.pcf',
+ 'terminus-20-bold.pcf',
+ 'terminus-20.pcf',
+ 'TERMINUS.txt',
+ 'XFONT.txt']
+install_data(files, install_dir: join_paths(get_option('datadir'),
+ meson.project_name(), 'fonts'))
diff --git a/data/icons/meson.build b/data/icons/meson.build
new file mode 100644
index 0000000..98afff7
--- /dev/null
+++ b/data/icons/meson.build
@@ -0,0 +1,2 @@
+install_data('terminology.png',
+ install_dir: join_paths(get_option('datadir'), 'icons'))
diff --git a/data/images/meson.build b/data/images/meson.build
new file mode 100644
index 0000000..6af298f
--- /dev/null
+++ b/data/images/meson.build
@@ -0,0 +1,3 @@
+install_data('terminology.png',
+ install_dir: join_paths(get_option('datadir'),
+ meson.project_name(), 'images'))
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..8eec325
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,6 @@
+subdir('desktop')
+subdir('icons')
+subdir('images')
+subdir('fonts')
+subdir('themes')
+subdir('backgrounds')
diff --git a/data/themes/meson.build b/data/themes/meson.build
new file mode 100644
index 0000000..8721f0f
--- /dev/null
+++ b/data/themes/meson.build
@@ -0,0 +1,35 @@
+command = [edje_cc,
+ '-id', join_paths(meson.source_root(), 'data', 'themes', 'images'),
+ '-fd', join_paths(meson.source_root(), 'data', 'fonts'),
+ '-sd', join_paths(meson.source_root(), 'data', 'themes', 'sounds'),
+ '@INPUT@',
+ '@OUTPUT@']
+
+edje_to_compile = [
+ ['default', ['default_colors.in.edc']],
+ ['mild', ['default_colors.in.edc']],
+ ['black', ['default_colors.in.edc', 'mild.edc']],
+ ['solarized', ['default_colors.in.edc', 'default.edc']],
+ ['solarized_light', ['default_colors.in.edc', 'default.edc']],
+ ['mustang',['default_colors.in.edc', 'mild.edc']],
+ ['base16_ocean_dark', ['default_colors.in.edc']],
+ ['smyck', ['default_colors.in.edc', 'mild.edc']]
+]
+
+edje_install_dir = join_paths(get_option('datadir'),
+ meson.project_name(), 'themes')
+
+foreach to_compile: edje_to_compile
+ out = to_compile[0] + '.edj'
+ in = to_compile[0] + '.edc'
+ edj_targets += [custom_target(out,
+ install:true,
+ install_dir: edje_install_dir,
+ depend_files: files(to_compile[1]),
+ command: command,
+ input: in,
+ output: out)]
+ edj_files += [join_paths(edje_install_dir, out)]
+endforeach
+
+subdir('nyanology')
diff --git a/data/themes/nyanology/meson.build b/data/themes/nyanology/meson.build
new file mode 100644
index 0000000..2cd5aa6
--- /dev/null
+++ b/data/themes/nyanology/meson.build
@@ -0,0 +1,19 @@
+command = [edje_cc,
+ '-id', join_paths(meson.source_root(), 'data', 'themes',
+ 'nyanology', 'images'),
+ '-id', join_paths(meson.source_root(), 'data', 'themes', 'images'),
+ '-fd', join_paths(meson.source_root(), 'data', 'fonts'),
+ '-sd', join_paths(meson.source_root(), 'data', 'themes', 'sounds'),
+ '@INPUT@',
+ '@OUTPUT@']
+
+edj_targets += [custom_target('nyanology.edj',
+ install:true,
+ depend_files: files(['about.edc',
+ 'nyancursor.edc']),
+ install_dir: edje_install_dir,
+ command: command,
+ input:'nyanology.edc',
+ output:'nyanology.edj')]
+
+edj_files += [join_paths(edje_install_dir, 'nyanology.edj')]
diff --git a/man/meson.build b/man/meson.build
new file mode 100644
index 0000000..b5c7425
--- /dev/null
+++ b/man/meson.build
@@ -0,0 +1 @@
+install_man('terminology.1')
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..2e46e22
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,158 @@
+project('terminology', 'c',
+ version: '1.0.99',
+ default_options: ['c_std=gnu99'],
+ license: 'BSD')
+
+spec_data = configuration_data()
+spec_data.set('PACKAGE', meson.project_name())
+spec_data.set('VERSION', meson.project_version())
+
+cc = meson.get_compiler('c')
+
+prefix = get_option('prefix')
+add_global_arguments('-DHAVE_CONFIG_H=1', language: 'c')
+config_data = configuration_data()
+config_data.set('EFL_BETA_API_SUPPORT', 1)
+config_data.set('EFL_EO_API_SUPPORT', 1)
+config_data.set_quoted('PACKAGE_VERSION', meson.project_version())
+config_data.set_quoted('PACKAGE', meson.project_name())
+config_data.set_quoted('PACKAGE_BUGREPORT',
+ 'enlightenment-devel@lists.sourceforge.net')
+config_data.set_quoted('PACKAGE_NAME', meson.project_name())
+config_data.set_quoted('PACKAGE_TARNAME', meson.project_name())
+config_data.set_quoted('PACKAGE_URL',
+ 'https://www.enlightenment.org/about-terminology')
+config_data.set_quoted('PACKAGE_BIN_DIR',
+ join_paths(prefix, get_option('bindir')))
+config_data.set_quoted('PACKAGE_DATA_DIR',
+ join_paths(prefix, get_option('datadir'),
+ meson.project_name()))
+config_data.set_quoted('PACKAGE_LIB_DIR',
+ join_paths(prefix, get_option('libdir')))
+config_data.set_quoted('LOCALEDIR', join_paths(prefix, get_option('localedir')))
+config_data.set('_GNU_SOURCE', 1)
+config_data.set('__EXTENSIONS__', 1)
+config_data.set('_POSIX_PTHREAD_SEMANTICS', 1)
+config_data.set('_TANDEM_SOURCE', 1)
+config_data.set('_ALL_SOURCE', 1)
+config_data.set('_POSIX_SOURCE', 1)
+config_data.set('_POSIX_1_SOURCE', 1)
+
+efl_version = '1.8.0'
+efl_deps = ['edje',
+ 'elementary',
+ 'eina',
+ 'eet',
+ 'evas',
+ 'ecore',
+ 'ecore-evas',
+ 'ecore-file',
+ 'emotion',
+ 'ecore-input',
+ 'ecore-imf',
+ 'ecore-imf-evas',
+ 'ecore-ipc',
+ 'efreet',
+ 'ecore-con',
+ 'ethumb_client']
+terminology_dependencies = []
+edje_cc_path = ''
+edj_targets = []
+edj_files = []
+use_translations = false
+intl_lib = cc.find_library('intl', required: false)
+if intl_lib.found()
+ config_data.set('HAVE_GETTEXT', 1)
+ config_data.set('ENABLE_NLS', 1)
+ terminology_dependencies += [intl_lib]
+ use_translations = true
+else
+ gettext_code = '''
+ #include <libintl.h>
+ int main(int argc, char *argv[]) {
+ (void)ngettext("", "", 0);
+ return 0;
+ }
+ '''
+ if cc.links(gettext_code)
+ config_data.set('HAVE_GETTEXT', 1)
+ config_data.set('ENABLE_NLS', 1)
+ use_translations = true
+ endif
+endif
+
+foreach efl_dep: efl_deps
+ dep = dependency(efl_dep, version: '>=' + efl_version)
+ terminology_dependencies += [dep]
+ if efl_dep == 'edje'
+ edje_cc_path = dep.get_pkgconfig_variable('prefix') + '/bin/edje_cc'
+ endif
+endforeach
+
+if cc.has_function('mkstemps')
+ config_data.set('HAVE_MKSTEMPS', 1)
+endif
+
+url_head_code = '''#include <Ecore_Con.h>
+int main(int argc, char *argv[]) { ecore_con_url_head(NULL); return 0; }
+'''
+
+elementary_teamwork_code = '''#include <Elementary.h>
+int main(int argc, char *argv[]) { elm_win_teamwork_uri_show(NULL); return 0; }
+'''
+
+found = 'Not found'
+
+if cc.links(url_head_code, dependencies: terminology_dependencies)
+ config_data.set('HAVE_ECORE_CON_URL_HEAD', 1)
+ found = 'Found'
+endif
+
+message('Checking for ecore_con_url_head: ' + found)
+
+if cc.links(elementary_teamwork_code, dependencies: terminology_dependencies)
+ config_dat.set('HAVE_ELM_WIN_TEAMWORK', 1)
+ found = 'Found'
+else
+ found = 'Not Found'
+endif
+
+message('Checking for elm_win_teamwork_uri_show: ' + found)
+
+edje_cc = get_option('edje-cc')
+
+if edje_cc == ''
+ edje_cc = edje_cc_path
+endif
+
+fuzzing = get_option('fuzzing')
+
+if fuzzing
+ config_data.set('ENABLE_FUZZING', 1)
+ message('Fuzzing is enabled')
+else
+ message('Fuzzing is disbled')
+endif
+
+message('edje_cc set to:' + edje_cc)
+
+configure_file(output: 'terminology_config.h',
+ configuration: config_data)
+
+configure_file(input: 'terminology.spec.in',
+ output: 'terminology.spec',
+ configuration: spec_data)
+
+configure_file(input: join_paths('pkgbuild', 'PKGBUILD.in'),
+ output: 'PKGBUILD',
+ configuration: spec_data)
+
+config_dir = include_directories('.')
+subdir('data')
+subdir('man')
+if use_translations
+ subdir('po')
+endif
+subdir('src/bin')
+
+meson.add_install_script('meson_install_themes.sh', edj_files)
diff --git a/meson_install_themes.sh b/meson_install_themes.sh
new file mode 100755
index 0000000..7bc6905
--- /dev/null
+++ b/meson_install_themes.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+for x in "$@" ; do
+ chmod 644 "$MESON_INSTALL_DESTDIR_PREFIX/$x"
+done
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..6b6b04a
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,7 @@
+option('edje-cc',
+ type: 'string',
+ description: 'A path to a edje_cc. Defaults to system\'s edje_cc')
+option('fuzzing',
+ type: 'boolean',
+ value: false,
+ description: 'Enable fuzzing on terminology. Binaries are not suited for production.')
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..6cb7469
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,29 @@
+i18n = import('i18n')
+i18n.gettext('terminology',
+ languages: [
+ 'ca',
+ 'de',
+ 'el',
+ 'eo',
+ 'es',
+ 'fi',
+ 'fr',
+ 'hi',
+ 'it',
+ 'ko',
+ 'ms',
+ 'sl',
+ 'sr',
+ 'tr',
+ 'vi'
+ ],
+ args: [
+ '--keyword=_',
+ '--keyword=d_:1',
+ '--keyword=P_:1,2',
+ '--keyword=dP_:1,2',
+ '--keyword=N_',
+ '--keyword=NP_:1,2',
+ '--from-code=UTF-8',
+ '--foreign-user'
+ ])
diff --git a/src/bin/meson.build b/src/bin/meson.build
new file mode 100644
index 0000000..3d20fd5
--- /dev/null
+++ b/src/bin/meson.build
@@ -0,0 +1,104 @@
+terminology_sources = ['private.h',
+ 'about.c', 'about.h',
+ 'col.c', 'col.h',
+ 'config.c', 'config.h',
+ 'controls.c', 'controls.h',
+ 'ipc.c', 'ipc.h',
+ 'keyin.c', 'keyin.h',
+ 'main.c', 'main.h',
+ 'media.c', 'media.h',
+ 'options.c', 'options.h',
+ 'options_font.c', 'options_font.h',
+ 'options_theme.c', 'options_theme.h',
+ 'options_themepv.c', 'options_themepv.h',
+ 'options_wallpaper.c', 'options_wallpaper.h',
+ 'options_colors.c', 'options_colors.h',
+ 'options_behavior.c', 'options_behavior.h',
+ 'options_keys.c', 'options_keys.h',
+ 'options_helpers.c', 'options_helpers.h',
+ 'options_video.c', 'options_video.h',
+ 'options_elm.c', 'options_elm.h',
+ 'sel.c', 'sel.h',
+ 'miniview.c', 'miniview.h',
+ 'termio.c', 'termio.h',
+ 'termcmd.c', 'termcmd.h',
+ 'term_container.h',
+ 'termiolink.c', 'termiolink.h',
+ 'termpty.c', 'termpty.h',
+ 'termptydbl.c', 'termptydbl.h',
+ 'termptyesc.c', 'termptyesc.h',
+ 'termptyops.c', 'termptyops.h',
+ 'termptygfx.c', 'termptygfx.h',
+ 'termptyext.c', 'termptyext.h',
+ 'termptysave.c', 'termptysave.h',
+ 'lz4/lz4.c', 'lz4/lz4.h',
+ 'md5/md5.c', 'md5/md5.h',
+ 'utf8.c', 'utf8.h',
+ 'win.c', 'win.h',
+ 'utils.c', 'utils.h',
+ 'extns.c', 'extns.h',
+ 'gravatar.c', 'gravatar.h',
+ 'tty_keys.h',
+ 'sb.c', 'sb.h']
+
+tybg_sources = ['tycommon.c', 'tycommon.h', 'tybg.c']
+tyalpha_sources = ['tycommon.c', 'tycommon.h', 'tyalpha.c']
+typop_sources = ['tycommon.c', 'tycommon.h', 'typop.c']
+tyq_sources = ['tycommon.c', 'tycommon.h', 'tyq.c']
+tycat_sources = ['tycommon.c', 'tycommon.h', 'tycat.c', 'extns.c', 'extns.h']
+tyls_sources = ['extns.c', 'extns.h', 'tyls.c', 'tycommon.c', 'tycommon.h']
+tyfuzz_sources = ['termptyesc.c', 'termptyesc.h',
+ 'termptysave.c', 'termptysave.h',
+ 'termptyops.c', 'termptyops.h',
+ 'termptydbl.c', 'termptydbl.h',
+ 'termptyext.c', 'termptyext.h',
+ 'termptygfx.c', 'termptygfx.h',
+ 'termpty.c', 'termpty.h',
+ 'config.c', 'config.h',
+ 'col.c', 'col.h',
+ 'tyfuzz.c']
+
+executable('terminology',
+ terminology_sources,
+ edj_targets,
+ install: true,
+ include_directories: config_dir,
+ dependencies: terminology_dependencies)
+executable('tybg',
+ tybg_sources,
+ install: true,
+ include_directories: config_dir,
+ dependencies: terminology_dependencies)
+executable('tyalpha',
+ tyalpha_sources,
+ install: true,
+ include_directories: config_dir,
+ dependencies: terminology_dependencies)
+executable('typop',
+ typop_sources,
+ install: true,
+ include_directories: config_dir,
+ dependencies: terminology_dependencies)
+executable('tyq',
+ tyq_sources,
+ install: true,
+ include_directories: config_dir,
+ dependencies: terminology_dependencies)
+executable('tycat',
+ tycat_sources,
+ install: true,
+ include_directories: config_dir,
+ dependencies: terminology_dependencies)
+executable('tyls',
+ tyls_sources,
+ install: true,
+ include_directories: config_dir,
+ dependencies: terminology_dependencies)
+
+if fuzzing
+ executable('tyfuzz',
+ tyfuzz_sources,
+ install: true,
+ include_directories: config_dir,
+ dependencies: terminology_dependencies)
+endif